8
A
回答
19
我使用Google的API。
from urllib2 import urlopen
import json
def getplace(lat, lon):
url = "http://maps.googleapis.com/maps/api/geocode/json?"
url += "latlng=%s,%s&sensor=false" % (lat, lon)
v = urlopen(url).read()
j = json.loads(v)
components = j['results'][0]['address_components']
country = town = None
for c in components:
if "country" in c['types']:
country = c['long_name']
if "postal_town" in c['types']:
town = c['long_name']
return town, country
print(getplace(51.1, 0.1))
print(getplace(51.2, 0.1))
print(getplace(51.3, 0.1))
輸出:
(u'Hartfield', u'United Kingdom')
(u'Edenbridge', u'United Kingdom')
(u'Sevenoaks', u'United Kingdom')
1
這就是所謂的反向地理編碼。有一個圖書館,我可以找到在Python是集中在這個:https://github.com/thampiman/reverse-geocoder
一些相關的問題,與其他的想法:
1
一般來說,谷歌API是最好的方法。這不適合我的情況,因爲我必須處理大量條目,並且api速度很慢。
我編寫了一個相同的小版本,但首先下載了一個巨大的幾何圖形,然後計算機器上的國家。
from shapely.geometry import mapping, shape
from shapely.prepared import prep
from shapely.geometry import Point
data = requests.get("https://raw.githubusercontent.com/datasets/geo-countries/master/data/countries.geojson").json()
countries = {}
for feature in data["features"]:
geom = feature["geometry"]
country = feature["properties"]["ADMIN"]
countries[country] = prep(shape(geom))
print(len(countries))
def get_country(lon, lat):
point = Point(lon, lat)
for country, geom in countries.iteritems():
if geom.contains(point):
return country
return "unknown"
print(get_country(10.0, 47.0))
# Austria
+0
這個點擴展也很有趣,也許不是很精確,因爲它基於一些參考點並做了一些插值:https://pypi.python.org/pypi/reverse_geocode/1.0 – linqu
相關問題
- 1. 如何經度閱讀國家城市緯度的地圖API
- 2. IP到國家,城市,緯度,經度javascript服務
- 3. 從經緯度得到國家,地區和城市名稱(PHP)
- 4. 按城市或經度和緯度
- 5. 從Google表格的經緯度獲取城市,州和國家
- 6. 從經緯度獲取城市,州,國家
- 7. 檢查一個城市是在一個東北經緯度和西南緯度/經度國家
- 8. 如何從經度和緯度找到城市?
- 9. 如何從經度和緯度得到城市名稱?
- 10. 英國國家網格Shapefile - 轉換爲WGS84緯度/經度
- 11. 如何獲取城市的經緯度?
- 12. 過濾城市的經緯度與其他城市的距離(經緯度)?
- 13. 在一個地區(國家/城市)內生成隨機緯度經度值
- 14. 檢索自改名後的城市/國家的緯度/經度座標?
- 15. 如何獲取城市/國家名稱的經緯度範圍android
- 16. 緯度和經度放置在.NET中的名稱或城市
- 17. 鑑於經度和緯度,如何找到國家
- 18. Mysql的轉儲印度國家緯度,經度和AREANAME
- 19. 如何根據緯度和經度獲取城市?
- 20. 轉換經度和緯度
- 21. 經度和緯度轉換
- 22. 如何在DBPedia的一個國家獲得城市的POI和經度和緯度?
- 23. 如何從R中的城市名稱和國家獲取經度和緯度座標?
- 24. 國家,城市和城鎮
- 25. 獲取某個國家(或州)的所有城市的列表,包括經度和緯度
- 26. 如何獲取OSM節點或城市的城市和國家?
- 27. 國家平面座標到經緯度
- 28. 如何獲取通過輸入框輸入的城市/國家的經度和緯度?
- 29. 如何使用緯度和經度獲取位置名稱或城市?
- 30. 從城市名稱獲取經緯度
這是偉大的,有沒有一種乾淨的方式來撿起城市和鄉村而不使用拆分? – godzilla
是的,我已經修改了我的回覆城市和國家 –
這工作正常,但是有沒有辦法在本地做到這一點?某種類型的api,延遲是我正在嘗試做的一個巨大瓶頸 – godzilla