如何在蟒蛇中获得附近城市(geonameid)?

时间:2012-02-01 10:53:03

标签: python google-maps-api-3 geolocation geonames

考虑到距基地城市(地质)100公里的半径,我需要找到附近的城市。

我的脚本是在python中。是否有任何API可以找到它?

由于

3 个答案:

答案 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 的人口稠密的地方中提取。