En ny version av PostGIS har släppts. Vad är det som är nytt, och skall man uppgradera?
För det första kanske många ställer sig frågan varför skulle vi bry oss? Vi är ett litet kontor med bara några få GIS användare. Kanske sitter du helt själv och jobbar med GIS på en liten kommun eller till och med hemma där du jobbar lite på fritiden.
PostGIS är så mycket mer än ”bara” en databas där man lagrar geodata. Om man är mer än en person så bör man vilja hjälpa varandra och använda samma data i projekt, vilket leder till att det är naturligt att man vill kunna redigera samma lager samtidigt. Enbart detta är ett motiv för att använda PostGIS. Med filbaserade lagringslösningar, oavsett om det är shape, fildatabas eller till och med GeoPackage, så kan endast en person åt gången redigera data. En geodatabas gör det möjligt på ett helt annat sätt att redigera samtidigt från flera håll.
Men PostGIS är som sagt betydligt mycket mer än endast en lagringsplats för gemensamma geodata. För många bearbetningar så är PostGIS ett komplett GIS i sig själv.
Varför skulle du läsa in ett lager, starta en process, fylla i ett formulär, skapa ett nytt lager, bara för att du vill ha en buffert på 50 meter runt alla punktobjekt i ett lager?
Du kan mycket enklare låta PostGIS göra denna beräkning med ett enkelt lagerkommando: st_buffer(”punktlager”, 50).
PostGIS kan leverera allt från denna typ av enkla bearbetningar till komplexa beräkningar för exempelvis beräkningar av närmsta väg i ett nätverk.
Att sätta upp en PostGIS databas är kanske inte lika enkelt som att installera QGIS, men det är långt ifrån svårt och det finns mängder av resurser som steg för steg beskriver hur du går till väga. Även på denna blogg finns flera artiklar som rör detta.
PostGIS 2.5
För att fullt ut dra nytta av alla nyheter i PostGIS 2.5 så behövs PostgreSQL 11, vilket för närvarande finns i en fjärde betaversion. Det går dock att installera på PostgreSQL 9.4 eller senare. Dessutom rekommenderas GEOS 3.7 även om 3.4 fungerar.
En stor nyhet som går lite över mitt huvud är ”sp-gist”, vilket är ett nytt sätt att indexera data. Tidigare har man använt sig av ”gist” (Generalized Search Tree) för att indexera data och göra dessa snabbare att söka i.
I CAD och GIS sammanhang vanliga lagringsstrukturer som K-D-tree och Quadtree har däremot inte varit tillgängliga i PostGIS/PostgreSQL.
Gist kan inte hantera den här typen av ”obalanserade” träd, vilket däremot ”sp-gist” (Space Partitioning Generalized Search Tree) klarar av. Med sp-gist kan man dela upp data på ett liknande sätt som i bilden ovan, vilket till synes verkar vara en klar fördel när man lagrar data geografiskt.
Tidiga tester med sp-gist visar på att denna struktur är runt tre gånger snabbare än gist, men vilka vinster det innebär i praktiken för PostGIS 2.5 har jag inte hittat någon information om.
Det finns även en rad nya eller förbättrade ST kommandon:
- ST_FilterByM
- ST_ChaikinSmoothing
- ST_Buffer (singel sided option)
- ST_Angle
- ST_LineInterpolationPoints
- ST_OrientedEnvelope (ny)
- ST_QuantizeCoordinates (ny)
- ST_Scale (false origin option)
- ST_BandFileSize (ny)
- ST_BandFileTimestamp (ny)
- ST_BandMetadata
- ST_Grayscale (ny)
- ST_SetBandPath (ny)
- ST_SetBandIndex (ny)
Det finns även förändringar som inte är kompatibla med några gamla funktioner. Exempelvis så fungerar inte längre äldre versioner av postgres och GEOS.
Dessutom så finns det en hel del förbättringar och fixar av identifierade problem.
Skall du uppgradera
Det är framför allt sp-gist som kräver PostgreSQL 11. Om du inte vill kunna använda denna nya struktur för att lagra data så kan du använda PostGIS 2.5 även utan att använda en betaversion av PostgreSQL.
Sedan är det som vanligt så att nya versioner av mjukvara bör testas innan man introducerar den i en produktionsmiljö.
Jag är lite spänd på just sp-gist och vad detta kan innebära för prestanda på databaser framöver, men även vilka krav det kommer att ställa på hårdvaran (om några).
Om man är beroende av snabb access till geodata och upplever att man ligger lite på gränsen som det är, så skulle nog jag i alla fall fundera på att testa 2.5 med lite egna data och jämföra detta med tidigare PostGIS versioner, men även baserat på äldre PostgreSQL versioner.
Om du inte redan har en databas och mest funderar på att sätta upp och testa en PostGIS databas för ditt arbete så skulle nog inte jag tveka. Om det inte är en avsevärd risk för din verksamhet att sätta upp databasen och testa så är det bara att köra. PostgreSQL 11 (och 12) är på gång. Sp-gist har varit under utveckling under många år i PostgreSQL och PostGIS. Detta är sannolikt framtiden för open source geodatabaser och har man en chans att hoppa på tåget redan nu så tycker jag att man skall göra det. Men gör det inte innan du funderat på vilka konsekvenser det kan få.
Hej
Väldigt bra att du påpekar att PostGIS är så mycket mer än en lagringsplats. Jag blir alltid lite besviken när jag har lagt in ny funktionalitet i PostGIS och inser att den vanligaste användningen trots allt är att pumpa data till en web-karta. Det fungerar PostGIS väldigt bra till, men det är som sagt så mycket mer.
Vad gäller SP-Gist så har jag inte läst upp mig på det, men jag har förstått det så att det är bättre i ”vissa lägen”. Framförallt när man tex har en väg eller ett vattendrag som går genom en stor del av datasettet. Då ger Gist-indexet en dålig filtrering för att bounding boxen till vägen/vattendraget berör så stor del av de andra geometrierna som man vill göra tex intersect, eller någon annan operation mot.