我正在创建一个目录,该目录使用位置对所有列表进行分类。我想不依赖用户输入,而是提供用户可以选择的位置列表。我已经尝试过GeoBytes提供的GeoWorldMap,但存在某些问题。例如,它列出了275个国家。除此之外,他们的数据库会定期更新,这意味着如果我维护本地数据库,则需要不时更新它,以确保它是最新的。
我想知道开发人员为此使用什么。他们不是使用数据库而是使用某种服务来获取位置列表?
我恐怕手动输入用户不是一个开放的选择,因为按位置进行分类非常重要,因此我无法信任或依赖于用户手动输入的内容。
我见过很少有网站这样做,所以我确定那里有一个实用的解决方案。
#1 楼
我认为Yahoo!的GeoPlanet对此非常有用:它们提供了一个非常详尽的位置列表以及它们之间的层次关系,您可以下载名称列表或使用其API。其他地名词典(您正在寻找的最专业术语)包括GeoNames,它也免费提供可下载的数据。 (我敢肯定,StackOverflow甚至Google搜索都可以为您提供更多选择。)
此外,如果您打算创建一个UI来让用户从您的地点列表中进行选择, ,我想建议Freebase建议插件,这是一个jQuery插件,它将迫使用户从特定类别(例如您所在的国家/地区)中进行选择,并提供一个不错的UI,以便从Freebase的语义数据库认为正确的内容中进行选择。它甚至提供了一些类似于Wiki的上下文来帮助消除歧义。
评论
借用GeoPlanet。关于数据中的标识符(WOE ID)的好处之一是它们的设计稳定,因此您不会发现自己与数据库的未来更新有冲突。
– Michal Migurski
2010年8月1日在19:59
感谢您提供这些链接。我花了很多时间与两者合作并成功实现了它们,但是现在我要退出了。就国家和州而言,一切看起来都不错,但各州以下各州使用的结构却是如此不一致。我不再认为这是实用的。一些国家既有州也有城市,而有些国家只有城市,但这些国家有省而不是州。我给人的印象就是这样。但事实并非如此。来自美国的州下降了3个等级。即使亚特兰大是一座城市...
– Naif Amoodi
2010年8月2日,3:10
在乔治亚州,外观如下:美国->乔治亚州->富尔顿县->亚特兰大。富尔顿县不仅有亚特兰大,而且还列出了其他多个地点,并非每个人都是一个城市。它还列出了Adamsville,那里实际上只是一个地方。
– Naif Amoodi
2010年8月2日,下午3:12
绝对地,这些不是直接的问题。可能的层次结构是复杂的(根据某些定义是无限的),并且取决于不同的文化规范和政府法规以及各种用例。我建议您看一下可能对您有很大帮助的文档:developer.yahoo.com/geo/geoplanet/guide / ...如果您愿意,您可以只抽出城市,也可以抽出行政区划。 Yahoo!的文档解释了不同的层次结构。不过,我了解您的无奈,这很复杂!祝你好运!
– npdoty
2010年8月3日,6:50
Yahoo Geoplanet数据已删除,这是最新版本:archive.org/details/geoplanet_data_7.10.0.zip
–0fnt
15年3月12日在15:04
#2 楼
以下是一些免费的城市位置数据库的来源:http://www.maxmind.com/app/worldcities
http://www.geonames.org/出口/
#3 楼
看看GeoDB城市。这是我开发并托管的一项服务,该服务将GeoNames.org数据包装在REST接口中。我相信它可以提供稳定数据方面的所需信息。不会物理删除任何旧城市数据,只会将其标记为此类数据(刷新GeoNames时可能发生)。该服务还允许您以多种语言显示城市/地区/国家/地区结果。免费实例是相当合理的IMO,但我当然有偏见。
#4 楼
乡村城市数据库有多种收费和免费来源:GeoNames是免费数据,但是数据很多。您将需要获得DBA的帮助才能清理数据。但是,根据您的要求清理和加载数据是一项一次性的工作。 zip解压缩后,我最终获得了1.3 GB的文件大小,并将此数据加载到DB也需要强大的硬件。
MaxMind数据非常旧,他们已经停止更新提供的免费数据
付费GeoDatasource数据
http://www.worldcitiesdatabase.com上的城市数据库,价格合理。
那么您也可以查看MaxMind付费数据服务,但是它们非常昂贵,除非您的预算非常好。
选择是您的。我认为上述每个供应商的数据质量可能会有所不同。
评论
我正在使用它,效果很好! Universal-tutorial.com/rest-apis/…