javascript - 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
]
]
]
}
}
解决方案
我认为问题出在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 })))
改为
尝试
推荐阅读
- r - 使用函数从变量中捕获相应的值
- javascript - 在 ES6 / ES7 的 HTML 元素中添加和删除类
- kubernetes - Kubernetes,k8s如何制作服务url?
- android - 如何以 json 对象或 json 数组的形式向服务器发送值
- javascript - 如何使用 ref 访问当前节点
- dart - 在flutter发布模式下,一个快照中的native代码如何在mulity arch cpus中运行
- postgresql - pg函数内的for循环
- reactjs - 用工作箱 PWA 反应 PWA
- python - 添加在 TensorFlow 中检测到的对象
- node.js - Nodejs密码重置出错