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

合法GeoJSON Polygon能否表示岛中湖中的岛?规范与验证疑问

关于GeoJSON表示“岛中湖中的岛”的合法性问题

核心结论

合法的GeoJSON 单个Polygon确实无法表示“岛中湖中的岛”这类多层嵌套的地理形态,必须使用MultiPolygon来实现。

规范依据与问题分析

根据RFC7846对Polygon的定义:

对于包含多个环的Polygon,第一个环必须是外环,其余必须是内环。外环界定表面范围,内环(若存在)界定表面内的孔洞。

你提供的Polygon数据中,第三个环会被规范解析为第一个外环的直接孔洞,但它实际是第二个内环(湖)内部的“岛”,不符合“内环仅为外环孔洞”的要求,因此第一个验证器的判断是正确的——该Polygon属于无效GeoJSON。

正确的表示方法

要实现“岛中湖中的岛”的形态,需要用MultiPolygon,将结构拆分为两个独立的Polygon:

  1. 第一个Polygon:最外层大岛(外环) + 中间的湖(内环,即大岛的孔洞)
  2. 第二个Polygon:湖内部的小岛(仅外环,作为独立的多边形单元)

对应的合法GeoJSON示例如下:

{
  "type": "MultiPolygon",
  "coordinates": [
    [
      [
        [-0.8, -0.8],
        [0.8, -0.8],
        [0.8, 0.8],
        [-0.8, 0.8],
        [-0.8, -0.8]
      ],
      [
        [-0.6, -0.6],
        [-0.6, 0.6],
        [0.6, 0.6],
        [0.6, -0.6],
        [-0.6, -0.6]
      ]
    ],
    [
      [
        [-0.4, -0.4],
        [0.4, -0.4],
        [0.4, 0.4],
        [-0.4, 0.4],
        [-0.4, -0.4]
      ]
    ]
  ]
}

该结构符合GeoJSON规范:MultiPolygon中的每个Polygon要么是实心区域,要么是带孔洞的区域,通过组合这两个Polygon,就能准确表达“大岛-湖-小岛”的嵌套形态。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 15:31:41