Changelog History
Page 2

v1.6.2.post1
October 31, 2017 
v1.6.1
September 01, 2017 
v1.6.0
August 22, 2017 
v0.11.1 Changes
October 30, 2021Distribution
 Distribute binary wheels for Python 3.10 (#416).
 ๐ All binary wheels now have GEOS 3.10.0. See https://github.com/libgeos/geos/blob/main/NEWS for the changes (#416).
Major enhancements
 Optionally output to a userspecified array (
out
keyword argument) when constructing geometries fromindices
(#380).  โ Added
pygeos.empty
to create a geometry array prefilled with None or with empty geometries (#381).  Added
pygeos.force_2d
andpygeos.force_3d
to change the dimensionality of the coordinates in a geometry (#396).  Added
pygeos.testing.assert_geometries_equal
(#401).
API Changes
 0๏ธโฃ The default behaviour of
pygeos.set_precision
is now to always return valid geometries. Before, the default waspreserve_topology=False
which caused confusion because it mapped to GEOS_PREC_NO_TOPO (the new 'pointwise'). At the same time, GEOS < 3.10 implementation was not entirely correct so that some geometries did and some did not preserve topology with this mode. Now, the newmode
argument controls the behaviour and thepreserve_topology
argument is deprecated (#410).  When constructing a linearring through
pygeos.linearrings
or a polygon throughpygeos.polygons
now aValueError
is raised (instead of aGEOSException
) if the ring contains less than 4 coordinates including ring closure (#378).  Removed deprecated
normalize
keyword argument inpygeos.line_locate_point
andpygeos.line_interpolate_point
(#410).
๐ Bug fixes
 Return True instead of False for LINEARRING geometries in
is_closed
(#379).  ๐ Fixed the WKB serialization of 3D empty points for GEOS >= 3.9.0 (#392).
 ๐ Fixed the WKT serialization of single part 3D empty geometries for GEOS >= 3.9.0 (#402).
 ๐ Fixed the WKT serialization of multipoints with empty points for GEOS >= 3.9.0 (#392).
 ๐ Fixed a segfault when getting coordinates from empty points in GEOS 3.8.0 (#415).
Acknowledgments
๐ 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

v0.10.2 Changes
August 23, 2021Distribution
โ Unittests are now included in the pygeos distribution. Run them by 1) installing โ
pytest
(orpygeos[test]
) and 2) invokingpytest pyargs pygeos.tests
.๐ We started using a new tool for building binary wheels:
cibuildwheel
. This resulted into the following improvements in the distributed binary wheels: ๐ Windows binary wheels now contain mangled DLLs, which avoids conflicts with other GEOS versions present on the system (a.k.a. 'DLL hell') (#365).
 ๐ Windows binary wheels now contain the Microsoft Visual C++ Runtime Files (msvcp140.dll) for usage on systems without the C++ redistributable (#365).
 ๐ง Linux x86_64 and i686 wheels are now built using the manylinux2010 image instead of manylinux1 (#365).
 ๐ง Linux aarch64 wheels are now available for Python 3.9 (manylinux2014, #365).
๐ Bug fixes
 ๐ Fixed operations on geometry arrays containing NULL instead of None.
These occur for instance by using
numpy.empty_like
(#371)
Acknowledgements
๐ 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

v0.10.1 Changes
July 06, 2021๐ Bug fixes
 ๐ Fixed the
box
andset_precision
functions with numpy 1.21 (#367).  ๐ Fixed
STRtree
creation to allow querying the tree in a multithreaded context (#361).
Acknowledgements
๐ 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
 ๐ Fixed the

v0.10 Changes
May 18, 2021Major enhancements
 โ Addition of
nearest
andnearest_all
functions toSTRtree
for GEOS >= 3.6 to find the nearest neighbors (#272).  Enable bulk construction of geometries with different number of coordinates by optionally taking index arrays in all creation functions (#230, #322, #326, #346).
 ๐ Released the GIL in all geometry creation functions (#310, #326).
 โ Added the option to return the geometry index in
get_coordinates
(#318).  Added the
get_rings
function, similar asget_parts
but specifically to extract the rings of Polygon geometries (#342).  โก๏ธ Updated
box
ufunc to use internal C function for creating polygon (about 2x faster) and addedccw
parameter to create polygon in counterclockwise (default) or clockwise direction (#308).  ๐ Added
to_shapely
and improved performance offrom_shapely
in the case GEOS versions are different (#312).
API Changes
 ๐ STRtree default leaf size is now 10 instead of 5, for somewhat better performance under normal conditions (#286)
 ๐ฆ Deprecated
VALID_PREDICATES
set frompygeos.strtree
package; these can be constructed in downstream libraries using thepygeos.strtree.BinaryPredicate
enum. This will be removed in a future release. points
,linestrings
,linearrings
, andpolygons
now return aGEOSException
instead of aValueError
orTypeError
for invalid input (#310, #326). Addition of
on_invalid
parameter tofrom_wkb
andfrom_wkt
to optionally return invalid WKB geometries asNone
.  Removed the (internal) function
lib.polygons_without_holes
and renamedlib.polygons_with_holes
tolib.polygons
(#326). polygons
will now return an empty polygon forNone
inputs (#346). โ Removed compatibility with Python 3.5 (#341).
โ Added GEOS functions
 โ Addition of a
contains_properly
function (#267)  โ Addition of a
polygonize
function (#275)  โ Addition of a
polygonize_full
function (#298)  โ Addition of a
segmentize
function for GEOS >= 3.10 (#299)  Addition of
oriented_envelope
andminimum_rotated_rectangle
functions (#314)  Addition of
minimum_bounding_circle
andminimum_bounding_radius
functions for GEOS >= 3.8 (#315)  โ Addition of a
shortest_line
("nearest points") function (#334)
๐ Bug fixes
 ๐ Fixed portability issue for ARM architecture (#293)
 ๐ Fixed segfault in
linearrings
andbox
when constructing a geometry with nan coordinates (#310).  ๐ Fixed segfault in
polygons
(with holes) when None was provided.  ๐ Fixed memory leak in
polygons
when nonlinearring input was provided.
Acknowledgments
๐ 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
 Martin Fleischmann
 Mike Taves
 Tanguy Ophoff +
 James Myatt +
 โ Addition of

v0.9 Changes
January 23, 2021Major enhancements
 โ Addition of
prepare
function that generates a GEOS prepared geometry which is stored on the Geometry object itself. All binary predicates (exceptequals
) make use of this. Helper functionsdestroy_prepared
andis_prepared
are also available. (#92, #252)  ๐ Use previously prepared geometries within
STRtree
query
andquery_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 theset_coordinates
function now support geometries with zcoordinates (#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 Cythonimplemented
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 forNone
input values instead of 1 (#218) intersection_all
andsymmetric_difference_all
now ignore None values instead of returning None if any value is None (#249)union_all
now returns None (instead ofGEOMETRYCOLLECTION EMPTY
) if all input values are None (#249) The default axis of
union_all
,intersection_all
,symmetric_difference_all
, andcoverage_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
andline_locate_point
was renamed fromnormalize
tonormalized
(#209)  โ Addition of
grid_size
parameter to specify fixedprecision grid fordifference
,intersection
,symmetric_difference
,union
, andunion_all
operations for GEOS >= 3.9 (#276)
โ Added GEOS functions
 Release the GIL for
is_geometry()
,is_missing()
, andis_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 andset_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
andget_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 setup.py clean
removes all previously Cythonized and compiled files (#239)  ๐ Handle GEOS beta versions (#262)
Acknowledgments
๐ 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
 โ Addition of

v0.8 Changes
September 06, 2020๐ Highlights of this release
 ๐ Handle multi geometries in
boundary
(#188)  ๐ Handle empty points in to_wkb by conversion to POINT (nan, nan) (#179)
 Prevent segfault in to_wkt (and repr) with empty points in multipoints (#171)
 ๐ Fixed bug in
multilinestrings()
, it now accepts linearrings again (#168)  ๐ Release the GIL to allow for multithreading in functions that do not
create geometries (#144) and in the STRtree
query_bulk()
method (#174)  โ Addition of a
frechet_distance()
function for GEOS >= 3.7 (#144)  Addition of
coverage_union()
andcoverage_union_all()
functions for GEOS >= 3.8 (#142)  ๐ Fixed segfaults when adding empty geometries to the STRtree (#147)
 Addition of
include_z=True
keyword in theget_coordinates()
function to get 3D coordinates (#178)  โ Addition of a
build_area()
function for GEOS >= 3.8 (#141)  โ Addition of a
normalize()
function (#136)  โ Addition of a
make_valid()
function for GEOS >= 3.8 (#107)  โ Addition of a
get_z()
function for GEOS >= 3.7 (#175)  โ Addition of a
relate()
function (#186)  The
get_coordinate_dimensions()
function was renamed toget_coordinate_dimension()
for consistency with GEOS (#176)  Addition of
covers
,covered_by
,contains_properly
predicates to STRtreequery
andquery_bulk
(#157)
Acknowledgments
๐ 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
 Krishna Chaitanya +
 Martin Fleischmann +
 Tom Clancy +
 ๐ Handle multi geometries in

v0.7 Changes
March 18, 2020๐ Highlights of this release
 STRtree improvements for spatial indexing:
 Directly include predicate evaluation in
STRtree.query()
(#87)  Query multiple input geometries (spatial join style) with
STRtree.query_bulk
(#108)
 Directly include predicate evaluation in
 โ Addition of a
total_bounds()
function (#107)  Geometries are now hashable, and can be compared with
==
or!=
(#102)  ๐ Fixed bug in
create_collections()
with wrong types (#86)  ๐ Fixed a reference counting bug in STRtree (#97, #100)
 Start of a benchmarking suite using ASV (#96)
 ๐ This is the first release that will provide wheels!
Acknowledgments
๐ 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 +
 STRtree improvements for spatial indexing: