【问题标题】:geopy wont return proper coordinates for canadian postal codesgeopy 不会为加拿大邮政编码返回正确的坐标
【发布时间】:2019-10-21 20:19:36
【问题描述】:

我正在尝试将加拿大邮政编码转换为经纬度坐标,但 geopy 将它们返回为无或在不同国家/地区的某个地方

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

print(location.latitude, location.longitude)

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

【问题讨论】:

    标签: python flask geopy


    【解决方案1】:

    我认为这里的问题是您用于 geopy 的 API 不支持 CA 邮政编码,或者您没有将“CA”设置为国家/地区选项。因此,当地理编码无法从输入中检索信息时,它会返回 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
    

    【讨论】:

    • 这将只返回邮政编码的 FSA 部分,而不是地址位置。
    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-02-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-06-22
      • 2015-07-06
      相关资源
      最近更新 更多