2012-10-25 53 views
2

使用地理编码在新西兰地理编码酒类网点。地理编码非地址:地理位置

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

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

到谷歌地图通过浏览器GUI给我

然而,使用在Geopy我得到一个GQueryError说这句话的地理位置不存在。

下面是地理编码代码:

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") 

同时,我注意到,“埃菲尔铁塔”工作正常。有没有解决这个问题,有人可以解释埃菲尔铁塔和Furneaux Lodge在谷歌“地点”之间的区别?

回答

2

也许这是Google Maps API的限制。然而GeoNames似乎知道即将Furneaux Lodge,所以你可以使用它作为一个备用的谷歌地图,如果谷歌地图查询没有返回一个答案:

>>> 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 
+0

感谢佩德罗。这听起来像是一个合理的想法。 –