首页 > 解决方案 > Turf js绘制具有中心点和半径的完美正方形

问题描述

我正在尝试从中心点和半径生成 p 方形多边形。如下所示。

bboxPolygon(square(bbox(circle(_circle.center, 0.5, { steps: 64 }))))

所有功能都来自 turf.js

我相信应该生成完美的正方形或至少接近正方形。但是,它返回矩形。

我不确定这是草皮库问题还是我用错了。

圆形geojson

{
  "type": "Feature",
  "properties": {},
  "geometry": {
    "type": "Polygon",
    "coordinates": [
      [
        [
          -73.93524199999999,
          40.734656941636764
        ],
        [
          -73.93791238162646,
          40.73411472349626
        ],
        [
          -73.93986713367875,
          40.73263337851494
        ],
        [
          -73.94058248193825,
          40.730609876934174
        ],
        [
          -73.93986685239045,
          40.72858643688632
        ],
        [
          -73.93791210033818,
          40.72710521497083
        ],
        [
          -73.93524199999999,
          40.72656305836324
        ],
        [
          -73.93257189966181,
          40.72710521497083
        ],
        [
          -73.93061714760952,
          40.72858643688632
        ],
        [
          -73.92990151806174,
          40.730609876934174
        ],
        [
          -73.93061686632124,
          40.73263337851494
        ],
        [
          -73.93257161837353,
          40.73411472349626
        ],
        [
          -73.93524199999999,
          40.734656941636764
        ]
      ]
    ]
  }
}

bboxPolygon 结果

{
  "type": "Feature",
  "bbox": [
    -73.93928894163675,
    40.72656305836324,
    -73.93119505836323,
    40.734656941636764
  ],
  "properties": {},
  "geometry": {
    "type": "Polygon",
    "coordinates": [
      [
        [
          -73.93928894163675,
          40.72656305836324
        ],
        [
          -73.93119505836323,
          40.72656305836324
        ],
        [
          -73.93119505836323,
          40.734656941636764
        ],
        [
          -73.93928894163675,
          40.734656941636764
        ],
        [
          -73.93928894163675,
          40.72656305836324
        ]
      ]
    ]
  }
}

标签: javascriptgeojsonturfjs

解决方案


我认为问题出在turf.square功能上。它没有做我所期望的。

如果你更换,你应该得到非常接近正方形的东西 bboxPolygon(square(bbox(circle(_circle.center, 0.5, { steps: 64 }))))

bboxPolygon(bbox(circle(_circle.center, 0.5, { steps: 64 })))

这是输出的示例。红色是圆圈,绿色是使用正方形得到的输出,蓝色是不使用正方形的输出。

在此处输入图像描述

如果您查看源代码square您会注意到它实际上并没有创建一个每边距离相等的 bbox。然而,它创建了一个在程度上具有相同变化的 bbox。由于我们在经度和纬度上工作,因此通常不是距离为正方形的多边形。

我不确定为什么有人会需要这个square功能,因为如果它是方形的,我会发现它更有用,但是我不知道这是否是预期的行为。

TLDRbboxPolygon(bbox(circle(_circle.center, 0.5, { steps: 64 })))改为 尝试


推荐阅读