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

使用turf.mask()得到无孔洞Polygon的异常问题排查

turf.mask()异常填充内部环的原因分析

问题现象

使用turf.mask()时出现不符合预期的结果:当传入undefined作为mask参数(按官方文档应使用全球范围作为遮罩),执行turf.mask(polygon, undefined)后,结果反而填充了输入Polygon的内部环(原本应为镂空区域)。

核心原因

问题出在输入Polygon的环方向不符合OGC标准:

  • OGC规范要求多边形的外部环坐标为顺时针,内部环(即镂空的洞)坐标必须为逆时针。
  • 测试用的Polygon数据中,内部环的坐标方向和外部环一致(均为顺时针),导致turf.mask()在计算全球范围与输入多边形的差集时,错误地将内部环识别为独立的外部区域,最终把这些“洞”当成了需要填充的范围。

验证与解决

  1. 验证环方向:检查Polygon的坐标数组,内部环的坐标顺序与外部环完全一致,违反了OGC的多边形结构规则。
  2. 修复方案:
    • 手动修正内部环的坐标顺序,将其反转成逆时针,可使用turf.reverse()处理内部环的坐标数组后重新构建Polygon。
    • 调用turf.rewind()工具,该方法会自动调整多边形的环方向,确保外部环顺时针、内部环逆时针,修正后再执行turf.mask()即可得到正确结果。

内容的提问来源于stack exchange,提问作者four-eyes

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 00:57:23