【问题标题】:Calculate distance to linestring计算到线串的距离
【发布时间】:2014-11-11 21:15:26
【问题描述】:

我对 GIS 很陌生,所以我需要一些帮助。

我想计算来自 GeoJSON 文件和线串的 POI 之间的距离。 所以 POI 与线串有一定距离(平行)。

从我的 GeoJSON 文件计算单点(“当前位置”)和 POI 之间的距离不是问题(使用 distanceTo() ) 但是计算 POI 和线串之间的距离超出了我的想象。

我的最终目标是为我的 geoJson 图层使用过滤器选项,并且只显示位于与线串一定距离(平行)的 POI。 (例如,最大距离 50 米)

使用十进制度的纬度/经度。

【问题讨论】:

  • 我的回答对你有用吗?如果是这样,如果您可以将其标记为将来会遇到此问题的其他人的答案,我将不胜感激
  • 我已经有 2 年没有接触过 GIS 软件了,但是在我看来,阅读您的问题听起来更像是一个数学(矢量)问题。 This link 比我的英文单词解释得更好。这是一个可以考虑的选择吗? (我知道地理数据不能被视为纯粹的“计划”,但是......)

标签: geometry gis leaflet geojson


【解决方案1】:

您需要遍历您的 POIsLayer 以使用您的 LineLayer 计算每个 POI,并保存每个点的最小距离,以便以后获取它

POIsLayer.eachLayer(function(POI){
    if (POI instanceof L.LatLng) POI.mindistance = POI.distanceTo(L.GeometryUtil.closest(yourMap,    LineLayer, POI));
});

【讨论】:

  • 我还在苦苦挣扎。 console.log(POI.mindistance) 为所有 POI 提供“未定义”。那么保存的最小距离在哪里以及如何使用它。对不起,我没有那么有经验。
  • 使用我写的相同的行而不是计算最小距离,随意使用它
  • 类似:if (POI instanceof L.LatLng) console.log(POI.mindistance);
  • POIsLayer.eachLayer(function(POI){ if (POI instanceof L.LatLng) POI.mindistance = POI.distanceTo(L.GeometryUtil.closest(yourMap, LineLayer, POI)); console.log(POI.mindistance); }); 打印“未定义”,而console.log(POI) 打印所有对象。如果我添加 ` if (POI instanceof L.LatLng) console.log(POI.mindistance);` 什么都不会打印。我在脚本部分的末尾添加了您的行。对不起我的愚蠢。
猜你喜欢
  • 2016-02-13
  • 1970-01-01
  • 2020-12-08
  • 1970-01-01
  • 2013-07-17
  • 1970-01-01
  • 1970-01-01
  • 2019-08-02
  • 1970-01-01
相关资源
最近更新 更多