Releases: geoarrow/geoarrow-rs
Releases · geoarrow/geoarrow-rs
rust-v0.3.0
New Features 🪄
- Preliminary support for 3D (XYZ) geometries
- Support for reading and writing GeoParquet 1.1
- Support for reading and writing GeoArrow (native) geometry encoding
- Support for reading with spatial filtering
- Both synchronous and asynchronous readers for GeoParquet. Readers will stream a RecordBatch at a time by default.
- Accept
RecordBatchReader
as input to all - New support for
geoarrow.box
array (equivalent toVec<Option<geo::Rect>>
).RectArray
is now laid out as aStructArray
internally instead of aFixedSizeListArray
. - Improved documentation
Performance Improvements 🏎️
- Remove
Cow
around scalar buffers by @kylebarron in #720
Bug fixes 🐛
- Don't serialize empty array metadata by @kylebarron in #678
- Fixed
MixedGeometryArray
handling. Exported ArrowUnionArrays
always have same data layout. - Support MapArrays when exporting to geozero by @kylebarron in #721
New Contributors
- @H-Plus-Time made their first contribution in #607
- @gadomski made their first contribution in #640
Full Changelog: rust-v0.2.0...rust-v0.3.0
py-v0.3.0
New Features 🪄
- Remove geometry class specializations. Instead of
PointArray
,LineStringArray
, etc, there's now justGeometryArray
,ChunkedGeometryArray
, andGeometry
(a scalar). - Remove GeoTable class, in favor of external, generic arrow Table implementations, such as
arro3.core.Table
. - Move to slimmer, functional API. No more geometry methods on classes.
- Don't materialize input data when writing to a file.
- New
GeometryType
class for understanding the geometry type of an array or chunked array. - Split Python code into three modules:
geoarrow-rust-core
,geoarrow-rust-compute
andgeoarrow-rust-io
. - Support for Pyodide Python environment
- Support Python file objects for reading and writing GeoParquet
Bug fixes 🐛
- Fix array indexing with negative integers by @kylebarron in #724
Full Changelog: py-v0.2.0...py-v0.3.0
rust-v0.2.0
New! ✨
New I/O support for reading and writing to geospatial formats
- Asynchronous FlatGeobuf reader. This also supports passing a spatial filter.
- Initial support for reading from PostGIS. Note that not all Postgres data types are supported yet. Create an issue if your query fails.
- Reading and writing newline-delimited GeoJSON.
- Asynchronous GeoParquet reader for reading from remote files. By @weiji14 in #493
- Also new support for writing GeoParquet files.
- Support for reading and writing Arrow IPC files.
New algorithms!
- Explode a Table where each multi-geometry expands into multiple rows of single geometries.
- total_bounds
frechet_distance
for LineString similarity.line_interpolate_point
andline_locate_point
for linear referencing.polylabel
for polygon labeling.
Improved usability:
New Contributors
- @Robinlovelace made their first contribution in #484
- @weiji14 made their first contribution in #493
Full Changelog: rust-v0.1.0...rust-v0.2.0
py-v0.2.0
New! ✨
New I/O support for reading and writing to geospatial formats
- Asynchronous FlatGeobuf reader. This also supports passing a spatial filter.
- Initial support for reading from PostGIS. Note that not all Postgres data types are supported yet. Create an issue if your query fails.
- Reading and writing newline-delimited GeoJSON.
- Pyogrio integration for reading from OGR/GDAL.
- Asynchronous GeoParquet reader for reading from remote files. By @weiji14 in #493
- Also new support for writing GeoParquet files.
- Most I/O readers and writers support Python file-like objects (in binary mode).
- Support for reading and writing Arrow IPC files.
Better interoperability with the Python geospatial ecosystem.
- Import from and export to GeoPandas GeoDataFrames. Refer to the GeoPandas interoperability documentation.
- Import from and export to Shapely arrays. Refer to the Shapely interoperability documentation.
- Better integration with Lonboard for fast visualization in Jupyter.
- All scalars, arrays, chunked arrays, and table objects implement
__geo_interface__
for interoperability with existing tools. - Numpy interoperability for float array output from algorithms. Pass any
Float64Array
orBooleanArray
tonumpy.asarray
. You can also pass a numpy array as vectorized input into a function likeline_interpolate_point
.
New algorithms!
- Explode a Table where each multi-geometry expands into multiple rows of single geometries.
total_bounds
- Unified
area
function for planar and geodesic area. - Unified
simplify
function for multiple simplification methods. Also new support for topology-preserving simplification. - Unified
length
function for euclidean and geodesic length calculations. frechet_distance
for LineString similarity.affine_transform
, which integrates with the Pythonaffine
library.line_interpolate_point
andline_locate_point
for linear referencing.polylabel
for polygon labeling.
Improved display of Python objects:
- Scalars now display as SVG geometries inside Jupyter environments.
- Tables, arrays, and chunked arrays implement
__repr__
so that you can inspect data easily.
Improved usability:
PointArray.from_xy
to simplify creating a point array from numpy arrays of coordinates.- Index into arrays and chunked arrays with square brackets. E.g.
point_array[0]
will access the first point in the array. Negative indexing is also supported, sopoint_array[-1]
will get the last item in the array. - New top-level docs website.
New Contributors
- @Robinlovelace made their first contribution in #484
- @weiji14 made their first contribution in #493
Full Changelog: py-v0.1.0...py-v0.2.0
rust-v0.1.0
New Contributors
Full Changelog: rust-v0.0.1...rust-v0.1.0
Python v0.1.0
Initial release!