如何制作计数型Choropleth地图?解决WMUNIT_CODE多多边形合并问题
解决方案:计数型Choropleth地图制作与数据合并
1. 预处理Excel数据:统计每个WMUNIT_CODE的实例数
先对xlsx中的原始数据按WMUNIT_CODE分组计数,避免重复记录导致合并冲突。以下是两种工具的实现方式:
Python pandas实现
import pandas as pd # 读取Excel数据 df = pd.read_excel("your_data.xlsx") # 先按筛选条件过滤数据(时间范围、物种、检测方法) filtered_df = df[ (df["date"] >= "2020-01-01") & (df["date"] <= "2023-12-31") & (df["species"] == "目标物种") & (df["detection_method"] == "相机陷阱") ] # 分组统计每个WMUNIT_CODE的实例数 count_df = filtered_df.groupby("WMUNIT_CODE").size().reset_index(name="instance_count")
ArcGIS工具实现
使用汇总统计数据工具:
- 输入表选你的xlsx数据
- 分组字段选
WMUNIT_CODE - 统计类型选
计数,输出包含WMUNIT_CODE和计数字段的汇总表
2. 处理地理数据库中多多边形对应同一WMUNIT_CODE的情况
针对同一代码对应多个多边形的问题,有两种可选方案:
方案A:合并同代码的多边形为单个要素(简化图层)
如果不需要保留单个多边形的细节,可将同一WMUNIT_CODE的多边形合并:
- ArcGIS中用融合工具:输入WMUNIT图层,融合字段选
WMUNIT_CODE,输出新图层(每个代码对应一个合并后的多边形) - GeoPandas中用dissolve方法:
import geopandas as gpd # 读取地理数据库中的WMUNIT图层 gdf = gpd.read_file("your_geodatabase.gdb", layer="WMUNIT_layer") # 按WMUNIT_CODE融合多边形 merged_gdf = gdf.dissolve(by="WMUNIT_CODE", as_index=False)
方案B:保留多多边形,直接关联统计计数
如果需要保留原始多边形,直接通过WMUNIT_CODE将统计数据连接到原图层:
- ArcGIS中用连接字段工具:输入WMUNIT图层,连接字段选
WMUNIT_CODE,连接表选预处理后的计数表,匹配字段保持一致 - GeoPandas中用merge方法:
# 合并地理数据与统计数据 final_gdf = gdf.merge(count_df, on="WMUNIT_CODE", how="left") # 为无实例的管理单元填充0值 final_gdf["instance_count"] = final_gdf["instance_count"].fillna(0)
3. 制作Choropleth地图与动态筛选
- Python可视化:基于
final_gdf,用GeoPandas+Matplotlib或Plotly将instance_count作为颜色映射字段绘制地图。动态筛选只需重新执行「过滤-计数-合并」流程后更新地图即可。 - ArcGIS Pro:将合并后的图层添加到地图,设置符号系统为分级色彩,基于
instance_count字段。通过图层属性-定义查询设置时间、物种、检测方法的筛选条件,或用参数化查询实现交互式筛选。
关键注意事项
- 确保Excel和地理数据库中的
WMUNIT_CODE格式完全一致(如字符串/数字类型、大小写、无多余空格),避免匹配失败。 - 处理无实例的管理单元时,必须填充0值,防止地图出现缺失区域。
- 使用ArcGIS工具时,输出路径避免中文或特殊字符,防止报错。
内容的提问来源于stack exchange,提问作者Flavia Rasmussen
相关产品推荐
相关产品推荐

