提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
简介
根据PyPI官网的介绍:GeoPandas项目是为支持将地理数据转为pandas对象。
其目标是在python中使用地理空间数据更容易。它结合了pandas和shapey的功能,在pandas中提供地理空间操作,并为shapey提供多个几何图形的高级界面。GeoPandas使您能够轻松地在python中执行操作,而不必使用如PostGIS等空间数据库。
Geopandas 是一个基于 Python 的空间数据处理库,结合了 pandas 的数据处理能力和地理空间分析功能。
一、安装
使用 pip 或 conda 安装:
pip install geopandas
# 或
conda install -c conda-forge geopandas
注意:Windows 用户可能需要单独安装 GDAL 依赖。
二、核心数据结构
- GeoDataFrame:继承自 pandas DataFrame,包含一个几何列(geometry),存储 shapely 对象(点、线、面等)。
- GeoSeries:单列的几何数据,支持向量化空间操作。
三、数据读写
- 读取文件(支持 Shapefile、GeoJSON 等):
import geopandas as gpd
gdf = gpd.read_file("data.shp")
- 保存文件
gdf.to_file("output.geojson", driver="GeoJSON")
四、坐标系管理
- 查看坐标系:gdf.crs
- 转换坐标系:
gdf = gdf.to_crs(epsg=4326) # WGS84
五、空间操作
- 几何计算(面积、长度等):
gdf['area'] = gdf.geometry.area
- 缓冲区分析:
gdf['buffer'] = gdf.geometry.buffer(100) # 100单位缓冲区
- 空间关系判断(相交、包含等):
mask = gdf1.geometry.intersects(gdf2.geometry.iloc[0])
- 空间连接:
import geopandas.tools
joined = gpd.sjoin(gdf1, gdf2, how="inner", op="intersects")
- 集成 Matplotlib 快速绘图:
gdf.plot(column="population", legend=True, cmap="viridis")
- 示例:统计城市内公园数量
# 读取数据
cities = gpd.read_file("cities.shp")
parks = gpd.read_file("parks.shp")
# 确保坐标系一致
parks = parks.to_crs(cities.crs)
# 空间连接
joined = gpd.sjoin(parks, cities, op='within')
# 统计每个城市的公园数量
park_count = joined.groupby('city_name').size()
print(park_count)