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

QGIS如何按难度统计滑雪场范围内雪道的总长度?

解决方法:统计滑雪场范围内不同难度雪道的总长度

针对你的需求,直接在QGIS字段计算器中结合overlay_within/overlay_intersects与array_sum即可实现,无需复杂的函数嵌套。以下是具体操作步骤和表达式:

核心思路

通过空间叠加函数筛选出当前滑雪场多边形范围内的对应难度雪道,提取其长度字段并求和,最终将结果写入滑雪场图层的对应字段。

具体操作(以QGIS为例)

  1. 打开ski_mountain图层的属性表,点击顶部的「字段计算器」按钮(算盘图标)。
  2. 为每个难度类型创建单独字段:
    • 选择「新建字段」,设置字段名称(如beginner)、字段类型为Decimal(建议精度设为2,匹配km单位)。
    • 在表达式编辑器中输入对应难度的求和表达式,点击「确定」完成计算。

表达式示例

统计完全位于滑雪场内部的雪道总长度

使用overlay_within筛选完全包含在多边形内的雪道:

  • 初级雪道(beginner):
array_sum(overlay_within('ski_run', "run_length", filter:="run_difficulty" = 'beginner'))
  • 中级雪道(intermediate):
array_sum(overlay_within('ski_run', "run_length", filter:="run_difficulty" = 'intermediate'))
  • 高级雪道(advanced):
array_sum(overlay_within('ski_run', "run_length", filter:="run_difficulty" = 'advanced'))
  • 专家级雪道(expert):
array_sum(overlay_within('ski_run', "run_length", filter:="run_difficulty" = 'expert'))

统计与滑雪场有交集的雪道总长度(含部分在外部的雪道)

如果需要统计所有和滑雪场多边形相交的雪道(不管是否完全在内部),只需把overlay_within替换为overlay_intersects:

array_sum(overlay_intersects('ski_run', "run_length", filter:="run_difficulty" = 'beginner'))

统计雪道在滑雪场内部的部分长度(若雪道跨多个区域)

如果run_length是雪道的完整长度,而你需要统计雪道落在当前滑雪场内部的实际长度,可使用以下表达式(单位转换为km):

sum(
  array_foreach(
    overlay_intersects('ski_run', $currentfeature),
    if(@element.run_difficulty = 'beginner', length(intersection($geometry, @element.geometry))/1000, 0)
  )
)

注意事项

  • 确保ski_mountain和ski_run图层使用相同的坐标系,否则空间叠加计算会出错。
  • 若雪道图层数据量较大,计算可能需要一定时间,建议先对图层进行空间索引优化。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 19:33:13