问题标签 [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.
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 中的原始数据。我试图得到同样的东西,但合并了。
javascript - 获取距离一个点 x 分钟的区域(基于方向,而不是地理距离)
我正在尝试复制turf.js 缓冲区的功能,但基于方向时间(1)而不是距离(2)。在Mapbox 方向 API和 turf.js 文档中都找不到任何东西。我错过了什么吗?
(1)在一个需要2000万车程才能到达的点附近获得区域
(2) 得到一个点周围20km的区域
javascript - 多边形内的 Leaflet 和 Turf.js 点
我在传单中有一个包含 17 个点(GeoJSON)的简单地图,并使用绘图工具创建了一个多边形,用于选择多边形内的点。
有什么想法或建议吗?
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 的两个“多边形”
有谁知道如何合并共享至少一个公共顶点的多边形?为什么会出现拓扑错误?
编辑:多边形不是“不完整的”(我使用的是折线)
我还尝试了一个更简单的示例:
仍然得到错误:
所以这不是(或至少不仅仅是)由于扭结
javascript - turf.js 可以用来查找和修复错误的 geojson 几何吗?
方法:我目前正在使用 turf.js 进行地理处理,作为更广泛的制图项目的一部分;我的工作流程如下所示:
- 拉取整个县的人口普查区的 geojson
- 从 OSM 为县区拉取水多边形的 geojson 瓷砖
- 递归地将大片和每个水瓦拉入节点脚本
- 在脚本中,
turf.merge
水平铺成单个多面体 - 在脚本中,递归
turf.intersect
每个区域多边形与水多边形 - 在脚本中,
turf.erase
区域多边形中的水域(如果相交) - 将被水擦除的大片倾倒到文件中
问题:当我的流程在第 3 步中遍历每个水瓦时,它会碰到一个特定的瓦并开始抛出此错误:
. . . 继续所有后续迭代。一旦发生错误,tracts geojson 文件就会出现格式错误,并且不会在任何查看器中加载。
最令人困惑的是,仅当我通过 turf 脚本按顺序运行所有图块时才会出现此错误。当我只运行有问题的磁贴时,脚本会成功。如果我将所有水瓦合并到一个 geojson 文件中,turf.erase
并且直接针对 tracts 文件,该脚本还会导致格式错误的 geojson。另一个复杂之处是,如果我将水瓦合并到一个文件中,然后将其移交给 QGIS 并手动运行“差异”地理处理,则整个过程都可以正常工作;没有错误,有效的输出几何。
所有迹象都指向无效几何的问题,可能与瓷砖边界或我合并水多边形的方式有关。如何使用手头的工具 (turf.js) 找到错误的几何形状并修复它?
leaflet - 地图上的多边形交点显示偏移
我试图找到在地图上绘制的 2 个多边形之间的交叉区域。我有 TurfJS intersect 方法来查找 2 个多边形之间的交集。
它适用于较小的区域,但对于较大区域的多边形,它开始在交点处显示一些偏移,偏移随着距离的增长而增长。这也仅适用于具有倾斜线的多边形(垂直和水平线相交似乎效果很好)。
我为此创建了一个 JSFiddle:https ://jsfiddle.net/cLe6yo9d/
我试图找到黑色和蓝色多边形之间的交点,我得到的显示为红色多边形,它看起来从它应该在的位置移动。
这个小提琴是通过修改turf.intersect 示例来重现问题而创建的。
希望有人可以帮助我了解出了什么问题。
geojson - 向线串添加密度
有没有一种 turfjs 方法可以让我增加线串的密度?如果没有,是否还有其他一条线可以做到这一点?
geojson - 重新排序geojson点
有没有办法重新排序geojson中的点,以便我的线“粘”在路上。现在我尝试根据经度进行排序,但是“S”形曲线将一些点超出了 gps 序列,但是按排序顺序(因此,之字形)
我将如何正确地重新排序我的积分?目前我正在将草皮用于其他东西,但另一个图书馆也可以。