geopy 不会 return 加拿大邮政编码的正确坐标

geopy wont return proper coordinates for canadian postal codes

我正在尝试将加拿大邮政编码转换为经纬度坐标,但是 geopy returns 它们是 none 或其他国家/地区的某个地方

postal_code = "A1B 2C3" #<-- in this format
location = geolocator.geocode(postal_code)

print(location.latitude, location.longitude)

输出 AttributeError: 'NoneType' object has no attribute 'latitude' 要么 一些随机地址

我认为这里的问题是您用于 geopy 的 API 不支持 CA 邮政编码,或者您没有将 'CA' 设置为国家/地区选项。因此,当地理编码无法从输入中检索信息时,它 returns None.

为了达到同样的目的,我更愿意使用 pgeocode 库。

import pgeocode
nomi = pgeocode.Nominatim('ca')
postal_code = "A1B C14"
location = nomi.query_postal_code(postal_code)
print(location.latitude, location.longitude)
47.5698 -52.7796

我刚刚遇到了一个非常相似的问题,并尝试了深南的回答。 我认为重要的是要告知,此代码 returns 信息仅来自邮政编码的第一部分。在这种情况下,问题的作者(“A1B 2C3”)和答案的(“A1B C14”)returns 的两个示例都具有完全相同的纬度和经度值,如果仅使用“A1B”,则它们的工作方式完全相同" 相反。
如果我错了,请纠正我,但这就是我得到的结果。

这是我看到加拿大邮政编码中每个字符的含义的地方: https://en.wikipedia.org/wiki/Postal_codes_in_Canada