【发布时间】:2010-03-16 12:15:03
【问题描述】:
我需要编写一个应用程序来计算两个英国地址之间的估计行车距离;我想我可以使用谷歌如下:
http://maps.google.com/maps/nav?q=from:London%20to:Dover
但是,有谁知道从单个 IP 地址查询数据库的每日/每月限制是多少?
我需要在商业应用程序(货运服务)中实施,有没有可靠的替代方案?我可以花一些钱;但是“一些”;
开发语言/平台:C#、.NET
问候,
【问题讨论】:
我需要编写一个应用程序来计算两个英国地址之间的估计行车距离;我想我可以使用谷歌如下:
http://maps.google.com/maps/nav?q=from:London%20to:Dover
但是,有谁知道从单个 IP 地址查询数据库的每日/每月限制是多少?
我需要在商业应用程序(货运服务)中实施,有没有可靠的替代方案?我可以花一些钱;但是“一些”;
开发语言/平台:C#、.NET
问候,
【问题讨论】:
您可以使用 OpenStreetMaps 数据库并自己进行计算, 但这会涉及一些编码。
【讨论】:
如果您只关心粗略估计,您可以在 postgis 中使用带有 pgrouting 的 openstreetmap。如果您只是在一个城市到另一个城市进行,那么您真的不必担心地理编码,因为拉特朗城市是众所周知的。
如果您的服务仅限于英格兰,我会保留一个大型数据库表,其中包含前 5000 个城市的成对距离组合。使用 pgrouting 离线计算一次,然后在请求到来时调用它。这将使大多数用户的应用程序更快。
所有主要的地图播放器都有路由 API(Yahoo、Bing、MapQuest、Nokia) 您也可以查看 deCarta 以获得相同的服务。他们是雅虎和谷歌背后的 LBS 引擎已经有一段时间了。
[更新]如果您只是为了粗略估计而这样做,您真的需要做路由还是只做直线距离。直线求解要简单得多。您只需要城市中心的纬度,无需街道网络数据或进行路由计算。
【讨论】:
截至 4 月 1 日,The Ordnance Survey 发布了很多数据,包括他们的 Code-Point 产品,免费 download from their website。它也是mirrored by MySociety,其中包括转换为 WGS84 坐标(即 GPS 设备使用的坐标),从中计算两点之间的大圆距离是相当简单的 - 微不足道,它可能是其中的一部分如果您在数据库中有点,则执行 SQL 查询。
如果您需要更准确的实际行驶距离,您还可以下载 Meridian 数据,并实现一个相当基本的路由算法(Djakstra 可能在这里有意义)
【讨论】:
通常,大多数道路 shapefile 都有一个 begin_address/end_address 字段,用于每个路段,您可以在其中插入地址。底线是您在收集和组织地址数据时遇到了 GIS 问题,我认为 NP 问题更简单。
查看postgis。您可以将形状文件转换为它。 irc.freenode.net 上的 irc 房间 #postgis 非常有帮助,所以有邮件列表。
【讨论】:
您可以在商业 某些类型的应用程序中合法使用谷歌地图。他们授予您许可证和 API 密钥以嵌入您的页面代码。当然,也有一些限制。见http://code.google.com/apis/maps/terms.html。
[编辑澄清。如果您不直接从中赚钱,则可以使用它,这是 OP 的意图。]
【讨论】:
通过postcodeanywhere.co.uk,每次查询 2-5 便士如何,现收现付。他们与机管局合作,因此他们的数据可能非常准确和完整。
可能会为您节省一些开发时间(这也转化为金钱)。与 bean 柜台核对每报价是否值 2 便士。如果没有,您可能会通过他们的服务运行 X 次最受欢迎的旅行并缓存结果(可能违反他们的条款和条件,请先检查)。
【讨论】:
我已经使用 Google 地图解决了这个问题,并且我已经使用 Newtonsoft JSON 编写了自定义 API。
我还没有在博客的任何地方发布解决方案(很快就会发布)。
如果有人有兴趣获取一段代码,请联系我。
【讨论】: