【问题标题】:Need to find all zip codes within a radius in miles from a specified zipcodes [closed]需要从指定的邮政编码查找半径范围内的所有邮政编码[关闭]
【发布时间】:2014-06-05 17:40:29
【问题描述】:

我知道如何从邮政编码中获取经度和经度。 我还有一个包含多个位置及其邮政编码和坐标的数据库。

我想根据半径找到纬度和经度的限制,然后将它们与我的数据库中的可能性进行匹配。

我读到了haversine??公式。但是,我不明白,正在寻找如何找到纬度和经度限制的解释。

【问题讨论】:

标签: java android computational-geometry zipcode


【解决方案1】:

Haversine 用于地理计算,其中弯曲的地球会影响距离。特别是对于不相关的短距离。

给定地球半径 R:

Δ y = (ΔLatitude mod 360)  * 2π R / 360

但 Δ 经度在到达极点时为 0(纬度 = ±90)。

Δ x = (ΔLongitude mod 360)  * 2π R * (90 - |avg latitude|) / 90 / 360
                                     ~~~~~~~~~~~~~~~~~~~~~~~~~~

(下划线部分应该类似于cos(avg latitude in radians),但SQL很少提供余弦函数。)

因此

distance = √(Δx² + Δy²)

【讨论】:

    【解决方案2】:

    您的问题对我来说有点令人困惑,如果您想找到邮政编码的限制,例如更合适的 lat, long bounds 或 lat, long bounds of a city or country or region --这是一个复杂的问题,意味着在您的数据库中创建结构来表示所有点以创建描述区域边界的多边形。

    此外,如果您想查找 lat、long 值的邮政编码,您可以使用 Google 的 Geocoding API。这是使用 HTTP 请求查询的简单资源 参考:https://developers.google.com/maps/documentation/geocoding/?hl=nl

    Haversine 公式用于准确描述弯曲空间上两点之间的距离,如果您要解释距离,则需要使用此公式(一个示例是两个地图地址之间的距离,您可以然后关联到每个地图地址的经纬度值,然后根据弯曲空间的半径计算距离。

    祝你好运!

    【讨论】:

    • 我想在我指定的邮政编码的半径范围内找到所有可能的位置。为此,我使用地理编码器获得了纬度和经度。我想找出一个位置是否在半径范围内的最佳方法是查看它的纬度和经度是否在该范围内。
    • 邮政编码自然不是圆形的,它们具有多边形边界,例如,如果您想知道某物是否在某个点的某个距离之内,与远离邮政编码的某个距离相比更有意义(一个区域)将只是一个扩展区域,以显示要保持的任何额外“半径”距离。 hasrsine 的唯一目的是将指定的半径(以米为单位)转换为 DD(十进制度数)。如果你在 lat,long 有两个点,你只需要知道第三个点在你的两个点之内的最小值,最大值。你可以尝试将半径保持在 DD 中以方便使用。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-01
    相关资源
    最近更新 更多