gpt4 book ai didi

google-maps - TurfJs union - 如何忽略内部但 union 略有不同的点?

转载 作者:行者123 更新时间:2023-12-01 17:28:12 26 4
gpt4 key购买 nike

我为多边形使用了 2 个 geojson 对象。它太大了,我不能在这里发布。现在我正在使用 TurfJs 合并这个多边形 geojson 并将其绘制在 map 上。但它不能正常工作。

我认为中间的一点点有点不同。那么在turfjs union中有什么办法可以忽略中间的这个点吗?

请参阅下面的图片以更好地理解。

多边形 1: enter image description here

多边形 2:

enter image description here

现在为波纹管代码合并多边形:

polygons = {
"type": "FeatureCollection",
"features": [poly1, poly2]
};

enter image description here

现在主要的 UNION 结果:

union = turf.union(poly1,poly2);

enter image description here

所以在这里,我想忽略边界中间的点我知道,在两个多边形的交界边界上可能有不准确的点,但我可以忽略更近或有一点差异的点吗忽略中间点?

或者是否有任何替代方法来合并多边形而忽略一些较近的点干扰并删除中间点?

最佳答案

您可以尝试通过 turf.buffer(result, 0, 'kilometers') ( turf-buffer docs ) 运行生成的多边形。如果您的结果是无效的 geojson,那么使用缓冲区 0 应该清理几何(删除中间的点/线)。

如果没有看到结果的实际 GeoJSON,很难说什么是肯定有效的。有什么办法可以上传到pastebin吗?或者其他的东西?

更新 - Turf 缓冲区在这种情况下不起作用。我可以开始工作的唯一解决方案是根据 turf.union(p1, p2) 的结果执行此操作。

result.geometry.coordinates = [result.geometry.coordinates[0]]

您要谨慎使用此解决方案,因为它会从多边形中移除除外环以外的所有内容。

要了解其工作原理/工作原理,您需要确保了解 geojson 多边形坐标的工作原理。来自geojson.org geojson polygon specification

For type "Polygon", the "coordinates" member must be an array of LinearRing coordinate arrays. For Polygons with multiple rings, the first must be the external ring and any others must be internal rings or holes.

外环本质上是多边形的轮廓。任何内环通常表示为孔。在您的情况下,内部环实际上是线。

查看 geojson 多边形的坐标时,您会注意到所有坐标都包含在外部数组中。这是一个只有一个(外部)环的 geojson 多边形示例。

{"type": "Feature", "properties": {}, "geometry": {"type": "Polygon", "coordinates": **[ [ [1, 1], [1, 2], [1, 3], [1, 1] ] ]**

请注意,环的第一个坐标和最后一个坐标必须始终相同。这确保我们得到一个封闭的形状(即:多边形)。

下面是一个外环和内环的例子

{"type": "Feature", "properties": {}, "geometry": {"type": "Polygon", "coordinates": **[ [ [1, 1], [1, 2], [1, 3], [1, 1] ], [ [1, 2], [1, 3], [1, 1] ] ]**

现在,如果我们将建议的解决方案应用于上面的示例,我们将获得与第一个示例相同的坐标,因为我们只从多边形中获取第一组坐标,它始终是外环。坐标数组中的任何后续元素都将表示内环(这就是线条的含义,即使它们在技术上不是有效的内环)。

{"type": "Feature", "properties": {}, "geometry": {"type": "Polygon", "coordinates": **[ [ [1, 1], [1, 2], [1, 3], [1, 1] ] ]**

如您所见,我们正在从多边形中移除所有内环。这就是您必须谨慎使用它的原因。如果您有有效的内部环,它实际上会摆脱这些。

我认为发生这种情况的原因是因为您的多边形(p1p2)共享一个边界。

关于google-maps - TurfJs union - 如何忽略内部但 union 略有不同的点?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42555878/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com