【问题标题】:Google Maps/OSM - Finding records within 100 miles of an area (not a point)Google Maps/OSM - 查找区域 100 英里内的记录(不是点)
【发布时间】:2013-11-26 08:40:52
【问题描述】:

我想找到给定区域 N 英里内的所有点。

例如该区域是加利福尼亚:查找距离加利福尼亚边界 50 英里以内的所有点(不是加利福尼亚中部)。

使用谷歌地图时,距离是使用给定位置的“中间”计算的,但我需要使用给定位置的边界来计算距离。位置可以是任何邮政编码、城市或国家/地区。

是否可以通过在地图上使用加利福尼亚的坐标绘制多边形并使用多边形的点计算到位置 B 的距离来完成?

有没有更优雅的解决方案?有什么想法吗?

谢谢!

【问题讨论】:

  • 距离边界必须精确 100 英里吗?对于 OSM,您可以下载给定边界框(矩形)内的所有数据。
  • 是的。理论上是可以做到的。

标签: mysql oracle google-maps distance openstreetmap


【解决方案1】:

我不确定我是否完全理解您的要求,但我会尝试不同的解释:

1.您想过滤自己的地图点:
这可以通过任何 GIS 或提供类似 my_points_in_area(bbox) 的调用的自己的服务来完成。 Bbox 在这里表示边界框,是描述给定中心点周围矩形的 2x 纬度/经度对。如果您想要准确并且真的只是在 100 公里内提供什么,您可能需要再次测试到 POI 的距离,因为矩形还会包含更远的点。

2。您要过滤 OSM 数据:
您可以使用反向地理编码服务作为 Nominatim 来获取有关此距离内的兴趣点的信息:http://wiki.openstreetmap.org/wiki/Nominatim

否则,使用 osmosis 将 OSM 数据导入 PostGIS DB。 AFAIK(目前)没有适用于 Oracle 的数据库工具:http://wiki.openstreetmap.org/wiki/Oracle

如果我错过了您的问题,我很抱歉,但是请添加更多详细信息:)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-11-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-24
    • 2022-10-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多