1 votos

gdalwarp DEM con diferentes extensiones de resolución

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.

1voto

xenny Puntos 670

Gdalwarp reproyectará sus datos conservando las propiedades geográficas de sus datos de entrada. En otras palabras, se acercará lo más posible a la información inicial en cada ubicación geográfica (esta información se verá ligeramente alterada si la posición del píxel de salida no es exactamente la misma que la posición del píxel en el archivo de salida).

-te define el tamaño del archivo de salida en el sistema de coordenadas del archivo de salida (por defecto, el sistema de coordenadas del archivo de salida = el sistema de coordenadas de la entrada). Si es mayor que la entrada, la extensión se rellenará con valores NoData. Si es menor que la entrada, se cortará la entrada y se "perderá" parte de la información Es necesario proporcionar la extensión como información geográfica.

-tr permite definir el tamaño de salida en horizontal y en vertical. Si cambia la cuadrícula, gdal utilizará la información de los píxeles de entrada que están cerca del centro del nuevo píxel para calcular un nuevo valor (esto se llama remuestreo, gestionado con la opción -r por defecto se utiliza el valor del píxel más cercano)

Obtenga información de gdalinfo para determinar el valor exacto debido a posibles problemas de redondeo, no es necesario usar -tap si tiene los precisos -te y -tr. Utilice la información de gdal y no de otro software, porque la coordenada del píxel utilizada para la extensión podría variar dependiendo del software (por ejemplo, el centro o la parte superior izquierda del píxel)

para el segundo paso (cambiar la resolución), en tu caso lo mejor es usar gdal_translate porque, una vez que tienes la extensión correcta, puedes controlar el número de píxeles y esto operará un remuestreo

Por ejemplo, si su archivo de entrada es de 27000 * 27000 píxeles, puede dividir el número de píxeles por 9 solicitando un archivo de salida de 3000 * 3000 píxeles sin cambiar la extensión.

gdal_translate -outsize 3000 3000 temp.tif dest.tif

Como observación, 301 no se puede dividir por 9, por lo que sus píxeles no se superpondrán correctamente.

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