在 Jupyter 笔记本中使用 Geopy - 我的 lambda 查询没有运行

Using Geopy in a Jupyter notebook - my lambda query isn't functioning

我在 Jupyter Notebook 和 Python 中使用 Geopy。我想检索街道地址的纬度和经度。我想将查询限制在德克萨斯州,而 lambda 代码无法正常工作……有人可以帮忙吗?即使使用“Houston, Tx”也不起作用。街道地址是“1931 Santa Rosa, Houston, Tx 77023”。

#pip install geopy   #https://geopy.readthedocs.io/en/latest/
from geopy.geocoders import Nominatim
from functools import partial
import urllib.parse

geocode = lambda query: geolocator.geocode("%s, Houston, TX" % query)

geolocator = Nominatim(user_agent="team5")
location = geolocator.geocode("1931 Santa Rosa 77023")

print((location.latitude, location.longitude))
print(location.address)

以上结果为:

(30.8757886, -87.2426917) 1931, Brownsdale Loop Road, Santa Rosa County, Florida, 32565, 美国

当您调用 location = geolocator.geocode("1931 Santa Rosa 77023") 时,您正在覆盖顶部的查询分配

geolocator = Nominatim(user_agent="team5")
geocode = lambda query: geolocator.geocode("%s, Houston, TX" % query)
print(geocode("1931 Santa Rosa 77023")) # CUSTOM QUERY
print(geolocator.geocode("1931 Santa Rosa 77023")) # WITHOUT CUSTOM QUERY

查看输出的差异

None
1931, Brownsdale Loop Road, Santa Rosa County, Florida, 32565, United States

但是请注意,您可以随时 运行

print(geolocator.geocode("1931 Santa Rosa 77023", exactly_one=False))

获取给定地址的所有可用位置的列表,在这种情况下,佛罗里达州似乎是唯一与您的查询字符串匹配的位置

如果您 运行 使用 openmaps

自己手动搜索,则可以确认这一点