3 votos

gdal_translate -a_nodata

Tengo un archivo ASCII de ESRI con las habituales 6 filas de cabeceras seguidas de los valores de elevación en metros. El valor NO_DATA de la cabecera está fijado en -9999.

Estoy tratando de convertir este ASCII a XYZ usando gdal_translate y no quiere incluir valores de nodata de -9999 en el archivo XYZ de salida. Estoy utilizando el comando a_nodata para ignorar -a_nodata en el archivo XYZ de salida, pero hasta ahora no he conseguido que funcione. Espero que alguien pueda ayudarme a saber en qué me estoy equivocando con el -a_nodata comando. He incluido mi código actual a continuación que crea el archivo XYZ pero no ignora los valores sin datos.

gdal_translate -of XYZ D:\WORK\COASTAL_PRODUCTS\P_10853\ASCII_GRIDS\DSM\tq6575_20161005lidaru.asc D:\WORK\COASTAL_PRODUCTS\P_10853\ASCII_XYZ\DSM\tq6575_20161005lidaru.txt -a_nodata -9999

4voto

Lucas Puntos 128

Los valores de los nódulos forman parte de una trama. El formato XYZ sigue siendo un formato raster y necesita los valores nodata para mantener una cuadrícula regular. Por eso no puedes hacer que gdal no los escriba. Si lo hiciera, no podría volver a leerlo.

Sin embargo, puede evitar escribir los valores NoData en su salida eliminándolos con un programa externo. Para ello, escriba la salida en stdout y luego diríjala a findstr para filtrarlo antes de escribirlo en el csv:

gdal_translate -q -of xyz -co ADD_HEADER_LINE=YES -co COLUMN_SEPARATOR="," input_raster /vsistdout | findstr /V /C:"your_nodata_value" > output.csv

1voto

Nikola Puntos 21

Esta tarea se puede realizar en dos pasos: primero, convertir el archivo ASCII de ESRI en uno XYZ, añadiendo la línea de cabecera y utilizando la extensión csv en el archivo de salida. Por último, utilice un poco de OGR SQL para omitir los registros con valores NoData:

gdal_translate -of XYZ input_ASCII_with_NoData.asc output_XYZ_with_NoData.csv -co ADD_HEADER_LINE=YES
ogr2ogr -f CSV -sql "SELECT x, y, z FROM output_XYZ_with_NoData WHERE z != '-9999'" output_XYZ_without_NoData.csv output_XYZ_with_NoData.csv -lco SEPARATOR=SPACE

0voto

Deepesh Deepak Puntos 21

Ya casi está - también necesita comillas en el formato de salida pero esto debería funcionar bien.

gdal_translate -of "XYZ" D:\WORK\COASTAL_PRODUCTS\P_10853\ASCII_XYZ\DSM\tq6575_20161005lidaru.asc D:\WORK\COASTAL_PRODUCTS\P_10853\ASCII_GRIDS\DSM\tq6575_20161005lidaru.xyz -a_nodata "value [-9999]"

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