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

如何统计俄罗斯各地理细分区域内的点位数量?

统计地理细分区域内的点位数量

一、使用桌面GIS工具(以QGIS为例)

  • 数据准备:先确认有两个矢量图层——俄罗斯细分区域的面图层(带区域名称/ID属性)、标注点位的点图层。如果原始是图片地图,得先矢量化:用QGIS的Digitizing Toolbar手动绘制区域边界和点位,或用自动矢量化插件辅助完成。
  • 空间连接计数:
    1. 打开QGIS并加载两个图层。
    2. 点击菜单栏「矢量」→「数据管理工具」→「连接属性(空间)」。
    3. 窗口中设置「输入图层」为区域面图层,「连接图层」为点位点图层。
    4. 连接类型选「统计连接」,勾选「计数」并指定字段名(比如point_count)存储数量。
    5. 选择输出新图层,点击「运行」。
  • 查看结果:新生成的面图层属性表中,point_count字段就是对应区域内的点位数量,还可直接在地图上标注该数值。

ArcGIS操作步骤

  1. 加载区域面图层和点位点图层到ArcMap/ArcGIS Pro。
  2. 打开「分析工具」→「叠加分析」→「空间连接」。
  3. 目标要素选区域面图层,连接要素选点位点图层。
  4. 连接类型选「基于空间关系连接要素」,空间关系设为「完全包含」。
  5. 在「字段映射」中,对点位的任意字段设置统计类型为「计数」,输出新图层。
  6. 打开新图层属性表,即可查看各区域的点位计数。

二、使用Python代码(GeoPandas)

  • 前置准备:安装依赖库,执行命令:pip install geopandas shapely
  • 代码示例:
import geopandas as gpd

# 替换为你的实际文件路径(支持Shapefile、GeoJSON等格式)
regions = gpd.read_file("russia_regions.shp")
points = gpd.read_file("marked_points.shp")

# 统一坐标系(若不一致则转换)
if regions.crs != points.crs:
    points = points.to_crs(regions.crs)

# 空间连接:统计区域内的点数
joined = gpd.sjoin(regions, points, how="left", predicate="contains")

# 按区域分组计数并合并结果
region_counts = joined.groupby(regions.index).size().reset_index(name="point_count")
final_result = regions.merge(region_counts, left_index=True, right_index=True)

# 可选:保存结果到文件
final_result.to_file("russia_region_point_counts.shp")

# 打印结果示例
print(final_result[["region_name", "point_count"]])
  • 说明:predicate="contains"仅统计完全在区域内的点;若需包含边界上的点,改用predicate="intersects"。

三、关键注意事项

  • 坐标系统一:区域和点位图层必须用相同坐标系,否则空间连接会出错,GIS工具和GeoPandas都支持坐标系转换。
  • 拓扑修正:若区域边界存在误差,可能导致点位误判,可使用QGIS的「拓扑检查器」或ArcGIS的「修复几何」工具修正。
  • 矢量化精度:原始图片转矢量时,手动校准边界和点位能提升统计准确性。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 00:50:29