Skip to content

v2.0.0-rc.1

Latest

Choose a tag to compare

@cholmes cholmes released this 19 Jul 18:05
0c7fab7

GeoParquet 2.0 is an evolution of the specification, re-centering the core on the Parquet Geospatial Logical Types that are now part of the core Parquet format. Where GeoParquet 1.x layered geospatial metadata on top of plain binary columns, 2.0 makes native Parquet GEOMETRY and GEOGRAPHY types the foundation: geometries are understood by the format itself, and per–row-group geospatial statistics enable efficient spatial filtering without the extra bbox covering column that 1.1 relied on. The GeoParquet geo metadata remains as an optional, more explicit layer on top — providing things Parquet core doesn't, like a guaranteed inline CRS definition.

The overall goal of 2.0 is to align the geospatial world with mainstream Parquet tooling: any tool that writes the native Parquet geospatial types correctly is compatible with GeoParquet 2.0, and the spec just provides the metadata in the same way as previous GeoParquet versions.

This release is a 'release candidate' to get final testing from implementations before 2.0.0 is declared final. It uses the 2.0.0 version numbers so that writers don't need to produce weird version numbers for a small testing period, but it is possible that small things could change before 2.0.0.

Highlights

Native Parquet geospatial types (#278)

The core of the 2.0 spec. GeoParquet now requires the native Parquet GEOMETRY/GEOGRAPHY logical types as the storage encoding, and the GeoParquet metadata must match the Parquet-level metadata. Changes include:

  • Removed the GeoArrow-based native encodings introduced in 1.1 (superseded by the Parquet types).
  • Removed the covering / bbox column mechanism — the native types' built-in row-group statistics do this job more efficiently, and files (especially point data) get smaller.
  • Add new edges options to align with the algorithm field (spherical, vincenty, etc.) in Parquet types for non-planar edge interpolation.

CRS handling (#286)

Encodes the CRS decisions from the June 2026 community call, cleanly separating the two places a CRS can live:

  • The GeoParquet geo metadata crs must be inline PROJJSON (or null), so a reader can always obtain a complete CRS definition without resolving an authority code against an external registry.
  • The native Parquet crs property is the source of truth and may use any Parquet-core form — inline PROJJSON, <authority>:<code>, srid:<identifier>, or projjson:<key_name>. Writers tha(e.g. pure-SQL pipelines) are encouraged to write plainnative Parquet with an <authority>:<code> CRS.
  • crs: null (unknown/undefined CRS) is kept for 1.x compd:0` on the Parquet side, following the GeoPackage convention.

Distribution best practices (#254, #281, #288)

A new best practices guide for creating and distributing good GeoParquet files, introduced in #254 and expanded with a section on powering frontend/web applications (#281). For 2.0 it was reworked and split in two (#288): a focused recommendations page (spatial ordering, zstd compression at level 15+, row-group sizing, efficient spatial access via native statistics) and a companion tools guide with verified how-tos for GDAL/OGR, DuckDB, geoparquet-io, and Sedona — including how to get native 2.0 output from each.

What's Changed

  • Fix typo in multipolygon example by @msbarry in #237
  • pattern => enum by @m-mohr in #245
  • Update poetry spec for updated Python + Poetry by @paleolimbot in #272
  • Best Practices guide for creation of good GeoParquet files (focused on distribution) by @cholmes in #254
  • Initial attempt at 2.0 spec by @cholmes in #278
  • Add section in distribution best practices for frontend applications by @C-Loftus in #281
  • CI: Update GitHub Actions versions by @EwoutH in #282
  • Update example file for GeoParquet 2.0 by @paleolimbot in #280
  • GeoParquet 2.0 CRS: PROJJSON in geo metadata, flexible native Parquet crs, srid:0 for unknown by @cholmes in #286
  • Updates for the 2.0.0 release by @cholmes in #287
  • Add zstd compression to example storing GeoParquet with sedona by @JakobMiksch in #293
  • Update distribution best practices guide for GeoParquet 2.0 by @cholmes in #288

New Contributors

Full Changelog: v1.1.0+p1...v2.0.0-rc.1

What's Changed

New Contributors

Full Changelog: v0.4.0...v2.0.0-rc.1