You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Shape文件双热力图叠加分析:提取仅蓝色热力图覆盖区域

基于Python的Shape格式热力图空间交叉分析方案

核心思路(规避图像化精度损失)

直接对Shape文件的矢量热力图层执行空间运算,借助GIS空间分析中的「差集(Difference)」操作,精准提取热力图a(蓝色内部数据)中不与热力图b(红色外部数据)重叠的区域,全程保留矢量数据的原生精度,不会出现尺度丢失问题。

批量实现步骤

1. 依赖库安装

使用geopandas处理Shape文件,shapely完成空间运算,先执行安装命令:

pip install geopandas shapely

2. 批量处理代码示例

假设你的Shape文件集中存放于shape_files目录,命名规则为heatmap_a_xxx.shp、heatmap_b_xxx.shp,批量处理代码如下:

import geopandas as gpd
import os

# 定义输入输出目录
input_dir = "shape_files"
output_dir = "only_blue_results"
os.makedirs(output_dir, exist_ok=True)

# 遍历并配对处理文件
for file_name in os.listdir(input_dir):
    if file_name.startswith("heatmap_a_") and file_name.endswith(".shp"):
        # 匹配对应的热力图b文件
        a_shp_path = os.path.join(input_dir, file_name)
        b_shp_name = file_name.replace("heatmap_a_", "heatmap_b_")
        b_shp_path = os.path.join(input_dir, b_shp_name)
        
        if not os.path.exists(b_shp_path):
            print(f"未找到对应b文件{b_shp_name},跳过当前a文件")
            continue
        
        # 读取矢量数据
        gdf_a = gpd.read_file(a_shp_path)
        gdf_b = gpd.read_file(b_shp_path)
        
        # 统一坐标系(空间运算的必要前提)
        if gdf_a.crs != gdf_b.crs:
            gdf_b = gdf_b.to_crs(gdf_a.crs)
        
        # 执行差集运算,提取仅a覆盖的区域
        gdf_result = gpd.overlay(gdf_a, gdf_b, how="difference")
        
        # 保存结果文件
        result_file_name = f"only_blue_{file_name}"
        result_file_path = os.path.join(output_dir, result_file_name)
        gdf_result.to_file(result_file_path)
        print(f"处理完成:{result_file_name}")

关键注意事项

  • 坐标系统一:两个热力图层必须使用相同的坐标系(如WGS84、UTM),否则空间运算会报错,代码已自动处理坐标系转换。
  • 图层类型匹配:确保热力图a和b为同类型矢量图层(如均为面图层),若原始是点/线格式的热力数据,需先通过核密度分析转为面图层后再执行运算。
  • 大文件优化:若Shape文件体积较大,可通过gdf.simplify()简化矢量要素顶点数,或采用分片处理方式提升运算效率。

内容的提问来源于stack exchange,提问作者lagnaoui jihane

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.22 07:47:01