PostGIS 3.6 released – 3D, raster, and topology take a leap forward


New version: PostGIS 3.6.0 (Released September 2, 2025)

PostGIS 3.6.0 has been available since September 2, 2025. It is designed to work with PostgreSQL 12 through 18 beta 3, requires GEOS 3.8+ (with optimizations for GEOS 3.14+) and Proj 6.1+. To enable all SFCGAL features, version 2.2.0+ is required. (PostGIS)


PostGIS availability and download

PostGIS is the most widely used spatial extension for PostgreSQL, but its availability varies depending on the operating system and version of PostgreSQL. It is important to choose the stable version that is appropriate for your environment to avoid compatibility issues and ensure the reliability of your geospatial processing.

The table below summarizes the stable and experimental versions available for the main systems:

System PostgreSQL version Stable PostGIS version Experimental/Beta version Download/installation link
Windows 15 3.5.3 3.6 (testing only) VVia StackBuilder included in PostgreSQL: Extensions > Spatial Extensions > PostGIS 3.5.3 Documentation PostGIS Windows
Ubuntu / Debian 15 3.5 3.6 (source compilation) sudo apt install postgis postgresql-15-postgis-3.5 PostGIS packages Ubuntu/Debian
RedHat / CentOS / Fedora 15 3.5 3.6 (source compilation) sudo dnf install postgis31_15 PostGIS packages RPM
Linux (all distros) All Source compilation Last version dev (3.6+) PostGIS source


Practical tips

  • Version 3.6 is not yet officially available on Windows.
  • Experimental versions are intended solely for testing and discovering new features.
  • On Windows, StackBuilder facilitates the installation and updating of dependencies.
  • On Linux, compiling from source allows access to the latest features, but requires proper configuration of PostgreSQL and development libraries.


Compatibility & required environments

  • Compatible versions: PostgreSQL 12 → 18 beta 3
  • Essential prerequisites:


Noteworthy new features

3D / SFCGAL:

  • CG_Simplify, CG_3DAlphaWrapping for manipulating 3D elements
  • Geometric transformations: scaling, rotation, translation, 3D buffer, etc. (PostGIS)

Coverage & topology:

  • ST_CoverageClean(...) : ensures clean coverage (no overlaps, aligned edges, gaps filled). Example of use: CREATE TABLE example_clean AS SELECT id, ST_CoverageClean(geom) OVER () AS geom FROM example; Useful for validating the geometry of a coverage. . (PostGIS)

Raster processing:

  • ST_AsRasterAgg : efficiently converts geometry to raster during aggregation
  • ST_ReclassExact : fast and accurate reclassification of raster values.
  • ST_IntersectionFractions : calculates the overlap fractions of raster cells with geometric UE (requires GEOS 3.14).
  • postgis.gdal_cpl_debug (GUC) : logs GDAL messages in PostgreSQL (PostGIS)


Major changes / Breaking changes to note

  • ST_TileEnvelope : envelopes are now restricted to the tile plane extent. (tile plane extent). (PostGIS)
  • geometry_columns : removal of constraint checks, impacting old workflows. (PostGIS)
  • Deprecation of integer topological functions: now replaced by their bigint version (PostGIS)
  • Change for TIN / PolyhedralSurface: use ST_NumPatches and ST_PatchN instead of ST_NumGeometries, which no longer return sub-geometries (PostGIS)
  • Removal of st_approxquantile(raster, double precision), unusable in practice. (PostGIS)


Update process

To migrate to PostGIS 3.6 (3.0 to 3.6):

SELECT postgis_extensions_upgrade();

For versions ≤ 2.5:

ALTER EXTENSION postgis UPDATE;
SELECT postgis_extensions_upgrade();
“` :contentReference[oaicite:10]{index=10}

Nota : lancer ces commandes après migration PostgreSQL ou restauration des extensions.

Advanced use cases

Cleaning up impure coverage

WITH dirty AS (
SELECT id, geom FROM coverage_table
)
SELECT id, ST_AsText(ST_CoverageInvalidEdges(geom) OVER ()) AS invalid_geom
FROM dirty;

CREATE TABLE coverage_clean AS
SELECT id, ST_CoverageClean(geom) OVER () FROM dirty;

SELECT id, ST_AsText(ST_CoverageInvalidEdges(geom) OVER ()) FROM coverage_clean;

Raster reclassification

SELECT ST_ReclassExact(rast, '[(1,10,100),(11,20,200)]') AS reclass_rast
FROM raster_table;

Simple 3D simulation

SELECT CG_3DAlphaWrapping(geom) FROM building_wall;


Si cet article vous a intéressé et que vous pensez qu'il pourrait bénéficier à d'autres personnes, n'hésitez pas à le partager sur vos réseaux sociaux en utilisant les boutons ci-dessous. Votre partage est apprécié !

Leave a Reply

Your email address will not be published. Required fields are marked *