Ich versuche, den Anweisungen hier zu folgen , um ein Raster in eine PostGIS-Datenbank zu laden:
python raster2pgsql.py -s 4269 -I -r *.tif -F myschema.demelevation -o elev.sql
Ich verstehe, dass ich durch *
den Pfad zu meinem Raster ersetze , aber ich verstehe den Teil myschema.demelevation
oder nicht elev.sql
. Sollte ich ein eigenes Schema für diese Datei haben? Und was bedeutet der elev.sql
Teil?
Ich habe auch den PostGIS-Rastertreiber von gdal durchgelesen , um dies anhand weiterer Beispiele zu verstehen. Ebenso schlagen sie vor, ein Raster zu ladenkatrina
python raster2pgsql.py -r /path/to/katrina.tif -t katrina -l 1 -k 64x64 -o katrina.sql -s 4326 -I -M
Mit meinem aktuellen Setup habe ich versucht, das katrina
Raster zu laden in:
python2.6 ~/src/postgis-2.0.0SVN/raster/scripts/python/raster2pgsql.py -r ~/tmp/katrina.tif -t katrina -l 1 -k 64x64 -o katrina.sql -s 4326 -I -M
Ich habe jedoch die folgenden Fehler erhalten:
Traceback (most recent call last):
File "/home/src/postgis-2.0.0SVN/raster/scripts/python/raster2pgsql.py", line 34, in <module>
from osgeo import gdal
File "/home/lib/python2.6/GDAL-1.8.1-py2.6-linux-i686.egg/osgeo/__init__.py", line 21, in <module>
_gdal = swig_import_helper()
File "/home/lib/python2.6/GDAL-1.8.1-py2.6-linux-i686.egg/osgeo/__init__.py", line 17, in swig_import_helper
_mod = imp.load_module('_gdal', fp, pathname, description)
ImportError: /home/lib/python2.6/GDAL-1.8.1-py2.6-linux-i686.egg/osgeo/_gdal.so: undefined symbol: GDALSetRasterUnitType
Ich verstehe diese Fehler nicht ganz. Hätte ich beim Kompilieren gdal
ein Argument für angeben sollen GDALSetRasterUnitType
?
Im Allgemeinen habe ich Schwierigkeiten zu verstehen, warum ich die Datenbank, in die ich diese Daten laden möchte, nicht spezifiziere.
Nachdem ich den Ratschlägen von MerseViking gefolgt war, lief ich:
python /usr/lib/postgresql/8.4/bin/raster2pgsql.py -r /home/celenius/Downloads/katrina.tif -t katrina -l 1 -k 64x64 -o katrina.sql -s 4326 -I -M
welches die folgende Ausgabe zurückgab:
------------------------------------------------------------
Summary of GDAL to PostGIS Raster processing:
------------------------------------------------------------
Number of processed raster files: 1 (/home/celenius/Downloads/katrina.tif)
List of generated tables (number of tiles):
1 katrina (256)
Dann rannte ich:
psql -d test -f katrina.sql - U postgres -W
welches das folgende zurückgab:
addrastercolumn
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
public.katrina.rast srid:4326 pixel_types:{8BUI,8BUI,8BUI} out_db:false regular_blocking:true nodata_values:NULL scale_x:'0.029325513196481' scale_y:'-0.029325513196481' blocksize_x:'64' blocksize_y:'64' extent:POLYGON((-100.014662756598 9.98533724340176,-100.014662756598 40.0146627565982,-69.9853372434018 40.0146627565982,-69.9853372434018 9.98533724340176,-100.014662756598 9.98533724340176))
(1 row)
(END)
Diese Meldung und ein blinkender Cursor erscheinen auf dem Bildschirm. Ich gehe davon aus, dass es in die Datenbank geladen wird, bin mir aber nicht sicher. Die tif
Datei ist nur 3 MB groß - ich hatte angenommen, dass das Laden einer Datei dieser Größe nicht lange dauern würde, aber der blinkende Cursor ist bereits seit ~ 1 Stunde auf dem Bildschirm. Ist das abgestürzt oder muss ich nur lange warten? Ich habe 4 GB RAM und einen Dual-Prozessor von 2,5 GHz.
q
drücke, dieser Befehl ausgeführt wird und die Daten in die Datenbank eingefügt werdentest
. Ist das normal und sollte ich das tun?Antworten:
Es scheint, dass es auf dieser Seite einen Tippfehler gibt; in der Schlange:
Der
-F
Parameter sollte-t
der Tabellenname sein, in den die Daten importiert werden sollen. Der Teil vor dem.
ist der optionale Schemaname, wenn Sie Ihre Tabelle in einem anderen Schema als möchtenpublic
. Der-o
Parameter gibt die Datei an, die vom Python-Skript generiert wird. Diese Datei ist die SQL-Darstellung Ihrer Tabellendefinition und der tatsächlichen Daten aus dem Quellraster, sodass sie ziemlich groß werden kann. Sobald diese Datei generiert wurde, müssen Sie sie ausführen,psql -d <db_name> -f elev.sql
um die Datenbank tatsächlich zu füllen. Danach kann sie gelöscht werden.Was mir jedoch seltsam vorkommt, ist, dass Sie
raster2pgsql.py
aus dem PostGIS 2.0- Quellverzeichnis aufrufen . Haben Sie PostGIS 2.0 tatsächlich kompiliert (durch Ausführenmake
) und installiert (durch Ausführenmake install
als Root)? Da es sich auf Ihrem Pfad und IIRC befinden sollte, aktualisiert das Installationsprogramm IhrePYTHON_PATH
Umgebungsvariable automatisch .Was das Fehlen
GDALSetRasterUnitType
betrifft, würde ich zuerst prüfen, ob Sie keine frühere Version von GDAL-Bibliotheken installiert haben, die Python anstelle von 1.8.1 aufnimmt. Versuchen Siegdalinfo --version
diese Seite kann etwas Licht auf Ihr Problem werfen.quelle
make
undmake install
hätte es anrufen sollen./bin/raster2pgsql.py
. Ich verwende Shared Hosting ohne Root-Zugriff, kann aber Programme installieren. Wenn ich renne,gdalinfo --version
bekomme ichGDAL 1.5.3, released 2008/09/09
; Welches ist die Serverversion; Ich habe GDAL 1.8.1 installiert, aber es wird von diesem Befehl nicht erfasst.