1.x 系列变更日志

1.23.0

2020-06-27

这是 1.x 系列的最后一个功能版本,因为 geopy 2.0 已经发布。1.x 系列不会再有任何新功能或错误修复,除非在问题追踪器中明确要求。

  • 添加:单位转换 文档部分。

  • 添加:文档现在明确说明地理编码服务不考虑高度。 (#165)

  • 添加:Point.format_unicode 方法。它始终存在于 Python 2.7 的 __unicode__ 魔法中,现在它可以作为公用方法访问。

  • 添加:geopy.__version_info__ 元组,可用于动态比较 geopy 版本。

  • 添加:pytest –skip-tests-requiring-internet 开关(可能对下游软件包维护者有用)。 (#413)

  • 更改:具有不同高度的点现在会在距离计算中发出警告。在 geopy 2.0 中,警告将变为异常。 (#387)

  • 更改:改进了 Point 文档:添加了缺少的公用方法,添加了更多示例。

  • 更改:Nominatim 开始对文档中提到的许多示例用户代理发出警告,例如 specify_your_app_name_here

  • 修复:IGNFrance 忽略了带有用户名 + 密码身份验证的代理。 (#289)

1.22.0

2020-05-11

  • 添加:AlgoliaPlaces 地理编码器。由 Álvaro Mondéjar 贡献。 (#405)

  • 添加:BaiduV3 地理编码器。 (#394)

  • 添加:MapQuest 地理编码器。由 Pratheek Rebala 贡献。 (#399)

  • 添加:MapTiler 地理编码器。由 chilfing 贡献。 (#397)

  • 添加:基于 Nominatim 的地理编码器:zoom 参数已添加到 reverse 方法中。由 David Mueller 贡献。 (#406)

  • 添加:GoogleV3 添加了对 components 参数中列表的支持,允许使用相同名称指定多个组件。由 Pratheek Rebala 贡献。 (#409)

  • 更改:更新了指向 Nominatim 文档的链接。由 Sarah Hoffmann 贡献。 (#403)

  • 更改:Yandex 现在在 __init__ 中指定 lang 参数时发出弃用警告。 lang 应改为传递给 geocodereverse。 (#350)

  • 更改:format_string 参数已在所有地理编码器中标记为已弃用,将在 geopy 2.0 中删除。有关替代方法,请参阅新的 一次性指定参数 文档部分。

  • 修复:IGNFrance 错误地处理了空结果:geocode 抛出了 IndexError 异常,reverse 返回了一个空列表。现在两者都返回 None。 (#244)

  • 修复:TomTom 地理编码器对速率限制错误抛出了 GeocoderInsufficientPrivileges 异常,而不是 GeocoderQuotaExceeded

1.21.0

2020-02-02

  • 添加:HERE 地理编码器现在支持新的 API KEY 身份验证方法。旧方法被标记为已弃用,现在会发出警告。由 deeplook 贡献。 (#388)

  • 添加:基于 Nominatim 的地理编码器:featuretype 参数已添加到 geocode 方法中。由 Sergio Martín Morillas 贡献。 (#365)

  • 添加:基于 Nominatim 的地理编码器:namedetails 参数已添加到 geocode 方法中。由 enrique a. 贡献。 (#368)

  • 添加:Peliaslanguage 参数已添加到 geocodereverse 方法中。由 Armin Leuprecht 贡献。 (#378)

  • 更改:Yandex 地理编码器从 2019 年 9 月开始要求所有请求使用 API 密钥,因此当 API 密钥缺失时,会添加一个要求指定密钥的警告。

  • 更改(打包):sdist 现在包含测试。

  • 修复:更新了指向 TomTom 搜索 API 文档的链接。由 Przemek Malolepszy 贡献。 (#362)

  • 修复:在 Geolake 中偶尔出现的 KeyError('city')。由 Dmitrii K. 贡献。 (#373)

1.20.0

2019-05-26

  • 修复:MapBoxgeocode 方法忽略了 exactly_one 参数。由 TheRealZeljko 贡献。 (#358)

  • 修复:MapBox 中生成的 Locationraw 属性错误地包含一个字符串,而不是完整的服务响应。这可能被认为是重大更改(尽管之前的 raw 值可能根本无法使用)。由 Sergey Lyapustin 和 TheRealZeljko 贡献。 (#354)

1.19.0

2019-03-26

  • 添加:GoogleV3place_id 参数已添加到 geocode 方法中。由 Mesut Öncel 贡献。 (#348)

  • 添加:GeolakeGeoNamesMapBoxOpenCageOpenMapQuestNominatimPickPoint 地理编码器现在也接受 Python 国家列表,而不仅仅是一个字符串。 (#349)

  • 更改:geocode 特定的参数已从 __init__ 移动到 geocode 方法,并且相应的 __init__ 参数已弃用。受影响的地理编码器有:GeocodeEarthGeoNamesOpenMapQuestNominatimPeliasPickPointLiveAddress。 (#350)

  • 修复:OpenCagecountry 参数没有被遵守。由 Sebastian Illing 贡献。 (#342)

  • 修复:GoogleV3 在使用 premier 时错误地发出了有关缺少 api 密钥的警告。由 Mike Hansen 贡献。 (#345)

1.18.1

2018-12-16

  • 修复:GeoNames.reverse_timezone 没有处理 API 返回的错误,而是始终抛出模糊的 KeyError 异常。

  • 修复:GeoNames.reverse_timezone 对没有分配 Olson 时区 ID 的点(例如南极洲)抛出了 KeyError。现在,此类请求会返回一个有效的 geopy.Timezone,其中 pytz 时区被创建为 pytz.FixedOffset

  • 修复:GoogleV3.reverse_timezone 对没有分配 Olson 时区 ID 的点(例如南极洲)抛出了 KeyError。现在,此类请求会返回 None,因为 Google 没有提供任何有意义的数据。

1.18.0

2018-12-02

geopy 2.0 的工作已经开始,请参阅新的 geopy 2.0 文档部分以获取更多信息。geopy 2.0 将放弃对 Python 2.7 和 3.4 的支持。为了确保从 1.x 到 2.0 的平滑过渡,请确保在启用警告的情况下检查代码(即,使用 -Wd 开关运行 python)。

  • 添加:Geolake 地理编码器。由 Yorick Holkamp 贡献。 (#329)

  • 添加:BANFrance(国家地址库)地理编码器。由 Sébastien Barré 贡献。 (#336)

  • 添加:TomTom 和 AzureMaps:language 参数已添加到 reverse 方法中。

  • 添加:Geonames 地理编码器现在支持 findNearbyPlaceNamefindNearby 逆向地理编码方法,选择方法取决于 reverse 方法的新 find_nearby_type 参数。由 svalee 贡献。 (#327)

  • 添加:Geonames 地理编码器现在支持通过新的 reverse_timezone 方法为特定的 Point 返回时区。由 svalee 贡献。 (#327)

  • 添加:Geonames 地理编码器的 reverse 方法现在支持新参数:langfeature_code。由 svalee 贡献。 (#327)

  • 添加:Geonames 现在支持 scheme 参数。虽然服务本身尚不支持 https,但只要他们添加了支持,就可以通过这个新参数启用 https,无需等待 geopy 的新版本发布。

  • 更改:Geonames 现在以不同的方式构建 Location.address:以前它看起来像 Kreuzberg, 16, DE,现在它看起来像 Kreuzberg, Berlin, Germany

  • 更改:所有警告现在都指定了正确的 stacklevel,以便警告指向触发它的代码位置,而不是 geopy 内部。

  • 更改:所有带有 UserWarning 类别的警告(将在 geopy 2.0 中删除)现在都有 DeprecationWarning 类别。

  • 更改:geopy.extra.rate_limiter.RateLimiter 不再是实验性 API。

  • 更改:GoogleV3.timezone 现在在 at_time 是数字而不是 datetime 时发出弃用警告。在 geopy 2.0 中,这将成为一个异常。

  • 更改:GoogleV3.timezone 方法现在已弃用,取而代之的是 GoogleV3.reverse_timezone,它工作方式完全相同,只是它返回一个新的 geopy.Timezone 对象,它是 pytz 时区的包装器,类似于 geopy.Location。这个对象还包含服务的原始响应。 GoogleV3.timezone 将在 geopy 2.0 中删除。 (#332)

  • 更改:Point 构造函数在无法解析字符串的尾部时会静默忽略,现在不会再忽略。例如,75 5th Avenue, NYC, USA 被解析为 Point(75, 5),但现在它会抛出一个 ValueError 异常。

  • 修复:GoogleV3.timezone 方法没有处理 API 返回的错误。

1.17.0

2018-09-13

  • 添加:OpenMapQuest 现在继承自 Nominatim。这为在 Nominatim 中实现的所有参数和查询(如逆向地理编码)添加了支持。 (#319)

  • 添加:基于 Nominatim 的地理编码器现在支持 extratags 选项。由 Oleg 贡献。 (#320)

  • 添加:Mapbox 地理编码器。由 William Hammond 贡献。 (#323)

  • 添加:ArcGIS 现在支持自定义 domainauth_domain 值。由 Albina 贡献。 (#325)

  • 添加:不成功的 HTTP 响应的主体现在使用 INFO 级别记录。

  • 更改:逆向地理编码方法现在对无法用于构建 Point 实例的字符串查询发出警告。在 geopy 2.0 中,这将成为一个异常。

  • 更改:GoogleV3 现在在没有 API 密钥的情况下使用时发出警告。

  • 更改:接受边界框的参数已统一,以在所有 geopy 中接受一对对角点。之前的格式仍然受支持(直到 geopy 2.0),但现在在使用时会发出警告。

  • 更改:API URL 的路径部分已移动到所有地理编码器中的类属性,这允许在子类中覆盖它们。Bing 和 What3Words 现在以不同的方式在内部存储 API URL。

  • 修复:TomTom 和 AzureMaps 以错误的格式传递了 typeahead 的布尔值(即 01 而不是 falsetrue)。

1.16.0

2018-07-28

  • 添加:geopy.extra.rate_limiter.RateLimiter 类,适用于批量地理编码 pandas DataFrame。另请参阅新的 与 Pandas 一起使用 文档部分。 (#317)

  • 更改:Nominatim 现在在针对 nominatim.openstreetmap.org 使用默认 user_agent 时发出警告。请在使用 Nominatim 时始终指定自定义 user_agent。 (#316)

1.15.0

2018-07-15

  • 添加:基于 Pelias(前 Mapzen)的 GeocodeEarth 地理编码器。 (#309)

  • 新增:TomTom 和 AzureMaps(基于 TomTom)地理编码器。(#312)

  • 新增:HERE 地理编码器。由 deeplook 贡献。(#304)

  • 新增:百度现在支持使用 SK 通过新的 security_key 选项进行身份验证。由 tony 贡献。(#298)

  • 新增:Nominatim 和 Pickpoint 的 view_box 选项现在接受点列表或数字,而不仅仅是字符串化的坐标。由 svalee 贡献。(#299)

  • 新增:Nominatim 和 Pickpoint 地理编码器现在支持 bounded 选项,该选项将结果限制在严格包含在 view_box 中的项目。由 Karimov Dmitriy 贡献。(#182)

  • 新增:地理编码器的 proxies 参数现在可以接受单个字符串,而不是字典。有关详细信息,请参阅更新的文档中的 geopy.geocoders.options.default_proxies 属性。由 svalee 贡献。(#300)

  • 更改:Mapzen 已更名为 Pelias,domain 参数已变为必需。(#309)

  • 更改:What3Words API 已从 v1 更新到 v2。请注意,由于这一点,Location.raw 结果已更改。由 Jonathan Batchelor 贡献。(#226)

  • 修复:百度错误地没有正确处理返回的错误。由 tony 贡献。(#298)

  • 修复:proxies={} 未按预期重置系统代理。

1.14.0

2018-05-13

此版本包含许多公共 API 清理。另外,请务必查看更新的文档!已添加一个新的 Semver 文档部分,解释了 geopy 关于重大更改的策略。

  • 新增:Nominatim 地理编码器现在在 reverse 方法中支持 addressdetails 选项。由 Serphentas 贡献。(#285)

  • 新增:ArcGIS 地理编码器现在在 geocode 方法中支持 out_fields 选项。由 Jonathan Batchelor 贡献。(#227)

  • 新增:Yandex 地理编码器现在在 reverse 方法中支持 kind 选项。

  • 新增:一些地理编码器缺少 format_string 选项。现在所有地理编码器都支持它。

  • 新增:geopy.distance.lonlat 函数用于方便地将 (x, y, [z]) 坐标元组转换为 Point 实例,该实例使用 (y, x, [z])。由 svalee 贡献。(#282)

  • 新增:geopy.geocoders.options 对象,该对象允许在应用程序范围内配置地理编码器默认值(如用户代理、超时、format_string)。(#288)

  • 新增:支持提供自定义 SSL 上下文。有关 geopy.geocoders.options.default_ssl_context 的文档,请参阅文档。(#291)

  • 新增:百度地理编码器在其 reverse 方法中缺少 exactly_one 选项。

  • 新增:GeocodeFarm 现在支持 scheme 选项。

  • 更改:百度和 Yandex 地理编码器现在默认使用 https 方案,而不是 http。

  • 更改:ArcGIS 地理编码器已更新为使用最新的 API。请注意,由于这一点,geocodeLocation.raw 结果略有变化。由 Jonathan Batchelor 贡献。(#227)

  • 更改:在地理编码器调用中显式传递的 timeout=None 现在会发出警告。当前它意味着“使用地理编码器的默认超时”,而在 geopy 2.0 中它意味着“不使用超时”。(#288)

  • 更改:GoogleV3 geocode 调用现在支持在未指定 query 的情况下使用 components。(#296)

  • 更改:GeoNames、GoogleV3、IGNFrance、OpenCage 和 Yandex 错误地将 exactly_one=False 设为 reverse 方法的默认值,而它必须为 True。这种行为已被保留,但是现在将发出警告,除非在这些地理编码器的 reverse 调用中显式指定 exactly_one 选项。默认值将在 geopy 2.0 中更改。(#295)

  • 更改:Point 现在抛出 ValueError 异常,而不是规范化纬度并容忍坐标的 NaN/inf 值。(#294)

  • 更改:现在,使用 Vincenty 会发出警告。应使用 Geodesic 代替。Vincenty 计划在 geopy 2.0 中删除。(#293)

  • 更改:ArcGIS wkid 选项已在 reverse 调用中弃用,因为它从未正常工作过,而且由于 Point 中的坐标规范化,它也不会正常工作。

  • 修复:ArcGIS 和 What3Words 不尊重 exactly_one=False。现在它们尊重它,在这种情况下返回单个位置的列表。

  • 修复:ArcGIS 在 reverse 的空响应时抛出异常。现在,如预期的那样,返回 None

  • 修复:GeocodeFarm 在空响应时引发异常,而不是返回 None。由 Arthur Pemberton 贡献。(#240)

  • 修复:GeocodeFarm 有时缺少 Location.address 值。

  • 移除:geopy.geocoders.DEFAULT_* 常量(支持 geopy.geocoders.options.default_* 属性)。(#288)

  • 移除:YahooPlaceFinder 地理编码器。(#283)

  • 移除:GeocoderDotUS 地理编码器。(#286)

1.13.0

2018-04-12

  • 新增:Pickpoint 地理编码器。由 Vladimir Kalinkin 贡献。(#246)

  • 新增:Bing 地理编码器:用于地理编码的附加参数(cultureinclude_country_code)。由 Bernd Schlapsi 贡献。(#166)

  • 新增:PointLocation 实例现在是可腌制的。

  • 新增:用于距离计算的更准确算法 geopy.distance.geodesic,它现在是默认的 geopy.distance.distance。现在不鼓励使用 Vincenty,而鼓励使用测地线。这也为 geopy 添加了对 geographiclib 包的依赖关系。由 Charles Karney 贡献。(#144)

  • 新增:Nominatim 地理编码器现在支持 limit 选项,并在 exactly_one=True 请求中使用 limit=1。由 Serphentas 贡献。(#281)

  • 更改:Point 现在对不正确或含糊的输入发出警告。其中一些(即非有限值和超出范围的纬度)将在 geopy 的未来版本中被替换为 ValueError 异常。(#272)

  • 更改:Point 现在使用 fmod 代替 %,这会导致更准确的坐标规范化。由 svalee 贡献。(#275, #279)

  • 更改:当使用 http 代理时,使用 urllib 的 install_opener,它会全局更改 urlopen 调用。它不再使用。

  • 更改:Point 现在在传递超过 3 个参数时引发 ValueError 而不是 TypeError

  • 修复:Point 在与非可迭代对象比较时引发异常。

  • 修复:通过 __setitem__ 更改的 Point 实例的坐标不会更新相应的 lat/long/alt 属性。

  • 修复:通过 __setitem__ 更改的 Point 实例的坐标在分配后不会被规范化。但是请注意,属性分配仍然没有被规范化。(#272)

  • 修复:Distance 实例比较在 Python3 中不起作用。

  • 修复:Yandex 地理编码器使用错误的参数发送 API 密钥。

  • 修复:英尺到其他单位的转换不正确。由 scottessner 贡献。(#162)

  • 修复:Vincenty 目的地函数的公式实现存在错误。由 Hanno Schlichting 贡献。(#194)

  • 修复:当两个经度之间的差值接近 2*pi 或其中一个为 NaN 时,Vincenty 会抛出 UnboundLocalError。(#187)

  • 移除:已移除 geopy.util.NullHandler 日志处理程序。

1.12.0

2018-03-13

  • 新增:Mapzen 地理编码器。由 migurski 贡献。(#183)

  • 新增:GoogleV3 地理编码器现在支持 channel 选项。由 gotche 贡献。(#206)

  • 新增:Photon 地理编码器现在接受新的 limit 选项。由 Mariana Georgieva 贡献。

  • 更改:对 EARTH_RADIUS 使用 IUGG 平均地球半径。由 cffk 贡献。(#151)

  • 更改:使用从公里到英里的精确转换因子。由 cffk 贡献。(#150)

  • 更改:OpenMapQuest 地理编码器现在正确支持 api_key 选项,并将其设为必需。

  • 更改:Photon 地理编码器:从反向地理编码方法中删除了 osm_tag 选项,因为 Photon 后端不支持它进行反向地理编码。

  • 修复:Photon 地理编码器始终返回空地址。

  • 修复:Yandex 地理编码器返回的地址被截断(缺少地点的 name 部分)。

  • 修复:自定义 User-Agent 标头实际上没有被发送。这还修复了损坏的 Nominatim,它最近禁止了库存 urllib 用户代理。

  • 修复:geopy.util.get_version() 函数抛出 ImportError 异常,而不是返回版本字符串。

  • 修复:构造 geopy.point.Point 的文档以错误的顺序引用了纬度和经度。由 micahcochran 和 sjorek 贡献。(#207 #229)

  • 移除:已移除 Navidata 地理编码器。由 medecau 贡献。(#204)

1.11.0

2015-09-01

  • 新增:Photon 地理编码器。由 mthh 贡献。

  • 新增:Bing 支持结构化查询参数。由 SemiNormal 贡献。

  • 更改:地理编码器发送 User-Agent 标头,默认情况下为 geopy/1.11.0。在地理编码器初始化期间配置它。由 sebastianneubauer 贡献。

  • 修复:使用 Yandex 时,索引超出范围错误,没有结果。由 facciocose 贡献。

  • 修复:Nominatim 在未请求时错误地发送 view_box,并错误地格式化它。由 m0zes 贡献。

1.10.0

2015-04-05

  • 更改:GeocodeFarm 现在使用服务 API 的版本 3,该版本允许未经身份验证的用户使用,允许使用多个结果,并支持 SSL/TLS。您可能需要从 GeocodeFarm 获取新的 API 密钥,或者对他们的免费层使用 None。由 Eric Palakovich Carr 贡献。

  • 新增:DataBC 地理编码器,用于与不列颠哥伦比亚省政府的 DataBC 服务一起使用。由 Benjamin Trigona-Harany 贡献。

  • 新增:Placefinder 的地理编码方法现在在 with_timezone 参数为 true 时请求时区。由 willr 贡献。

  • 修复:Nominatim 指定了 viewbox 参数,而不是明显已弃用的 view_box

1.9.1

2015-02-17

  • 修复:修复对 GoogleV3 bounds 参数的支持。由 Benjamin Trigona-Harany 贡献。

1.9.0

2015-02-12

  • 更改:已移除 MapQuest 地理编码器,因为它使用的 API 现在仅对企业帐户可用。OpenMapQuest 是 Nominatim 源数据的替代品。

  • 更改:Nominatim 现在默认使用 HTTPS,并接受 scheme 参数。由 srounet 贡献。

  • 新增:Nominatim 现在接受 domain 参数,该参数允许使用与 nominatim.openstreetmap.org 不同的服务器。由 srounet 贡献。

  • 修复:Bing 在 get_geocoder_for_service 中不可访问。由 Adrián López 贡献。

1.8.1

2015-01-28

  • 修复:GoogleV3 地理编码器没有为反向和时区方法发送 API 密钥。

1.8.0

2015-01-21

  • 新增:添加了 NaviData 地理编码器。由 NaviData 贡献。

  • 更改:LiveAddress 现在要求 HTTPS 连接。如果您将 scheme 设置为 http,而不是默认的 https,那么您现在将收到 ConfigurationError

1.7.1

2015-01-05

  • 修复:IGN France 地理编码器的地址格式更适合处理没有门牌号码的结果。由 Thomas Gratier 贡献。

1.7.0

2014-12-30

  • 新增:IGN France 地理编码器。由 Thomas Gratier 贡献。

  • 修复:Bing 检查响应正文以查找错误代码。

1.6.1

2014-12-12

  • 修复:放松了 What3Words 验证。由 spatialbitz 贡献。

  • 修复:Point.format() 包括海拔。

1.6.0

2014-12-08

  • 新增:Python 3.2 和 PyPy3 兼容性。由 Mike Toews 贡献。

1.5.0

2014-12-07

  • 新增:添加 Yandex 地理编码器。由 htch 贡献。

  • 新增:添加 What3Words 地理编码器。由 spatialbitz 贡献。

  • 修复:LiveAddress 地理编码器与服务认证更改兼容。在地理编码器的初始化中添加了 auth_id 参数。由 Arsen Mamikonyan 贡献。

1.4.0

2014-11-08

  • 新增:添加 Mapquest.reverse() 方法。由 Dody Suria Wijaya 贡献。

  • 新增:Bing 的地理编码器现在接受可选参数“culture”、“includeNeighborhood”和“include”。由 oskholl 贡献。

1.3.0

2014-09-23

  • 新增:Nominatim.geocode() 接受 geometry 参数,用于检索 wktsvgkmlgeojson 格式的几何图形结果。由 spatialbitz 贡献。

1.2.0

2014-09-22

  • 新增:添加 GeoNames.reverse()。由 Emile Aben 贡献。

  • 新增:添加 GoogleV3.timezone()。这将返回一个 pytz 对象,给出给定位置在某个时间(默认为现在)生效的时区。

1.1.5

2014-09-07

  • 修复:YahooPlaceFinder 现在与旧版本的 requests_oauthlib 0.4.0 兼容。

1.1.4

2014-09-06

  • 修复:Python 3 中的 Point.format() 秒精度。

1.1.3

2014-08-30

  • 修复:修复空结果时的 OpenCage AttributeError。由 IsaacHaze 贡献。

1.1.2

2014-08-12

  • 修复:更新 Point __repr__ 方法以正确格式化 _items。由 TristanH 贡献。

1.1.1

2014-08-06

  • 修复:Python 3 兼容性。

1.1.0

2014-07-31

  • 新增:添加 OpenCage 地理编码器。由 Demeter Sztanko 贡献。

  • 新增:geopy.geocoders.get_geocoder_for_service 允许库作者动态获取地理编码器。

  • 修复:导致地理编码失败的 YahooPlacefinder 错误。

  • 修复:LiveAddress API URL 已更新。

  • 修复:Python 2.7 中 Location.__repr__ 编码错误。

  • 更改:geopy.geocoders 模块现在严格声明其导出内容。

1.0.1

2014-07-24

  • 修复:百度地图地理编码器的 _check_status 方法使用 Python 2 特定的 print 语句。

1.0.0

2014-07-23

  • 新增:添加百度地图地理编码器。由 Risent 贡献。

  • 新增:Nominatim 地理编码器现在支持结构化查询。由 kpanic 贡献。

  • 新增:Nominatim 地理编码器现在支持 language 参数。由 Benjamin Henne 贡献。

  • 更改:GoogleV3 的 geocodereverse 方法的关键字参数顺序不同。地理编码器现在标准化为 (query, exactly_one, timeout, …)

  • 修复:删除分钟的四舍五入,这会导致格式化后的点总是具有零秒。由 Jonathan Batchelor 贡献。