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

QGIS中多边形内随机点坐标提取、shapefile关联及xlsx导出方法

QGIS 按多边形生成指定数量随机点并导出目标结构Excel操作流程

前期准备

  • 确认行政边界图层坐标系:如果需要输出WGS84经纬度,先右键目标州边界图层,选择【导出】→【要素另存为】,坐标系指定为EPSG:4326,保存后加载新投影后的图层开展后续操作,避免坐标计算偏差。

方法一:可视化分步操作(适合新手,过程可校验)

  1. 生成固定数量随机点
  • 打开顶部菜单栏【处理】→【处理工具箱】,找到【矢量创建】分类下的随机点在多边形内工具,参数按如下设置:
    • 输入图层:选择投影后的州边界图层
    • 点计数策略:选择「按要素计数」
    • 每个要素生成点数量:填6
    • 勾选「保留父图层所有属性」选项,自动把每个点所属多边形的country_name、state_name属性继承到点图层,无需额外做空间关联
    • 如需固定随机结果复现,可在高级参数栏填写固定随机种子值,参数确认后点击运行,生成随机点图层。
  1. 计算点坐标与分组序号
  • 右键生成的随机点图层,打开【属性表】→点击字段计算器按钮,依次新增3个字段:
    • 新增lon字段:字段类型选实数(小数),输入表达式$x,计算得到点的经度
    • 新增lat字段:字段类型选实数(小数),输入表达式$y,计算得到点的纬度
    • 新增point_rank字段:字段类型选整数,输入表达式array_find(array_agg($id, group_by:="state_name"), $id)+1,按州分组给每个州下的6个点自动标注1-6的序号,对应后续6个经纬度列。
  1. 转换为要求的宽表结构
  • 在处理工具箱找到【矢量通用】分类下的透视表工具,参数设置:
    • 输入图层:选择添加完字段的随机点图层
    • 行分组字段:勾选country_name、state_name,最终输出结果每行对应一个州
    • 透视列字段:选择point_rank
    • 值字段:新建自定义表达式"lat" || ', ' || "lon",将经纬度拼接为坐标字符串
    • 值聚合方式:选择「第一个匹配值」,运行生成临时宽表。
  • 打开临时宽表的属性表,用字段计算器将默认命名为1-6的列,分别重命名为lat_long_1到lat_long_6,删除其余无关字段。
  1. 导出Excel
  • 右键处理完成的宽表图层,选择【导出】→【要素另存为】,格式选择MS Office Open XML spreadsheet [XLSX],指定保存路径后点击确认即可导出符合结构要求的文件。

方法二:一步生成法(适合数据量较小的场景)

无需生成中间点图层,直接在原州边界图层操作:

  • 打开原图层字段计算器,依次新增lat_long_1到lat_long_6共6个文本类型字段,每个字段的表达式填写如下格式(每个字段单独运行一次计算):
y(generate_random_points_in_polygon($geometry, 1, rand(0,999999))) || ', ' || x(generate_random_points_in_polygon($geometry, 1, rand(0,999999)))
  • 6个字段全部计算完成后,直接导出图层为xlsx格式即可,导出时只保留country_name、state_name和6个经纬度字段。

注意:如果要求随机点必须落在陆地区域、排除水域/飞地等范围,可提前用州边界图层和陆地区域裁剪图层做交集运算,再基于裁剪后的图层生成随机点。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 23:12:35