更新日志#

版本 1.1.0#

新功能和改进:

  • 增加了选项以返回 SpatialIndex.query 的结果,可以是密集或稀疏布尔数组。这为稀疏输出增加了对 scipy 的可选依赖。请注意,这也改变了 output_format 关键字的以前未记录的行为 (#1674)。

  • union_alldissolve 添加 grid_size 参数 (#3445)。

  • GeoDataFrame.plot 现在支持 pd.Index 作为 column 关键字的输入 (#3463)。

  • 在绘制缺失值时避免改变图形的纵横比 (#3438)。

错误修复:

  • 修复了一个问题,该问题在to_geo_dict__geo_interface__中显示numpy数据类型。 (#3436)

  • 修复了sample_points中的一个问题,该问题可能偶尔导致不均匀分布 (#3470)。

  • 修复在读取多层数据集时发出的未指定层警告,即使在使用mask或bbox关键字时已指定层(#3378)。

  • GroupBy.agg 中正确支持对几何列的命名聚合 (#3368)。

  • 支持 GeoDataFrame 构造函数接收作为 geometry 的参数, 这些参数不是 (Geo)Series,而应被解释为列名,如枚举 (#3384)。

  • 修复了在提供了 crs 时,从具有 GeometryDtype 值的 pd.Series 构造 GeoSeries 失败的问题 (#3383)。

  • 修复了回归问题,在输入包含无效几何图形时,overlaykeep_geom_type返回错误结果 (#3395)。

  • 修复零长度GeoDataFrames导致在overlay中出现错误的GeometryArray支持数据类型不正确 (#3424)。

  • 修复从具有 GeometryDtype 值的 pd.Series 构建 GeoSeries 时的回归问题,当提供了 crs 时失败 (#3383)。

关于依赖项的说明:

  • GeoPandas 1.1 现在需要 Python 3.10 或更高版本,pandas 2.0,numpy 1.24,pyproj 3.5,现已成为这些依赖项的最低要求版本。 此外,可选依赖项的最低测试版本已更新为 fiona 1.8.21,scipy 1.9,matplotlib 3.7,mapclassify 2.5,folium 0.12 和 SQLAlchemy 2.0。 这些库的旧版本可能继续工作,但不再被认为是支持的 (#3371)。

弃用和兼容性说明:

  • 包装 pandas Series.select 方法的 GeoSeries.select 方法已被移除。 上游方法在所有支持的 pandas 版本中不再存在 (#3394)。

新功能和改进:

  • 添加了 geopandas.accessors 模块。导入该模块以注册一个 pandas.Series.geo 访问器,通过pandas的扩展机制暴露GeoSeries方法 (#3272)。

版本 1.0.1(2024年7月2日)#

错误修复:

  • explore() 中支持命名的日期时间或对象 dtype 索引 (#3360, #3364)。

  • 修复了一个回归问题,阻止将Series作为几何方法的参数 (#3363)

版本 1.0.0(2024年6月24日)#

关于依赖项的说明:

  • GeoPandas 1.0 放弃了对 shapely<2 和 PyGEOS 的支持。目前唯一支持的几何引擎是 shapely >= 2。因此,基于 rtree 包的空间索引也被移除了 (#3035)。

  • 现在I/O引擎默认使用Pyogrio,现已与GeoPandas一起安装,而不是Fiona (#3223)。

新方法:

  • 从shapely添加了count_geometries方法到GeoSeries/GeoDataframe (#3154)。

  • 从shapely添加了count_interior_rings方法到GeoSeries/GeoDataframe (#3154)

  • 从shapely添加了relate_pattern方法到GeoSeries/GeoDataframe (#3211).

  • 从shapely添加了intersection_all方法到GeoSeries/GeoDataframe (#3228)。

  • 从 shapely 添加了 line_merge 方法到 GeoSeries/GeoDataframe (#3214)。

  • 从 shapely 添加了 set_precisionget_precision 方法到 GeoSeries/GeoDataframe (#3175)。

  • 从shapely添加了count_coordinates方法到GeoSeries/GeoDataframe (#3026)。

  • 从shapely添加了minimum_clearance方法到GeoSeries/GeoDataframe (#2989)。

  • 从shapely添加了shared_paths方法到GeoSeries/GeoDataframe (#3215)。

  • 从shapely添加了is_ccw方法到GeoSeries/GeoDataframe (#3027)。

  • 从shapely添加了is_closed属性到GeoSeries/GeoDataframe (#3092)。

  • 从shapely添加了 force_2dforce_3d 方法到GeoSeries/GeoDataframe (#3090)。

  • 从shapely向GeoSeries/GeoDataframe添加了voronoi_polygons方法 (#3177)。

  • 从shapely添加了contains_properly方法到GeoSeries/GeoDataframe (#3105)。

  • 添加了 build_area 方法,将 build_area shapely 显示给 GeoSeries/GeoDataframe (#3202)。

  • snap 方法从 shapely 添加到 GeoSeries/GeoDataframe (#3086)。

  • transform 方法从 shapely 添加到 GeoSeries/GeoDataFrame (#3075)。

  • 从 shapely 添加了 get_geometry 方法到 GeoSeries/GeoDataframe (#3287)。

  • 添加了 dwithin 方法以检查 GeoSeries/GeoDataFrame 上的“距离范围”谓词 (#3153)。

  • 添加了 to_geo_dict 方法,用于从 GeoDataFrame 生成类似于 GeoJSON 的字典 (#3132)。

  • 添加了 polygonize 方法,暴露了来自 shapely 的 polygonizepolygonize_full 到 GeoSeries/GeoDataframe (#2963)。

  • is_valid_reason 方法从 shapely 添加到 GeoSeries/GeoDataframe (#3176)。

  • 添加了 to_arrow 方法和 from_arrow 类方法到 GeoSeries/GeoDataFrame 以导出和导入 Arrow 数据与 GeoArrow 扩展类型(#3219, #3301)。

新功能和改进:

  • 添加了 predicate="dwithin" 选项和 distance 参数到 sindex.query() 方法和 sjoin (#2882)。

  • GeoSeries 和 GeoDataFrame __repr__ 现在会修剪尾随零以获得更可读的输出 (#3087)。

  • on_invalid 参数添加到 from_wktfrom_wkb (#3110)。

  • make_valid 选项在 overlay 现在使用 make_valid 方法而不是 buffer(0) (#3113)。

  • "geometry" 作为 dtype 传递给 pd.read_csv 现在将返回指定列的 GeoSeries (#3101).

  • 为pyogrio引擎的read_file添加对mask关键字的支持(#3062)。

  • 为fiona引擎的 read_file 添加了对 columns 关键字的支持 (#3133)。

  • 为使用GeoParquet 1.1的基于GeoArrow的原生几何编码读取和写入文件添加了对 to_parquetread_parquet 的支持 (#3253, #3275).

  • 为GeoSeries和GeoDataFrame的clip方法添加sort关键字,以允许可选地保持观测值的原始顺序 (#3233)。

  • 添加了 show_bboxdrop_idto_wgs84 参数,以允许进一步自定义 GeoSeries.to_json (#3226)。

  • explore 现在支持包含日期时间、UUID和其他非 JSON 可序列化对象的 GeoDataFrame 附加列 (#3261)。

  • 现在,GeoSeries.fillna 方法支持 limit 关键字 (#3290)。

  • sjoin()方法添加了on_attribute选项参数,允许将连接限制为具有匹配属性的观察值。 (#3231)

  • 添加了对 bbox 覆盖编码在 geoparquet 中的支持。可以根据边界框过滤读取 parquet 文件,并将边界框列写入 parquet 文件 (#3282)。

  • align 关键字在二进制方法中现在默认为 None,视为 True。显式的 True 将消除关于索引不匹配的警告 (#3212)。

  • GeoSeries.set_crs 现在可以通过传递 crs=None, allow_override=True 来移除CRS信息 (#3316)。

  • GeoSeries.plot()GeoDataFrame.plot() 添加了 autolim 关键字参数 (#2817).

  • GeoDataFrame.to_file添加了metadata参数(#2850)

  • 更新文档以澄清将命名的(Geo)Series作为geometry参数传递给GeoDataFrame构造函数时,将不会使用名称,而是始终生成一个名为“geometry”的活动几何列的GeoDataFrame(#3337)。

  • read_postgis 将查询 spatial_ref_sys 表以确定 CRS 权威 而不是目前假设 EPSG 的行为。如果 spatial_ref_sys 表不存在,或者 SRID 不存在,read_postgis 将回退到假设 EPSG CRS 权威。 (#3329)

向后不兼容的API更改:

  • 现在,sjoin 方法将保留右侧 GeoDataFrame 的索引名称(如果有的话),而不是始终使用 "index_right" 作为返回值中结果列的名称(#846, #2144)。

  • 当将未对齐的 Series 作为方法参数传递时,GeoPandas 现在会引发 ValueError,以避免对是否发生自动对齐的混淆 (#3271)。

  • GeoDataFrame/ GeoSeries explode(.., index_parts=True) 的弃用默认值现在被设置为false,以与pandas保持一致 (#3174)。

  • 当传入一个命名的 (Geo)Series ser 时,set_geometry 的行为已经改变。 在这种情况下,新的活动几何列名称将是 ser.name,如果不为 None,而不是 以前的活动几何列名称。这意味着如果新旧名称不同,则两个列都会保留在 GeoDataFrame 中。要复制以前的 行为,可以调用 gdf.set_geometry(ser.rename(gdf.active_geometry_name)) (#3237)。 请注意,这一行为变更不影响 GeoDataframe 构造函数,传入一个命名的 GeoSeries serGeoDataFrame(df, geometry=ser) 将始终产生一个名称为“geometry”的几何列的 GeoDataFrame,以保持向后兼容性。如果您希望在构建 GeoDataFrame 时 传播 ser 的名称,可以调用 df.set_geometry(ser)GeoDataFrame(df, geometry=ser).rename_geometry(ser.name) (#3337)。

  • delaunay_triangles 现在在创建 Delaunay 三角剖分时会将所有几何体一起考虑,而不是逐个元素执行操作。如果您想为每个几何体单独生成 Delaunay 三角形,请改用 shapely.delaunay_triangles

  • 使用 read_file 读取没有几何字段的数据源现在返回一个 Pandas DataFrame,而不是一个带有空 geometry 列的 GeoDataFrame。

强制弃用:

  • 已强制弃用 geopandas.datasets,该模块已被移除。现在在 geodatasets 包中可以找到新的示例数据集 (#3084)。

  • 许多长期被弃用的函数、方法和属性已被删除 (#3174), (#3190)

    • 移除了已弃用的函数 geopandas.io.read_filegeopandas.io.to_filegeopandas.io.sql.read_postgis。 请改用 geopandas.read_filegeopandas.read_postgis 和 GeoDataFrame/GeoSeries to_file(..) 方法。

    • 移除了弃用的 GeometryArray.data 属性,应该使用 np.asarray(..)to_numpy() 方法。

    • 删除了弃用的 sindex.query_bulk 方法,改为使用 sindex.query

    • 移除了弃用的 sjoin 参数 op,应提供 predicate 作为替代。

    • 移除了过时的 GeoSeries/ GeoDataFrame 方法 __xor__, __or__, __and____sub__。请分别使用方法 symmetric_difference, union, intersectiondifference

    • 移除了已弃用的绘图函数 plot_polygon_collection, plot_linestring_collectionplot_point_collection,直接使用 GeoSeries/GeoDataFrame .plot 方法。

    • 删除了过时的 GeoSeries/GeoDataFrame .plot 参数 axescolormap,现在分别使用 axcmap

    • 移除了在 to_parquetto_feather 中指定 version 关键字的兼容性。这个关键字现在将传递给 pyarrow,并使用 schema_version 来指定 GeoParquet 规范版本 (#3334)。

新的弃用:

  • unary_union 属性现在已被弃用,并被 union_all() 方法替代 (#3007),允许选择更快的覆盖合并算法 (#3151)。

  • read_file() 中,include_fieldsignore_fields 关键字已被弃用 对于默认的 pyogrio 引擎。目前这些被转换为 columns 关键字 以保持向后兼容,但您应该直接使用 columns 关键字 来选择要读取的列 (#3133)。

  • set_geometry中的drop关键字已被弃用,未来将移除drop=True的行为(#3237)。为了为此更改做好准备,您应该移除代码中任何显式的drop=False调用(默认行为已与drop=False相同)。要复制之前的drop=True行为,您应该将gdf.set_geometry(new_geo_col, drop=True)替换为

    geo_col_name = gdf.active_geometry_name
    gdf.set_geometry(new_geo_col).drop(columns=geo_col_name).rename_geometry(geo_col_name)
    
  • 选项 geopandas.use_pygeos 已被弃用,并将在 GeoPandas 1.1 中被移除 (#3283)

  • 通过设置 crs 属性手动覆盖现有的 CRS 的 GeoSeries 或 GeoDataFrame 已被弃用,并将在将来被禁用。请改用 set_crs() 方法 (#3085)。

错误修复:

  • 修复 GeoDataFrame.merge() 错误地返回一个 DataFrame 而不是 GeoDataFramesuffixes 参数被应用于活动 几何列 (#2933).

  • 修复了在GeoDataFrame构造函数中的一个错误,如果给geometry传递了一个命名的GeoSeries,则该名称未被用作活动几何列名称(#3237)。

  • 修复在传递 Series 并指定 crs 以不更改原始输入数据时的 GeoSeries 构造函数中的错误 (#2492)。

  • 修复回归,防止从包含哈希的文件路径中读取数据,使用read_file和fiona引擎(#3280)。对于pyogrio的类似修复已包含在pyogrio 0.8.1中。

  • 修复 to_parquet 以在3D几何情况下写入正确的元数据 (#2824)。

  • 修复与 psycopg 的兼容性 (#3167)。

  • 修复允许将没有CRS的数据框附加到没有CRS的PostGIS表中 (#3328)

  • 修复使用 explore 绘制全部空的 GeoSeries (#3316)。

版本 0.14.4 (2024年4月26日)#

  • 针对即将发布的 pandas 3.0、numpy 2.0 和 fiona 1.10 进行了几个兼容性修复。

版本 0.14.3 (2024年1月31日)#

  • 针对最新的pandas 2.2版本进行了若干兼容性修复。

  • 修复了 pandas.concat CRS 一致性检查的一个错误,其中仅由 WKT 空格造成的 CRS 被视为不兼容 (#3023)。

版本 0.14.2(2024年1月4日)#

  • 修复了overlay中的回归问题,其中使用buffer(0)而不是make_valid在内部导致了无效结果(#3074)。

  • 修复 explore() 方法,当活跃几何体包含缺失和空的几何体时 (#3094)。

版本 0.14.1 (2023年11月11日)#

  • Parquet和Feather IO函数现在支持最新的1.0.0版本的GeoParquet规范 (geoparquet.org) (#2663)。

  • 修复 read_parquetread_feather 以应对 CVE-2023-47248 (#3070).

版本 0.14 (2023年9月15日)#

GeoPandas 默认将使用 Shapely 2.0 而不是 PyGEOS,当 Shapely >= 2.0 和 PyGEOS 都安装时。 当 PyGEOS 与 Shapely < 2.0 共同安装时,默认将继续使用 PyGEOS。 对于 PyGEOS 和 Shapely < 2.0 的支持将在 GeoPandas 1.0 中移除。 (#2999)

API更改:

  • seed 关键字在 sample_points 中已被弃用。请改用 rng。 (#2913).

新方法:

  • 从 shapely 添加了 concave_hull 方法到 GeoSeries/GeoDataframe (#2903)。

  • 从shapely添加了delaunay_triangles方法到GeoSeries/GeoDataframe (#2907)。

  • 从shapely添加了extract_unique_points方法到GeoSeries/GeoDataframe (#2915)。

  • 从shapely添加了frechet_distance()方法到GeoSeries/GeoDataframe (#2929)。

  • 从shapely添加了hausdorff_distance方法到GeoSeries/GeoDataframe (#2909).

  • 从shapely添加了minimum_rotated_rectangle方法到GeoSeries/GeoDataframe (#2541)。

  • 从shapely向GeoSeries/GeoDataframe添加了offset_curve方法 (#2902)。

  • 从shapely添加了remove_repeated_points方法到GeoSeries/GeoDataframe (#2940)。

  • 添加了来自shapely的reverse方法到GeoSeries/GeoDataframe (#2988)。

  • 从shapely添加了segmentize方法到GeoSeries/GeoDataFrame (#2910)。

  • shortest_line方法从shapely添加到GeoSeries/GeoDataframe (#2960)。

新功能和改进:

  • 为Shapely >= 2.0的sjoin_nearest方法添加了exclusive参数 (#2877)

  • 添加了 GeoDataFrame.active_geometry_name 属性,返回活动几何列的名称,如果未设置活动几何列则返回 None。

  • 现在,to_file() 方法会自动检测具有 .fgb 扩展名的文件的 FlatGeoBuf 驱动 (#2958)

错误修复:

  • 修复当 GeoDataFrame 初始化时列名为 "crs" 的模糊错误 (#2944)

  • 修复在使用UserDefined 分箱时explore的颜色分配 (#2923)

  • 修复在 apply 中的错误,使用 axis=1 时,给定的用户定义函数在几何列中返回嵌套数据 (#2959)

  • 正确推断np.int32pd.Int32Dtype列的模式 (#2950)

  • assert_geodataframe_equal 现在可以处理没有活动几何的GeoDataFrames (#2498)

关于(可选)依赖项的说明:

  • GeoPandas 0.14 不再支持 Python 3.8 和 pandas 1.3 及更早版本(现在支持的最小 pandas 版本为 1.4)。此外,列出的依赖项的最低所需版本现在更改为 shapely 1.8.0、fiona 1.8.21、pyproj 3.3.0 和 matplotlib 3.5.0 (#3001)

弃用和兼容性说明:

  • geom_almost_equals() 方法已经被弃用,应使用 geom_equals_exact() 代替 (#2604)。

版本 0.13.2 (2023年6月6日)#

错误修复:

  • 修复了从本地文件URI (file://..) 读取时的回归问题,使用 geopandas.read_file (#2948)。

版本 0.13.1 (2023年6月5日)#

错误修复:

  • 修复了使用 geopandas.read_file 从 URL 读取的回归错误 (#2908)。这将恢复在将所有数据传递给底层引擎(fiona 或 pyogrio)之前,先下载所有数据的行为,除非服务器支持部分请求(以支持读取大文件的子集)。

版本 0.13 (2023年5月6日)#

新方法:

  • 添加了 sample_points 方法来从多边形或线串几何图形中抽样随机点 (#2860)。

  • 新增 hilbert_distance() 方法,该方法计算 GeoSeries/GeoDataFrame 中每个几何体沿 Hilbert 曲线的距离 (#2297).

  • 支持根据希尔伯特曲线的距离(例如,使用 sort_values())对几何体进行排序 (#2070)。

  • 从shapely添加了get_coordinates()方法到GeoSeries/GeoDataframe (#2624)。

  • 从shapely添加了minimum_bounding_circle()方法到GeoSeries/GeoDataframe (#2621)。

  • 作为 GeoSeries 方法添加了 minimum_bounding_radius() (#2827).

其他新功能和改进:

  • Parquet 和 Feather IO 函数现在支持最新的 1.0.0-beta.1 版本的 GeoParquet 规范 () (#2663)。

  • 新增通过另一个 GeoSeries 填充 GeoSeries.fillna 中缺失值的支持 (#2535).

  • 支持在 map_kwds 参数中指定 min_zoommax_zoom.explore() 使用 (#2599)。

  • 增加了对追加支持(mode="a"append=True)在 to_file() 中使用 engine="pyogrio" (#2788)。

  • to_json添加了一个to_wgs84关键字,允许自动重新投影以符合2016年GeoJSON规范(#416)。

  • to_json 输出现在包括一个 "crs" 字段,如果 CRS 不是默认的 WGS84 (#1774)。

  • 在没有活动几何列的情况下访问GeoDataFrame的geometry属性时改进错误消息,这与构造函数中提供的默认名称"geometry"相关 (#2577)

弃用和兼容性说明:

  • 添加警告,unary_union 将返回 'GEOMETRYCOLLECTION EMPTY' 而不是 None,针对所有为 None 的 GeoSeries。 (#2618)

  • 空间索引 .sindex 属性的 query_bulk() 方法已被弃用,推荐使用 query() (#2823)。

错误修复:

  • 确保从DataFrame创建的GeoDataFrame是一个副本,而不是一个视图 (#2667)

  • 修复在plot()中几何图形与颜色不匹配的问题,如果存在空或缺失几何图形 (#2224)

  • 转义特殊字符以避免在 explore() 中出现模板语法错误 (#2657)

  • 修复 to_parquet/to_feather 在空的 GeoDataFrame 情况下,元数据中不写入无效的边界框(包含 NaNs) (#2653)

  • 修复 to_parquet/to_feather 以正确使用 3D 几何的 WKB 风格 (#2654)

  • 修复 read_file 以避免在调用 Fiona 或 Pyogrio 时读取所有文件字节,如果提供的输入是 URL (#2796)

  • 修复 copy() 在没有活动几何列的情况下将 GeoDataFrames 向下转换为 DataFrame (#2775)

  • 修复当GeoDataFrame列为多重索引时几何列名称传播的问题 (#2088)

  • 修复iterfeatures()方法,以正确处理非标量值,当na='drop'被指定时(#2811)

  • 修复向 plot 传递自定义图例标签的问题 (#2886)

关于(可选)依赖项的说明:

  • GeoPandas 0.13 不再支持 pandas 1.0.5(现在最低支持的 pandas 版本是 1.1)。此外,列出的依赖项的最低要求版本现在已更改为 shapely 1.7.1、fiona 1.8.19、pyproj 3.0.1 和 matplotlib 3.3.4 (#2655)

版本 0.12.2(2022年12月10日)#

错误修复:

  • 在使用 PyGEOS 或 Shapely >= 2.0 时,正确处理带 Z 维度的几何体在 to_crs() 中(之前 z 坐标会丢失) (#1345)。

  • naturalearth_lowres内置数据集中将克里米亚分配给乌克兰 (#2670)

版本 0.12.1(2022年10月29日)#

小版本修复,去掉了安装要求中的shapely<2的限制。

版本 0.12 (2022年10月24日)#

本次发布的亮点是对Shapely 2.0的支持。这使得可以同时测试Shapely 2.0(当前为2.0b1)和GeoPandas。

请注意,如果您还安装了PyGEOS,您需要在导入geopandas之前设置一个环境变量 (USE_PYGEOS=0),以便实际上测试Shapely 2.0功能而不是PyGEOS。有关更多详细信息,请参见 https://geopandas.org/en/latest/getting_started/install.html#using-the-optional-pygeos-dependency

新功能和改进:

  • 在 GeoSeries/GeoDataframe 中添加了 normalize() 方法 (#2537)。

  • 将来自shapely的make_valid()方法添加到GeoSeries/GeoDataframe (#2539)。

  • read_file 添加了 where 过滤器 (#2552).

  • 将分布式自然地球数据集(naturalearth_lowresnaturalearth_cities)更新到版本 5.1 (#2555)。

弃用和兼容性说明:

  • 访问没有活动几何列的 GeoDataFramecrs 已被弃用,现在会引发 AttributeError (#2578)。

  • 解决了最近版本的 Matplotlib 中在 .explore() 中与颜色图相关的警告 (#2596)。

错误修复:

  • 修复在用空几何图形裁剪时geopandas.clip()中出现的神秘错误信息 (#2589)。

  • 访问gdf.geometry时,如果活动几何列缺失,并且存在一个名为"geometry"的列,将会引发AttributeError,而不是返回gdf["geometry"](#2575)。

  • 将 GeoSeries/GeoDataFrames 与 pandas.concat 结合时,如果所有输入的 CRS 不相同,将不再默默覆盖 CRS 信息 (#2056)。

版本 0.11.1(2022年7月24日)#

小 bug 修复版本:

  • 修复在涉及 MultiIndex 的 reshape 方法中的回归 (RecursionError),例如 unstack()pivot(),或使用 MultiIndex 构造 GeoDataFrame (#2486)。

  • 修复了在 GeoDataFrame.explode() 中使用非默认几何列名称的回归问题。

  • 修复apply()中的回归问题,导致每行的所有nan浮点列被转换为GeometryDtype (#2482)。

  • 修复了在读取 datetime 列时崩溃的问题,当文件包含混合时区偏移时(#2479)。这些将被作为 UTC 本地化值读取。

  • 修复在读取日期时间列时发生崩溃的问题,当文件包含超出[ns] 精度支持的日期时间时 (#2505)。

  • 修复在将 Parquet 或 Feather 格式 version 传递给 to_parquetto_feather 时的回归问题。因此,to_parquetto_feather 方法的 version 参数已被替换为 schema_versionversion 将直接传递给底层 feather 或 parquet 编写器。如果 version 是 0.1.0 或 0.4.0 之一,version 仅用于设置 schema_version (#2496)。

版本 0.11(2022年6月20日)#

本次发布的亮点:

  • geopandas.read_file()GeoDataFrame.to_file() 方法现在可以选择性地使用 pyogrio 包来读取和写入GIS文件格式,通过 engine="pyogrio" 关键字。pyogrio包实现了 GDAL/OGR矢量数据源的矢量化IO,相比于 fiona 基于的引擎,它更快 (#2225)。

  • GeoParquet 支持已更新,以实现 v0.4.0 的 OpenGeospatial/GeoParquet 规范 (#2441)。保证与 v0.1.0 元数据规范的向后兼容性(在之前的 GeoPandas 发布中实现),读取和写入 Parquet 和 Feather 文件将不再产生 UserWarning (#2327)。

新功能和改进:

  • 改进了当活动几何列从GeoDataFrame中丢失时对GeoDataFrame的处理。之前,当活动几何列保留时,方括号索引gdf[[...]]返回GeoDataFrame,而在其他情况下返回DataFrame。其他pandas索引方法(lociloc等)并未遵循相同规则。现在,所有索引/重塑操作的新行为如下(#2329, #2060):

    • 如果操作产生一个 DataFrame,其中包含活动几何列,则返回一个 GeoDataFrame

    • 如果操作生成一个包含 GeometryDtype 列的 DataFrame,但没有活动几何列,将返回一个 GeoDataFrame,其中活动几何列被设置为 None (使用 set_geometry() 设置新的几何列)

    • 如果操作生成一个包含没有 GeometryDtype 列的 DataFrame,则返回一个 DataFrame(这可以通过调用 set_geometry()GeoDataFrame 构造函数再次提升)

    • 如果操作生成一个 SeriesGeometryDtype,将返回一个 GeoSeries,否则返回 Series

    • 对于无效几何列的错误消息已得到改善,指示最后一个有效活动几何列集的名称,以及其他几何列是否可以提升为活动几何列 (#2329)。

  • 现在,对于支持它们的GIS格式(例如GPKG、GeoJSON),日期时间字段可以正确读取和写入,要求使用fiona 1.8.14或更高版本。之前,日期时间被作为字符串读取(#2202)。

  • folium.Map 关键字参数现在可以作为 map_kwds 参数指定给 GeoDataFrame.explore() 方法 (#2315)。

  • GeoDataFrame.explore() 添加一个新参数 style_function,以便根据 GeoJSON 属性启用图形样式 (#2377)。

  • 现在可以将一个空的 GeoDataFrame 写入支持的格式文件中 (#2240)。尝试这样做将会发出一个 UserWarning,而不是 ValueError

  • 快速矩形裁剪已被暴露为 GeoSeries/GeoDataFrame.clip_by_rect() (#1928)。

  • GeoSeries/GeoDataFrame.clip()mask 参数现在接受一个矩形遮罩作为类似列表的形式,以使用新的 GeoSeries/GeoDataFrame.clip_by_rect() 进行快速矩形裁剪 (#2414)。

  • 捆绑的演示数据集 naturalearth_lowres 已更新到源的 5.0.1 版本,字段 ISO_A3 在某些情况下手动更正(#2418)。

弃用和兼容性说明:

  • Geopandas在GitHub上的活跃开发分支已从master更名为main (#2277)。

  • 已弃用的方法 GeometryArray.equals_exact()GeometryArray.almost_equals() 已被移除。它们应该分别替换为 GeometryArray.geom_equals_exact()GeometryArray.geom_almost_equals() (#2267)。

  • 不推荐使用的 CRS 函数 explicit_crs_from_epsg()epsg_from_crs()get_epsg_file_contents() 已被移除 (#2340)。

  • 关于 GeoSeries.isna() 在存在空几何时的行为变化的警告已被删除 (#2349)。

  • GeoDataFrame/GeoSeries构造函数中指定一个与基础GeometryArray相矛盾的CRS现在会引发ValueError(#2100)。

  • 在没有提供几何列时,在GeoDataFrame构造函数中指定CRS,并在没有活动几何列的GeoDataFrame上调用GeoDataFrame. set_crs,现在会引发ValueError(#2100)

  • 现在完全弃用将非几何数据传递给GeoSeries构造函数,并将引发TypeError (#2314)。之前,对于非几何数据,返回的是pandas.Series

  • 已弃用 GeoSeries/GeoDataFrame 集合操作 __xor__(), __or__(), __and__()__sub__(), geopandas.io.file.read_file/to_filegeopandas.io.sql.read_postgis 现在发出 FutureWarning 而不是 DeprecationWarning 并将会在未来的版本中完全移除。

  • 访问没有活动几何列的 GeoDataFramecrs 已被弃用,并将在 GeoPandas 0.12 中删除 (#2373)。

错误修复:

  • GeoSeries.to_frame 现在创建一个 GeoDataFrame,几何列名称已正确设置(#2296)

  • 修复当未安装pygeos时,使用已安装pygeos创建的pickle文件无法读取的问题 (#2237)。

  • 修复了在使用 legend=Truemissing_kwds 时的 GeoDataFrame.plot() 中的 UnboundLocalError (#2281)。

  • 修复 explode() 不正确地将索引关联到列的问题,包括输入索引不唯一的情况 (#2292)

  • 修复 GeoSeries.[xyz] 在底层 GeoSeries 包含空点时引发 IndexError 的问题 (#2335)。 现在对应空点的行包含 np.nan

  • 修复 GeoDataFrame.iloc 在仅使用单列 GeometryDtype 索引 GeoDataFrame 时引发 TypeError 的问题 (#1970)。

  • 修复 GeoDataFrame.iterfeatures() 不返回与 GeoDataFrame.columns 相同字段顺序的特征 (#2396).

  • 修复 GeoDataFrame.from_features() 以支持读取具有空属性的GeoJSON (#2243)。

  • 修复 GeoDataFrame.to_parquet() 未拦截 engine 关键字参数,导致与 pandas 不一致 (#2227)

  • 修复 GeoDataFrame.explore()column 为布尔类型时产生错误的问题 (#2403)。

  • 修复了一个问题,即GeoDataFrame.to_postgis()输出了错误的ESRI权威CRS的SRID(#2414)。

  • 修复 GeoDataFrame.from_dict/from_features 类方法,使用 GeoDataFrame 而不是 cls 作为构造函数。

  • 修复 GeoDataFrame.plot() 在提供 colors 关键字时,与混合几何类型一起生成不正确颜色的问题。 (#2420)

关于(可选)依赖项的说明:

  • GeoPandas 0.11 放弃对 Python 3.7 和 pandas 0.25 的支持(现在最低支持的 pandas 版本为 1.0.5)。此外,列出的依赖项的最低要求版本现已更改为 shapely 1.7, fiona 1.8.13.post1, pyproj 2.6.1.post1, matplotlib 3.2, mapclassify 2.4.0 (#2358, #2391)

版本 0.10.2 (2021年10月16日)#

小 bug 修复版本:

  • 修复 overlay() 中的回归,在没有几何体相交的情况下(但总范围有重叠)(#2172)。

  • 修复在overlay()中使用keep_geom_type=True时的回归问题,特别是在一个GeometryCollection中与其他几何类型的两个几何体的叠加(#2177)。

  • 修复 overlay() 以遵循 keep_geom_type 关键字在 op="differnce" 情况下 (#2164)。

  • 修复在使用 mapclassify scheme 的情况下,plot() 中格式化图例标签重复的问题 (#2166)。

  • 修复了 explore() 方法忽略 vminvmax 关键字的问题, 如果它们被设置为 0 (#2175)。

  • 修复 unary_union 以正确处理带有缺失值的 GeoSeries (#2181)。

  • 避免在clip()中出现内部弃用警告 (#2179)。

版本 0.10.1 (2021年10月8日)#

小 bug 修复版本:

  • 修复在具有不重叠几何形状和非默认 how(即不是“交集”)的情况下 overlay() 的回归问题 (#2157)。

版本 0.10.0(2021年10月3日)#

本次发布的亮点:

  • 一个新的 sjoin_nearest() 方法用于基于接近性进行连接,具有设置最大搜索半径的能力 (#1865)。此外,sindex 属性获得了一个用于“最近”空间索引查询的新方法 (#1865, #2053)。

  • 在GeoDataFrame和GeoSeries上新增了一个explore()方法,原生支持基于folium / leaflet.js的交互式可视化 (#1953)

  • 现在 geopandas.sjoin()/overlay()/clip() 函数也可以作为 GeoDataFrame 的方法使用 (#2141, #1984, #2150)。

新功能和改进:

  • 为几何数据类型添加对pandas的 value_counts() 方法的支持 (#2047)。

  • explode() 方法有一个新的 ignore_index 关键字(与 pandas 的 explode 方法一致),用于在结果中重置索引,还有一个新的 index_parts 关键字,用于控制是否应该添加对爆炸多几何形状部分的累积计数索引 (#1871)。

  • points_from_xy() 现在可作为 GeoSeries 方法 from_xy 使用 (#1936).

  • 现在,to_file() 方法将尝试根据提供的文件名的扩展名来检测驱动程序(如果未指定),而不是默认为 ESRI Shapefile (#1609)。

  • read_parquet()中支持storage_options关键字, 用于指定基于fsspec的文件系统特定选项(例如S3)(#2107)。

  • 读/写函数现在支持 ~(用户主目录)扩展 (#1876).

  • 支持来自pandas的convert_dtypes()方法以保留GeoDataFrame类(#2115)。

  • GeoSeries.from_wkb()中支持十六进制格式的WKB值 (#2106).

  • 更新 estimate_utm_crs() 方法以处理跨越反射子午线的问题,使用 pyproj 3.1+ (#2049)。

  • 改进的启发式方法,根据CRS是投影的还是地理的来决定在repr中显示多少小数位 (#1895)。

  • geocode()的默认值从GeoCode.Farm切换到Photon地理编码API (https://photon.komoot.io) (#2007).

弃用和兼容性说明:

  • sjoin()中,op=关键字表示用于连接的空间谓词将被弃用,并被重命名为新的predicate=关键字(#1626)。

  • 属性 cascaded_union 已被弃用,请改用 unary_union (#2074)。

  • 现在构建具有重复 “geometry” 列的 GeoDataFrame 是不允许的。如果这导致重复的活动几何列,这也可能在 pd.concat(.., axis=1) 函数中引发错误 (#2046)。

  • 当前的 explode() 方法返回一个具有 MultiIndex 的 GeoSeries/GeoDataFrame,额外增加了一个级别,用于表示被爆炸的多几何体的部分索引。为了与 pandas 保持一致,这在未来会发生变化,并添加了新的 index_parts 关键字来控制这一点。

错误修复:

  • 修复了clip()函数,以正确裁剪MultiPoints,而不是在部分超出裁剪边界时保持它们不变 (#2148)。

  • 修复 GeoSeries.isna() 以在空的 GeoSeries 情况下正确返回布尔序列 (#2073)。

  • 修复GeoDataFrame构造函数,以便在参数已经是GeoDataFrame对象时(即 GeoDataFrame(gdf))保留几何名称 (#2138)。

  • 修复在将这些值设置为列时值的CRS丢失的问题 (GeoDataFrame.__setitem__) (#1963)

  • 修复 GeoDataFrame.apply() 以保留活动几何列名称 (#1955)。

  • 修复在 sjoin() 中在右连接的情况下不忽略后缀 (how="right) (#2065).

  • 修复 GeoDataFrame.explode() 在使用 MultiIndex 时的问题 (#1945).

  • 修复在 to/from_wkbto_from_wkt 中处理缺失值的问题 (#1891)。

  • 修复 to_file()to_json() 当 DataFrame 有重复列时引发错误 (#1900)。

  • 修复用户定义分类方案中显示的颜色错误 (#2019)。

  • 修复对plot()中的path_effects关键字的处理 (#2127).

  • 修复 GeoDataFrame.explode() 以保留 attrs (#1935)

关于(可选)依赖项的说明:

  • GeoPandas 0.10.0 放弃对 Python 3.6 和 pandas 0.24 的支持。此外,最低要求的版本为 numpy 1.18, shapely 1.6, fiona 1.8, matplotlib 3.1 和 pyproj 2.2。

  • 使用分类方案绘图现在需要 mapclassify 版本 >= 2.4 (#1737).

  • 与最新的numpy和Shapely 1.7组合的兼容性修复 (#2072)

  • 即将发布的 Shapely 1.8 的兼容性修复 (#2087).

  • 最新 PyGEOS 的兼容性修复 (#1872, #2014) 和 matplotlib (颜色条问题, #2066).

版本 0.9.0 (2021年2月28日)#

许多文档改进以及一个重新设计和重构的网站,配有新标志 (#1564, #1579, #1617, #1668, #1731, #1750, #1757, #1759)。

新功能和改进:

  • 现在,geopandas.read_file函数接受更通用的类文件对象(例如,fsspec打开的文件对象)。它现在还将自动识别压缩文件(#1535)。

  • GeoDataFrame.plot() 方法现在提供对非几何列的 pandas 绘图功能的访问,可以使用 kind 关键字或访问器方法(例如 gdf.plot(kind="bar")gdf.plot.bar())(#1465)。

  • 新的 from_wkt(), from_wkb(), to_wkt(), to_wkb() 方法用于构造 GeoSeries ,从 WKT 或 WKB 表示中的几何图形创建 GeoSeries,或者将 GeoSeries 转换为具有 WKT 或 WKB 值的 pandas Series (#1710)。

  • 新增 GeoSeries.z 属性以访问点几何体的 z 坐标(类似于现有的 .x.y 属性) (#1773)。

  • 现在 to_crs() 方法可以处理缺失值 (#1618)。

  • 支持pandas的新 .attrs 功能 (#1658)。

  • dissolve() 方法现在允许通过未指定列 (by=None) 进行融合,以创建所有几何图形的联合(单行 GeoDataFrame) (#1568)。

  • GeoSeries/GeoDataFrame 上新的 estimate_utm_crs() 方法,用于根据边界确定 UTM CRS (#1646)。

  • GeoDataFrame.from_dict() 现在接受 geometrycrs 关键字 (#1619)。

  • GeoDataFrame.to_postgis()geopandas.read_postgis() 现在支持 sqlalchemy 引擎和连接对象 (#1638)。

  • 现在,GeoDataFrame.explode() 方法允许基于非几何列进行膨胀,使用pandas实现 (#1720)。

  • 使用PyGEOS后端时,GeoDataFrame/GeoSeries.explode()的性能提高(#1693)。

  • 二元操作和谓词方法(例如 intersection(), intersects())有一个新的 align 关键字,可以选择在执行操作之前不按索引对齐,使用 align=False (#1668)。

  • GeoDataFrame.dissolve() 方法现在支持所有相关的 groupby() 关键字,即 levelsortobserveddropna 关键字 (#1845)。

  • 现在,geopandas.overlay() 函数接受 make_valid=False,以跳过确保输入几何图形有效的步骤,使用 buffer(0) (#1802)。

  • GeoDataFrame.to_json() 方法增加了一个 drop_id 关键字,以便可以选择不将 GeoDataFrame 的索引写入生成的 JSON 的 “id” 字段中 (#1637)。

  • 绘图方法中新增了一个aspect关键字,允许可选地保留原始纵横比 (#1512)

  • plot()方法的legend_kwds组中新增了一个interval关键字, 用于控制使用分类方案时图例标签的外观 (#1605)。

  • GeoSeries的空间索引(通过sindex属性访问)现在存储在底层数组上。这确保了空间索引在更多可能的操作中得以保留,并且GeoDataFrame的多个几何列可以各自拥有空间索引(#1444)。

  • 在GeoSeries/GeoDataFrame上添加一个has_sindex属性,以检查空间索引是否已经初始化 (#1627)。

  • 现在,geopandas.testing.assert_geoseries_equal()assert_geodataframe_equal() 测试工具具有一个 normalize 关键字(默认为False),用于在比较相等性之前标准化几何形状(#1826)。当失败时,这些函数现在也提供更有信息量的错误消息(#1808)。

弃用和兼容性说明:

  • 当前is_ring属性对多边形返回True。将来,这将为False(#1631)。此外,开始对线段和线环进行检查(而不是总是返回False)。

  • 不再使用的 objects 关键字在 intersection() 方法中的 GeoDataFrame/GeoSeries.sindex 空间索引对象已被移除 (#1444)。

错误修复:

  • 修复在plot()方法中当几何体为空时抛出错误的问题 (#1702, #1828)。

  • 修复 geopandas.overlay() 以保持在几何集合中嵌套的正确类型的几何图形,因为叠加操作的结果(#1582)。此外,如果不同类型的几何图形从结果中被丢弃,现在将会发出警告(#1554)。

  • 修复空GeoSeries的repr,以不显示多余的警告 (#1673).

  • 修复空的 GeoDataFrames 的 .crs (#1560)。

  • 修复 geopandas.clip 以保留正确的几何列名称 (#1566)。

  • 修复在使用 legend_kwds 和多个子图时 plot() 方法中的错误(#1583)

  • 修复在没有缺失数据区域时,plot() 方法的 missing_kwds 关键字产生的虚假警告 (#1600)。

  • 修复 plot() 方法,以正确对齐作为 pandas Series 传递给 column 关键字的值 (#1670)。

  • 修复在绘制MultiPoints时传递值以确定颜色的错误(#1694)

  • rename_geometry() 方法现在会在使用重复的列名时抛出更为详细的错误信息 (#1602)。

  • 修复 explode() 方法以保留 CRS (#1655)

  • 修复 GeoSeries.apply() 方法,使其重新接受 convert_dtype 关键字,以与 pandas 保持一致 (#1636)。

  • 修复 GeoDataFrame.apply() 以在可能的情况下保留坐标参考系统(CRS)(#1848)。

  • 修复 geom in geoseries 中的包含测试的错误 (#1753)。

  • GeoSeries/GeoDataFrame 的 shift() 方法现在保留 CRS (#1744)。

  • PostGIS IO 功能现在对表名加引号,以确保它与大小写敏感的名称兼容 (#1825)。

  • 修复 GeoSeries 构造函数,使其在不传递数据而仅传递索引的情况下可用 (#1798)。

关于(可选)依赖项的说明:

  • GeoPandas 0.9.0 不再支持 Python 3.5。此外,最低要求的版本是 pandas 0.24,numpy 1.15 和 shapely 1.6 以及 fiona 1.8。

  • 现在不再需要descartes包来绘制多边形。这个功能现在默认包含在GeoPandas中,当matplotlib可用时(#1677)。

  • Fiona只有在使用read_file/to_file时才会导入。这意味着 你现在可以强制geopandas在没有安装fiona的情况下进行安装(尽管它 仍然是默认要求) (#1775)。

  • 与即将发布的 Shapely 1.8 兼容 (#1659, #1662, #1819)。

版本 0.8.2 (2021年1月25日)#

与 PyGEOS 0.9 兼容的小错误修复版本。

版本 0.8.1 (2020年7月15日)#

小 bug 修复版本:

  • 修复了在使用JenksCaspallSampled或FisherJenksSampled方案进行可视化时,plot()方法中的回归问题(#1486)。

  • 修复在 GeoDataFrame.to_postgis 中出现的虚假警告 (#1497)。

  • 修复使用 pd.read_pickle 从旧版 GeoPandas 编写的文件中反序列化的问题 (#1511)。

版本 0.8.0 (2020年6月24日)#

实验性: 可选使用 PyGEOS 来加速空间操作 (#1155)。 PyGEOS 是 Shapely 的一个更快的替代品(正在贡献回 Shapely 的未来版本),并用于逐元素空间操作和例如在 sjoin 中的空间索引 (#1343, #1401, #1421, #1427, #1428)。 详情请参阅安装文档以获取更多信息以及如何启用它。

新功能和改进:

  • IO增强:

    • GeoDataFrame.to_postgis() 方法用于写入 PostGIS 数据库 (#1248).

    • 新支持Apache Parquet和Feather文件格式 (#1180, #1435)

    • 允许使用 GeoDataFrame.to_file 追加到文件中 (#1229).

    • read_file 中添加对 ignore_geometry 关键字的支持,仅读取属性数据。如果设置为 True,将返回一个没有几何信息的 pandas DataFrame (#1383)。

    • geopandas.read_file 现在支持从类似文件的对象中读取 (#1329).

    • GeoDataFrame.to_file 现在支持指定写入文件的坐标参考系(#802)。默认情况下,它仍然使用GeoDataFrame的坐标参考系。

    • geopandas.read_postgis 中新增 chunksize 关键字,以分块读取查询 (#1123)。

  • 与几何列和坐标参考系统(CRS)相关的改进:

    • 现在,GeoDataFrame中任何具有“geometry”数据类型的列都将作为GeoSeries返回。这意味着当有多个几何列时,不仅返回“活动”几何列作为GeoSeries,还可以访问另一个几何列(gdf["other_geom_column"])返回一个GeoSeries(#1336)。

    • 现在,GeoDataFrame中的多个几何列可以拥有不同的CRS。全局gdf.crs属性继续返回“活动”几何列的CRS。其他几何列的CRS可以从列本身访问(例如gdf["other_geom_column"].crs)(#1339)。

    • GeoDataFrame/GeoSeries 上的新 set_crs() 方法用于设置天真的几何体的 CRS (#747)。

  • 与绘图相关的改进:

    • 当使用地理坐标参考系统时,y轴的缩放现在取决于图形的中心,而不是使用相等的纵横比(#1290)。

    • 当将分类数据类型的列传递给GeoDataFrame plot()column=关键字时,我们现在尊重所有类别及其顺序 (#1483)。此外,新的categories关键字允许指定所有类别及其顺序 (#1173)。

    • 对于使用分类方案(使用 scheme=)的分级图,legend_kwds 接受两个新的关键字来控制图例的格式: fmt 用于设置区间边缘的格式字符串 (#1253),以及 labels 用于传递完全自定义的类别标签 (#1302)。

  • GeoSeries/GeoDataframe 上新增了 covers()covered_by() 方法,用于等效的空间谓词 (#1460, #1462)。

  • 当使用基于距离的方法处理地理投影中的数据时,GeoPandas 现在会发出警告 (#1378)。

弃用:

  • 当从已经具有CRS的数据构建GeoSeries或GeoDataFrame时,如果两个CRS不匹配,会引发弃用警告,在将来这种情况下将引发错误。您可以使用新的 set_crs 方法来覆盖现有的CRS。请参见 the docs

  • geopandas.plotting模块中的辅助函数已弃用 公共使用 (#656)。

  • 函数 geopandas.io 已被弃用,请使用顶级函数 read_fileto_file 代替 (#1407)。

  • 集合运算符 (&, |, ^, -) 已被弃用,请使用 intersection(), union(), symmetric_difference(), difference() 方法 代替 (#1255)。

  • 空数据框的sindex将来会返回一个空的空间索引,而不是None (#1438)。

  • 空间索引中由sindex属性返回的intersection方法中的objects关键字已被弃用,并将在将来移除(#1440)。

错误修复:

  • 修复total_bounds()方法,以忽略缺失和空的几何体 (#1312)。

  • 修复 geopandas.clip 在使用非重叠区域掩码时导致空的 GeoDataFrame (#1309, #1365)。

  • 修复在空几何列上连接时的错误 geopandas.sjoin (#1318)。

  • 与CRS相关的修复:pandas.concat 在连接GeoSeries对象时保留CRS (#1340),在geopandas.clip中保留CRS (#1362) 和在GeoDataFrame.astype中 (#1366)。

  • 修复了GeoDataFrame.explode()当‘level_1’是列名之一时的错误(#1445)。

  • 当未安装 rtree 时,提供更好的错误信息 (#1425).

  • 修复 GeoSeries.equals() 的错误 (#1451).

  • 修复多部分几何图形的绘制,增加了额外的样式关键字 (#1385)。

而我们现在有了一个行为规范!

GeoPandas 0.8.0 是最后一个支持 Python 3.5 的版本。下一个版本将要求 Python 3.6,pandas 0.24,numpy 1.15 和 shapely 1.6 或更高版本。

版本 0.7.0(2020年2月16日)#

对Python 2.7的支持已经停止。GeoPandas现在支持Python >= 3.5。

本次发布的重要API更改是GeoPandas现在需要PROJ > 6和pyproj > 2.2,并且GeoSeries和GeoDataFrame的.crs属性不再将CRS信息存储为proj4字符串或字典,而是存储为pyproj.CRS对象(#1101)。

这提供了更好的用户界面,并整合了来自pyproj和PROJ 6的改进,但可能也需要对您的代码进行一些更改。请查看文档中的迁移指南

其他API更改;

  • 现在,GeoDataFrame.to_file 方法也会将GeoDataFrame索引写入文件,如果索引是命名的和/或非整数。您可以使用 index=True/False 关键字来覆盖这个默认推断(#1059)。

新功能和改进:

  • 一个新的 geopandas.clip 函数,用于将 GeoDataFrame 剪切到另一个形状的空间范围内 (#1128)。

  • 现在,geopandas.overlay 函数适用于所有几何类型,包括点和线串,以及多边形 (#1110)。

  • plot() 方法支持缺失值(在确定颜色的列中)。默认情况下,它不会绘制相应的几何图形,但使用新的 missing_kwds 参数可以指定如何样式化那些几何图形(#1156)。

  • 现在plot()方法也支持绘制GeometryCollection和LinearRing对象(#1225)。

  • 添加了通过几何形状进行过滤或读取geopandas.read_file中的部分行的支持 (#1160).

  • 为在GeoDataFrame.to_file中支持pandas的新可空整数数据类型添加了支持 (#1220)。

错误修复:

  • GeoSeries.reset_index() 现在正确地返回一个 GeoDataFrame,而不是 DataFrame (#1252)。

  • 修复了 geopandas.sjoin 函数以正确处理 MultiIndex (#1159)。

  • 修复了geopandas.sjoin函数,以保留左侧GeoDataFrame的索引名称 (#1150)。

版本 0.6.3 (2020年2月6日)#

小 bug 修复版本:

  • 与 Shapely 1.7 和 pandas 1.0 的兼容性 (#1244).

  • 修复 GeoDataFrame.fillna 使其在几何列没有缺失值时再次接受非几何值。这应该能更容易填充GeoDataFrame的数值列 (#1279)。

版本 0.6.2 (2019年11月18日)#

小的错误修复版本,修复了一些回归问题:

  • 修复将RRB(A)元组数组传递给.plot()方法的回归问题 (#1178, #1211)。

  • 修复空的 GeoSeries 的 boundstotal_bounds 属性,这也修复了空或全为 NA 的 GeoSeries 的表示 (#1184, #1195)。

  • 修复GeoDataFrame的过滤以在结果为空时保留索引类型(#1190)。

版本 0.6.1 (2019年10月12日)#

小的错误修复版本,修复了一些回归问题:

  • 修复 astype 在使用多个几何体转换为字符串时的问题 (#1145) 或在转换没有几何体的数据框时的问题 (#1144)。

  • 修复 GeoSeries.fillna 以再次接受 np.nan (#1149).

版本 0.6.0 (2019年9月27日)#

重要提示!这是最后一个支持 Python 2.7 的版本 (#1031)

API更改:

  • 基于pandas ExtensionArray接口的内部重构 (#1000)。主要的用户可见更改包括:

    • GeoSeries的.dtype现在是'geometry'类型(不再是numpy的object类型)。

    • 现在,GeoSeries的.values返回一个自定义的GeometryArray,而不再是numpy数组。要获取Shapely标量的numpy数组,可以显式使用np.asarray(..)进行转换。

  • 当传入非几何数据时,GeoSeries 构造函数现在会发出警告。目前,构造函数会退回返回一个 pandas Series,但在未来这将引发错误 (#1085)。

  • 缺失值处理已更改,现在将缺失几何和空几何的概念分开(#601,1062)。实际上,这意味着(请参见 文档 以获取更多细节):

    • GeoSeries.isna 现在仅考虑缺失值,如果您想检查空几何体,可以使用 GeoSeries.is_empty (GeoDataFrame.isna 已经只关注缺失值)。

    • GeoSeries.dropna 现在实际上会删除缺失值(之前不删除缺失的或空的几何体)

    • GeoSeries.fillna 仅填充缺失值(行为不变)。

    • GeoSeries.align 默认使用缺失值而不是空几何体来填充不匹配的索引条目。

新功能和改进:

  • 添加一个 GeoSeries.affine_transform 方法,相当于 Shapely 的函数 (#1008)。

  • 增加了一个 GeoDataFrame.rename_geometry 方法,以便轻松重命名活动几何列 (#1053)。

  • 添加了 geopandas.show_versions() 函数,可以在错误报告中提供已安装库的概览 (#899)。

  • plot() 方法的 legend_kwds 关键字现在也可以用于指定颜色条的关键字 (#1102)。

  • 通过重用输入数据框的现有空间索引(如果可用),提高了sjoin()操作的性能 (#789)。

  • 更新文档以适应最新版本的 geoplot 和 contextily (#1044, #1088)。

  • 一个新的 geopandas.options 配置,目前有一个选项来控制坐标的显示精度 (options.display_precision)。默认情况下,现在显示更少的坐标(投影坐标为3,地理坐标为5),但可以通过选项覆盖默认值。

错误修复:

  • 如果可用,也尝试使用 pysal 而不是 mapclassify (#1082)。

  • GeoDataFrame.astype() 方法现在正确地返回一个 GeoDataFrame,如果几何列被保留 (#1009)。

  • to_crs 方法现在使用 always_xy=True 来确保对于 pyproj>=2.2.0 的经纬度顺序处理正确 (#1122)。

  • 修复在“多”几何体情况下在 plot() 方法中传递类似列表的颜色 (#1119)。

  • 修正了在plot()方法中传递自定义norm时形状和颜色条的颜色问题 (#1091, #1089)。

  • 修复了 GeoDataFrame.to_file 以保留 VFS 文件路径(例如,当指定“s3://”路径时) (#1124)。

  • 修复了在geopandas.sjoin中处理空几何体时失败的案例 (#1138)。

此外,某些依赖项的最低要求版本已增加:GeoPandas 现在需要 pandas >=0.23.4 和 matplotlib >=2.0.1 (#1002)。

版本 0.5.1(2019年7月11日)#

  • 与最新的 mapclassify 版本 2.1.0 的兼容性 (#1025).

版本 0.5.0 (2019年4月25日)#

改进:

  • 对于 GeoDataFrame.iterfeatures 有显著的性能提升(约 10 倍),这也改善了 GeoDataFrame.to_file(#864)。

  • 基于Fiona 1.8的文件输入输出增强:

    • 支持写入布尔类型 (#855) 和日期时间类型,如果文件格式支持的话 (#728)。

    • 支持以多种几何类型写入数据框,如果文件格式允许的话(例如,GeoJSON 适用于所有类型,或者 ESRI Shapefile 适用于 Polygon+MultiPolygon) (#827, #867, #870)。

  • 与 pyproj >= 2 的兼容性 (#962).

  • 一个新的 geopandas.points_from_xy() 辅助函数,用于将 x 和 y 坐标转换为 Point 对象 (#896)。

  • 现在,bufferinterpolate 方法接受类数组形式,以指定每个几何体的可变距离 (#781)。

  • 添加一个 relate 方法,对应于返回 DE-9IM 矩阵的 shapely 方法 (#853)。

  • 绘图改进:

    • 通过仅在实际存在‘Multi’几何体的情况下平滑几何体,从而提高绘图性能(#785)。

    • 分级图:访问所有 mapclassify 分类方案,并在 plot 方法中添加 classification_kwds 关键字以指定该方案的选项 (#876).

    • 能够指定一个 matplotlib axes 对象来绘制颜色条,使用 cax 关键字,以便更好地控制颜色条的位置 (#894).

  • geopandas.tools.geocode中的默认提供者从Google(现在需要API密钥)更改为Geocode.Farm(#907,#975)。

错误修复:

  • 移除图例标记中的边缘 (#807)。

  • 修复 align 方法以保持 CRS (#829)。

  • 修复 geopandas.testing.assert_geodataframe_equal 以正确比较左右数据框 (#810)。

  • 修复当值包含缺失值时在分级地图中的问题 (#877)。

  • 如果输入不是GeoDataFrame,在sjoin中提供更好的错误信息 (#842).

  • read_postgis 中修复处理可为空(缺失)几何形状的问题 (#856)。

  • 正确地将 parse_dates 关键字传递给 read_postgis 的底层 pandas 方法 (#860)。

  • 修复了附带示例数据集“naturalearth_lowres”中南极的形状(通过更新到最新版本) (#804)。

版本 0.4.1(2019年3月5日)#

与最新的Fiona和PySAL版本兼容的小型错误修复版本:

  • 与Fiona 1.8的兼容性:修复弃用警告(#854)。

  • 与 PySAL 2.0 的兼容性:将依赖项从 PySAL 切换为 mapclassify 用于使用 scheme 关键字的分级地图绘制 (#872)。

  • 在交集为空的情况下修复新的 overlay 实现 (#800)。

版本 0.4.0 (2018年7月15日)#

改进:

  • 改进了 overlay 函数(性能更好,修复了几个不正确的行为) (#429)

  • 传递关键字以控制图例行为 (legend_kwds) 到 plot (#434)

  • 为在 read_file 中读取远程数据集添加基本支持 (#531)

  • 传递 kwargs 用于 GeoSeries 上的 buffer 操作 (#535)

  • 将所有 geopy 服务作为地理编码中的选项公开 (#550)

  • 更快的写入速度到GeoPackage (#605)

  • 允许通过GeoDataFrame的边界框对read_file进行过滤 (#613)

  • read_postgis 返回的 GeoDataFrame 上设置 CRS (#627)

  • 允许为带有列值的点GeoSeries图设置标记大小 (#633)

  • 开始了一个示例画廊 (#463, #690, #717)

  • 支持绘制多点 (#683)

  • 测试功能(例如 assert_geodataframe_equal)现在被公开 (#707)

  • explode方法添加到GeoDataFrame(与GeoSeries方法相似)(#671)

  • 在多轴图上设置活动轴的相等比例 (#718)

  • 将值数组传递给plot中的列参数 (#770)

错误修复:

  • 确保颜色条绘制在正确的轴上 (#523)

  • 处理绘制空的 GeoDataFrame (#571)

  • 在写入文件时保存z维度 (#652)

  • 处理读取空的shapefile文件 (#653)

  • 空间操作的空结果的正确数据类型 (#685)

  • 修复对于 pandas>=0.23 的空 sjoin 处理 (#762)

版本 0.3.0 (2017年8月29日)#

改进:

  • 使用 matplotlib.collections 提高绘图性能 (#267)

  • 改善默认绘图外观。默认值现在遵循新的matplotlib默认值(#318,#502,#510)

  • 提供对点GeoSeries的x/y坐标作为属性的访问 (#383)

  • 通过 geopandas.datasets 提供 NYBB 数据集 (#384)

  • 在非整数索引的GeoDataFrames上启用 sjoin (#422)

  • cx 索引器添加到 GeoDataFrame (#482)

  • GeoDataFrame.from_features 现在也接受特征集合 (#225, #507)

  • iterfeaturesto_json的输出中使用索引标签而不是整数ID (#421)

  • 在与不重叠的地理数据框执行空间连接时返回空数据框,而不是引发错误(#335)

错误修复:

  • 与 shapely 1.6.0 的兼容性 (#512)

  • 修复 fiona.filter 在 bbox 不为 None 时的结果 (#372)

  • 修复 dissolve 以保留 CRS (#389)

  • 修复使用索引0时的cx行为 (#478)

  • 修复使用PySAL方案的分层图中图例标签的下限显示 (#450)

版本 0.2.0#

改进:

  • 文档的全面检修

  • 添加overlay以执行与多边形的空间叠加 (#142)

  • 添加 sjoin 以执行空间连接 (#115, #145, #188)

  • 添加了 __geo_interface__,用于返回一个python数据结构 以将 GeoSeries 表示为类似于GeoJSON的 FeatureCollection (#116) 以及 iterfeatures 方法 (#178)

  • 新增 explode (#146) 和 dissolve (#310, #311) 方法。

  • 添加了 sindex 属性,这是一个使用可选依赖项 rtree (libspatialindex) 的空间索引,可以用来加速某些操作,如叠加 (#140, #141)。

  • 添加GeoSeries.cx坐标索引器,以根据坐标的边界框切片GeoSeries (#55)。

  • 绘图改进:可以指定边缘颜色(#173),支持 vminvmaxfigsizelinewidth 关键字(#207),用于面积图的图例(#210),通过指定颜色图(#186)或单一颜色(#238)来为点着色。

  • 更大的to_crs灵活性,接受字典和投影字符串 (#289)

  • 添加嵌入的示例数据,可以通过 geopandas.datasets.get_path访问。

API更改:

  • plot方法中,axes关键字被重命名为ax以保持与pandas的一致性,而colormap关键字被重命名为cmap以保持与matplotlib的一致性(#208, #228, #240)。

错误修复:

  • 正确处理缺失几何图形的行 (#139, #193)。

  • 修复 GeoSeries.to_json (#263).

  • 在序列化时正确保存元数据(#199,#206)。

  • 修复 mergeconcat 以返回正确的 GeoDataFrame (#247, #320, #322).