c# - C 中的地理编码查找

标签 c# c++ c search geocode

我想进行超快速地理编码查找,返回城镇、城市或国家输入的坐标。我的知识是基本的,但据我所知,用 C 编写它是一个好的开始。我在想有一个像这样的树结构是有意义的:

  • 英国
    • 肯特
    • 奥尔平顿
    • 查塔姆
    • 罗切斯特
    • 多佛
    • 伊甸园
  • 威尔特郡
    • 斯温顿
    • 马姆斯伯里

在我的文件/数据库中,我将拥有坐标和城镇/城市名称。如果给我的程序取名为“Kent”,我想要一个程序能够以最快的方式返回与“Kent”相关的坐标

出于性能原因,我应该将数据存储在二进制文件还是 SQL 数据库中? 搜索此数据的最佳方法是什么?也许二叉树搜索? 数据应该如何存储?也许?

最佳答案

这里有一些建议,但仅此而已:

如果您想按名称或名称前缀查找地点,如您所希望的那样,那么不建议您设置一个数据结构,将数据存储在国家、地区、城镇的层次结构中正如你所建议的那样。如果您有一个操作支配着您的数据结构的使用,您通常最好选择适合该操作的数据结构。

在这种情况下,按字母顺序排列的地点列表更适合您的查询。对于不在最顶层的每个地方,您都希望添加某种对其“父级”名称的引用。如果您有一个按字母顺序排列的位置列表,您可能还需要考虑一个索引,也许它直接指向列表中以字母表中的每个字母开头的第一个位置。

当你描述你的问题时,它似乎与在字典中存储单词有更多共同点(我的意思是你在其中查找单词而不是任何特定编程语言中的任何特定集合数据类型的东西同名),而不是大多数打着地理编码幌子的东西。

我的猜测是,包含世界上人口超过 1000 的所有城镇、城市、地区和国家(及其坐标)的名称的地名录可以存储在一个非常简单的数据结构中(基本上列表)带有一两个索引,用于快速定位第一个地名 A、第一个地名 B,等等。通过一点压缩,您可能可以将其保存在大多数现代台式电脑的内存中。

关于c# - C 中的地理编码查找,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11722423/

相关文章:

c# - 如何将字典的内容写入文本文件?

c++ - 如何在cocos2dx中打印一个二维数组

c++ - GLFW无法编译示例NetBeans Mingw W64

c - 切换小程序不让我看到结果

c - C语言中如何从子函数跳转到主函数的开头?

c - 如何正确地将文本插入内核的显存?

c# - Html 敏捷包 : replacing script tags

c# - 此 C# Razor 语法的 VB.NET 等价物是什么?

c# - 从 Dapper 连接但从 EF 6 工作的神秘身份验证错误 - 相同的 ConnectionString

Python 递归函数奇怪的行为