在数据库中存储位置信息的最佳方法是什么?

5
位置数据基本上是树形结构。所以当你询问某人地址时,你想知道他们居住的区/郊区、城市/镇、州/省和国家。
这些数据希望只设置一次并且需要很少的修改。大多数电子商务网站和许多其他网站都需要存储此类信息,但我很难找到相关资料。也许是因为我没有用正确的术语进行搜索,但我认为这应该是一个已经解决的常见问题。
这又引出了另一个问题。我从哪里可以获得这种类型的信息,例如哪些地区属于哪个城市,哪些城市属于哪个州,哪些州属于哪个国家?
编辑:为了使事情更加复杂,我想能够提供一种通用的解决方案,因为例如有些国家不使用邮编,而是使用邮政编码,它们类似但不完全相同。我的大愿望是有区/郊区名称 -> 城市 -> 地区/省/州 -> 国家。我可能在尝试不可能的事情。
编辑2: 抱歉,我可能没有表达清楚,但我不需要邮编。只需要区/郊区名称 -> 城市......
4个回答

1

如果您想获取美国邮政编码信息,请查看Tiger。这是来自美国人口普查的信息,可以为您提供所有数据。但是要注意的是,这些信息不容易抽象出来,因此需要一些时间。


0

这比起初看来要复杂得多。有些城镇有多个邮政编码,有些邮政编码有多个城镇。许多地址可以使用主要城镇或最近城市的名称。验证地址并不是一件简单的事情。

如果您想尝试存储邮政编码数据,可以购买邮政编码数据库。但您可能会发现,使用他们的工具对美国邮政服务进行验证更容易。


0

如果您对邮政编码不感兴趣,也许您可以从维基百科上爬取您所需的内容。


0

首先,这里有两种不同的东西:地理信息和政治/组织信息。 邮政编码可以共享,但从地理上讲,任何对象完全位于另一个对象内部。

当我们需要解决问题时,我们只需创建通用树形结构,每个地理节点都引用每个父节点。顶层节点(在我们的案例中是国家)没有父节点引用。此外,对于不同的国家,我们有不同的结构。唯一的要求是它必须是分层的。

之后,我们能够通过预计算树遍历信息来加速地理查询。我们遍历了树,计算了遍历顺序,并将其存储在地理节点中。之后,在查询中进行简单的整数比较就足以检查一个地理是否位于另一个地理内部等等。

同时,像邮政编码信息这样的存储看起来像是并行数据结构,在不同的表中与地理结构中的地理节点引用一起存储。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接