Estoy usando gdalwarp para manipular mosaicos SRTM cerca de la línea de fecha (es decir, 180 °, también conocido como el antimeridiano). Las baldosas SRTM tienen una superposición muy leve (1/2 píxel) con el meridiano. Puedes ver esto usando gdalinfo:
gdalinfo S16W180.hgt
Driver: SRTMHGT/SRTMHGT File Format
Files: S16W180.hgt
Size is 1201, 1201
[...]
Lower Left (-180.0004167, -16.0004167) (180d 0' 1.50"W, 16d 0' 1.50"S)
Upper Right (-178.9995833, -14.9995833) (178d59'58.50"W, 14d59'58.50"S)
[...]
Entonces, la fuente abarca la fecha en una pequeña cantidad.
Esto causa problemas con gdalwarp, que termina creando enormes resultados que abarcan todo el mundo.
gdalwarp -t_srs "epsg:900913" S16W180.hgt test.tif
gdalinfo test.tif
Driver: GTiff/GeoTIFF
Files: test.tif
Size is 1703, 5
[...]
Lower Left (-20037508.330,-1806798.473) (180d 0' 0.00"W, 16d 7'13.00"S)
Upper Right (20032839.451,-1689152.120) (179d57'29.01"E, 15d 5'45.84"S)
Tenga en cuenta que las longitudes abarcan (casi) todo el globo, y también el número de líneas es inesperadamente pequeño (5)
¿Es esto un error en gdalwarp? Si no, ¿cuáles son las opciones correctas para pasar a gdalwarp para obtener un resultado razonable?
Respuestas:
Una solución fácil sería especificar el sistema de coordenadas "manualmente" como una cadena PROJ. Esto le permite usar el
+over
interruptor que deshabilita el ajuste en el antimeridiano:Cuando hago eso y luego hago
gdalinfo
el resultado, obtengo esto:Obtuve la cadena PROJ (sin
+over
) mirando la salida original degdalinfo
. Se incluyó en unEXTENSION[...]
bloque del sistema de coordenadas.fuente
Funciona en dos pasos:
El primer comando inicia el medio píxel extra en el lado equivocado del meridiano de 180 °. Obtiene un archivo de salida que es 1178P x 1222L.
Alternativamente, con gdal_translate:
Crear un archivo de salida que sea 1179P x 1223L.
fuente
Como estaba enfrentando el mismo problema, escribí un pequeño script de shell que descubre si el archivo ráster cruza la línea de fecha. Si es verdadero, la siguiente opción se agrega a gdalwarp:
Así es como funciona el script paso a paso:
ACTUALIZACIÓN Mejor versión del script, requiere GDAL 2.0+ y Python: versión anterior a continuación.
fuente
Este es un problema en la biblioteca GDAL. Parece que GDALSuggestedWarpOutput () está dando una salida extraña para el ancho y la altura del archivo de salida.
Todavía no he encontrado una manera de solucionar esto.
fuente