给定距离基地城市(geonameid)100 公里的半径,我需要找到附近的城市。
我的脚本在 python 中。是否有任何 API 可以找到它?
谢谢
给定距离基地城市(geonameid)100 公里的半径,我需要找到附近的城市。
我的脚本在 python 中。是否有任何 API 可以找到它?
谢谢
如果您有城市数据库,请查看此示例,该示例展示了如何为该特定任务构建 SQL 查询。
SELECT id, ( 3959 * acos( cos( radians(37) ) * cos( radians( lat ) ) * cos( radians( lng ) - radians(-122) ) + sin( radians(37) ) * sin( radians( lat ) ) ) ) AS distance FROM markers HAVING distance < 25 ORDER BY distance LIMIT 0 , 20;
因此,如果您有自己的数据库或城市,或者您愿意创建一个数据库,其中包含某些城市的位置和坐标(可能在 Internet 上的某处可用),那么此解决方案将适合您。
或者,如果您没有数据库并且想要使用像 Google Maps 这样的 API,请特别查看The Google Geacoding API和 Reverse Geocoding。像这样的请求:
http://maps.googleapis.com/maps/api/geocode/json?latlng=40.7,-73.9&sensor=false
将为您提供您提供的经度和纬度的可能地址。
不幸的是,Google Places API(附近的地方)只适用于餐馆、商店、酒吧等。
由于您使用的是 Geonames 网络服务,因此它似乎内置了查找附近地名的功能:
来自:http ://www.geonames.org/export/web-services.html
查找附近人口稠密的地方/反向地理编码
网络服务类型:REST 网址:api.geonames.org/findNearbyPlaceName? 参数: lat,lng, lang:返回的'name'元素的语言(伪语言代码'local'将以本地语言返回),radius:以km为单位的半径(可选),maxRows:最大行数(默认10)样式:SHORT,MEDIUM,LONG,FULL(默认 = MEDIUM),返回 xml 文档的详细程度 结果:将 lat/lng 查询的最近填充位置作为 xml 文档返回。距离元素的单位是“km”。示例: http ://api.geonames.org/findNearbyPlaceName?lat=47.3&lng=9&username=demo
此服务也以 JSON 格式提供: http ://api.geonames.org/findNearbyPlaceNameJSON?lat=47.3&lng=9&username=demo
恐怕 Geocoding API 和 Places API 都不会以您想要的方式帮助您。
反向地理编码将为您提供给定 latlng 的城市,但不是该城市周围的城市。甚至没有地方 API。这些 API 用于不同的用途,但我想您现在对此不感兴趣。
除非您找到一个可以满足您需求的 API,否则您需要构建自己的数据库并运行 MMM 指出的查询。要构建您的数据库,您可以使用Natural Earth's 1:10m Cultural Vectors中的 Populated Places 数据集。你需要某种 GIS 软件来处理它,并从那些你称之为城市的人口稠密的地方提取信息。