How to fix `TypeError: argument of type 'ArcGIS' is not iterable` error on geopy?
How to fix `TypeError: argument of type 'ArcGIS' is not iterable` error on geopy?
我想制作一个程序,您可以在其中输入您的地址(代码中的示例是荷兰地址),然后该程序会输出该地址的经度和纬度。我还试图让它更加用户友好,所以如果输入的地址不存在,程序会说出来。
代码是:
from geopy.geocoders import ArcGIS
nom = ArcGIS()
adres = input("enter your adress as folows:\n 32 Gunterstein, Amsterdam, 1081 CJ\n vul in: ")
n = nom.geocode(adres)
if adres in nom:
print("longitude:",n.longitude)
print("latitude:", n.latitude)
else:
print("adress doesn't exist, please try again.")
print("end")
如果用户输入了一个有效的地址,代码就可以工作,但是当我通过输入废话来尝试时,我得到以下错误:
enter your adress as folows:
32 Gunterstein, Amsterdam, 1081 CJ
vul in: nonsense
Traceback (most recent call last):
File "breede_en_lengte_graden.py", line 7, in <module>
if adres in nom:
TypeError: argument of type 'ArcGIS' is not iterable
我收到该错误的代码有什么问题?
谢谢!
这是使用 try-except
块的一种方法:
try:
print("longitude:", n.longitude)
print("latitude:", n.latitude)
except AttributeError:
print("adress doesn't exist, please try again.")
print("end")
你也可以用 if-else
块来做,但你必须做一些不同的事情:
if n is not None:
print("longitude:", n.longitude)
print("latitude:", n.latitude)
else:
print("adress doesn't exist, please try again.")
print("end")
这种检查的原因是 nom.geocode(adres)
不会在无效地址上失败,而只是 returns None
并且它被分配为值n
.
我不认为它会在错误的地址上引发错误。
n = nom.geocode('sdf324uio')
n is None
True
只需检查 n
是否为 None
以查看是否向其传递了有效地址。
编辑:
有趣的是,实际上 nonsense
作为地点存在,并且它 returns 是一个有效的位置(这是我第一次尝试使用不存在的地址):
n = nom.geocode('nonsense')
n
Location(Nonsense, (-23.56400999999994, -46.66579999999993, 0.0))
我想制作一个程序,您可以在其中输入您的地址(代码中的示例是荷兰地址),然后该程序会输出该地址的经度和纬度。我还试图让它更加用户友好,所以如果输入的地址不存在,程序会说出来。 代码是:
from geopy.geocoders import ArcGIS
nom = ArcGIS()
adres = input("enter your adress as folows:\n 32 Gunterstein, Amsterdam, 1081 CJ\n vul in: ")
n = nom.geocode(adres)
if adres in nom:
print("longitude:",n.longitude)
print("latitude:", n.latitude)
else:
print("adress doesn't exist, please try again.")
print("end")
如果用户输入了一个有效的地址,代码就可以工作,但是当我通过输入废话来尝试时,我得到以下错误:
enter your adress as folows:
32 Gunterstein, Amsterdam, 1081 CJ
vul in: nonsense
Traceback (most recent call last):
File "breede_en_lengte_graden.py", line 7, in <module>
if adres in nom:
TypeError: argument of type 'ArcGIS' is not iterable
我收到该错误的代码有什么问题?
谢谢!
这是使用 try-except
块的一种方法:
try:
print("longitude:", n.longitude)
print("latitude:", n.latitude)
except AttributeError:
print("adress doesn't exist, please try again.")
print("end")
你也可以用 if-else
块来做,但你必须做一些不同的事情:
if n is not None:
print("longitude:", n.longitude)
print("latitude:", n.latitude)
else:
print("adress doesn't exist, please try again.")
print("end")
这种检查的原因是 nom.geocode(adres)
不会在无效地址上失败,而只是 returns None
并且它被分配为值n
.
我不认为它会在错误的地址上引发错误。
n = nom.geocode('sdf324uio')
n is None
True
只需检查 n
是否为 None
以查看是否向其传递了有效地址。
编辑:
有趣的是,实际上 nonsense
作为地点存在,并且它 returns 是一个有效的位置(这是我第一次尝试使用不存在的地址):
n = nom.geocode('nonsense')
n
Location(Nonsense, (-23.56400999999994, -46.66579999999993, 0.0))