Estoy tratando de convertir la fuente DEM (LIDAR es la fuente original, en formato ASC) a un formato interno personalizado que tiene valores específicos de resolución y alineación. También quiero generar diferentes resoluciones de salida (cada resolución más baja es 1/9 de la resolución más alta).
He escrito un plugin de GDAL para convertir el DEM de origen al formato interno, pero requiere que los datos de origen ya estén en la resolución y alineación correctas. Así que estoy tratando de averiguar la combinación correcta de gdalwarp, gdal_translate y gdal_retile para lograr esto. Necesito que el espacio entre píxeles (resolución) coincida con la resolución del formato de destino y necesito que esos píxeles se alineen con las restricciones de los formatos de destino. Me parece bien cortar los datos de los bordes de la fuente.
Utilizo python para calcular los comandos correctos y ejecutarlos. Termino con (el SRS objetivo es WGS84/EGM96 - espero haber acertado con el t_srs).
gdalwarp -t_srs "+proj=longlat +datum=WGS84 +no_defs +geoidgrids=./egm96_15.gtx" -tap -et 0 -r bilinear -tr <res> <res> -te <res_xmin> <res_ymin> <res_xmax> <res_ymax> <src.vrt> <dest.tif>
donde <res> es específico de la resolución (como 0,00001028806584362140 para 1/27º AS). Los valores -te son específicos de los requisitos de alineación para esa resolución específica. Así que averiguo las coordenadas del archivo de formato de destino que está "dentro" de los datos de origen (cortando el borde), y me aseguro de que la extensión es un múltiplo del tamaño del archivo de destino (de nuevo permaneciendo dentro de los límites de los datos de origen).
Luego uso gdal_retile para dividir <dest.tif> en archivos individuales para que se ajusten a lo que necesita mi formato personalizado (300x300, superposición de 1 píxel, así que hago 301x301).
Finalmente uso gdal_translate con mi plugin personalizado para convertir los archivos divididos a mi formato personalizado.
Esto parece funcionar para mis diferentes resoluciones de salida, pero cuando intento ver los datos, los datos de mayor resolución no se alinean con los de menor resolución - cuando cargo los datos de mayor resolución sobre los de mayor resolución, las características del terreno no se alinean como se espera.
Así que la primera pregunta: cuando gdalwarp procesa -te, ¿intenta ajustar los datos de origen a esa extensión (es decir, 'aplastar' los datos de origen para que encajen, asumiendo que -te es menor que la extensión de origen), o 'corta' la parte de los datos de origen que está fuera de esa extensión? Estoy intentando que la corte. Si lo que hace es "aplastar" los datos, es posible que por eso tenga problemas de alineación. [editar : el comentario indica que gdalwarp "corta" los datos]
También lo he intentado:
gdalwarp -t_srs "..." -tr <res> <res> <src.vrt> <temp.tif>
gdal_translate <res_xoff> <res_yoff> <res_xsize> <res_ysize> <temp.tif> <dest.tif>
Es decir, simplemente hacer que gdalwap reproyecte sin tratar de "recortar" o "alinear" la salida, y luego usar gdal_translate para hacer el recorte para que coincida con mi alineación deseada. Pero esto parece terminar con el mismo problema, y me preocupa que la alineación de píxeles no coincida.
¿Te parece que estoy haciendo lo correcto? ¿Alguna sugerencia para intentar averiguar cómo reproyectar y recortar los datos para que coincidan con las restricciones de resolución y alineación?
Gracias.