如何按距离lat / lon的距离对大部分(可能是部分的)地址进行排序

时间:2013-05-07 00:52:07

标签: c# .net sql-server algorithm geolocation

我有一个包含10,000多个地址的数据库,我希望按照距离单个纬度/经度的距离进行排序。

地址有时是完整的街道地址,有时只是邮政编码,有时是城市/州。

我不知道google geolocation api是否会对大量地址有效,但如果确实有效,请告诉我。

另一种可能性是在将每个地址添加到数据库之前获取每个地址的lat / lon,并且可以使用SQL Geography数据类型。这将允许按距离排序(我认为)。是否有免费服务允许获取地址的lat / lon并允许将该信息存储在数据库中?我知道googles服务条款不允许这种使用(存储从其服务中检索到的信息)。

还有其他想法可以对此列表进行排序吗?

1 个答案:

答案 0 :(得分:0)

以下是有关如何根据纬度和经度计算距离的良好链接: Calculating Distance between two Latitude and Longitude GeoCoordinates

此链接将返回双倍的距离,然后您可以对其进行排序。我认为地理编码器可能就是你想要的: http://geocoder.us/

编辑:你可以使用上面的链接来查询地理编码器以获取每个地址的纬度和经度,然后使用上面的stackoverflow帖子来获取和了解如何计算遥远,然后根据双打列表进行排序。例如,如果您已经预先计算了lat./lon。你的数据库中的每个地址然后作为一个新地址使用服务器获取lat / long然后写一个存储过程来计算距离并按降序返回行。