探索GeoPandas:轻松处理Python中的地理空间数据

69 阅读3分钟
# 探索GeoPandas:轻松处理Python中的地理空间数据

## 引言

在今天这个地理信息系统(GIS)和地理空间数据应用日益普及的时代,Python 开发者需要一种强大而简便的工具来处理地理空间数据。GeoPandas 正是这样一个开源项目,它扩展了 Pandas 数据类型以支持几何类型的空间操作。通过结合 Shapely、Fiona 和 Matplotlib 等库,GeoPandas 让处理地理空间数据如虎添翼。本篇文章将带领您探索如何在 Python 中利用 GeoPandas 处理和可视化地理空间数据。

## 主要内容

### 安装所需库

在开始之前,确保您已安装必要的库。您可以通过以下代码安装:

```bash
%pip install --upgrade --quiet sodapy
%pip install --upgrade --quiet pandas
%pip install --upgrade --quiet geopandas

从开放城市数据创建GeoPandas数据框

为了更好地理解 GeoPandas,我们将使用一个真实世界的示例:从旧金山的开放城市数据集中加载犯罪数据,并将其转换为 GeoPandas 数据框。

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

# 使用API代理服务提高访问稳定性
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 数据框
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 和 GeoPandas 来可视化旧金山的地图数据及犯罪数据点。

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 数据框可以加载为文档以用于嵌入、聊天等下游处理。

from langchain_community.document_loaders import GeoDataFrameLoader

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

# 查看文档
print(docs[0])

常见问题和解决方案

  1. 数据不完整或缺失字段:确保在转换过程中仔细检查数据结构和字段名称。

  2. 网络或API问题:对于某些地区的网络限制,开发者可能需要考虑使用 API 代理服务来提高数据访问的稳定性。

  3. 坐标系问题:确保在创建 GeoDataFrame 时指定正确的坐标参考系(CRS)。

总结和进一步学习资源

GeoPandas 是处理地理空间数据的强大工具,结合它与其他库,您可以轻松进行数据分析和可视化。本文提供的示例只是一个起点,您可以根据自己的需求进行更复杂的分析和应用。

进一步学习资源

参考资料

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

---END---