标题:Geopandas之三POI合并区县市配套数据

在这个案例中,使用Geopandas库处理地理信息系统数据,重点在于整合POI(兴趣点)数据与区县市的行政区域数据。POI数据通常涉及商业场所或公共设施等地理位置信息,而区县市数据包含行政区划的边界和属性。

Geopandas是Python中用于处理地理空间数据的库,扩展了Pandas数据结构,方便对地理数据进行操作与分析。它支持多种地理数据格式,如ESRI Shapefile、GeoJSON、GPKG等。在本例中,使用的文件包括.dbf(属性数据)、.cpg(字符编码)、.prj(投影信息)和.shp(几何形状数据),这些是ESRI Shapefile的标准组成部分。

导入Geopandas及其他必要库,如Pandas和Matplotlib:

import geopandas as gpd
import pandas as pd
import matplotlib.pyplot as plt

使用Geopandas的read_file函数读取区县市的Shapefile数据:

# 读取龙岩市的Shapefile
city_data = gpd.read_file("龙岩市.shp")

接下来,加载POI数据。假设POI数据存储在名为"POI_福建龙岩市_202006.csv"的CSV文件中,包含了2020年6月福建省龙岩市的POI信息:

# 加载POI数据
poi_data = pd.read_csv("POI_福建龙岩市_202006.csv")

通常,CSV文件中不包含几何信息,因此需要将POI的经纬度数据转换为Geopandas可以识别的GeoDataFrame。假设数据包含"longitude"和"latitude"列:

from shapely.geometry import Point

# 创建几何列,将经纬度转换为Point对象
poi_data["geometry"] = poi_data.apply(
    lambda row: Point(row.longitude, row.latitude), axis=1
)
# 转换为GeoDataFrame
gdf_poi = gpd.GeoDataFrame(poi_data, geometry="geometry")

将POI数据与区县市数据进行合并,可以基于空间或属性进行合并。以下是计算每个区域内POI数量的示例:

# 如果区县市数据包含'NAME'列,进行合并
merged_data = city_data.merge(gdf_poi, how="left", on="NAME")
# 计算每个区域的POI数量
merged_data["POI_count"] = merged_data.geometry.apply(
    lambda geom: len(geom.intersection(merged_data.geometry))
)

最后,使用Matplotlib可视化POI数量:

fig, ax = plt.subplots(1, figsize=(10, 10))
merged_data.plot(
    column="POI_count", ax=ax, cmap="Blues", linewidth=0.8, edgecolor="0.8", legend=True
)
plt.show()

通过这些步骤,完成了对龙岩市POI数据与区县市数据的融合分析。这只是一个基础示例,实际操作中可以根据需求进行更复杂的空间分析,如缓冲区分析和叠加分析等。Geopandas是处理地理空间数据的强大工具,理解数据和选择合适的分析方法至关重要。