Asegúrese de que las imágenes tienen nódulos definidos. Si las imágenes de origen no lo hacen, arréglelo con algo como lo que se indica a continuación, donde 0 o 255 es el valor de nodata que se supone:
gdal_translate ... -a_nodata 0 ... outimage.vrt
gdal_edit -a_nodata 255 somefile.tif
Cree pequeñas imágenes de vista previa para un procesamiento más rápido (útil cuando se trata de imágenes de satélite de varios GB). Sáltese este paso si quiere hacer coincidir los límites de los píxeles de valor con precisión. Me parece que usar la resolución objetivo -tr
o elegir un porcentaje mayor que se aproxime a 2048 filas/columnas funciona bien. Se muestran tres enfoques, sólo use uno.
gdal_translate -tr 185 185 vendor_image.tif myimage.tif
gdal_translate -outsize 5% 5% vendor_image.tif myimage.tif
gdal_translate -outsize 2048 0 vendor_image.tif myimage.tif
Forzar los valores de los píxeles para que oscilen entre 1 y 255, luego reescalar de nuevo para que los datos = 100 y todos los demás sean nodatos . Utilice vrt para no conservar el almacenamiento y ser mucho más rápido también. La razón de escalar dos veces es para solucionar el problema de no saber qué rango de valores puede haber cuando empezamos. No hay ningún significado para 100, aparte de que por defecto se dibuja como un gris de tono medio, en contraste con el tradicional 1 que es visualmente indistinguible del negro.
gdal_translate -scale -ot byte myimage.tif myimage_8bit.vrt
gdal_translate -scale 1 255 100 100 myimage_8bit.vrt myimage_data_mask.vrt
Crear un polígono de la máscara de imagen de área de sólo datos para todas las regiones conectadas de píxeles en la trama que comparten un valor de píxel común, utilizando la conectividad de 8 vías.:
gdal_polygonize -8 myimage_data_mask.vrt .\footprints\myimage_data.shp
¡Que lo disfrutes! El color rosa es el área de extensión normal creada por gdaltindex
y enfoques similares. El contorno negro es nuestro nuevo polígono de datos.
Ejemplo de procesamiento masivo del shell de Windows CMD
cd .\previews
md .\byte
md .\data-only
for %a in (*.tif) do gdal_translate -scale -ot byte %a .\byte\%~na.vrt
for %a in (byte\*.vrt) do gdal_translate -scale 1 255 100 100 %a .\data-only\%~na.vrt
for %a in (data-only\*.vrt) do call gdal_polygonize -8 %a %~na.shp
Reúne las huellas que has creado por cientos en un único índice general. {AUTO_NAME} rellena un campo con el nombre del archivo fuente de ese polígono. Véase ogrmerge página de documentos para otras opciones.
ogrmerge -single ^
-src_layer_field_name Image_Name ^
-src_layer_field_content {AUTO_NAME} ^
-o ..\index_footprint_data.shp ^
.\data-only\*.shp
Gracias https://gis.stackexchange.com/a/139045/108 para reescalar datos a punta de valor de un solo píxel. Hay otras formas de llegar al mismo fin utilizando gdal_calc
pero creo que este enfoque de escala es más fácil de entender.
Creo que aprendí de Robert Simmon lo de reescalar sin conocer los valores de entrada de antemano, pero he perdido la referencia. No te puedes equivocar consultando su Introducción general a GDAL sin embargo.