【发布时间】:2014-01-29 11:54:04
【问题描述】:
我们正在获取大量数据,并正在尝试在我们的数据库上构建一个系统,该系统可以将经纬度信息转换为城市和国家/地区。我们不想使用任何 google Api。我们想设置我们自己的服务器来执行此操作。
【问题讨论】:
标签: geocoding reverse-geocoding
我们正在获取大量数据,并正在尝试在我们的数据库上构建一个系统,该系统可以将经纬度信息转换为城市和国家/地区。我们不想使用任何 google Api。我们想设置我们自己的服务器来执行此操作。
【问题讨论】:
标签: geocoding reverse-geocoding
看看Nominatim。它是 OpenStreetMap 的一项流行服务,能够回答地理编码和反向地理编码查询。也可以set up your own Nominatim instance。如果您想使用公共实例,请确保遵守 OSM 的Nominatim usage policy,因为服务器在捐赠的资源上运行。或者,您可以使用另一个公共实例,例如 Nominatim instance provided by MapQuest。
【讨论】:
如果您打算在服务器上自己动手,我推荐的最简单方法是使用免费的城市数据库,其中包括城市区域质心的纬度/经度。将数据集导入您自己的数据库。
然后,您可以在您的点和区域质心之间进行距离检查(查询),以寻找该点最接近的城市质心。出于性能目的,请记住:
如果你使用 MySQL,stackoverflow 中有很多关于如何做到这一点的答案(只需搜索):
这里有一些免费的数据集:
MaxMind:http://www.maxmind.com/en/worldcities
Geonames.Org:http://www.geonames.org/export/
OpenGeoCode.Org(我是这个开放数据项目的联合创始人):http://www.opengeocode.org/download.php#cities
【讨论】:
您应该设置自己的 Nominatim 服务器,您可以在此处找到分步说明 http://nominatim.org/release-docs/latest/admin/Installation/
或
https://gist.github.com/malkitsingh/737ea34abec5b079a84dd39e3b0dc2d2
但为此,您需要强大的服务器和大量空间。
【讨论】: