问题标签 [turfjs]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1955 浏览

node.js - Turf.js 合并在 GeoJSON 中查找特征

我正在使用 Node.js 构建地图应用程序。我们在地图上显示了大约 40,000 个多边形,因此我试图通过在可能的情况下合并它们来提高性能。Turf.js 有一个看起来像门票的合并功能。虽然我无法让它工作。

这是我试图在控制器中使用草皮的代码。

我将 fs.writeFile 放在那里以获取从 mongodb 返回的 geojson 样本。这就是我得到的:

我得到一个堆栈跟踪,但对我来说没有意义:

Turf 似乎正在寻找 geojson 中的功能键,但没有。有人对此有解决方案吗?

###################### 在 ghybs 的回答之后编辑

好的,ghybs 解决了 geojson 格式问题。我将控制器的最后一位更改为:

我放了第二个 fs.writeFile 来查看 turf.merge 返回的内容。原始的 geojson 不是数组,所以我添加了 []。没有更多的草皮错误。我的地图无法理解输出。

现在 poly.txt 给了我这个:

并且 test.txt 包含以下内容:

所以我认为我更近了一步。有任何想法吗?该地图适用于 poly.txt 中的原始数据。我试图得到同样的东西,但合并了。

0 投票
1 回答
61 浏览

javascript - 获取距离一个点 x 分钟的区域(基于方向,而不是地理距离)

我正在尝试复制turf.js 缓冲区的功能,但基于方向时间(1)而不是距离(2)。在Mapbox 方向 API和 turf.js 文档中都找不到任何东西。我错过了什么吗?

(1)在一个需要2000万车程才能到达的点附近获得区域

(2) 得到一个点周围20km的区域

0 投票
2 回答
2330 浏览

javascript - 多边形内的 Leaflet 和 Turf.js 点

我在传单中有一个包含 17 个点(GeoJSON)的简单地图,并使用绘图工具创建了一个多边形,用于选择多边形内的点。

有什么想法或建议吗?

0 投票
1 回答
3213 浏览

javascript - 如何合并相邻的多边形

我正在使用 Fortune 算法的 Javascript 实现来计算 voronoi 单元(https://github.com/gorhill/Javascript-Voronoi)。我要计算的站点是地图上的点(所以(lat,lng))。我首先进行了投影(lat,lng) -> (x,y),然后计算了 voronoi 细胞,并以另一种方式进行了半边的投影。
它工作正常,我使用传单显示结果,但我还需要做一件事。

我最初计算的每个站点都依赖于一个 ID,我按 ID 重新分类 voronoi 单元,最后,每个 ID 都具有如下所示的标准数据结构:

给定 ID 的一组多边形(由 voronoi 单元的半边构成)。

我需要按 ID 合并这些多边形,我打算使用turf.merge(),但我有拓扑错误

根据这篇文章(http://lists.refracions.net/pipermail/jts-devel/2009-March/002939.html),我尝试将(lat,lng)这对夫妇从 10^-14 到 10^-7 但它并没有真正奏效。在寻找扭结并尝试消除它们之前,我打印了一些数据样本,并且我知道我是否使用了来自 Fortune 算法的好数据。当我显示所有 ID 的所有多边形时,我得到了正确的图表,但是当我显示一个 ID 的所有多边形或一个 ID 的一些多边形时,我最终得到了不完整的图表:

完整图表的一部分

完整图表的一部分

在此处输入图像描述

一个 ID 的部分图表

在此处输入图像描述

给定 ID 的两个“多边形”

有谁知道如何合并共享至少一个公共顶点的多边形?为什么会出现拓扑错误?

编辑:多边形不是“不完整的”(我使用的是折线)

在此处输入图像描述

我还尝试了一个更简单的示例:

在此处输入图像描述

仍然得到错误:

所以这不是(或至少不仅仅是)由于扭结

0 投票
1 回答
2269 浏览

javascript - turf.js 可以用来查找和修复错误的 geojson 几何吗?

方法:我目前正在使用 turf.js 进行地理处理,作为更广泛的制图项目的一部分;我的工作流程如下所示:

  1. 拉取整个县的人口普查区的 geojson
  2. 从 OSM 为县区拉取水多边形的 geojson 瓷砖
  3. 递归地将大片和每个水瓦拉入节点脚本
  4. 在脚本中,turf.merge水平铺成单个多面体
  5. 在脚本中,递归turf.intersect每个区域多边形与水多边形
  6. 在脚本中,turf.erase区域多边形中的水域(如果相交)
  7. 将被水擦除的大片倾倒到文件中

问题:当我的流程在第 3 步中遍历每个水瓦时,它会碰到一个特定的瓦并开始抛出此错误:

. . . 继续所有后续迭代。一旦发生错误,tracts geojson 文件就会出现格式错误,并且不会在任何查看器中加载。

最令人困惑的是,仅当我通过 turf 脚本按顺序运行所有图块时才会出现此错误。当我只运行有问题的磁贴时,脚本会成功。如果我将所有水瓦合并到一个 geojson 文件中,turf.erase并且直接针对 tracts 文件,该脚本还会导致格式错误的 geojson。另一个复杂之处是,如果我将水瓦合并到一个文件中,然后将其移交给 QGIS 并手动运行“差异”地理处理,则整个过程都可以正常工作;没有错误,有效的输出几何。

所有迹象都指向无效几何的问题,可能与瓷砖边界或我合并水多边形的方式有关。如何使用手头的工具 (turf.js) 找到错误的几何形状并修复它?

0 投票
1 回答
1722 浏览

leaflet - Mapbox 重叠圆

有谁知道一种方法可以使 mapbox 中的重叠圆圈显示相同的颜色,并且只显示外边缘周围的边框?

我有这个: 在此处输入图像描述

我在 Photoshop 中为我想要的东西做了这个: 在此处输入图像描述

0 投票
3 回答
1991 浏览

leaflet - 地图上的多边形交点显示偏移

我试图找到在地图上绘制的 2 个多边形之间的交叉区域。我有 TurfJS intersect 方法来查找 2 个多边形之间的交集。

它适用于较小的区域,但对于较大区域的多边形,它开始在交点处显示一些偏移,偏移随着距离的增长而增长。这也仅适用于具有倾斜线的多边形(垂直和水平线相交似乎效果很好)。

我为此创建了一个 JSFiddle:https ://jsfiddle.net/cLe6yo9d/

我试图找到黑色和蓝色多边形之间的交点,我得到的显示为红色多边形,它看起来从它应该在的位置移动。

这个小提琴是通过修改turf.intersect 示例来重现问题而创建的。

希望有人可以帮助我了解出了什么问题。

0 投票
1 回答
1307 浏览

leaflet - 如何将十六进制应用于整个世界

如何将十六进制应用于整个世界。我在互联网上找到了这个示例,但无法将其应用于整个世界var bbox = [-180, -90, 180, 90];,但它并没有按预期工作。

编辑:我没有使用第 3 方库 turf.js,而是尝试使用L.multiPolygon一切正常创建自己的六边形,但它仅适用于地图的一小部分,如果我添加更多六边形,浏览器会崩溃。所以我想避免一次加载所有的十六进制,而只加载屏幕上可以看到的那些。我找到了一个方法L.PolyUtil.clipPolygon,但我不确定它是如何工作的,这里是jsfiddle

0 投票
1 回答
286 浏览

geojson - 向线串添加密度

有没有一种 turfjs 方法可以让我增加线串的密度?如果没有,是否还有其他一条线可以做到这一点?

0 投票
1 回答
147 浏览

geojson - 重新排序geojson点

有没有办法重新排序geojson中的点,以便我的线“粘”在路上。现在我尝试根据经度进行排序,但是“S”形曲线将一些点超出了 gps 序列,但是按排序顺序(因此,之字形)

在此处输入图像描述

我将如何正确地重新排序我的积分?目前我正在将草皮用于其他东西,但另一个图书馆也可以。