如何在自己的服务器上进行反向地理编码?

时间:2014-01-29 11:54:05

标签: geocoding reverse-geocoding

我们正在获取大量数据,并且正在尝试在我们的数据库上构建一个系统,该系统可以将纬度 - 经度信息转换为城市和国家。我们不想使用任何谷歌Api。我们想要设置我们自己的服务器来执行此操作。

3 个答案:

答案 0 :(得分:4)

看看Nominatim。它是OpenStreetMap的一种流行服务,能够回答地理编码和反向地理编码查询。也可以set up your own Nominatim instance。如果您想使用公共实例,请确保遵守OSM的Nominatim usage policy,因为服务器运行在捐赠的资源上。或者,您可以使用其他公共实例,例如Nominatim instance provided by MapQuest

答案 1 :(得分:3)

如果您计划在服务器上自行动手,我建议的最简单方法是使用包含城市区域质心的纬度/经度的城市免费数据库。将数据集导入您自己的数据库。

然后,您可以在您的点与区域质心之间进行距离检查(查询),查找该点最接近的城市质心。请记住性能:

  1. 将城市纬度/经度存储为地理空间POINT()数据类型(不是小数!)
  2. 为具有市中心POINT()值的字段创建地理空间索引。
  3. 如果您使用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

答案 2 :(得分:0)

您应该设置自己的Nominatim服务器,您可以在此处找到分步说明 http://nominatim.org/release-docs/latest/admin/Installation/

https://gist.github.com/malkitsingh/737ea34abec5b079a84dd39e3b0dc2d2

但是为此,您将需要具有大量空间的强大服务器。