Cargando geotiffs en PostGIS usando raster2pgsql

8

Tengo un problema al cargar algunos datos ráster de Ordnance Survey en PostGIS. He estado usando el siguiente comando raster2pgsql para cargar un archivo tif que he colocado en mi carpeta C: \ Archivos de programa \ PostgreSQL \ 9.1 \ bin en PostGIS:

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

Luego ejecuto el siguiente comando psql:

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

Esto funciona bien, pero cuando intenté ver los datos en QGIS solo pude ver la tabla raster_columns en el cuadro de selección al intentar agregar una capa PostGIS.

Intenté usar el plugin Load raster to PostGIS en su lugar. Esto funciona pero mi imagen de trama no tenía color. Entonces vi esta publicación . Utilicé la técnica Raster> Convertir> PCT a RGB para convertir un solo tif a un geotif.

Desafortunadamente, cuando ejecuto el comando psql anterior recibo este mensaje de error:

C: \ Archivos de programa \ PostgreSQL \ 9.1 \ bin> psql -h localhost -U postgres -d raster_test -f os_strview.sql BEGIN psql: os_strview.sql: 2: AVISO: CREATE TABLE creará la secuencia implícita "sx03 nw-geo_rid_seq" para la columna serial "sx03nw-geo.rid" psql: os_strview.sql: 2: AVISO: CREATE TABLE / PRIMARY KEY creará el índice implícito "sx03nw-geo_pkey" para la tabla "sx03nw-geo" CREATE TABLE psql: os_strview.sql: 3 : ERROR: no se pudo cargar la biblioteca "C: / Archivos de programa / PostgreS QL / 9.1 / lib / rtpostgis-2.0.dll": Acceso no válido a la ubicación de la memoria.

LÍNEA 1: INSERTE EN LOS VALORES "sx03nw-geo" ("rast") ('01000003000000000 ... ^ ROLLBACK

Supongo que esto tiene algo que ver con el tamaño del geotiff que estoy tratando de cargar en PostGIS, ¡que es 71 MB!

¿Hay otro método que debería intentar? ¿Cuál es el límite en el tamaño de una sola imagen que puede cargar en PostGIS?

Matt T
fuente
"¿Hay otro método que debería probar?" ¿Tiene acceso a FME Desktop? FME 2013 tiene un escritor para PostGIS 2.0 Raster
Mapperz
No, no tengo acceso. Limitado en fondos, por lo que intenta utilizar el código abierto. Sin embargo, he escuchado cosas buenas sobre FME, por lo que podría valer la pena la inversión.
Matt T

Respuestas:

3

No hay límite en el tamaño de una sola imagen en el ráster PostGIS, pero estará limitado por otros factores, como la cantidad de memoria que tiene en su computadora. PostgreSQL impone un límite de 1GB en cualquier campo de límites de PostgreSQL .

Si tiene la utilidad GDAL gdalinfo, ¿podría ejecutar gdalinfo en uno de sus archivos gtiff y publicar la salida aquí? O si los datos están disponibles públicamente (supongo que los datos de la Encuesta de ordenanzas lo están), ¿puede proporcionar un puntero a qué tifs está intentando cargar para que pueda probarlos?

gdalinfo MYGEOTIFF.tiff

El tamaño del archivo 71MB es pequeño y no debería ser un problema. Actualmente cargo conjuntos de datos de elevación de 10 m (~ 500 MB y 10812x10812 cada uno) e imágenes aéreas de 1 m (~ 170 MB y 5820x7575 cada uno) sin ningún problema.

polvo
fuente
Gracias, basureros. Traté de cargar el geotiff desde la PC de mi casa y funcionó bien. Tendré que comprobar qué memoria tengo en el trabajo. He logrado cargar el geotiff ahora, pero ahora hay un problema con el texto cartográfico. No es tan claro como lo fue en el original tif. Podría seguir manteniendo los rásteres fuera de PostGIS por ahora.
Matt T
1

También tuve problemas similares al importar datos a través de Geotiff. Mi sugerencia es que traduzca el archivo al archivo Erdas Imagine, y debería funcionar. (vuelva a crear el script de importación, ejecútelo como ya lo hizo)

U2ros
fuente
Gracias por el consejo de U2ros. Sin embargo, el ráster que creé era gris cuando se veía en QGIS.
Matt T
Bueno, con el formato erdas puede (generalmente) aplicar una paleta de colores / degradado personalizado. En su caso, se eligió una escala de grises predeterminada, creo.
U2ros
0

1) Como se indica en las preguntas frecuentes de Raster de PostGIS , raster2pgsql "rtpostgis.so/dll está construido con dependencia de libgdal.dll / so. Asegúrese de que Windows tenga libgdal-1.dll en la carpeta bin de su instalación de PostgreSQL. Para Linux libgdal tiene que estar en su ruta o carpeta bin " .

2) Por otro lado, en un boleto de error relacionado con el mismo error, dicen que "todo lo que raster2psql hace uso de las funciones proporciona rt_api, donde todas las funciones operan en la memoria. Este cargador depende de la memoria disponible en uno máquina".

Eso significa que usar otra máquina, cuando se opera con grandes rásteres en la base de datos con raster2pgsql, podría resolver el problema. O intente usar rásteres más pequeños.

En mi caso, un ráster de 35 MB falló en una computadora portátil con 4 GB de RAM y sistema operativo de 32 bits. Cambiar a una máquina de 16 GB de RAM con un sistema operativo de 64 bits hizo el trabajo bien.

Sorin Călinică
fuente