【问题标题】:finding distance between two UK addresses查找两个英国地址之间的距离
【发布时间】:2010-03-16 12:15:03
【问题描述】:

我需要编写一个应用程序来计算两个英国地址之间的估计行车距离;我想我可以使用谷歌如下:

http://maps.google.com/maps/nav?q=from:London%20to:Dover

但是,有谁知道从单个 IP 地址查询数据库的每日/每月限制是多少?

我需要在商业应用程序(货运服务)中实施,有没有可靠的替代方案?我可以花一些钱;但是“一些”;

开发语言/平台:C#、.NET

问候,

【问题讨论】:

    标签: c# gis distance


    【解决方案1】:

    您可以使用 OpenStreetMaps 数据库并自己进行计算, 但这会涉及一些编码。

    【讨论】:

    【解决方案2】:

    如果您只关心粗略估计,您可以在 postgis 中使用带有 pgrouting 的 openstreetmap。如果您只是在一个城市到另一个城市进行,那么您真的不必担心地理编码,因为拉特朗城市是众所周知的。

    如果您的服务仅限于英格兰,我会保留一个大型数据库表,其中包含前 5000 个城市的成对距离组合。使用 pgrouting 离线计算一次,然后在请求到来时调用它。这将使大多数用户的应用程序更快。

    所有主要的地图播放器都有路由 API(Yahoo、Bing、MapQuest、Nokia) 您也可以查看 deCarta 以获得相同的服务。他们是雅虎和谷歌背后的 LBS 引擎已经有一段时间了。

    [更新]如果您只是为了粗略估计而这样做,您真的需要做路由还是只做直线距离。直线求解要简单得多。您只需要城市中心的纬度,无需街道网络数据或进行路由计算。

    【讨论】:

    • 直线距离可能会误导某些旅行?多佛到诺里奇的直线旅程可能会让卡车有点潮湿:)
    • 同意,但你肯定要为理解这一点的路由算法支付可观的钱,而且成本似乎是一个相当大的问题。
    【解决方案3】:

    截至 4 月 1 日,The Ordnance Survey 发布了很多数据,包括他们的 Code-Point 产品,免费 download from their website。它也是mirrored by MySociety,其中包括转换为 WGS84 坐标(即 GPS 设备使用的坐标),从中计算两点之间的大圆距离是相当简单的 - 微不足道,它可能是其中的一部分如果您在数据库中有点,则执行 SQL 查询。

    如果您需要更准确的实际行驶距离,您还可以下载 Meridian 数据,并实现一个相当基本的路由算法(Djakstra 可能在这里有意义)

    【讨论】:

      【解决方案4】:

      通常,大多数道路 shapefile 都有一个 begin_address/end_address 字段,用于每个路段,您可以在其中插入地址。底线是您在收集和组织地址数据时遇到了 GIS 问题,我认为 NP 问题更简单。

      查看postgis。您可以将形状文件转换为它。 irc.freenode.net 上的 irc 房间 #postgis 非常有帮助,所以有邮件列表。

      【讨论】:

      • 我认为廉价获取道路矢量数据将是第一个问题。
      【解决方案5】:

      您可以在商业 某些类型的应用程序中合法使用谷歌地图。他们授予您许可证和 API 密钥以嵌入您的页面代码。当然,也有一些限制。见http://code.google.com/apis/maps/terms.html

      [编辑澄清。如果您不直接从中赚钱,则可以使用它,这是 OP 的意图。]

      【讨论】:

      • ...您不得 ...10.4 向用户或任何其他第三方收取任何使用 Maps API 实施、服务或内容的费用,除非您已单独签订与 Google 达成书面协议或获得 Google 的书面许可
      • 感谢 Axarydax 指出;但是,我的应用不会对谷歌地图的使用收费,也不会用于计算运费,将用于粗略报价;a
      • 10.6 您不得将服务或内容...用于...调度、车队管理...或类似用途
      • @MarkJ:他所说的不是调度或车队管理(或类似的);用于估算运费。
      【解决方案6】:

      通过postcodeanywhere.co.uk,每次查询 2-5 便士如何,现收现付。他们与机管局合作,因此他们的数据可能非常准确和完整。

      可能会为您节省一些开发时间(这也转化为金钱)。与 bean 柜台核对每报价是否值 2 便士。如果没有,您可能会通过他们的服务运行 X 次最受欢迎的旅行并缓存结果(可能违反他们的条款和条件,请先检查)。

      【讨论】:

        【解决方案7】:

        我已经使用 Google 地图解决了这个问题,并且我已经使用 Newtonsoft JSON 编写了自定义 API。

        我还没有在博客的任何地方发布解决方案(很快就会发布)。

        如果有人有兴趣获取一段代码,请联系我。

        【讨论】:

        • 您是否已经在任何地方发布了代码?我正在寻找与您在这篇文章中所做的几乎完全相同的事情。非常感谢。
        猜你喜欢
        • 2013-07-15
        • 1970-01-01
        • 1970-01-01
        • 2013-03-20
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-08-19
        • 2015-01-21
        相关资源
        最近更新 更多