Mehr

Wie erstelle ich TFW-Dateien für eine Liste von Bildern?

Wie erstelle ich TFW-Dateien für eine Liste von Bildern?


Ich habe ein paar digitale Bilder, die nicht georeferenziert sind. Z.B.:

Bild01.tif Bild02.tif… Bild99.tif

Auf der anderen Seite habe ich eine Textdatei, die Georeferenzierungsinformationen für diese Bilder enthält. Beispiel: Ich habe eine Dateic: fwslist.txtdie folgende Informationen enthält:

Bild01.tfw 0,25 0 0 - 0,25 456258,125 4569852,125 Bild02.tfw 0,25 0 0 - 0,25 456586,125 4570001,125 Bild03.tfw 0,25 0 0 - 0,25 456952,125 4570300,125… Bild99.tfw 0,25 0 0 - 0,25 458412,125 4575123,125

Ich muss für jedes Bild in der Textdatei eine TFW-Datei generieren. Z.B. Erstellen Sie eine Datei namensC: fwsimg??.tfwmit folgenden Informationen:

0.25 0 0 -0.25 456258,125 4569852,125

Kennt jemand ein Tool, das diese TFW-Dateien automatisch generieren kann?


Es ist kein schöner Code, aber für Ihre speziellen Umstände ist hier eine Python, die es ersparen sollte, sie von Hand einzugeben:

f = open('list.txt', 'r') lines = f.readlines() für Zeile in Zeilen: lineparts = line.split() outfile = open(lineparts[0], 'w') für i in range(1, 4): outfile.write(lineparts[i] + '
') outfile.write(lineparts[4] + lineparts[5] + '
') für i in range(6, 8): outfile.write(Zeilenteile[i] + '
')

(echter Code würde die Gesundheit überprüfen, aber ich gehe davon aus, dass Sie die Ergebnisse überprüfen können)


AWK ist vielleicht das effektivste Werkzeug für eine solche Textkonvertierung (obwohl Sie es vielleicht aus Gewohnheit bevorzugen, wenn Sie mit Perl vertraut sind): Es wurde für genau diese einmalige schnelle Umformatierungsarbeit entwickelt.

Hier ist der vollständige AWK-Code, um die angeforderte Operation an der angegebenen Eingabe auszuführen:

BEGIN {OFS="
"} {Drucken Sie $2, $3, $4, $5 $6, $7, $8 > $1}

(Das Fehlen eines Kommas zwischen$5und$6ist kein Druckfehler: es verkettet das Minuszeichen-mit folgendem Wert0.25.)

Dies kann direkt in AWK eingegeben werden, aber es ist besser, es in eine Datei namens z.tfw.awk. Es würde dann von einer Kommandozeilen-Eingabeaufforderung aufgerufen werden wie

tfw list.txt

oder

awk -f tfw.awk list.txt

(wenn die Systemumgebung nicht so eingerichtet wurde, dass .awk-Dateien als ausführbare Dateien erkannt werden).

Es wird sofort ausgeführt und hinterlässt die angegebenen Dateien (und überschreibt sie, wenn sie bereits vorhanden sind).

Jedes Unix-System wird mit einer Kopie von AWK geliefert und es gibt eine kostenlose GNU-Version für Windows. Ich habe gerade die GNU-Distribution heruntergeladen und auf einer Windows 64-Workstation ausgeführt; es funktioniert gut.