6 votos

Generar hillshading con GDAL, y el respeto nodata

Todavía estoy tratando de tuerca a este problema de la fusión de la superposición de geotiffs.

Del conjunto de datos original (aquí, un 20m resolución del modelo digital de elevación del estado de Victoria), he vuelve a proyectar y convertir a tiff. Prestados en TileMill, no es un lugar limpio, irregular límite:

for f in dtm20m dtm10m_nw; do
export GDAL_CACHEMAX=1000
echo -n "Re-projecting: "
gdalwarp  -s_srs EPSG:3111 -t_srs EPSG:3785 -r bilinear ./vmelev_${f}/${f} ${f}-3785.tif 

enter image description here

El TileMill es de estilo:

.dem {
  raster-colorizer-default-mode: linear;
  raster-colorizer-default-color: yellow;//hsl(60,50%,80%);//transparent;
  raster-colorizer-stops:
  stop(0,hsl(60,50%,80%))
  stop(392,hsl(110,80%,20%))
  stop(785,hsl(120,70%,20%))
  stop(1100,hsl(100,0%,50%))
  stop(1370,white);
  raster-scaling:near;
}

Lo siguiente que generar hillshading:

gdaldem hillshade -z 5 $f-3785.tif $f-3785-hs.tif
echo and overviews:
gdaladdo -r average $f-3785-hs.tif 2 4 8 16

enter image description here

Por desgracia, ahora los datos parece ser generado incluso donde antes no lo había.

El gdaldem la documentación dice que respeta nodata:

Para todos los algoritmos, excepto en el color de alivio, un valor nodata en el destino conjunto de datos se emite si al menos un píxel establece en el valor nodata se encuentra en la ventana de 3x3 centrado alrededor de cada fuente de píxeles. El la consecuencia es que habrá un borde de 1 píxel alrededor de cada imagen establecer con valor nodata. De GDAL 1.8.0, si -compute_edges es se especifica, gdaldem va a calcular los valores en los bordes de la imagen o si un nodata el valor se encuentra en la ventana de 3x3, mediante la interpolación de los valores perdidos.

Estoy usando GDAL 1.9.

Estoy atascado en este punto - no estoy seguro de cómo incluso directamente verificar si hay un "nodata" valor en el que se vuelve a proyectar tif, o por lo que el proceso de TileMill sabe cómo salir de los píxeles transparentes. Los punteros sería muy apreciada.

(Para el contexto, si es necesario, la razón de todo esto importa es mi enfoque actual de la fusión problema es la capa de múltiples hillshaded tifs en la parte superior de uno al otro, que no funcionará si el "nodata" bits chocan.)

12voto

He logrado encontrar una solución, aunque depende de la existencia de una "medida" shapefile que vino con el original de la DEM. Yo todavía me gusta saber lo que estoy haciendo mal en mi método original, si cualquier cosa.

gdalwarp -co "BIGTIFF=YES" -dstalpha -cutline dtm20m_ext_vg94.shp dtm20m-3785-hs.tif dtm20m-3785-hs-cut.tif

Esto produce el tipo correcto de TIF:

enter image description here

...para que yo pueda compuesto de dos resoluciones diferentes de terreno:

enter image description here

(Si no es obvio, la costura corre aproximadamente NW/SE a través del medio. 20m de resolución sobre la izquierda, 90m de la derecha.)

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