Berechnung der Bildgrenze / des Footprints von Satellitenbildern mit Open Source-Tools?

10

Ich muss die Polygonumrisse mehrerer Rasterbilder mit einer Ebene erstellen, nicht den Umfang / Begrenzungsrahmen, sondern den Bereich ohne die Knotenwerte, wie hier gezeigt: Erstellen eines Shapefiles mit Footprints von Rastern? .

In der Antwort auf die obige Frage wurde das Image Boundary-Plugin erwähnt, ich finde es jedoch nicht in QGIS 1.8.0 Lisboa, das unter Ubuntu ausgeführt wird.

Ist das Tool noch verfügbar?

Wenn nicht, gibt es eine Möglichkeit, dies mit OpenSource-Tools zu tun, entweder gdal, R, QGIS, GRASS oder ähnlichem, nicht mit ArcMap?

spib
quelle
Siehe auch
Mr. Che

Antworten:

4

Sie können das alte Repository hinzufügen, in dem Plugins im offiziellen Repository enthalten sind.

http://pyqgis.org/repo/contributed

Das Bildgrenzen-Plugin bietet die Möglichkeit, gültige Pixel zu berechnen. Das Bild muss jedoch die vollständige Szene sein, wie CBERS oder Landsat, wobei dieser Prozess die ersten 4 Ecken berechnet. Das Bild muss Knoten mit dem Wert NULL für einen Bereich ohne Bildgebung enthalten (gescannt mit einem Satellitensensor).

Autor der Bildgrenze

Ich muss
quelle
Hallo @lmotta, danke für den Repository-Link. Die Bilder, an denen ich gerade arbeite, sind alle SAR-Bilder mit NA-Werten (oder -3,4e + 38 gemäß dem Wertetool in QGIS). Wenn man den Knotenwert manuell im Tool hinzufügen könnte, anstatt NULL als einzige Option zu haben, wäre es großartig, andernfalls könnte ich zuerst ein Skript in R ausführen, um meinen NA-Werten neue Werte von Null zu geben. Es ist jedoch ein großartiges Werkzeug, danke!
Spib
Gibt es ein neues Repository für Image Boundary? Der Link, den Sie bereitstellen, ist 404. Vielleicht der folgende?: Github.com/lmotta/imagefootprint_plugin
Aaron
Gibt es irgendwo eine Dokumentation für Image Boundary?
Loonuh
11

Ich habe endlich einen Weg gefunden, dies zu tun:

Schritt 1: gdalwarp -dstnodata 0 -dstalpha -of GTiff foo1 foo2

Dies führt zwei wichtige Dinge aus: Es setzt die Zielwerte Keine Daten (außerhalb des Rahmens) auf 0 und erstellt ein Alpha-Band.

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

Der zweite Schritt verwendet das in Schritt 1 erstellte Alpha-Band (Band 2) und erstellt aus diesem Band ein Shapefile.

Dies kann dann einfach in ein Bash-Skript geschrieben werden, wenn Sie viele Bilder haben, um genaue Umrisse für zu erstellen.  

spib
quelle
Genial, diese Lösung basiert nicht auf Plugins oder Software. Das Erstellen von Raster-Footprints, die für NoData sensibel sind, ist eine dieser GIS-Aufgaben, die nicht so einfach ist, wie es sich anfühlt.
Charlie Parr
Wenn ich diese Methode verwende, erhalte ich ein Shapefile voller Polygone, von denen ich annehme, dass sie verschiedene Farben darstellen, die zusammen gruppiert sind. Wie kann ich das vermeiden und am Ende nur ein paar Polygone haben, die Ja-Daten darstellen?
Loonuh
5

Früher habe ich gdal_translatewie vorgeschlagen durch die GDAL Projekt.

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

Geben Sie hier die Bildbeschreibung ein

user2856
quelle
1
Mit der GDAL-Trunk-Version ist es jetzt möglich, gdal_polygonize direkt für das Quellbild osgeo-org.1560.x6.nabble.com/… zu verwenden . Zum Entfernen der Nicht-Daten-Polygone ist jedoch eine Bereinigung erforderlich.
user30184
4

Das Image Boundary Plugin hat auch bei mir nicht funktioniert, daher habe ich den gleichen Ansatz mit GDAL verwendet. Trotzdem hat es bei mir erst funktioniert, nachdem ich den ersten Schritt geändert habe zu:

Schritt 1 : gdalwarp -srcnodata 0 -dstalpha -of GTiff foo1 foo2

Ich arbeite mit dem Landsat8-Band (wo keine Daten = 0 sind) und wenn -dstnodataich die Funktion benutze, bekomme ich:

BAND1 mit keinen Daten = ‚Keine Daten‘
Band2 (Alpha - Band) = ‚255‘ für das gesamte Szene / Ausmaß

während mit -srcnodataFunktion bekomme ich:

BAND1 mit keinen Daten = 'Keine Daten'
Band2 (alpha - Band) ohne data = 'Keine Daten' und gültige Daten = '255' , die für gültige Daten zu extrahieren Polygon ermöglicht dann nur.

Ich konnte den Grund für dieses Verhalten nicht vollständig verstehen (wie wird Alpha berechnet?), Aber ich hoffe, dass dies anderen helfen kann, die mit dem gleichen Problem konfrontiert sind.

Dorakiara
quelle