考虑到距基地城市(地质)100公里的半径,我需要找到附近的城市。
我的脚本是在python中。是否有任何API可以找到它?
由于
答案 0 :(得分:10)
如果您有城市数据库,请查看this example,其中显示了如何为该特定任务构建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;
因此,如果您有自己的数据库或城市,或者您愿意创建一个具有某些城市的位置和坐标的数据库(可能在互联网上的某个地方可用),那么此解决方案将适合您。
或者,如果您没有数据库并且想要使用Google地图等API,请特别查看The Google Geacoding API和反向地理编码。请求如:
http://maps.googleapis.com/maps/api/geocode/json?latlng=40.7,-73.9&sensor=false
将为您提供您提供的经度和纬度的可能地址。
不幸的是Google Places API(附近的地方)仅适用于餐馆,商店,酒吧等场所。
答案 1 :(得分:4)
由于您使用的是Geonames网络服务,看起来内置的功能可以找到附近的地名:
来自:http://www.geonames.org/export/web-services.html
查找附近的人口稠密地点/反向地理编码
Web服务类型:REST Url:api.geonames.org/findNearbyPlaceName? 参数:lat,lng,lang:返回'name'元素的语言( 伪语言代码'local'将以本地语言返回), radius:以km为单位的半径(可选),maxRows:最大行数(默认值) 10)样式:SHORT,MEDIUM,LONG,FULL(默认= MEDIUM),详细程度 返回xml文档结果:返回最近的填充位置 lat / lng查询为xml文档。距离元素的单位是 “公里”。例: 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
答案 2 :(得分:0)
我担心地理编码API和Places API都不会以您想要的方式为您提供帮助。
反向地理编码将为您提供给定latlng的城市,但不包括那个城市周围的城市。放置API甚至没有。这些API用于不同的用途,但我想你现在对此不感兴趣。
除非你找到一个能达到你想要的API,否则你需要建立自己的数据库并运行像MMM指出的那样的查询。要构建数据库,可以使用Natural Earth's 1:10m Cultural Vectors中的“填充的位置”数据集。你需要某种GIS软件来处理它,然后从那些你称之为 cities 的人口稠密的地方中提取。