Estoy tratando de seguir las instrucciones aquí para cargar un ráster en una base de datos PostGIS:
python raster2pgsql.py -s 4269 -I -r *.tif -F myschema.demelevation -o elev.sql
Entiendo que lo reemplazo *
con el camino a mi trama, pero no entiendo la parte myschema.demelevation
o elev.sql
. ¿Debo tener mi propio esquema para este archivo? ¿Y qué significa la elev.sql
parte?
También leí el controlador ráster gdal PostGIS para intentar entender esto con más ejemplos. Del mismo modo, sugieren cargar un rásterkatrina
python raster2pgsql.py -r /path/to/katrina.tif -t katrina -l 1 -k 64x64 -o katrina.sql -s 4326 -I -M
Usando mi configuración actual, intenté cargar el katrina
ráster en:
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
Sin embargo, obtuve los siguientes errores:
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
No entiendo completamente estos errores significan; cuando compilé, ¿ gdal
debería haber especificado un argumento para GDALSetRasterUnitType
?
En general, tengo dificultades para entender por qué no estoy especificando la base de datos en la que estoy tratando de cargar estos datos.
Después de seguir el consejo de MerseViking corrí:
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
que devolvió el siguiente resultado:
------------------------------------------------------------
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)
Entonces corrí:
psql -d test -f katrina.sql - U postgres -W
que devolvió lo siguiente:
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)
Este mensaje y un cursor parpadeante aparecen en la pantalla. Supongo que se está cargando en la base de datos, pero no estoy seguro. El tif
archivo tiene solo 3 MB: supuse que no tardaría mucho en cargar un archivo de este tamaño, pero el cursor parpadeante ya ha estado en la pantalla durante aproximadamente 1 hora. ¿Se ha bloqueado esto o solo necesito esperar mucho tiempo? Tengo 4 GB de RAM y un procesador dual de 2.5 GHz.
q
, ejecuta este comando e inserta los datos en la base de datostest
. ¿Es este comportamiento normal y debería estar haciendo esto?Respuestas:
Parece que hay un error tipográfico en esa página; En la linea:
El
-F
parámetro debe ser el-t
que especifica el nombre de la tabla para importar los datos. La parte anterior a la.
es el nombre de esquema opcional si desea que su tabla esté en un esquema distinto depublic
. El-o
parámetro especifica el archivo generado por el script Python. Este archivo es la representación SQL de la definición de su tabla y los datos reales del ráster de origen, por lo que puede ser bastante grande. Una vez que se genera este archivo, debe ejecutarlopsql -d <db_name> -f elev.sql
para completar la base de datos, después de lo cual se puede eliminar.Sin embargo, lo que me parece extraño es que está llamando
raster2pgsql.py
desde el directorio de origen de PostGIS 2.0 . ¿Realmente compiló (ejecutandomake
) e instaló (ejecutándosemake install
como root) PostGIS 2.0? Debido a que debe estar en su camino, y IIRC el instalador actualiza automáticamente suPYTHON_PATH
variable de entorno.En cuanto a lo que falta
GDALSetRasterUnitType
, lo primero que verificaría es que no tenga instalada una versión anterior de las bibliotecas GDAL que Python está recogiendo en lugar de 1.8.1. Pruebegdalinfo --version
Este sitio puede arrojar algo de luz sobre su problema.fuente
make
ymake install
debería haberlo llamado./bin/raster2pgsql.py
. Estoy usando un alojamiento compartido que no tiene acceso de root, pero puedo instalar programas. Cuando corrogdalinfo --version
me saleGDAL 1.5.3, released 2008/09/09
; cual es la versión del servidor; He instalado GDAL 1.8.1 pero este comando no lo está utilizando.