由于开源地理编码器无法与谷歌甚至雅虎进行比较,我想开始一个项目来创建一个好的开源地理编码器。只是为了澄清,地理编码器需要一些文本(通常有一些约束)并返回一个或多个纬度/经度对。
我意识到这是一项艰巨的任务,所以我想知道如何开始。你会读什么?您会熟悉哪些算法?您会查看哪些代码?
而且,假设你要非常敏捷地开发它,你想要第一个原型能够做什么?
编辑:我们暂时搁置数据问题。我将使用OpenStreetMap数据以及我拥有的航点数据库。我后来计划也包括其他数据集,我意识到地理编码器本质上受原始数据质量的限制。
答案 0 :(得分:3)
第一个(也可能是阻塞)问题是:您从哪里获取数据? (除非你愿意支付数千美元用于专有套装)。
你可以在OpenStreetMap之上构建一个geocoding-api(他们会定期在转储中发布他们的数据)我想,但是上次检查时,这个数据仍然非常不完整。
答案 1 :(得分:1)
算法很简单。然而,良好的映射数据是昂贵的。很贵。
谷歌在世界各地开车,收集这些数据等。答案 2 :(得分:0)
第一个原型应接受邮政编码并以原始文本返回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装置,或者他们从一些现有的来源获得信息。现有的来源可能是......(所有猜测)
我想我得到的是信息是从某个地方导入的,还是由某人通过某个界面输入的。作为我的出发点,我将看看如何获取这些信息。在开源的情况下,您可能会让一群热心的人输入信息。
因此,对于我的第一个原型,尽管很无聊,我会创建一个输入信息的表单。
然后你需要知道计算出最近距离的数学(就像乌鸦一样)。从那里,试着弄清楚如何包括道路。 (我的猜测是你必须为每条曲线都有数据点,你可以在那里保存曲线的地理编码位置,以及北/南和东/西向量的道路角度。你可能需要也要考虑倾斜,以获得准确的道路测量。)
这就是我开始的地方。
但说实话,我甚至不会从此开始。其他程序员已经完成了它,我对尚未完成的工作更感兴趣。