查找点(纬度、经度)是否在 OpenStreetMaps "way"(区域)内

Find if a point (latitude, longitude) is within OpenStreetMaps "way" (area)

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

例如,如果我在 "Richmond Upon Thames" 这样的方式中有 4 个位置,看起来像这样:

它应该 return 只是点 B 和 C。这可以使用 Open Street Maps API 吗?

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

Here is an example of how the Atlas 库在特定情况下使用两者的组合。对你来说它看起来像这样:

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

图集库 available in Maven Central 供您下载。