4 votos

PostGIS Fuera de db VRT que contiene JPEG2000 GDAL 2.1 OpenJPEG

Construir GDAL 2.1 con OpenJPEG
Construir PostGIS con la construcción anterior de GDAL
Creado el archivo VRT con los archivos SENTINEL2 Driver / JP2.

gdal_translate SENTINEL2_L2A:S2A_USER_MTD_SAFL2A_PDMC_20160520T042556_R030_V20160520T000224_20160520T000224.xml:10m:EPSG_32756 10m.vrt -of vrt

raster2posgresql el VRT en PostGIS con la bandera -R (fuera de la db raster usando la ruta completa del archivo)

raster2pgsql -R /home/ben/S2A_USER_PRD_MSIL2A_PDMC_20160520T042556_R030_V20160520T000224_20160520T000224.SAFE/10m.vrt -b 2 -C -t 128x128 -P test.T56JKN_20160520_A_10m_b02 | psql -d giddb

Cuando hago la consulta:

select 
     ST_Value(rast, ST_Transform(ST_PointFromText('POINT(149.9878 -29.3507)', 4326),32756)) 
from 
     test.T56JKN_20160520_A_10m_b02
where
     ST_Intersects(rast,ST_Transform(ST_PointFromText('POINT(149.9878 -29.3507)', 4326),32756))

Me da error:

ERROR: rt_raster_from_gdal_dataset: No se han podido obtener los datos de GDAL raster Estado SQL: XX000 Contexto: Función PL/pgSQL st_value(raster,integer,geometry,boolean) línea 18 en RETURN

Otras notas:
Out of db funciona perfectamente con un VRT que contenga un archivo tif y también con un archivo tif por sí solo.

Cualquier consejo o comentario es bienvenido. No estoy seguro de que esto sea posible.

Edición: ¿Ayudaría el uso del controlador Kakadu JPEG2000?

ACTUALIZACIÓN:

Bien, he vuelto a construir todo desde cero y puedo confirmarlo:

JP2OpenJPEG aparece en la consulta de PostGIS: "SELECT short_name FROM ST_GDALDrivers();"

JP2OpenJPEG está disponible en GDAL ejecutando "gdal_translate --formats"

Puedo gdal_translate un controlador SENTINEL2 creado VRT que contiene .jp2 a GTiff

Información sobre la versión de PostGIS: POSTGIS="2.2.2 r14797" GEOS="3.5.0-CAPI-1.9.0 r4084" PROJ="Rel. 4.8.0, 6 de marzo de 2012" GDAL="GDAL 2.1.0, publicado el 25/04/2016" LIBXML="2.9.1" LIBJSON="0.11.99" TOPOLOGÍA RASTER

Al intentar consultar el raster ahora me da error: ERROR: rt_raster_from_gdal_dataset: No se han podido obtener los datos de la trama GDAL CONTEXTO: Función PL/pgSQL st_value(raster,integer,geometry,boolean) línea 18 en RETURN

Otras notas: Cuando ejecuto raster2pgdsql con -s [dataset epsg] me da error: ERROR: rt_raster_from_gdal_dataset: No se han podido obtener los datos del raster GDAL CONTEXTO: Función SQL "st_transform" declaración 1

Cuando lo ejecuto sin la bandera -s se completa bien con y sin mosaico.

5voto

Srikanth Puntos 4119

He resuelto el problema.

Al generar el VRT con GDAL no utilicé la ruta completa para el archivo xml de Sentinel2. Esto está bien para el uso de gdal_translate etc, pero causa un error dentro de PostGIS como ruta completa se requiere tanto a la VRT y dentro de ella.

Manera incorrecta de generar VRT que se utilizará como raster fuera de la base de datos en PostGIS:

gdal_translate -of VRT SENTINEL2_L2A:S2A_USER_MTD_SAFL2A_PDMC_20160510T084235_R030_V20160510T000223_20160510T000223.xml:10m:EPSG_32756 10m_wrong.vrt

La forma correcta:

gdal_translate -of VRT SENTINEL2_L2A:/home/ben/S2A_USER_PRD_MSIL2A_PDMC_20160510T084235_R030_V20160510T000223_20160510T000223.SAFE/S2A_USER_MTD_SAFL2A_PDMC_20160510T084235_R030_V20160510T000223_20160510T000223.xml:10m:EPSG_32756 10m_correct.vrt

También compilé GDAL 2.1 con la siguiente configuración:

./configure --with-openjpeg=/usr/local --without-jasper --with-python=yes

1 votos

Gracias. Por cierto, ¿conoces algún buen recurso/tutorial para iniciarse en el análisis de datos de Sentinel 2?

0 votos

No lo siento mucho. Estoy aprendiendo sobre la marcha, al igual que mucha otra gente. Aunque la forma más fácil de ponerlos en un formato viable es el controlador GDAL Sentinel 2, que permite utilizar gdal_translate para convertir a GeoTiff para QGIS/GRASS, etc. en un solo paso. Ejemplos al final de esta página: gdal.org/frmt_sentinel2.html

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