Was ist das Binärformat von ENVI (Classic) ROIs?

11

Ich bin Pythonist in einem Büro voller ENVI / IDL-Benutzer. Ich habe einige Tools erstellt, um diese Lücke zu schließen, aber ein großer Stolperstein sind ENVI Classic .roi-Dateien, die meine Kollegen häufig verwenden.

Ich kann ENVI 5-ROIs problemlos in Python importieren, da das textbasierte Format leicht zu analysieren ist. Ich habe jedoch kein gutes Gespür für das Binärformat von ENVI Classic .roi-Dateien, die den Großteil des Datenaustauschs in meiner Gruppe ausmachen. Hat jemand Code, der diese Dateien liest oder schreibt, oder einen Einblick, wie man das machen könnte?

Es ist etwas mühsam, ENVI 5 jedes Mal zu starten, wenn ich hin und her gehen möchte - ich würde das Problem lieber an der Quelle lösen, wenn es möglich ist.

Daven Quinn
quelle

Antworten:

1

Ich bin kein Python-Experte, aber dies sollte relativ einfach sein, wenn Sie bereits Skripte schreiben, mit denen standardisierte ASCII-Dateien analysiert, gelesen und geschrieben werden können.

Laut Harris Geospatial Solutions sollte der aktuelle Entwickler von ENVI, ENVI-Binärbilddateien (hier beschrieben) aus der Binärdatei und einer ASCII-Headerdatei ( hier anhand eines Beispiels definiert) bestehen . Um eine ENVI-Bilddatei zu lesen, müssen Sie den ASCII-Header analysieren und auf den Datentyp (Integer, Float, Signed / Unsigned usw.), die Anzahl der Bänder und das Interleave (Band Sequential, Band-Interleaved-By-) zugreifen. Pixel oder Band-Interleaved-by-Line ), Bytereihenfolge und andere relevante Dateninformationen. Schauen Sie sich die Beschreibung des Header-Dateiformats und das oben verlinkte Beispiel genau an.

Nachdem Sie nun wissen, welche Teile der Binärdatei gleichzeitig gelesen werden sollen, in welcher Reihenfolge sie sich befinden und zu welchen Bändern sie gehören, können Sie die Bilddaten lesen .

Lanze
quelle
Werden ENVI-ROIs als Bilddateien gespeichert? Ich denke, sie haben laut Harris Geospatial "die gleiche räumliche Größe wie ihre übergeordneten Raster" , aber in der Benutzeroberfläche werden beim Ziehen halbe Pixel (diagonal halbiert) ausgewählt, um einen ROI zu erstellen. Es scheint also, als müsste dies ein sein Vektorformat irgendeiner Art, es sei denn, es gibt eine Art Zwei-Bit-Raster-Flag (um die Richtung des Dreiecks anzugeben). Wie auch immer, ich werde es versuchen, wie Sie vorschlagen, und sehen, wie weit ich komme!
Daven Quinn
Ich denke, die "ENVI-Binärbilddateien" sind ein Dateipaar, eine ohne Erweiterung und eine mit der Erweiterung ".hdr". Aber die .roi-Dateien scheinen in einem anderen Binärformat zu sein? Übrigens, wenn Sie nur die .hdr-Datei laden möchten, verwenden Sie dieses Python-Paket: spectralpython.net
MD004
Nein, ich suche definitiv nach einer Lösung, um die ROIs direkt zu lesen / schreiben, nicht nur die Header, die je nach Format mit zB GDAL gelesen werden können ...
Daven Quinn