按道路名称交叉点进行地理编码

时间:2019-06-13 13:12:52

标签: python geocoding geopy

我正在尝试获取与道路相交点的坐标,类似于在Google Maps中键入“ 1100 N&300 W”的方法,但是给出了具有成千上万对的表格。有人知道支持该类型搜索的地理位置模块吗?

我正在测试geopy,它可以轻松找到一条道路,甚至还包括按区域(即城市或县)限制搜索的选项,但是经过多次尝试更改我的测试路口后,措辞仍然无法超越定位单个道路。

我试图简单地将道路名称更改为更具描述性的名称,即CR 1100 N和CR 300 W ... W CR 1100 N和N CR 300 W,但是包含CR实际上实际上会引发错误。 / p>

这是我到目前为止所拥有的...

from geopy.geocoders import Nominatim
geolocator = Nominatim(user_agent="agent", format_string="%s, Madison County, IN")
location = geolocator.geocode("1100 N & 300 W")
print(location.address)
print(location.latitude)
print(location.longitude)

结果:

地址:美国印第安纳州麦迪逊县安德森市North 300 West,邮政编码46011,美国

纬度:40.142406 经度:-85.728747

预计纬度:40.262935 预期的Lon:-85.728308

2 个答案:

答案 0 :(得分:0)

尝试:https://geocoder.ca/1100%20N%20&%20300%20W%20ALEXANDRIA,%20IN

此过街位置。 (1100 N和300 W亚历山大输入)40.262950,-85.72831

还有JSON:https://geocoder.ca/1100%20N%20&%20300%20W%20ALEXANDRIA,%20IN?json=1

{“ standard”:{“ staddress”:“ N&300”,“ stnumber”:“ 1100”,“ postal”:“ 46063”,“ street1”:“ 1100 N”,“ city”:“ Alexandria “,” prov“:” IN“,” street2“:” 300 W“,” confidence“:” 0.8“},” longt“:” -85.728310“,” TimeZone“:”美国/印第安纳州/印第安纳波利斯“,” AreaCode”:“ 765”,“ latt”:“ 40.262950”}

答案 1 :(得分:0)

这是另一种批处理方法,我必须做类似的事情。请注意,您需要有效的互联网连接。

# Python 3.6
from geopy.geocoders import ArcGIS

def my_LatLong(address):
    n = ArcGIS().geocode(address)
    # n is a list [0] = street names [1] = lat/long
    return n[1]

with Open('file') as streets: 
# do something
# or you can us pandas.

    for i in streets:
        # i = line entry of street intersections
        print(my_LatLong(i))
        # write to file or do something