寻找想法:你将如何开始编写地理编码器?

时间:2009-09-10 21:26:19

标签: geocoding geospatial

由于开源地理编码器无法与谷歌甚至雅虎进行比较,我想开始一个项目来创建一个好的开源地理编码器。只是为了澄清,地理编码器需要一些文本(通常有一些约束)并返回一个或多个纬度/经度对。

我意识到这是一项艰巨的任务,所以我想知道如何开始。你会读什么?您会熟悉哪些算法?您会查看哪些代码?

而且,假设你要非常敏捷地开发它,你想要第一个原型能够做什么?

编辑:我们暂时搁置数据问题。我将使用OpenStreetMap数据以及我拥有的航点数据库。我后来计划也包括其他数据集,我意识到地理编码器本质上受原始数据质量的限制。

5 个答案:

答案 0 :(得分:3)

第一个(也可能是阻塞)问题是:您从哪里获取数据? (除非你愿意支付数千美元用于专有套装)。

你可以在OpenStreetMap之上构建一个geocoding-api(他们会定期在转储中发布他们的数据)我想,但是上次检查时,这个数据仍然非常不完整。

答案 1 :(得分:1)

算法很简单。然而,良好的映射数据是昂贵的。很贵。

谷歌在世界各地开车,收集这些数据等。

答案 2 :(得分:0)

  • http://ipinfodb.com/ip_database.php
  • 等地方获取我的免费原始数据
  • 将其加载到数据库中,对于快速查找进行非规范化
  • 设计我的API
  • 将其构建为RESTful Web服务
  • 以不同的格式返回结果:JSON,XML,CSV,原始文本

第一个原型应接受邮政编码并以原始文本返回lat / lon。

答案 3 :(得分:0)

从.NET的角度来看,这些文章对您来说可能很有趣:

Writing Your Own GPS Applications: Part I
Writing Your Own GPS Applications: Part 2
Writing GIS and Mapping Software for .NET

我只是浏览了这些文章,但他们长期以来一直在CodeProject的“最受欢迎”名单上。

也许this CodePlex项目是上述文章的作者提供的。

答案 4 :(得分:0)

我会从绝对开始,弄清楚你将如何获得与街道地址匹配的数据与地理编码。谷歌让人们使用GPS装置,或者他们从一些现有的来源获得信息。现有的来源可能是......(所有猜测)

  • 邮政服务
  • 一些现有地图(已打印)
  • 一群热衷于GPS技术的用户,他们非常愿意进入街道地址和GPS坐标
  • 某些政府实体(或实体)
  • 他们自己的卫星

我想我得到的是信息是从某个地方导入的,还是由某人通过某个界面输入的。作为我的出发点,我将看看如何获​​取这些信息。在开源的情况下,您可能会让一群热心的人输入信息。

因此,对于我的第一个原型,尽管很无聊,我会创建一个输入信息的表单。

然后你需要知道计算出最近距离的数学(就像乌鸦一样)。从那里,试着弄清楚如何包括道路。 (我的猜测是你必须为每条曲线都有数据点,你可以在那里保存曲线的地理编码位置,以及北/南和东/西向量的道路角度。你可能需要也要考虑倾斜,以获得准确的道路测量。)

这就是我开始的地方。

但说实话,我甚至不会从此开始。其他程序员已经完成了它,我对尚未完成的工作更感兴趣。