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

C# 如何按与lat/lon的距离对大量(可能是部分)地址进行排序,c#,.net,sql-server,algorithm,geolocation,C#,.net,Sql Server,Algorithm,Geolocation,我有一个包含10000多个地址的数据库,我想按单个lat/lon的距离进行排序 这些地址有时是完整的街道地址,有时只是zipcode,有时是城市/州 我不知道谷歌地理定位api是否能对大量地址起作用,但如果它真的起作用,请让我知道 另一种可能是在将每个地址添加到数据库之前获取lat/lon,并且可以使用SQL地理数据类型。这将允许按距离排序(我想)。是否有免费服务允许获取地址的lat/lon并允许将该信息存储在数据库中?我知道谷歌的服务条款不允许这种使用(存储从其服务中检索到的信息) 还有其他方

我有一个包含10000多个地址的数据库,我想按单个lat/lon的距离进行排序

这些地址有时是完整的街道地址,有时只是zipcode,有时是城市/州

我不知道谷歌地理定位api是否能对大量地址起作用,但如果它真的起作用,请让我知道

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


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

这里有一个很好的链接,介绍如何根据纬度和经度计算距离:

此链接将以双精度形式返回距离,然后您可以对其进行排序。我认为geocoder可能就是您要寻找的:


编辑:您可以使用上面的链接来查询geocoder,以获得每个地址的纬度和经度,然后使用上面的stackoverflow post来获取和了解如何计算距离,然后根据双精度列表进行排序。例如,如果您已经预先计算了纬度/经度。在数据库中的每个地址中,当一个新地址被使用时,服务器将获取lat/long,然后编写一个存储过程来计算距离,并按降序返回行。

问题不询问如何计算距离。它询问如何从一个地址获取lat-lon。很抱歉,我被“我有一个10000多个地址的数据库,我想按距离排序”和“单个lat/lon”的评论弄糊涂了。唯一的问题是:是否有免费服务允许获取地址的lat/lon并允许将该信息存储在数据库中?有没有其他方法可以对这个列表进行排序?但是他没有具体说明你所说的“这份名单”是什么意思。如果不清楚,很抱歉。我所指的列表是包含地址的数据库表(每行代表一个地址)。我想你提到的geocoder.us网站可能会有用,但我仍在关注该网站。我认为我将尝试并实现的解决方案是向该表中添加一个地理sql server 2008数据类型列,当我插入这些地址时,我将调用geocoder.us站点获取坐标并将该位置插入到我的数据库表中。但是,只有当你计划在谷歌地图上显示内容时,你才能使用它,而且每天的请求量也有2500个限制,除非你支付商业API密钥的费用。