Bootstrap

使用GeoPandas处理城市开放数据的实战演示

GeoPandas是一个开源项目,旨在简化Python中地理空间数据的处理。它扩展了Pandas的数据类型,以支持几何类型的空间操作。GeoPandas依赖于Shapely来执行几何操作,使用Fiona进行文件访问,并借助Matplotlib进行绘图。结合LLM应用(如聊天和问答)来处理地理空间数据已经成为一个有趣的探索领域。

下面我们将通过一个示例来展示如何将城市开放数据加载到GeoPandas数据框中,并结合一些数据操作和可视化。

技术背景介绍

在大数据时代,地理空间数据的有效处理和可视化是许多应用程序的基础。GeoPandas为Python提供了一个强大的工具集来处理这些数据。通过将数据加载到GeoPandas数据框中,我们可以利用其高级功能进行空间数据分析和可视化。

核心原理解析

GeoPandas基于Pandas,但增加了对地理空间数据的支持。它允许我们创建几何对象(如点、线和多边形),并使用这些对象执行空间操作。通过结合Matplotlib,GeoPandas还支持将地理数据可视化呈现。

代码实现演示

以下是使用GeoPandas处理和可视化旧金山犯罪数据的完整代码示例:

# 安装必要的库
%pip install sodapy
%pip install pandas
%pip install geopandas
%pip install matplotlib

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

# 加载旧金山犯罪数据
dataset = "tmnf-yvry"  # 数据集ID
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数据框
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数据框加载为文档进行下游处理(如嵌入、聊天等)
from langchain_community.document_loaders import GeoDataFrameLoader
loader = GeoDataFrameLoader(data_frame=gdf, page_content_column="geometry")
docs = loader.load()

# 打印第一个文档
print(docs[0])

应用场景分析

这种结合GeoPandas和LLM的处理方法适用于多种场景,如实时地理数据分析、城市规划、物联网设备数据监控等。通过将空间数据与LLM结合,我们可以实现更为智能的地理信息系统。

实践建议

  1. 熟悉GeoPandas的数据结构和操作,以便更高效地处理地理空间数据。
  2. 利用Matplotlib的可视化功能,将数据分析的结果形象化。
  3. 在大规模数据处理时,注意优化数据加载和处理流程,以提高性能。
  4. 在实际应用中,结合开源的地理数据集,探索更多的应用场景。

如果遇到问题欢迎在评论区交流。
—END—

;