【问题标题】:Find if a point (latitude, longitude) is within OpenStreetMaps "way" (area)查找一个点(纬度,经度)是否在 OpenStreetMaps“方式”(区域)内
【发布时间】:2018-04-23 15:56:49
【问题描述】:

我有一个关于各种房屋、办公室等的经度和纬度点列表。我试图将它们分开以确定它们是否在某个Way 内。我不想使用一个区域的旧“中心点”,然后是半径值,因为这不够准确。

例如,如果我在“泰晤士河畔里士满”这样的方式中有 4 个地点,看起来像这样:

它应该只返回 B 点和 C 点。这可能使用 Open Street Maps API 吗?

【问题讨论】:

  • “这可能使用 Open Street Maps API 吗?”不是。OSM API 主要是一个编辑 API,并非旨在执行任意空间计算。
  • @scai 啊,我明白了。这是否意味着我需要首先下载 Way 区域的所有空间数据,然后使用我自己的一些代码来计算 long/lat 点是否在 Way 区域?
  • 路径的坐标应该足以判断点是在里面还是在外面。不需要额外的数据。
  • 我明白了。我想我当时唯一的问题是试图找到一个可以计算“isInsideWay”函数的函数。我看到有很多关于如何做到这一点的答案,但如果 lat 和 long 值同时具有负值和正值,则没有答案。
  • 我想你应该问一个关于你的新问题的新问题,最好是gis.stackexchange.com

标签: geolocation openstreetmap latitude-longitude


【解决方案1】:

如果您喜欢 Java,您可以将方式加载为多边形并使用 JTS(Java 拓扑套件)库或 AWT 库来计算您的点是否在内部。

HereAtlas 库在特定情况下如何结合使用两者的示例。对你来说,它看起来像这样:

  1. 将 Way 的每个纬度/经度对转换为 Location 对象
  2. 将每个Location 添加到列表中并用它创建一个新多边形
  3. 使用您拥有的每个兴趣点在 Polygon 上调用 Polygon.fullyGeometricallyEncloses(Location) 方法

Atlas 库是available in Maven Central 供您下载。

【讨论】:

    猜你喜欢
    • 2013-07-03
    • 1970-01-01
    • 1970-01-01
    • 2014-03-30
    • 2021-04-16
    • 1970-01-01
    • 2011-06-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多