【问题标题】:How to sort a large list of (possibly partial) addresses by distance from lat/lon如何按与纬度/经度的距离对大量(可能是部分)地址进行排序
【发布时间】:2013-04-30 20:16:36
【问题描述】:

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

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

我不知道 google geolocation api 是否适用于大量地址,但如果有效,请告诉我。

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

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

【问题讨论】:

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


【解决方案1】:

这是一个关于如何根据纬度和经度计算距离的好链接: Calculating Distance between two Latitude and Longitude GeoCoordinates

此链接将以双精度形式返回距离,然后您可以对其进行排序。我认为地理编码器可能是您正在寻找的东西: http://geocoder.us/

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

【讨论】:

  • 问题不问如何计算距离。它询问如何从地址中获取纬度。
  • 对不起,我对这条评论感到困惑“我有一个包含 10,000 多个地址的数据库,我想按距离“从”单个纬度/经度进行排序”唯一的问题是:是否有免费服务允许获取地址的纬度/经度并允许将该信息存储在数据库中?还有其他想法可以对这个列表进行排序吗?但他没有具体说明“这个列表”是什么意思。
  • 很抱歉,如果不清楚。我所指的列表是其中包含地址的数据库表(每一行代表一个地址)。我认为您引用的 geocoder.us 站点可能有效,但我仍在查看该站点。我认为我要尝试实施的解决方案是在此表中添加一个 geography sql server 2008 数据类型列,当我插入这些地址时,我将调用 geocoder.us 站点以获取坐标并将该位置插入我的数据库表。
猜你喜欢
  • 2013-06-28
  • 2019-09-23
  • 2014-01-22
  • 2016-08-29
  • 2015-01-06
  • 1970-01-01
  • 1970-01-01
  • 2013-05-04
  • 2015-10-01
相关资源
最近更新 更多