Laden von Geotiffs in PostGIS mit raster2pgsql

8

Ich habe ein Problem beim Laden einiger Ordnance Survey-Rasterdaten in PostGIS. Ich habe den folgenden Befehl raster2pgsql verwendet, um ein TIF, das ich in meinem Ordner C: \ Programme \ PostgreSQL \ 9.1 \ bin abgelegt habe, in PostGIS zu laden:

raster2pgsql -s 27700 -t 5000x5000 -I -C -M  *.tif  > os_strview.sql

Ich führe dann den folgenden psql-Befehl aus:

psql -h localhost -U postgres -d raster_test -f os_strview.sql

Dies funktioniert einwandfrei, aber als ich versuchte, die Daten in QGIS anzuzeigen, konnte ich die Tabelle raster_columns im Auswahlfeld nur sehen, wenn ich versuchte, eine PostGIS-Ebene hinzuzufügen.

Ich habe stattdessen versucht, das Plugin Load Raster to PostGIS zu verwenden. Dies funktioniert, aber mein Rasterbild hatte keine Farbe. Ich habe dann diesen Beitrag gesehen . Ich habe die Technik Raster> Konvertieren> PCT in RGB verwendet, um ein einzelnes TIF in ein Geotif zu konvertieren.

Leider erhalte ich beim Ausführen des obigen Befehls psql die folgende Fehlermeldung:

C: \ Programme \ PostgreSQL \ 9.1 \ bin> psql -h localhost -U postgres -d raster_test -f os_strview.sql BEGIN psql: os_strview.sql: 2: HINWEIS: CREATE TABLE erstellt die implizite Sequenz "sx03 nw-geo_rid_seq" für die serielle Spalte "sx03nw-geo.rid" psql: os_strview.sql: 2: HINWEIS: CREATE TABLE / PRIMARY KEY erstellt den impliziten Index "sx03nw-geo_pkey" für die Tabelle "sx03nw-geo" CREATE TABLE psql: os_strview.sl : FEHLER: Bibliothek "C: / Programme / PostgreS QL / 9.1 / lib / rtpostgis-2.0.dll" konnte nicht geladen werden: Ungültiger Zugriff auf Speicherort.

Zeile 1: INSERT IN "sx03nw-geo" ("rast") VALUES ('01000003000000000 ... ^ ROLLBACK

Ich nehme an, das hat etwas mit der Größe des Geotiffs zu tun, das ich in PostGIS laden möchte - das sind 71 MB!

Gibt es eine andere Methode, die ich ausprobieren sollte? Was ist die Grenze für die Größe eines einzelnen Bildes, das Sie in PostGIS laden können?

Matt T.
quelle
"Gibt es eine andere Methode, die ich ausprobieren sollte?" Haben Sie Zugriff auf FME Desktop? FME 2013 hat einen Autor für PostGIS 2.0 Raster
Mapperz
Nein, ich habe keinen Zugang. Begrenzt auf Mittel, also versuchen Sie, Open Source zu nutzen. Ich habe gute Dinge über FME gehört, daher könnte sich die Investition lohnen.
Matt T

Antworten:

3

Die Größe eines einzelnen Bildes im PostGIS-Raster ist unbegrenzt. Sie werden jedoch durch andere Faktoren eingeschränkt, z. B. über den Arbeitsspeicher Ihres Computers. PostgreSQL legt für ein Feld ein PostgreSQL-Limit von 1 GB fest .

Wenn Sie das GDAL-Dienstprogramm gdalinfo haben, können Sie gdalinfo für eine Ihrer gtiff-Dateien ausführen und die Ausgabe hier veröffentlichen? Oder können Sie, wenn die Daten öffentlich verfügbar sind (ich gehe davon aus, dass es sich um Verordnungsumfragedaten handelt), einen Zeiger darauf geben, welche TIFs Sie laden möchten, damit ich sie testen kann?

gdalinfo MYGEOTIFF.tiff

Die Dateigröße 71 MB ist winzig und sollte kein Problem sein. Derzeit lade ich 10-m-Höhendatensätze (jeweils ~ 500 MB und 10812 x 10812) und 1-m-Luftbilder (jeweils ~ 170 MB und 5820 x 7575) ohne Probleme.

Staubbecher
quelle
Danke Dustymugs. Ich habe versucht, den Geotiff von meinem Heim-PC zu laden, und es hat gut funktioniert. Ich muss überprüfen, welchen Speicher ich bei der Arbeit habe. Ich habe es jetzt geschafft, den Geotiff zu laden, aber es gibt jetzt ein Problem mit dem kartografischen Text. Es ist nicht so klar wie im Original. Ich könnte mich vorerst nur daran halten, die Raster außerhalb von PostGIS zu halten.
Matt T
1

Ich hatte auch ähnliche Probleme beim Importieren von Daten über Geotiff. Mein Vorschlag an Sie ist, die Datei in die Erdas Imagine-Datei zu übersetzen, und sie sollte funktionieren. (Erstellen Sie das Importskript neu und führen Sie es wie zuvor aus.)

U2ros
quelle
Danke für den Rat U2ros. Das von mir erstellte Raster war jedoch in QGIS grau.
Matt T
Nun, mit dem erdas-Format können Sie (normalerweise) benutzerdefinierte Farbpaletten / Farbverläufe anwenden. In Ihrem Fall wurde eine Standard-Graustufe gewählt, denke ich.
U2ros
0

1) Wie in den häufig gestellten Fragen zu PostGIS Raster angegeben , wird raster2pgsql "rtpostgis.so/dll in Abhängigkeit von libgdal.dll / so erstellt. Stellen Sie für Windows sicher, dass sich libgdal-1.dll im bin-Ordner Ihrer PostgreSQL-Installation befindet. Für Linux libgdal muss sich in Ihrem Pfad oder Bin-Ordner befinden " .

2) Auf der anderen Seite, in einem Bug-Ticket , das sich auf denselben Fehler bezieht, heißt es: "Alles raster2psql nutzt die Funktionen, die in rt_apibereitgestellt werden, wo alle Funktionen im Speicher arbeiten. Dieser Loader ist abhängig von dem auf einem verfügbaren Speicher Maschine".

Das bedeutet, dass die Verwendung eines anderen Computers beim Betrieb mit großen Rastern in der Datenbank mit raster2pgsql das Problem lösen könnte. Oder versuchen Sie, kleinere Raster zu verwenden.

In meinem Fall ist ein 35-MB-Raster auf einem Laptop mit 4 GB RAM und 32-Bit-Betriebssystem fehlgeschlagen. Der Wechsel zu einem 16-GB-RAM-Computer mit einem 64-Bit-Betriebssystem war in Ordnung.

Sorin Călinică
quelle