关于python:对非地址进行地理编码:Geopy

Geocoding non-addresses: Geopy

利用地缘学对新西兰的酒类销售点进行地理编码。

我遇到的问题是,有些地方没有街道地址,而是在谷歌地图中。例如,堵塞:

1
Furneaux Lodge, Endeavour Inlet, Queen Charlotte Sound, Marlborough 7250

通过浏览器进入谷歌地图

>然而,在地缘学中,我得到了一个gqueryerror,它说这个地理位置不存在。</P><P>以下是地理编码代码:</P></p>
<div class=

1
2
3
4
5
6
7
8
9
def GeoCode(address):
    g=geocoders.Google(domain="maps.google.co.nz")
    geoloc = g.geocode(address, exactly_one=False)
    place, (lat, lng) = geoloc[0]
    GeoOut = []
    GeoOut.extend([place, lat, lng])
    return GeoOut

GeoCode("Furneaux Lodge, Endeavour Inlet, Queen Charlotte Sound, Marlboroguh 7250")

同时,我注意到"埃菲尔铁塔"运行良好。有没有办法解决这个问题,有人能解释一下埃菲尔铁塔和谷歌"地点"内的富诺旅馆之间的区别?


也许这是谷歌地图API的限制。然而,地名似乎知道Furneaux Lodge,因此如果google maps查询没有返回答案,您可以将其用作google maps的回退:

1
2
3
4
5
>>> from geopy import geocoders
>>> gn = geocoders.GeoNames()  
>>> place, (lat, lng) = gn.geocode('Furneaux Lodge')
>>> print('{}: {:.5f}, {:.5f}'.format(place, lat, lng))
Furneaux Lodge, F4, NZ: -41.08826, 174.18019