如何从反向GeoLocation查找县名?

时间:2017-03-07 02:24:42

标签: python geolocation

我正在使用python和库from geopy.geocoders import Nominatim,我正在解析一些Lat / Long坐标,我想得到坐标的县。

这就是我正在做的事情:

def getCounty(data):
    try:
        #print(data["geo"]["coordinates"])   # Getting Lat/Long coordinates
        geo_data = data["geo"]["coordinates"]
        geo_detail = geolocator.reverse(geo_data)

    except TypeError,e:
        geo_data = "null"
        geo_detail = "N/A"

    ctr = 0
    i = 0
    j = 0
    if(geo_detail != "N/A"):
        while(geo_detail[i]!= ',' and ctr == 4):
            j=j+1
            if(ctr == 3):
                i=j+1
            if(geo_detail[j] == ','):
                ctr = ctr+1
        county = geo_detail
    else:
        county = "No Location Provided"


    return county[i:j]

由于某种原因,返回()

当我这样做时:return county,它会返回这些坐标中的所有信息。

好像我无法获得变量county

的子字符串

我如何获得县属性或我可以通过其他方式获得县?

3 个答案:

答案 0 :(得分:1)

在逗号上拆分输出字符串,并获取第四个索引(县):

return geo_detail.address.split(",")[3] # Milwaukee County

答案 1 :(得分:0)

我只是想补充一点,这并不总是适用于所有地址。一些返回信息不包括街道编号(即使在查找中提供了街道编号),然后它将返回状态。

尝试:

[x.strip() for x in location.address.split(',') if 'County' in x ][0]

这将始终返回县(如果存在)。

答案 2 :(得分:0)

由于位置的格式不同,您应该使用:

location = geolocator.reverse("47.173056,-114.553611")

line = location.address
line = line.replace(',','')
words = line.lower().split()
print(words)

ind = (words.index('county')-1)
print(words[ind])