8 votos

Cómo importar un mapa de bits en PostGIS?

Estoy tratando de seguir las instrucciones aquí para cargar un mapa de bits en una base de datos PostGIS:

python raster2pgsql.py -s 4269 -I -r *.tif -F myschema.demelevation -o elev.sql

Entiendo que puedo reemplazar * con la ruta de mi trama, pero no entiendo la parte myschema.demelevation o elev.sql. Debo tener mi propio esquema para este tipo de archivo? Y, ¿qué elev.sql parte media?

Yo también he leído a través de la gdal PostGIS raster driver para intentar entender esto con más ejemplos. Del mismo modo, sugieren que la carga de un ráster katrina

python raster2pgsql.py -r /path/to/katrina.tif -t katrina -l 1 -k 64x64 -o katrina.sql -s 4326 -I -M

Usar mi configuración actual, he intentado cargar el katrina raster 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, tengo 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 estos errores significan; cuando he compilado gdal debería haber especificado un argumento para GDALSetRasterUnitType ?

Más en general, estoy teniendo dificultades para entender por qué yo no soy la especificación de la base de datos que estoy tratando de cargar estos datos en.


Después de seguir MerseViking consejo me encontré:

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 devuelve 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 me encontré:

psql -d test -f katrina.sql - U postgres -W

que devuelve el 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 en la pantalla. Supongo que es la carga en la base de datos, pero no estoy seguro. El tif archivo es solo 3MB - yo había asumido que no iba a tomar tiempo para cargar un archivo de este tamaño, pero el cursor parpadeante ya ha sido en la pantalla para ~1 hora. Ha esto se estrelló o ¿sólo tengo que esperar un largo tiempo? Tengo 4GB de RAM y un dual-procesador de 2.5 GHz.

3voto

Symmetric Puntos 158

Parece que hay una errata en la página; en la línea:

python raster2pgsql.py -s 4269 -I -r *.tif -F myschema.demelevation -o elev.sql

El -F parámetro debe ser -t que especifica el nombre de la tabla a importar los datos. La parte antes de la . es opcional nombre de esquema si quieres que tu mesa en un esquema distinto public. El -o parámetro especifica el archivo que se genera por la secuencia de comandos de Python. Este archivo es el SQL representación de su definición de la tabla y los datos reales de la trama original, por lo que puede ser bastante grande. Una vez que este archivo es generado, usted necesita para ejecutarlo a través de la psql -d <db_name> -f elev.sql a la realidad rellenar la base de datos, después de lo cual puede ser eliminada.

Sin embargo, lo que me parece extraño es que estás llamando raster2pgsql.py de la PostGIS 2.0 fuente de directorio. Ha hecho compilado (por ejecutar make) e instalado (por ejecutar make install como root) PostGIS 2.0? Porque debe estar en su camino, y si mal no recuerdo el instalador actualiza automáticamente su PYTHON_PATH variable de entorno.

Como por la falta GDALSetRasterUnitType, lo que me gustaría, en primer lugar comprobar es que usted no tiene una versión anterior de GDAL bibliotecas instaladas que Python está recogiendo en lugar de 1.8.1. Intente gdalinfo --version Este sitio puede arrojar alguna luz sobre el problema.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X