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

关联重叠Sector与Region:求面积占比对应关系的工具/算法

解决方案:GeoJSON分区面积占比匹配

一、可用软件工具

  • QGIS:开源GIS工具,适合非编程用户
    • 导入两个GeoJSON图层
    • 使用相交(Intersect)工具生成两个分区的重叠多边形
    • 通过字段计算器用$area计算每个重叠区域的面积
    • 用分组统计工具按Sector/Region分组求和,再计算占比
  • ArcGIS Pro:商业GIS软件,操作逻辑与QGIS一致,适合有授权的用户

二、Python实现方案(首选)

基于geopandas+shapely完成几何运算与占比计算,步骤如下:

1. 安装依赖

pip install geopandas shapely pandas

2. 核心代码示例

import geopandas as gpd
import pandas as pd

# 读取GeoJSON文件
sectors = gpd.read_file("sectors.geojson")
regions = gpd.read_file("regions.geojson")

# 统一坐标系(避免面积计算误差)
if sectors.crs != regions.crs:
    regions = regions.to_crs(sectors.crs)

# 计算各Sector/Region的总面积
sectors["total_area"] = sectors.geometry.area
regions["total_area"] = regions.geometry.area

# 生成所有重叠区域
intersections = gpd.overlay(sectors, regions, how="intersection")
intersections["intersect_area"] = intersections.geometry.area

# 计算Sector到Region的面积占比
sector_region_ratio = intersections.groupby(["sector_id", "region_id"]).agg(
    intersect_area=("intersect_area", "sum")
).reset_index()
sector_region_ratio["sector_to_region_ratio"] = (
    sector_region_ratio["intersect_area"] / 
    sector_region_ratio.merge(sectors, on="sector_id")["total_area"]
) * 100

# 计算Region到Sector的面积占比
region_sector_ratio = intersections.groupby(["region_id", "sector_id"]).agg(
    intersect_area=("intersect_area", "sum")
).reset_index()
region_sector_ratio["region_to_sector_ratio"] = (
    region_sector_ratio["intersect_area"] / 
    region_sector_ratio.merge(regions, on="region_id")["total_area"]
) * 100

# 导出结果
sector_region_ratio.to_csv("sector_region_ratios.csv", index=False)
region_sector_ratio.to_csv("region_sector_ratios.csv", index=False)

# 打印示例结果
print("Sector→Region面积占比:")
print(sector_region_ratio[["sector_id", "region_id", "sector_to_region_ratio"]].head())
print("\nRegion→Sector面积占比:")
print(region_sector_ratio[["region_id", "sector_id", "region_to_sector_ratio"]].head())

代码说明

  • 替换sector_id和region_id为你GeoJSON文件中的实际唯一标识字段
  • 优先检查多边形拓扑有效性(用geopandas的is_valid方法),拓扑错误会导致相交操作失败
  • 大文件可分块处理提升效率

三、注意事项

  • 确保两个图层坐标系一致,否则面积计算结果会失真
  • 若存在单个Sector与Region多块重叠的情况,分组求和能保证占比计算准确

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 18:23:14