Hoppa till innehåll
Meny
  • Hem
  • Dokument
  • Om Mig
Geosupportsystem

Ladda rasterdata i PostGIS

Publicerat den 2015-12-042020-12-21

Att ladda PostGIS med vektordata från Shape är busenkelt, inte minst direkt från QGIS.

Att göra samma sak med rasterdata är lite krångligare. Här kommer jag att fokusera på Linux (och Unix-liknande), så det kan se annorlunda ut om din PostGIS server körs på Windows.

Jag använder inte rasterdata i PostGIS normalt, men nu tänkte jag prova och se om det är något för mig framöver. En rejäl utvärdering hinner jag dock inte med i detta inlägg.

Det går inte att ladda raster direkt från QGIS, men som tur är så följer det med ett program när man installerar PostGIS som löser detta.

raster2pgsql

Det är ett ”terminalprogram”, vilket innebär att det inte finns något gränssnitt, utan programmet körs med ett kommando där det ingår alla parametrar som man vill tillämpa. Det är inte jättesvårt att skriva ett GUI för detta, men det hoppar jag över.

Grunden är att man kör programmet med ett antal alternativ mot en eller flera rasterbilder och pekar ut ett mål i en befintlig databas.

raster2pgsql alternativ rasterfil datatabell

Resultatet är kommandon i sql-format, som antingen kan skrivas till en fil, eller köras direkt med ett ”pipe” tecken.

Vi börjar med några ”alternativ”:

-c (Create new table)
-a (Append to existing)
-d (Drop table and create new). Denna brukar jag välja som standard.

-C (Constraints). Bra att lägga till för att kontrollera att raster registreras korrekt.

-s <SRID> (Tilldela rumslig referens). Om denna inte anges så läser programmet befintliga metadata för att fastställa SRID.

-t TILE_SIZE (dela upp raster i rutor för att snabba upp hanteringen) Välj inte för små rutor. Det går att använda ”auto” i stället för ett värde. Värdet som anges är exempelvis 512×512 för rutor med 512 pixlars sida.

-R Detta alternativ gör att rasterdata faktiskt inte lagras i databasen, utan bara metadata och en referens till var rasterfilerna finns. Raderas filerna, så slutar databasen fungera.

-M (Vacuum analyze) Städa upp i databasen (bra).

-I (indexera) Rekommenderas.

Som rasterfil kan alla typer av filer som GDAL kan läsa användas. Det går att använda ”wild cards” för att peka ut flera filer samtidigt (typ *.tif). Vill du veta vilka format som stöds så kan du skriva in kommandot:

raster2pgsql -G

Den tabell man skriver till kan skapas med kommandot -c eller -d ovan, men det måste finnas ett befintligt schema att skapa tabellen i. Tabellen anges på formatet: schema.tabell.

Det går att skriva till en fil med tillägget ” > fil.sql ” efter kommandot och sedan köra sql-komandot.

Alternativet är som sagt att ”pipa” resultatet till ett psql-kommando.

raster2pgsql raster tabell | psql -d databasnamn

Har man användarnamn och liknande i sin databas så räcker inte kommandot ovan. Då får man lägga till några alternativa växlar.

-U användarnamn
-d databasnamn
-h host (exempelvis localhost)
-p port (exempelvis 5432)

Jag har med lyckat resultat skrivit alla höjdraster från Lantmäteriets öppna data (nh 50 meter) till en tabell med nedanstående kommando.

raster2pgsql -d -C -s 3006 -I nh_*.tif hojddata.nh50 | psql -U klakar -d opendata -h localhost -p 5432

Du får dock anpassa kommandot till dina förutsättningar.

Att lägga till denna typ av lager i QGIS verkar vara lite annorlunda. Det är ju inte en rasterfil, men det verkar inte fungera som PostGIS data lager heller. Via DBmanager så går det dock att lägga till lagret… Jag kanske behöver starta om något?

Såhär initialt är nog ändå känslan att det går fortare att hantera virtuella raster baserat på geotiff, än inlästa i PostGIS databasen. Jag får prova lite mera och läsa på lite till.


UPPDATERING (2021)

Vill bara lägga till att för att använda raster i GeoPackage som källa för kommandot raster2pgsql så anger man ”GPKG:databasnamn.gpkg:tabellnamn”, glöm inte tabellnamnet…

Lämna ett svar Avbryt svar

Din e-postadress kommer inte publiceras. Obligatoriska fält är märkta *

Translate with Google

GBR In English
GER Auf Deutch
FRA En Français
ESP En Español
Swedish is a hard language for a machine to translate. Nuance and detail will likely be lost.
     Mastodon  

Bok om QGIS på Svenska

Bok

Beställ Boken/E-bok genom att klicka på bilden (även förhandsgranskning).

Senaste kommentarer

  • Daniel Nilsson om QField
  • denis Empisse om SpaceMouse Python
  • klakar om SpaceMouse Python
  • Anders Jackson om Återbesök, WebODM
  • Anders Jackson om SpaceMouse Python

Arkiv

Meta

  • Logga in
  • Flöde för inlägg
  • Flöde för kommentarer
  • WordPress.org
©2025 Geosupportsystem | WordPress-tema av Superbthemes.com