Calcul de la limite d'image / de l'empreinte des images satellite à l'aide d'outils open source?

10

J'ai besoin de créer les contours du polygone de plusieurs images raster monocouche, pas la zone d'étendue / de délimitation, mais la zone sans les valeurs de nodata, comme illustré ici: Créer un fichier de formes montrant les empreintes des rasters? .

Dans la réponse à la question ci-dessus, le plugin Image Boundary a été mentionné, cependant, je ne le trouve pas dans QGIS 1.8.0 Lisboa, fonctionnant sur Ubuntu.

L'outil est-il toujours disponible?

Sinon, existe-t-il un moyen de le faire en utilisant des outils open source, soit gdal, R, QGIS, GRASS ou similaire, pas avec ArcMap?

spib
la source

Réponses:

4

Vous pouvez ajouter l'ancien référentiel où ont des plugins dans le référentiel officiel.

http://pyqgis.org/repo/contributed

Le plugin de limite d'image a une option pour calculer un pixel valide, mais l'image doit être la scène complète, comment CBERS ou Landsat, où ce processus calcule les 4 premiers coins. L'image doit avoir des nodates avec une valeur ZÉRO pour une zone sans imagerie (numérisée par un capteur satellite).

Auteur de Image Boundary

lmotta
la source
Salut @lmotta, merci pour le lien du référentiel. Les images sur lesquelles je travaille en ce moment sont toutes des images SAR, avec des valeurs NA (ou -3.4e + 38 selon l'outil de valeur dans QGIS). Si l'on pouvait ajouter la valeur nodata manuellement dans l'outil, au lieu d'avoir ZERO comme seule option, ce serait génial, sinon, je pourrais d'abord exécuter un script dans R pour donner à mes valeurs NA de nouvelles valeurs de zéro. C'est un excellent outil, merci!
spib
Existe-t-il un nouveau référentiel pour Image Boundary? Le lien que vous fournissez est 404. Peut-être ce qui suit?: Github.com/lmotta/imagefootprint_plugin
Aaron
Y a-t-il un endroit où nous pouvons trouver de la documentation pour Image Boundary?
Loonuh
11

J'ai finalement trouvé un moyen de le faire:

étape 1: gdalwarp -dstnodata 0 -dstalpha -of GTiff foo1 foo2

Cela fait deux choses importantes: il définit les valeurs No Data (hors bordure) de destination sur 0 et crée une bande alpha.

étape 2: gdal_polygonize.py foo2 -b 2 -f "ESRI Shapefile" foo3

La deuxième étape utilise la bande alpha (bande 2), créée à l'étape 1, et crée un fichier de formes à partir de cette bande.

Cela peut ensuite être facilement scripté dans un script bash, si vous avez plusieurs images, pour créer des contours exacts.  

spib
la source
Brillante, cette solution ne repose sur aucun plugin ou logiciel. La création d'empreintes raster sensibles à NoData est l'une de ces tâches SIG qui n'est pas aussi simple qu'elle le devrait.
Charlie Parr
Lorsque j'utilise cette méthode, je me retrouve avec un fichier de formes plein de polygones qui, je suppose, représentent différentes couleurs regroupées. Comment puis-je éviter cela et finir avec seulement quelques polygones représentent des données oui ??
Loonuh
5

J'ai utilisé gdal_translatecomme suggéré par le projet GDAL.

gdal_translate -b mask -of vrt -a_nodata 0 test.tif test.vrt
# Note the  -a_nodata 0 doesn't seem to work when the mask is input, so do another pass
gdal_translate -b 1 -of vrt -a_nodata 0 test.vrt test2.vrt
gdal_polygonize.py -q  -8 test2.vrt -b 1 -f "ESRI Shapefile" testdata.shp

entrez la description de l'image ici

user2856
la source
1
Avec la version GDAL trunk, il est désormais possible d'utiliser gdal_polygonize directement contre l'image source osgeo-org.1560.x6.nabble.com/… . Cependant, un certain nettoyage est nécessaire pour supprimer les polygones sans données.
user30184
4

Le plugin Image Boundary ne fonctionnait pas non plus pour moi, j'ai donc utilisé la même approche avec GDAL. Néanmoins, cela n'a fonctionné pour moi qu'après avoir changé la première étape en:

étape 1 : gdalwarp -srcnodata 0 -dstalpha -of GTiff foo1 foo2

Je travaille avec la bande Landsat8 (où aucune donnée = 0) et lorsque -dstnodataj'utilise la fonction, j'obtiens:

BAND1 avec aucune donnée = « Aucune donnée »
BAND2 (bande Alpha) = « 255 » pour l'ensemble de la scène / mesure

alors qu'avec la -srcnodatafonction j'obtiens:

band1 with no data = 'no data'
band2 (alpha band) with no data = 'no data' and valid data = '255' qui permet alors d'extraire le polygone pour les données valides uniquement.

Je ne pouvais pas comprendre pleinement la raison de ce comportement (comment l'alpha est calculé?), Mais j'espère que cela pourrait aider d'autres personnes confrontées au même problème.

dorakiara
la source