felix kunde - fossgis-konferenz.de

34
FELIX KUNDE FELIX KUNDE slides.com/fxku/postgis-v3 3

Upload: others

Post on 16-Oct-2021

7 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: FELIX KUNDE - fossgis-konferenz.de

FELIX KUNDEFELIX KUNDEslides.com/fxku/postgis-v3

3

Page 2: FELIX KUNDE - fossgis-konferenz.de

ABOUT MEABOUT ME

Database Engineer @ ZalandoGeoinformatics background  

Guest lecturer on spatial databases, and @FlxKu

Postgres Operator 3DCityDB pgMemento

Page 3: FELIX KUNDE - fossgis-konferenz.de

WHAT IS POSTGIS?WHAT IS POSTGIS?

Extension to databaseComes with it's own datatypes for geodataSupports coordinate reference systemsSpatial indexing for fast geo queriesOpen Source under GPLv2More infos under http://postgis.net/

PostgreSQL

++

Page 4: FELIX KUNDE - fossgis-konferenz.de

WHY IS IT GREAT?WHY IS IT GREAT?Faster and more robust than your GISSo much geo power with just some SQLGreat acceptance in the spatial industryFollows international OGC/ISO standardsBuild on top of one of the best databases

Page 5: FELIX KUNDE - fossgis-konferenz.de

POSTGRESQLPOSTGRESQL

FORKS & EXTENSIONSFORKS & EXTENSIONS

S h a r d i n g

G P U

T i m e S e r i e s

C l o u dD W / M P P/ H a d o o p

S t r e a m i n g S Q L

N o S Q L

PG-STORMPG-STORM

Page 6: FELIX KUNDE - fossgis-konferenz.de

@delawen on PostGIS day

Page 7: FELIX KUNDE - fossgis-konferenz.de
Page 8: FELIX KUNDE - fossgis-konferenz.de

THETHE

HIDDENHIDDEN

THINGSTHINGS

Page 9: FELIX KUNDE - fossgis-konferenz.de

NEW ON-DISC FORMATNEW ON-DISC FORMAT

More optional bytes for Probably: Efficient point typeProbably: Faster joinsMaybe: Precision modelUpgrade support (no dump and restore)

new things

Page 10: FELIX KUNDE - fossgis-konferenz.de

MINIMAL TOASTMINIMAL TOASTDECOMPRESSIONDECOMPRESSION

Big geoms are sliced and When read, decompression takes timePostgres 12 can "sneak" into first sliceE.g. read BBox to decide to skip geom

compressed

Page 11: FELIX KUNDE - fossgis-konferenz.de

OPTIMIZEROPTIMIZER

SUPPORT FUNCTIONSSUPPORT FUNCTIONS

Problem <v3: Function inlining to trigger indexHard for planner to consider parellel query

Solution: Give optimizer about functions ...... and see more parallel spatial queries

insights

Page 12: FELIX KUNDE - fossgis-konferenz.de

ST_Intersects(geom1, geoms2)

SELECT geom1 && geom2 AND_ST_Intersects(geom1, geoms2)

SQL function

triggers indexC function

ST_Intersects(geom1, geoms2)SUPPORT postgis_index_supportfn

C function triggersindex

OO

LL

DD

NN

EE

WW

Page 13: FELIX KUNDE - fossgis-konferenz.de

BREAKINGBREAKINGTHINGSTHINGS

Page 14: FELIX KUNDE - fossgis-konferenz.de

POSTGIS_RASTERPOSTGIS_RASTERmy_postgis_db=# ALTER EXTENSION postgis UPDATE TO '3.0.0'; WARNUNG: unpackaging raster WARNUNG: PostGIS Raster functionality has been unpackaged TIP: type `SELECT postgis_extensions_upgrade();` to finish the upgrade. After upgrading, if you want to drop raster, run: DROP EXTENSION postgis_raster; ALTER EXTENSION my_postgis_db=# SELECT postgis_extensions_upgrade(); HINWEIS: Packaging extension postgis_raster

Page 15: FELIX KUNDE - fossgis-konferenz.de

STRIP MINOR FROM LIBSTRIP MINOR FROM LIB

Before: ALTER EXTENSION postgis UPDATE first to fix itNow: Lib is called postgis-3.so for all minor releasesUpgrade your Postgres with pg_upgrade and get the newPostGIS functions when running ALTER EXTENSION etc.

$> pg_upgrade ERROR: could not access file "$libdir/postgis-2.5": No such file or directory

Page 16: FELIX KUNDE - fossgis-konferenz.de

BROKEN INDEXESBROKEN INDEXES

REINDEX your HASH indexes REINDEX your BTREE indexesREINDEX your nD spatial indexes

But hey, SP-GiST and GiST now support nD boxoperators for overlaps, contains, within, equals

Page 17: FELIX KUNDE - fossgis-konferenz.de

BYE BYEBYE BYE

ST_Accum(), use array_aggST_AsGeoJSON(version, geometry)ST_AsKML(version, geometry)Remove SFCGAL support for functionswhich are already covered by GEOSpostgissvnversion() > postgislibrevision()liblwgeom headers, librttopo if you needPostgreSQL 9.5 support (3.1+)

Page 18: FELIX KUNDE - fossgis-konferenz.de

THETHE

SHINYSHINY

THINGSTHINGS

Page 19: FELIX KUNDE - fossgis-konferenz.de

DEMO TIMEDEMO TIME

Page 20: FELIX KUNDE - fossgis-konferenz.de

SELECT ST_GeneratePoints(poly, 3)  FROM geom, generate_series(1,5);

same resultOO

LL

DD

REALLY RANDOM POINTSREALLY RANDOM POINTS

Page 21: FELIX KUNDE - fossgis-konferenz.de

SELECT ST_GeneratePoints(poly, 3)  FROM geom, generate_series(1,5);

same resultOO

LL

DD

NN

EE

WWSELECT ST_GeneratePoints(poly, 3)  FROM geom, generate_series(1,5);

SELECT ST_GeneratePoints(poly, 3, seed := 1)  FROM geom, generate_series(1,5);

random result

REALLY RANDOM POINTSREALLY RANDOM POINTS

Page 22: FELIX KUNDE - fossgis-konferenz.de

HILBERT CURVE ORDERHILBERT CURVE ORDER

Switch from Z-Curve in 2.x to Hilbert CurveMore compact spatial alignment30% faster algorithm also boosts GiST creation

Page 23: FELIX KUNDE - fossgis-konferenz.de

PLAYING WITH PLAYING WITH TINSTINS

ST_ConstrainedDelaunayTriangles in SFCGALTINs can be passed to GEOS functionsNow supported by all output functionsST_3DIntersects (2D, Solid),  ST_3DDistance (Solid)

PostGIS PostGIS SFCGAL

Page 24: FELIX KUNDE - fossgis-konferenz.de

MORE LRS FOR POLYGONSMORE LRS FOR POLYGONS

ST_LocateBetween/Elevations now support:GeometryCollection, Polygon, TIN, Triangle

triangles < -2m

Page 25: FELIX KUNDE - fossgis-konferenz.de

TOPOLOGY TESTS FORTOPOLOGY TESTS FORGEOMETRYCOLLECTIONGEOMETRYCOLLECTION

ST_Overlaps, ST_Contains, ST_ContainsProperly,ST_Covers, ST_CoveredBy, ST_Crosses,ST_Touches, ST_Disjoint, ST_Relate, ST_Equalsnow work with GeometryCollectionThink about all the queries where you needed toST_Dump before (like after ST_LocateBetween ;)

Page 26: FELIX KUNDE - fossgis-konferenz.de

GEOMGEOM::JSON::JSON

Geometry can be casted with ::json / ::jsonbST_AsGeoJSON( record ) > GeoJSON FeatureGeography columns supported when in row

Page 27: FELIX KUNDE - fossgis-konferenz.de

FASTER VECTOR TILESFASTER VECTOR TILES

ST_AsMVT  with parallel aggregationST_AsMVTGeom more robust output

for validation and clipping (GEOS job in the future)Feature ID support

is

boost

Wagyu

Serving MVT from PostGIS easy

Page 28: FELIX KUNDE - fossgis-konferenz.de

ST_TILEENVELOPEST_TILEENVELOPE

BBox of Tile per zoom levelWebMercator (EPSG 3857)bounds by defaultCustom bounds possibleMargin in PostGIS 3.1

Page 29: FELIX KUNDE - fossgis-konferenz.de

GRIDS GRIDS (3.1)(3.1)

ST_SquareGridST_HexagonGrid

Page 30: FELIX KUNDE - fossgis-konferenz.de

DEFAULT 3D/4D DEFAULT 3D/4D (3.1)(3.1)

Additional argument for ST_ForceXXX functionsDefine default Z/M, still 0 when left out[open] Have ST_SetZ, ST_SetM function

Page 32: FELIX KUNDE - fossgis-konferenz.de

SF

Many performance improvementspostgis_geos_noop (SQL <-> GEOS)

More precise datum WKT projections support

transformation

out-db raster support since 2.4check out extension!ogr_fdw

Make it totally independentNew: ST_ConstrainedDelaunayTriangles

Page 33: FELIX KUNDE - fossgis-konferenz.de

POSTGIS POSTGIS FUTUREFUTURE2020/21

New efficient geom types? External storage type?Point density surfaces (weighted, kriging)Tolerance & Precision ( )?Much work in GEOS 3.93D-aware geography?Index-only scans with geometry?https://trac.osgeo.org/postgis/wiki/PostGIS3

#1629

Page 34: FELIX KUNDE - fossgis-konferenz.de

THANKSTHANKSto

Regina, Paul, Sandro, Darafei, Raúl, Bborie,Alex, Andrea, Andreas, Anne, Arthur, Barbara, Bas, Ben, Bernhard, Bill, Björn, Brian, Bruce, Bruno, Bryce,

Carl, Charlie, Chris, Christian, Dan, Dane, David, Eduin, Even, Esteban, Frank, George, Gerald, Gino,

Guillaume, Iida, Ingvild, Jason, Jeff, Joe, Jorge, Jose Carlos, Julien, Hugh, Kashif, Kevin, Klaus, Kris, Kristian,

Laurenz, Leo, Loic, Luca, Lucas, Maria, Mark, Markus, Mateusz, Matti, Maxime, Michael, Mike, Nathan,

Nathaniel, Nicklas, Nikita, Norman, Olivier, Pierre, Rafal, Ralph, Rémi, Richard, Silvio, Steffen, Stephen,

Steven, Sunveer, Tom, Vincent, Yuri

 Teams behind GEOS/JTS, Proj, GDAL and (SF)CGAL!

The whole PostgreSQL community!The funding companies, organisations and individuals!