Software Open Access

pygeos/pygeos: Version 0.9

Casper van der Wel; Joris Van den Bossche; Brendan Ward; Krishna Chaitanya; Mike Taves; Martin Fleischmann; Martin Lackner; Tom Clancy; mattijn

Version 0.9 (2021-01-23)

Major enhancements

  • Addition of prepare function that generates a GEOS prepared geometry which is stored on the Geometry object itself. All binary predicates (except equals) make use of this. Helper functions destroy_prepared and is_prepared are also available. (#92, #252)
  • Use previously prepared geometries within STRtree query and query_bulk functions if available (#246)
  • Official support for Python 3.9 and numpy 1.20 (#278, #279)
  • Drop support for Python 3.5 (#211)
  • Added support for pickling to Geometry objects (#190)
  • The apply function for coordinate transformations and the set_coordinates function now support geometries with z-coordinates (#131)
  • Addition of Cython and internal PyGEOS C API to enable easier development of internal functions (previously all significant internal functions were developed in C). Added a Cython-implemented get_parts function (#51)

API Changes

  • Geometry and counting functions (get_num_coordinates, get_num_geometries, get_num_interior_rings, get_num_points) now return 0 for None input values instead of -1 (#218)
  • intersection_all and symmetric_difference_all now ignore None values instead of returning None if any value is None (#249)
  • union_all now returns None (instead of GEOMETRYCOLLECTION EMPTY) if all input values are None (#249)
  • The default axis of union_all, intersection_all, symmetric_difference_all, and coverage_union_all can now reduce over multiple axes. The default changed from the first axis (0) to all axes (None) (#266)
  • Argument in line_interpolate_point and line_locate_point was renamed from normalize to normalized (#209)
  • Addition of grid_size parameter to specify fixed-precision grid for difference, intersection, symmetric_difference, union, and union_all operations for GEOS >= 3.9 (#276)

Added GEOS functions

  • Release the GIL for is_geometry(), is_missing(), and is_valid_input() (#207)
  • Addition of a is_ccw() function for GEOS >= 3.7 (#201)
  • Addition of a minimum_clearance function for GEOS >= 3.6.0 (#223)
  • Addition of a offset_curve function (#229)
  • Addition of a relate_pattern function (#245)
  • Addition of a clip_by_rect function (#273)
  • Addition of a reverse function for GEOS >= 3.7 (#254)
  • Addition of get_precision to get precision of a geometry and set_precision to set the precision of a geometry (may round and reduce coordinates) (#257)

Bug fixes

  • Fixed internal GEOS error code detection for get_dimensions and get_srid (#218)
  • Limited the length of geometry repr to 80 characters (#189)
  • Fixed error handling in line_locate_point for incorrect geometry types, now actually requiring line and point geometries (#216)
  • Addition of get_parts function to get individual parts of an array of multipart geometries (#197)
  • Ensure that python clean removes all previously Cythonized and compiled files (#239)
  • Handle GEOS beta versions (#262)


Thanks to everyone who contributed to this release! People with a "+" by their names contributed a patch for the first time.

  • Brendan Ward
  • Casper van der Wel
  • Joris Van den Bossche
  • Mike Taves

Files (158.5 kB)
Name Size
158.5 kB Download
All versions This version
Views 5721
Downloads 10
Data volume 127.8 kB0 Bytes
Unique views 5419
Unique downloads 10


Cite as