1. 首页
  2. 行业
  3. 互联网
  4. geopandas POI合并区县市数据

geopandas POI合并区县市数据

上传者: 2024-12-29 03:05:41上传 RAR文件 9.72MB 热度 2次

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

Geopandas是Python中用于处理地理空间数据的库,扩展了pandas的数据结构,能够方便地操作和分析地理数据。Geopandas支持多种地理数据格式的读取,如ESRI Shapefile、GeoJSON、GPKG等。文件通常包含.dbf(属性数据)、.cpg(字符编码)、.prj(投影信息)和.shp(几何形状数据),这些都是ESRI Shapefile的标准组成部分。

在本案例中,我们使用Geopandas处理区县市配套数据与POI(点兴趣)数据的整合。POI数据可能包含商业场所、公共设施等地理位置信息,而区县市数据则包括行政区域的边界和属性信息。

首先,导入Geopandas、pandas和matplotlib等必要的库:

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

接着,使用read_file函数读取区县市的Shapefile数据:

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

然后,加载POI数据。假设文件名为“POI_福建龙岩市_202006.csv”,这是一份CSV文件,包含了2020年6月福建省龙岩市的POI信息。使用pandas加载该文件:

# 加载POI数据
poi_data = pd.read_csv("POI_福建龙岩市_202006.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数据与区县市数据进行合并。例如,可以根据名称(假设为“NAME”列)合并:

# 合并区县市数据与POI数据
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可视化结果:

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提供了强大的功能,可以高效处理地理空间数据,但合理选择分析方法至关重要。

下载地址
用户评论