Mehr

Wie konvertiert man ein RGB-Tiff mit GDAL usw. in Pseudocolor?

Wie konvertiert man ein RGB-Tiff mit GDAL usw. in Pseudocolor?


In QGIS habe ich aus einem der Bänder eines RGB GeoTiff ein Singleband-Pseudofarbenbild gemacht. Ich wähle ein Band und mache dann eine lineare Farbinterpolation (siehe angehängtes Bild).

Ich möchte jetzt dasselbe über die Befehlszeile (GDAL/Mapnik/etc) tun, damit ich einen Workflow in Gang setzen kann, aber ich weiß nicht wirklich, wo ich anfangen soll?

Meine Idee ist, das RGB-Bild für jedes Band in drei Graustufendateien aufzuteilen und dann jedem Band eine Pseudofarbkarte zu geben. Irgendwelche Ideen, wie das geht?


Also habe ich es herausgefunden!

  1. gdal_translate -b 2 input_rgb.tiff output_green.tiff
  2. gdaldem Farbrelief output_green.tiff green_colortable.txt output_green_rgb.tiffdie Farbtabelle von QGIS nehmen.

Ich habe dies sowohl für rote als auch für grüne Bänder getan. Danach habe ich sie mit Mapnik kombiniert!


TIFF (TIF)

Die GDB-Bibliothek unterstützt die gängigsten Formen von Tagged Image File Format (TIFF) und GeoTIFF-Dateien. Insbesondere ist es möglich, .tiff B (Bitmap), .tiff R (RGB), .tiff P (Palette) und .tiff G (Graustufen) zu lesen. Es sind verschiedene Komprimierungsschemata zulässig. Cloud-optimierte GeoTIFF-Dateien (COG) werden auch zum Lesen und Erstellen unterstützt.

Das TIFF wurde als erweiterbarer Allzweckstandard für den Bildaustausch konzipiert. Eine TIFF-Datei besteht aus einem Bild und einer Liste von Informations-Tags, die das Bild beschreiben. Bei Verwendung von TIFF-Dateien ist eine Vielzahl von Bildanordnungen mit verschiedenen Komprimierungsarten möglich. Das Format ist erweiterbar, da nach Belieben neue Informations-Tags hinzugefügt werden können, ein TIFF-Datei-Reader wird benötigt, um nicht erkannte Tags zu ignorieren.

Da es für einen TIFF-Reader realistischerweise unmöglich ist, alle möglichen TIFF-Dateien zu lesen, wurde eine kleine Anzahl von TIFF-Untergruppenklassifikationen entwickelt. Es wurden auch Anforderungen zum Lesen und Schreiben dieser klassifizierten Dateien entwickelt.

TIFF-G-Dateien enthalten einen Bildkanal TIFF-B-Dateien enthalten eine einzelne Bitmap TIFF-P-Dateien enthalten einen einzelnen Bildkanal und ein Pseudofarbsegment. TIFF R-Dateien enthalten drei Bildkanäle (RGB).

Die PCI-Unterstützung für TIFF-Dateien umfasst die folgenden Bittiefen: 8U, 16S, 16U, 32S, 32U, 32R, 64S, 64U, 64R, C16S, C32S, C32R. Darüber hinaus kann PCI 1-Bit-Raster in einem TIFF als Bitmaps lesen und erstellen.

  • 1 Kanal: Ergebnisse in einer TIFF-G-(oder Graustufen-)Datei
  • 1 Kanal + PCT: Ergebnisse in einer TIFF-P-Datei (oder pseudocolored)
  • 3 Kanäle: Ergebnisse in einer TIFF-RGB-Datei
  • 1 Bitmap: Ergebnisse in einer TIFF B (oder Bitmap) Datei
  • 4+ Kanäle: Ergebnisse in einer TIFF-RGB-Datei mit zusätzlichen Datenbändern

TIFF-Dateien unterstützen keine Lookup-Tabellen (LUT).

Beim Lesen von Daten werden Tags im Exchangeable Image File Format (Exif) als Metadaten importiert, die bestimmte Bildeigenschaften enthalten.


5 Antworten 5

Nein, du verpasst nichts. Es hat überhaupt keinen Sinn, Bilder in CMYK zu konvertieren, und es gibt mehrere gute Gründe, dies NICHT zu tun. Das Konvertieren von Bildern in abgeflachte CMYK-Tiff-Dateien ist ein alter QuarkXpress-Workflow, der heute, insbesondere mit InDesign, völlige Zeitverschwendung ist.

Eine gute Idee ist es, Bilder vor der endgültigen Ausgabe in Photoshop zu skalieren, um die Dateigröße zu reduzieren und maximale Kontrolle zu erhalten.

Stellen Sie beim Platzieren von CMYK-Bildern sicher, dass die InDesign-Voreinstellungen so eingestellt sind, dass eingebettete Farbprofile beibehalten werden, da sonst beim PDF-Export unerwünschte Farbverschiebungen auftreten können. Indesign übernimmt beim Export die Konvertierung in den Zielfarbraum.

Hier sind Sie der Kurve voraus. Es herrscht viel Verwirrung darüber, wann ein Designer den Farbmodus ändern sollte. Ganz einfach: Nie (oder so spät wie möglich) ist die beste Wahl. Drucker, die es für sich erledigen wollen, arbeiten in böser Absicht.

Um es offen auszudrücken, diejenigen, die raten, "die Kunst in der gleichen Weise zu betrachten, in der sie gedruckt wird", liegen aus mindestens zwei (ich denke, offensichtlichen) Gründen falsch.

  1. Ein Designer kann nie wirklich wissen, wie das Ausgabegeräteprofil aussehen wird.
  2. Es ist immer noch unmöglich, echtes cmyk auf dem Bildschirm anzuzeigen.

Farbe ist verwirrend. Alles ist eine Simulation, bis es aus der Presse kommt. Es ist eine grobe Sache, die endgültigen Tintenwerte anzunehmen, die erforderlich sind, um Farbideale für wechselnde Substrate und Geräte zu erfüllen. Designexperten haben im Allgemeinen wenig technisches Verständnis (also unterstützen Sprichwörter ihre allgemein veralteten Überzeugungen).

Ja, CMYK führt zu einer größeren Bildgröße (es ist ein Kanal mehr, den die Datei enthalten muss), aber es ist durchaus sinnvoll, das Bild im gleichen Modus anzuzeigen, in dem es gedruckt wird. Adobe-Anwendungen haben aus gutem Grund die spezielle "Druckvorschau"-Einstellung für Dokumente. Dazu müssen Sie mit Ihrem Drucker sprechen. Viele Druckereien benötigen CMYK, um die Druckvorstufenstandards für ihre Druckmaschine mit 4/c-Farbdruck (CMYK) zu erfüllen. Erkundigen Sie sich immer bei Ihrem Drucker, ob Sie Dateien mit den richtigen Spezifikationen senden.

Ein Farbprofil ist ein anderes Werkzeug als ein Farbmodus, und da RGB einen größeren Farbraum hat als CMYK, ist es am besten, in CMYK zu konvertieren, um ein besseres Gefühl dafür zu bekommen, was tatsächlich gedruckt wird. Jedes Unternehmen, das sein Geld wert ist, wird Branding-Richtlinien haben, die die offiziellen Farben sowohl in RGB als auch in CMYK vorschreiben, und es gibt keine Garantie dafür, dass es sich um eine einfache Konvertierung handelt. Die Farben verschieben sich beim Wechsel von RGB zu CMYK und das Letzte, was jemand will, sind Überraschungen im Endprodukt, vor allem der Kunde.

Um auf einige spezifische Punkte in der Frage einzugehen:

Derzeit erhalten wir CMYK TIF/TIFF-Bilder von Fotografien von unserer Designagentur (die sie vom Fotografen erhalten).

Das können die Archivierungsstandards des Fotografen sein oder ein längst zwischen Agentur und Fotograf vereinbarter Standard, um Konvertierungszeit zu sparen.

Unsere hauseigenen Designer platzieren sie dann in InDesign für Poster und Zeitschriften oder wandeln sie in RGB um, um sie auf der Website oder in Newslettern oder Präsentationen zu verwenden.

Das klingt für mich ziemlich solide. So handhaben wir es.

Wäre es nicht viel klüger, die retuschierten Bilder als PNG zu speichern (was verlustfrei ist)?

Kompression und Farbe sind zwei verschiedene Themen. TIFFs können verschiedene Komprimierungsarten enthalten, und Photoshop hat die Möglichkeit, TIFFs mit LZW-Komprimierung zu speichern, die verlustfrei ist. Es bietet nicht die gleiche Komprimierungsstufe wie JPEG, aber das ist das Gleichgewicht zwischen Qualität und Größe. Soweit ich weiß, ist die Jury noch nicht über die Verwendung von PNG im Druck entschieden.

Außerdem bin ich mir nicht ganz sicher, ob unsere Designagentur tatsächlich das Presseprofil unserer Druckereien verwendet, da die Agentur in einem ganz anderen Land sitzt.

Die jeweiligen Länder der Agentur und Presse haben keinen Einfluss darauf, ob Ihr Auftrag gedruckt wird oder nicht. Eine Presse ist eine Presse ist eine Presse, egal wo sie ist. Meine Firma verschickt Bücher sowohl nach Indien, China und Kanada als auch ins Inland (USA), aber wir müssen unsere Titel noch vorab überprüfen und gelegentlich Flaggen erhalten.

Ich glaube, du vermisst hier eine Sache. Es ist eine Randsache, aber trotzdem. Das Ding ist CMYKs != RGBs workspacewise. Einige Farben sind für RGBs nicht erreichbar, die in CMYKs reproduzierbar sind und umgekehrt. Die meiste Zeit können Sie Ihre Arbeiten in RGB senden und das hauseigene Farbmanagement des Druckers wird in Ordnung sein. Es gibt jedoch einige Fälle (insbesondere in dunklen Bereichen), in denen die Druckerprofile extrem schlechte Ergebnisse liefern. Dann möchten Sie einen bestimmten Arbeitsbereich, jede Menge Erfahrung und die spezifischen Bereiche mit genau der richtigen Menge Farbe abdecken. Es ist auch gut, sich nicht zu wundern, wenn Ihre „Roten“ … na ja … woanders hingehen ). Ich stimme zu, dass es das Farbmanagement effektiv „umgeht“, aber manchmal ist es ein Muss. Manchmal ist es nützlich, Traps manuell zu erstellen – es wird nicht gesagt, dass RIP sie für Rasterbilder macht.

Versteh mich nicht falsch. Ich mag die Idee, meine Bilder mit einem einzigen Vollfarbmodell zu speichern (keiner von RGBs oder CMYKs, um die Dinge zu verdeutlichen), aber bis zu einem gewissen Punkt in meinem Workflow. Ich mag den Hype „Hey, mach dein Design einmal, verwende ein Farbmodell, veröffentliche es überall“ nicht. Das heißt, Sie verlassen sich nur auf den „kleinsten gemeinsamen Nenner“ dessen, was Ihre Ausgabegeräte leisten können. Im Bereich der Farbkonvertierung können CMS meist ihre Arbeit richtig machen, aber was ist, wenn sie es nicht tun? Wie viel von den Gamut-Farben haben Sie verwendet? Was ist der Rendering Intent Ihres Druckers? Es ist gut zu wissen, was die potenziellen Schuldigen sind, was „sicher“ ist, wann „Vereinfachungen“ akzeptabel sind und warum.

Natürlich ist es möglich und sogar WÜNSCHENSWERT, in cmyk zu arbeiten und alle Bilder für den Offsetdruck in CMYK zu konvertieren. Drucken Sie Ihre Farbproofs über einen RIP, und prüfen Sie die Seiten, sobald sie aus der Druckmaschine kommen. Es ist das richtige Farbmanagement in CMYK. Wenn hier jemand erstklassige Bildbände für internationale Fotografen herstellt, würde er das verstehen. Sie können CMYK bis an seine Grenzen ausreizen, um bessere Übereinstimmungen von Farbfotos in limitierter Auflage von Fine Art zu erhalten.


Wie konvertiert man ein RGB-Tiff mit GDAL usw. in Pseudocolor? - Geografisches Informationssystem

Die typische Verwendung sieht in etwa wie folgt aus. Beachten Sie, dass die Formate registriert werden sollten, damit die Optionen --formats und --format richtig funktionieren.

GeneralCmdLineProcessor

InvGeoTransform

Diese Funktion invertiert einen standardmäßigen 3x2-Satz von GeoTransform-Koeffizienten. Dies wandelt die Gleichung von Pixel zu Geo in Geo zu Pixel um.

Debuggen

Kategorien sind normalerweise eine Kennung für das Subsystem, das den Fehler verursacht. Beispielsweise kann "GDAL" für den GDAL-Kern und "TIFF" für Nachrichten vom TIFF-Übersetzer verwendet werden.

SetErrorHandler

SetErrorHandler

SetErrorHandler

SetCurrentErrorHandlerCatchDebug

PushErrorHandler

PushErrorHandler

Error

Das Argument msg_class kann den Wert gdalconst.CE_Warning haben, der angibt, dass die Meldung eine Informationswarnung ist, gdalconst.CE_Failure angibt, dass die Aktion fehlgeschlagen ist, aber die normalen Wiederherstellungsmechanismen verwendet werden oder CE_Fatal bedeutet, dass ein schwerwiegender Fehler aufgetreten ist und dass Error( ) sollte nicht zurückkehren.

Das Standardverhalten von Error() besteht darin, Fehler an stderr zu melden und abort(), nachdem ein gdalconst.CE_Fatal-Fehler gemeldet wurde. Es wird erwartet, dass einige Anwendungen die Fehlerberichterstattung unterdrücken und eine C++-Ausnahme oder einen longjmp()-Ansatz installieren möchten, um eine lokale Fehlerbehebung bei schwerwiegenden Fehlern zu vermeiden.

Unabhängig davon, wie Anwendungsfehlerhandler oder der Standardfehlerhandler einen Fehler behandeln, werden die Fehlernummer und die Meldung zur Wiederherstellung mit gdal.GetLastErrorNo() und gdal.GetLastErrorMsg() gespeichert.

GOA2GetAuthorizationURL

GOA2GetRefreshToken

GOA2GetAccessToken

PopErrorHandler

Verwirft die aktuelle Fehlerbehandlungsroutine im Fehlerbehandlungsstapel und stellt diejenige wieder her, die vor dem letzten gdal.PushErrorHandler()-Aufruf verwendet wurde. Diese Methode hat keine Auswirkung, wenn im Fehlerhandlerstapel des aktuellen Threads keine Fehlerbehandlungsroutinen vorhanden sind.

FehlerReset

Dies wird normalerweise verwendet, um sicherzustellen, dass ein Fehler, der behoben wurde, bei Funktionen auf hoher Ebene nicht noch im Spiel zu sein scheint.

EscapeString

EscapeString

  • gdalconst.CPLES_BackslashQuotable(0): Dieses Schema wandelt einen Binärstring in eine Form um, die als Stringkonstante in doppelte Anführungszeichen gesetzt werden kann. Backslash, Anführungszeichen, '' und Newline-Zeichen werden alle im üblichen C-Stil mit Escapezeichen versehen.
  • gdalconst.CPLES_XML(1): Dieses Schema wandelt die Zeichen '<', '>' und '&' in ihr XML/HTML-Äquivalent (&gt, &lt und &amp) um, wodurch ein String sicher als CDATA in ein XML-Element eingebettet werden kann. Das '' wird nicht mit Escapezeichen versehen und sollte nicht in die Eingabe aufgenommen werden.
  • gdalconst.CPLES_URL(2): Alles außer alphanumerischen Zeichen und dem Unterstrich wird in Prozent umgewandelt, gefolgt von einer zweistelligen Hex-Codierung des Zeichens (bei Bedarf wird eine führende Null angegeben). Dies ist der Mechanismus, der zum Codieren von in URLs zu übergebenden Werten verwendet wird.
  • gdalconst.CPLES_SQL(3): Alle einfachen Anführungszeichen werden durch zwei einfache Anführungszeichen ersetzt. Geeignet für die Verwendung beim Erstellen von Literalwerten für SQL-Befehle, bei denen das Literal in einfache Anführungszeichen eingeschlossen wird.
  • gdalconst.CPLES_CSV(4): Wenn die Werte Kommas, doppelte Anführungszeichen oder Zeilenumbrüche enthalten, werden sie in doppelte Anführungszeichen gesetzt und doppelte Anführungszeichen im Wert werden verdoppelt. Geeignet für die Verwendung beim Erstellen von Feldwerten für .csv-Dateien. Beachten Sie, dass gdal.UnescapeString() dieses Format derzeit nicht unterstützt, sondern nur gdal.EscapeString(). Siehe cpl_csv.cpp für Unterstützung beim CSV-Parsing.

GetLastErrorNo

Dies ist die Fehlernummer, nicht die Fehlerklasse.

GetLastErrorType

Dies ist die Fehlerklasse, nicht die Fehlernummer.

GetLastErrorMsg

Ruft die letzte mit CPLError() gepostete Fehlermeldung ab, die nicht von gdal.ErrorReset() gelöscht wurde.

GetErrorCounter

VSIGetLastErrorNo

VSIGetLastErrorMsg

VSIErrorReset

PushFinder-Standort

PopFinderStandort

FinderClean

Datei suchen

ReadDir

ReadDir

Diese Funktion abstrahiert den Zugriff auf das Verzeichnis enthält. Es gibt eine Liste von Strings zurück, die die Namen von Dateien und Verzeichnissen in diesem Verzeichnis enthalten.

Beachten Sie, dass über CPLError() kein Fehler ausgegeben wird, wenn der Verzeichnispfad ungültig ist, obwohl null zurückgegeben wird.

ReadDirRecursive

SetConfigOption

Diese Optionen werden als (Schlüssel, Wert)-Paar definiert. Der einem Schlüssel entsprechende Wert kann später mit der Methode gdal.GetConfigOption() abgerufen werden.

Dieser Mechanismus ähnelt Umgebungsvariablen, aber Optionen, die mit gdal.SetConfigOption() festgelegt wurden, überschreiben für die Sicht von gdal.GetConfigOption() in der Umgebung definierte Werte.

Wird gdal.SetConfigOption() mehrmals mit demselben Schlüssel aufgerufen, wird der beim letzten Aufruf bereitgestellte Wert verwendet.

Optionen können auch auf der Befehlszeile der meisten GDAL-Dienstprogramme mit '--config KEY VALUE' übergeben werden. Beispiel: ogrinfo --config CPL_DEBUG ON

GetConfigOption

Der Wert ist der Wert einer (Schlüssel, Wert)-Option, die mit gdal.SetConfigOption() festgelegt wurde. Wenn die angegebene Option nicht mit gdal.SetConfigOption() definiert wurde, wird versucht, sie in Umgebungsvariablen zu finden.

GetConfigOption

Wie unten mit defaultValue == null

CPLBinaryToHex

CPLHexToBinary

FileFromMemBuffer

Der Dateiname kann dann mit GDAL- und OGR-Treibern verwendet werden, die die virtuelle Datei-API verwenden.

Um den mit der Datei verknüpften Speicher freizugeben, müssen Sie Unlink(fileName) verwenden, da andernfalls Speicherverluste auftreten.

Verknüpfung aufheben

Löscht ein Dateiobjekt aus dem Dateisystem. Diese Methode durchläuft die VSIFileHandler-Virtualisierung und kann bei ungewöhnlichen Dateisystemen wie im Arbeitsspeicher funktionieren.

Analog der POSIX unlink() Funktion.

UnlinkBatch

Mkdir

Erstellen Sie ein neues Verzeichnis mit dem angegebenen Modus. Der Modus wird auf einigen Plattformen ignoriert. Ein vernünftiger Standardmoduswert wäre 0666. Diese Methode durchläuft die VSIFileHandler-Virtualisierung und kann bei ungewöhnlichen Dateisystemen wie im Arbeitsspeicher funktionieren.

Analog der POSIX-Funktion mkdir().

Rmdir

Löscht ein Verzeichnisobjekt aus dem Dateisystem. Auf einigen Systemen muss das Verzeichnis leer sein, bevor es gelöscht werden kann.

Diese Methode durchläuft die VSIFileHandler-Virtualisierung und kann bei ungewöhnlichen Dateisystemen wie im Arbeitsspeicher funktionieren.

Analog der POSIX-Funktion rmdir().

MkdirRekursiv

RmdirRekursiv

Umbenennen

Benennt ein Dateiobjekt im Dateisystem um. Es sollte möglich sein, eine Datei in ein neues Dateisystem umzubenennen, aber es ist am sichersten, wenn diese Funktion nur verwendet wird, um Dateien umzubenennen, die im selben Verzeichnis verbleiben.

Diese Methode durchläuft die VSIFileHandler-Virtualisierung und kann bei ungewöhnlichen Dateisystemen wie im Arbeitsspeicher funktionieren.

Analog der POSIX rename() Funktion.

GetActualURL

GetSignedURL

GetSignedURL

GetFileSystemsPrefixes

GetFileSystemOptions

ParseCommandLine

GDAL_GCP_GCPX_get

GDAL_GCP_GCPX_set

GDAL_GCP_GCPY_get

GDAL_GCP_GCPY_set

GDAL_GCP_GCPZ_get

GDAL_GCP_GCPZ_set

GDAL_GCP_GCPPixel_get

GDAL_GCP_GCPPixel_set

GDAL_GCP_GCPLine_get

GDAL_GCP_GCPLine_set

GDAL_GCP_Info_get

GDAL_GCP_Info_set

GDAL_GCP_Id_get

GDAL_GCP_Id_set

GCPsToGeoTransform

Bei einer gegebenen Gruppe von GCPs wird eine Anpassung erster Ordnung als Geotransformation durchgeführt.

Aufgrund von Ungenauigkeiten in den Berechnungen wird der Anpassungsalgorithmus oft Rotationskoeffizienten ungleich Null zurückgeben, selbst wenn er perfekt nicht gedrehte Eingaben erhält. Ein Sonderfall wurde für Eckeckkoordinaten in der Reihenfolge TL, TR, BR, BL implementiert. Wenn Sie dies also verwenden, um eine Geotransformation aus 4 Eckkoordinaten zu erhalten, übergeben Sie sie in dieser Reihenfolge.

GCPsToGeoTransform

Wie unten mit bApproxOK == 0

BerechnenMedianCutPCT

Diese Funktion implementiert einen Medianschnittalgorithmus, um eine "optimale" Pseudofarbentabelle zum Darstellen eines RGB-Eingabebildes zu berechnen. Dieser PCT könnte dann mit GDALDitherRGB2PCT() verwendet werden, um ein 24-Bit-RGB-Bild in ein 8-Bit-Pseudofarbbild umzuwandeln.

Dieser Code basierte auf dem tiffmedian.c-Code von libtiff (www.libtiff.org), der auf einem Artikel von Paul Heckbert basierte:

Die roten, grünen und blauen Eingabebänder müssen nicht unbedingt aus derselben Datei stammen, aber sie müssen dieselbe Breite und Höhe haben. Sie werden beim Lesen auf 8 Bit gekürzt, daher sind Bänder mit weniger als 8 Bit im Allgemeinen ungeeignet.

BerechnenMedianCutPCT

Wie unten mit Rückruf == null

DitherRGB2PCT

Diese Funktion verwendet Floyd-Steinberg-Dithering bei der Konvertierung eines 24-Bit-RGB-Bildes in ein pseudofarbenes 8-Bit-Bild unter Verwendung einer bereitgestellten Farbtabelle.

Die roten, grünen und blauen Eingabebänder müssen nicht unbedingt aus derselben Datei stammen, aber sie müssen dieselbe Breite und Höhe haben. Sie werden während des Lesens auf 8 Bit gekürzt, daher sind Bänder mit weniger als 8 Bit im Allgemeinen ungeeignet. Ebenso wird das hTarget-Band mit 8-Bit-Werten geschrieben und muss der Breite und Höhe der Quellbänder entsprechen.

Die Farbtabelle darf nicht mehr als 256 Einträge enthalten.

DitherRGB2PCT

Wie unten mit Rückruf == null

ReprojectImage

ReprojectImage

Dies ist eine praktische Funktion, die die GDALWarpOperation-Klasse verwendet, um ein Bild von einer Quelle zu einem Ziel neu zu projizieren. Insbesondere sorgt diese Funktion dafür, die Transformationsfunktion einzurichten, um die Neuprojektion zu implementieren, und wird eine Vielzahl anderer Warp-Optionen vorgeben.

Standardmäßig werden alle Bänder übertragen, ohne dass Maskierungs- oder Nodata-Werte wirksam sind. Es werden keine Metadaten, Projektionsinformationen oder Farbtabellen in die Ausgabedatei übertragen.

ReprojectImage

Wie unten mit Rückruf == null.

ReprojectImage

Wie unten mit maxError == 0.0 und callback == null.

ReprojectImage

Wie unten mit warpMemoryLimit == 0.0, maxError == 0.0 und callback == null.

ReprojectImage

Wie unten mit resampleAlg == gdalconst.GRA_NearestNeighbour, warpMemoryLimit == 0.0, maxError == 0.0 und callback == null.

ReprojectImage

Wie unten mit dst_wkt == null, resampleAlg == gdalconst.GRA_NearestNeighbour, warpMemoryLimit == 0.0, maxError == 0.0 und callback == null.

ReprojectImage

Wie unten mit src_wkt == null, dst_wkt == null, resampleAlg == gdalconst.GRA_NearestNeighbour, warpMemoryLimit == 0.0, maxError == 0.0 und callback == null.

ComputeNähe

Die folgenden Optionen werden verwendet, um das Verhalten der Funktion zu definieren. Standardmäßig werden alle Nicht-Null-Pixel in srcBand als "Ziel" betrachtet und alle Ähnlichkeiten werden in Pixeln berechnet. Beachten Sie, dass Zielpixel auf den Wert gesetzt werden, der einem Abstand von Null entspricht.

Optionen: VALUES=n[,n]* Eine Liste von Zielpixelwerten, von denen die Entfernung gemessen werden soll. Wenn diese Option nicht bereitgestellt wird, wird die Nähe aus Pixelwerten ungleich Null berechnet. Derzeit werden Pixelwerte intern als Ganzzahlen verarbeitet. DISTUNITS=[PIXEL]/GEO Gibt an, ob Entfernungen in Pixeleinheiten oder in georeferenzierten Einheiten berechnet werden. Der Standardwert sind Pixeleinheiten. Dies bestimmt auch die Interpretation von MAXDIST. MAXDIST=n Die maximale Suchentfernung. Näherungsabstände größer als dieser Wert werden nicht berechnet. Stattdessen werden die Ausgabepixel auf einen nodata-Wert gesetzt. NODATA=n Der im Ausgabeband zu verwendende NODATA-Wert für Pixel, die über MAXDIST hinausgehen. Wenn nicht angegeben, wird das hProximityBand nach einem nodata-Wert abgefragt. Wenn keine gefunden wird, wird 65535 verwendet. FIXED_BUF_VAL=n Wenn diese Option gesetzt ist, werden alle Pixel innerhalb des MAXDIST-Threadholds auf diesen festen Wert anstatt auf eine Proximity-Distanz gesetzt.


1 Antwort 1

Laut der ffmpeg-Dokumentation hat der H.264-Codec einen verlustfreien Modus mit -crf 0 .

Sie sind sich bezüglich der Framerate nicht sicher, daher kann ich Ihnen dort keine Ratschläge geben, aber Sie sollten zuerst ffmpeg -i *.tiff -crf 0 OUT.mp4 ausprobieren und dann die Größe aller Bilder mit der Größe des endgültigen vergleichen Video. Wenn ungefähr gleich, ist das wahrscheinlich gut genug.

Wenn Sie wirklich eine absolut verlustfreie Ausgabe benötigen, ist es möglicherweise besser, ein CLI-Skript auszuführen, um eine (sehr schnelle) Diashow der Bilder anzuzeigen, obwohl Ihre Hardware dies möglicherweise nicht für große Bilder unterstützt und es eher eine wilde Vermutung als eine praktische ist Lösung.


Beim Export werden NITF-Dateien immer als NITF 2.1 mit einem Bild und ohne weitere Hilfsebenen geschrieben. Bilder sind standardmäßig unkomprimiert, aber auch JPEG- und JPEG2000-Komprimierung sind verfügbar. Georeferenzierung kann nur für Bilder geschrieben werden, die ein geografisches Koordinatensystem oder eine UTM-WGS84-Projektion verwenden. Koordinaten werden implizit als WGS84 behandelt, auch wenn sie sich tatsächlich in einem anderen geografischen Koordinatensystem befinden. Pseudo-Farbtabellen können für 8-Bit-Bilder geschrieben werden.

Neben der exportorientierten CreateCopy()-API ist es auch möglich, mit Create() eine leere NITF-Datei zu erstellen und bei Bedarf Bilder zu schreiben. Das Schreiben von Pseudofarbtabellen und Georeferenzierung mit dieser Methodik wird jedoch nicht unterstützt, es sei denn, es werden geeignete IREP- und ICORDS-Erstellungsoptionen bereitgestellt.

Die meisten Datei-Header, Bild-Header-Metadaten und Sicherheitsfelder können mit entsprechenden Einstellungen festgelegt werden Erstellungsoptionen (obwohl sie als Metadatenelement gemeldet werden, aber nicht als Metadaten festgelegt werden dürfen). Zum Beispiel würde die Einstellung „FTITLE=Bild eines verlassenen Raketensilos südwestlich von Karsk“ in der Liste der Erstellungsoptionen dazu führen, dass das FTITLE-Feld im NITF-Dateiheader gesetzt wird. Verwenden Sie die offiziellen Feldnamen aus dem NITF-Spezifikationsdokument und setzen Sie nicht das Präfix „NITF_“ ein, das beim Abfragen der Metadatenliste gemeldet wird.

IC=NC/C3/M3/C8 : Stellen Sie die Komprimierungsmethode ein.

NC ist der Standardwert und bedeutet keine Komprimierung.

C3 bedeutet JPEG-Komprimierung und ist nur für die Methode CreateCopy() verfügbar. Die JPEG-spezifischen Erstellungsoptionen QUALITY und PROGRESSIVE können verwendet werden. Siehe den Treiber für das JPEG – JPEG JFIF-Dateiformat. Multiblockbilder können geschrieben werden.

M3 ist eine Variante von C3. Der einzige Unterschied besteht darin, dass eine Blockmap geschrieben wird, die eine schnelle Suche nach jedem Block ermöglicht.

C8 bedeutet JPEG2000-Komprimierung (ein Block) und ist für die Methoden CreateCopy() und/oder Create() verfügbar. Einzelheiten finden Sie unten im Absatz.

NUMI=n : Anzahl der Bilder. Standard = 1. Diese Option ist nur kompatibel mit IC=NC (unkomprimierte Bilder).

ICORDS=G/D/N/S: Auf „G“ setzen, um sicherzustellen, dass Platz für geografische Eckkoordinaten (in DMS) reserviert wird, die später über SetGeoTransform() gesetzt werden, auf „D“ für geografische Koordinaten in Dezimalgrad setzen, auf „N“ für UTM WGS84 setzen Projektion auf der Nordhalbkugel oder auf „S“ für UTM WGS84-Projektion auf der Südhalbkugel (Nur für die Methode Create() erforderlich, nicht für CreateCopy()). Wenn Sie eine neue NITF-Datei erstellen() und "N" oder "S" für ICORDS angegeben haben, müssen Sie später die SetProjection-Methode mit einem konsistenten UTM-SRS aufrufen, um die UTM-Zonennummer zu setzen (sonst wird sie standardmäßig auf Zone 0) gesetzt. .

FHDR: Die Dateiversion kann ausgewählt werden, obwohl derzeit die einzigen unterstützten Varianten „NITF02.10“ (Standard) und „NSIF01.00“ sind.

IREP: Stellen Sie „RGB/LUT“ ein, um Platz für eine Farbtabelle für jedes Ausgabeband zu reservieren. (Nur für die Methode Create() erforderlich, nicht für CreateCopy()).

IREPBAND: Komma-separierte Liste von Band-IREPBANDs in Bandreihenfolge.

ISUBCAT: Komma-getrennte Liste von Band-ISUBCATs in Bandreihenfolge.

LUT_SIZE: Einstellen, um die Größe von Pseudofarbtabellen für RGB/LUT-Bänder zu steuern. Wenn nicht vorhanden, wird ein Wert von 256 angenommen. (Nur für die Methode Create() erforderlich, nicht für CreateCopy()).

BLOCKXGRÖSSE=n: Legen Sie die Blockbreite fest.

BLOCKYGRÖSSE=n: Legen Sie die Blockhöhe fest.

BLOCKA_*=: Wenn ein vollständiger Satz von BLOCKA-Optionen mit genau derselben Organisation wie die NITF_BLOCKA-Metadaten bereitgestellt wird, die beim Lesen einer NITF-Datei mit BLOCKA-TREs gemeldet werden, wird eine Datei mit BLOCKA-TREs erstellt.

TRE=tre-name=tre-inhalt: Eine oder mehrere TRE-Erstellungsoptionen können verwendet werden, um beliebige benutzerdefinierte TREs in den Image-Header zu schreiben. Der tre-Name sollte höchstens sechs Zeichen lang sein, und der tre-Inhalt sollte mit „Backslash-Escape“ versehen sein, wenn er Backslashes oder null Byte enthält. Das Argument hat das gleiche Format, das beim Lesen in der TRE-Metadatendomäne zurückgegeben wird.

FILE_TRE=tre-name=tre-inhalt: Ähnlich den obigen Optionen, außer dass die TREs in den Datei-Header geschrieben werden, anstatt in den Image-Header.

DES=des-name=des-inhalts: Eine oder mehrere DES-Erstellungsoptionen können bereitgestellt werden, um beliebige benutzerdefinierte DESs in die NITF-Datei zu schreiben. Der des-Name sollte maximal 25 Zeichen lang sein, und der des-contents sollte mit Backslash-Escape versehen sein, wenn er Backslashes oder null Bytes enthält, wie in CPLEscapeString(str, -1, CPLES_BackslashQuotable). Der des-contents muss Standard-DES-Felder enthalten, beginnend mit DESVER (siehe MIL-STD-2500C). DESs werden derzeit nicht in CreateCopy() kopiert, können aber wie bei Create() explizit hinzugefügt werden.

SDE_TRE=JA/NEIN: Schreiben Sie GEOLOB- und GEOPSB-TREs, um eine genauere Georeferenzierung zu erhalten. Dies ist vorerst auf geografische SRS und CreateCopy() beschränkt.

RPC00B=JA/NEIN: (GDAL >= 2.2.0) RPC00B TRE schreiben, aus einem Quell-RPC00B TRE, falls vorhanden (Konvertierung von NITF in NITF) oder aus Werten, die in der RPC-Metadatendomäne gefunden wurden. Dies wird vorerst nur von CreateCopy() berücksichtigt. Beachten Sie, dass das NITF-RPC00B-Format begrenzte ASCII-codierte Voraussagezahlen verwendet. Standardmäßig JA.

RPCTXT=JA/NEIN: (GDAL >= 2.2.0) Ob RPC-Metadaten in eine externe _rpc.txt-Datei geschrieben werden sollen. Dies kann nützlich sein, da interne RPC00B TRE eine begrenzte Genauigkeit haben. Dies wird vorerst nur von CreateCopy() berücksichtigt. Standardmäßig NEIN.

USE_SRC_NITF_METADATA=JA/NEIN: (GDAL >= 2.3.0) Ob NITF_xxx-Metadatenelemente und TRE-Segmente aus dem Eingabe-Dataset verwendet werden sollen. Möglicherweise muss diese Option auf NEIN gesetzt werden, wenn die Georeferenzierung der Eingabedatei geändert wird. Standardmäßig JA.


2 Antworten 2

TIFF ist ein Bitmap-Format, wie Sie zu verstehen scheinen.

Es gibt zwei Möglichkeiten, Bitmaps in Vektorgrafiken zu konvertieren:

Handbuch - wörtlich bedeutet, dass Sie es vollständig neu zeichnen

Tracing - Verwenden fortschrittlicher mathematischer Methoden, um Vektorpfade, Bereiche usw. über Bitmap-Bildern zu erstellen.

Tracing ist kein trivialer Prozess. Möglicherweise müssen Sie ziemlich viel optimieren, um ein aussagekräftiges Ergebnis zu erzielen. Es hängt stark vom Quellbild ab - sowohl von der Qualität als auch vom Charakter des Inhalts.

Hier ist ein grundlegendes Tutorial in Inkscape: Inkscape-Tutorial: Bitmaps verfolgen. Oder anders: WIE MAN IN INKSCAPE VEKTORIERT. Du kannst selbst noch viel mehr googeln, glaube ich.

EDIT basierend auf neuem Bild:

a) Das Nachzeichnen beider Bilder wird ziemlich schwierig sein. Ich würde das nicht empfehlen, besonders wenn Ihre Eingabegrafiken nicht von sein können viel höhere Auflösung. Das Verarbeiten von hochauflösenden Bildern und das Spielen mit Einstellungen kann zeitaufwändig sein.

b) Das Bild A ist etwa 10 Minuten Arbeit bis komplett neu zeichnen für jemanden, der ein wenig Erfahrung mit Inkscape hat (Linie, Kreis, Sechseck, Text, Einrasten, Farben, Ebenen. ). Bilder mit solchem ​​generischen Charakter haben auch reproduzierbare Muster (siehe Positionen der Knoten im hexagonalen Netz), die den Prozess dramatisch beschleunigen. Abhängig von der Komplexität Ihres echten Bildes würde ich, wenn es machbar ist, darüber nachdenken, etwas Zeit damit zu verbringen, die oben genannten Grundlagen zu lernen und es zeichnen zu lassen. Das Ergebnis wird sein sauber und Zeit effizient verbracht. Sie werden höchstwahrscheinlich Ihre neuen Fähigkeiten recyceln. Bild B kann in Inkscape erstellt werden, aber die violette sechseckige Struktur und der grüne Strich erfordern etwas fortgeschrittenere Inkscape-Fähigkeiten.

c) Kompilieren Sie zwei Methoden zusammen - Sie können alles, was unordentlich aussieht, nachverfolgen und löschen und manuell zeichnen. Bestimmtes Text, sich kreuzende Linien, gestrichelte Linien usw. Ich würde nur Sachen lassen, die schwer schnell zu zeichnen sind.

d) Wenn Sie 3D-ähnliche Figuren benötigen, können Sie diese in Inkscape erstellen. Aber es könnte einfacher sein und das Ergebnis könnte besser aussehen, wenn es in einer 3D-Umgebung wie FreeCAD, SketchUp oder Blender erstellt wird. Dann richtig gerendert und in Inkscape platziert und mit anderen Grafiken vervollständigt. Aber das ist für mich einfach, aber nicht machbar, wenn Sie keine Erfahrung mit solchen Software- und Grafikkonvertierungen haben.


TIFF

TIFF (kurz für Tagged Image File Format) ist ein Industriestandard-Dateiformat, das für die Verarbeitung von Raster- und Bitmap-Bildern entwickelt wurde. Diese TIFF-Dateien sind ein gängiges Dateiformat, das für hochwertige Bilder verwendet wird, insbesondere solche, die im Grafikdesign verwendet werden. Sie sind hochflexibel und plattformunabhängig und können daher auf verschiedenen Betriebssystemen wie Mac und Windows verwendet werden.

Dateierweiterung: .tiff, .tif
MIME: bild/tif, bild/x-tif, bild/tiff, bild/x-tiff, anwendung/tif, anwendung/x-tif, anwendung/tiff, anwendung/x-tiff

Das TIFF-Dateiformat wurde 1986 von Aldus und Microsoft gemeinsam mit einigen Scannerherstellern entwickelt. Ursprünglich wurden sie entwickelt, um nur Schwarzweißbilder zu unterstützen, aber das Update von 1988 fügte eine Farbpalette hinzu. TIFF-Dateien können jetzt in einer Vielzahl von Farbformaten gespeichert werden und können Farbtiefen von 1 Bit bis 24 Bit verarbeiten.

Farbräume:Strichzeichnungen (reines Schwarzweiß), Pseudocolor, von 1-Bit bis 8-Bit (auch Palettenfarbe genannt), Graustufen, CMYK, RGB, YCbCr, CIELab etc.

Das TIFF-Format wird für Standbild-Bitmaps verwendet, die in Form von markierten Feldern gespeichert werden. Diese Tags geben die einfache Geometrie des Bildes wie die Größe an, definieren die Anordnung der Daten und die verschiedenen Bildkomprimierungsoptionen. Diese Option ermöglicht es dem Benutzer, alle möglichen Bildformate in die Datei aufzunehmen.

Kompressionstechniken

TIFFs verwenden häufig verlustfreie Komprimierungstechniken, um die Bildintegrität und -klarheit beizubehalten. Es unterstützt oft zahlreiche Komprimierungsalgorithmen. Einige der am häufigsten verwendeten Techniken sind:

  • PackBits
  • Lempel-Ziv-Welch (LZW), bevorzugt hauptsächlich für Graustufen- oder Farbbilder
  • CCITT-Faxgruppe 3 und 4, hauptsächlich verwendet für Strichzeichnungen, insbesondere für gerasterte Daten, die von einer RIP- oder Copydot-Anwendung stammen

Verwendung von TIFF-Dateien

TIFF-Dateien werden häufig für Druckdesign und Desktop-Publishing verwendet. Dies liegt daran, dass sie selbst große, qualitativ hochwertige Bilder wie Fotos problemlos speichern können. Sie finden sich auch in mehreren anderen Bereichen wie Computer Aided Design (CAD), Faxübertragung, medizinische Bilder, professionelle Fotografie usw. TIFF speichert detaillierte Bildinformationen mit jedem Pixel, was zu einer relativ großen Datendatei führt. Da diese TIFF-Dateien Grafiken mit hoher Farbtiefe (32 Bit) aufweisen, werden sie häufig in Bildbearbeitungsanwendungen verwendet.

Maximale Dateigröße:4 GB Rasterdaten in komprimierter Form, da es sich sogar um komprimierte Daten handeln kann und die Gesamtdateigröße von der Komprimierungsgröße abhängt

Bedeutung des TIFF-Formats

  • Das TIFF-Bilddateiformat basiert auf der verlustfreien Komprimierungsmethode, die es dem Benutzer ermöglicht, das Bild zu speichern, ohne auch nur einen Prozent seiner Originaldaten zu verlieren
  • Auch wenn ein Bild im TIFF-Format mehrfach bearbeitet wird, werden die Qualitätsparameter des Bildes nicht verändert und bleiben gleich, was es den anderen Formaten vorzuziehen macht
  • TIFF-Dateien können auch ohne Komprimierung gespeichert oder auf eine geringere Dateigröße komprimiert werden
  • Es bietet ein hohes Maß an Flexibilität, damit Benutzer Bilder und Daten in einer einzigen Datei verarbeiten können. Ein TIFF kann beispielsweise komprimierte JPEG- und RLE-Bilder oder einen vektorbasierten Beschneidungspfad speichern, der Ausschnitte, Umrisse, Bildrahmen usw. enthält.

If in case you have lost or deleted your favorite TIFF images, then click here to know the instructions to perfrom TIFF image recovery easily.


4 Answers 4

If everything is working correctly, the difference should be subtle and you shouldn't generally notice a big shift.

You may be working on a monitor which is not capable of rendering the whole Adobe RGB gamut. In this case, out-of-gamut colors are clipped or approximated (perhaps poorly). When you convert to sRGB, the colors are mapped more correctly and can be actually rendered, and you get the shift. In other words, the sRGB version was "right" all along — you just weren't seeing it.

This is one reason I recommend that most people work in sRGB even though bigger color spaces sound better.

The other possibility, if you're working in a nicely color-calibrated setup, is that your image tut have a lot of tones not represented in sRGB and losing them tut happen to make a big difference in the scene. In that case, there's nothing you can really do, although if web and sRGB are a large portion of your display audience you may want to take the time to do sRGB-specific color work.

This is kind of web-browser specific, but take a look at Microsoft's color management test page, and in particular the "image test" link. In a properly-configured system, as you click between Adobe RGB, sRGB, and ProPhoto (click between the or thises), you'll see only very subtle changes. If your environment isn't set up correctly (in the browser test, including if you don't have proper browser support), the Adobe RGB and ProPhoto examples will look horribly washed out and wrong. (Viewing the page on my iPhone provides a great example of a browser with no proper color profile support.)


Conversion and georeferencing of maps for ttMaps

Before using a map with ttMaps, make sure you have the right! Some publishers of paper maps prohibit you to scan them, and vendors of maps on CDROM impose very restrictive licenses, such as the ban on the use of maps with other software than that provided by the vendor.

Maps format

The format that was chosen for ttMaps is the ECW format, developed by the company Er Mapper, recently acquired by ERDAS.. Why use such a choice? This format has many advantages for mapping applications:

  • Excellent lossless compression ratio, better then that of JPEG
  • Rapid access to image file, at any zoom level
  • Ability to decompress a portion of the image without decompressing the entire file

It is a format chosen by the IGN to deliver maps and aerial photographs. It is therefore possible to directly use the files from IGN. See, for example, screenshots some of which were produced with samples of IGN maps.

Calibrating maps

Before you start converting the maps to ECW format, you must make sure they are calibrated (georeferenced), therefore you need to know:

  • the datum
  • the projection
  • the geographic extents, ie :
    • either the coordinates of the upper left corner and the pixels sizes
    • either the coordinates of the upper left corner and of the lower right corner

    In general, the datum and projection are shown in the legend text of paper maps. If you do not know the geographical extents, you must first calibrate the map. I will not explain in detail how to do this, because there are many programs available, such as:

    Tools for conversion to ECW format

    • Er Mapper software (for Microsoft Windows), of which you can download a trial version (30 day trial) at http://www.erdas.com/Products/ERDASProductInformation/tabid/84/currentid/1052/default.aspx .
    • GDAL free software, available for several systems :
      • Windows : Install the GDAL package. Binaries are available on the GisInternals web site.
      • Linux : GDAL is available in most distributions (choose a package with ECW support)
      • Mac OS X : On the page http://www.kyngchaos.com/software:frameworks, download the frameworks GDAL, UnixImageIO, GEOS 3, SQLite3 and PROJ 4.6, together with the ECW plugin. Install them. In a console, type: export PATH=/Library/Frameworks/GDAL.framework/Programs:$PATH

      Conversion of maps with GDAL

      Here are three examples of using GDAL to convert the maps to the ECW format.

      Georeferenced maps

      Some file formats, such as GeoTIFF, include georeferencing data. For example, download the Sample GeoTiff file. After unpacking the archive, you can use the gdalinfo command to display information about the file:

      This information allows us to know the reference system (here WGS84) and the projection used (here, UTM Zone 10 North). Unfortunately, Er Mapper uses its own names to designate the reference systems and projections. Before making the conversion, you must find these names.

      • For France, there is a paper (in French): Syst mes de projections dans Er Mapper et Mapinfo.
      • For the rest of the world, you can read this document: Supported map projections and datums
      • If you installed the Er Mapper software, you can also browse the files in the GDT_DATA folder, especially the files datum.dat and project.dat .

      For the image above, the datum is WGS84 and the projection is NUTM10. The command to use to convert the file to ECW format is:

      The parameter TARGET=90 indicates that you wish to obtain a compression ratio of the image equal to 90% (Change the rate depending on the type of image).

      Note : Avoid using the same base name for input file and output file, otherwise you may encounter some problems with the current version of gdal_translate.

      Conversion of maps shipped with a world file

      Some files, such as TIFF, JPG or PNG may be accompanied by a world file containing the geographical extents of the map. These files have respective extensions .TFW, .JGW and .PGW .

      One example is the SCAN1000 map of IGN, which is freely available on the IGN site.

      Download for example SCAN 1000 Corsica (Version Lambert II extended) and unzip the archive. The useful files are COR_0000.TIF (TIFF image) and COR_0000.TFW, which contains the coordinates and size of pixels. The gdalinfo command shows that this file uses a color palette:

      The gdal_translate utility is not capable of converting a file based on a color palette to a file in 16 million of colors. Fortunately, a conversion utility ( pct2rgb.py ) comes with the GDAL package. You must therefore begin doing this conversion:

      The website of the IGN tells us that this map uses the NTF reference system (New Triangulation French), with the Lambert projection II extended. The conversion command will be as follows:

      However, we note that the map is surrounded by an unnecessary white border. It is possible to convert only a part of the map, using the -srcwin option of the gdal_translate command:

      For the Linux users (or Windows with CygWin), here's a script that converts the SCAN100 map.

      Conversion of a map without georeferencing data

      Download for example the image BlueMarble. The coordinates of the upper left corner are -180 , 90 and those of the lower right corner are 180 ,-90 . The datum is WGS84, and the projection is GEODETIC.

      The command you can use for the conversion is:

      Georeferencing of an ECW file

      If you have a file in ECW format not containing the whole georeferencing information (datum, projection and extents), it is possible to add this information without having to decompress / recompress the file with gdal_translate. To do this, you may use the tool ECW Header Editor , that you can download at ERDAS.

      To georeference the image, you must proceed as follows:

      • Install the software "ECW Header Editor"
      • Launch the software "ECW Header Editor"
      • Open the ECW file through File menu - Open
      • Fill in the Datum and Projection
      • Give the coordinates of the upper left corner of the image and size of pixels
      • Save the image through the File menu - Save.

      It is also possible to use gdal_edit , that works on Windows, MacOS and Linux.

      Georeferencing a file already calibrated for OziExplorer

      There are lots of maps for OziExplorer. Thus, we are going to show step by step, on three practical examples, how to convert your maps to ECW format.

      How to check if the calibration file is correct

      Often it occurs that calibration files for Oziexplorer do not contain the correct information on the projection and the datum. This is because some people use OziExplorer without sufficient knowledge, sometimes without even taking the time to try to understand the datums and projections.

      There is a simple test to be carried out on a calibration file. The principle is to verify that the edges of the map are parallel to the axes of the projection.

      To start, display the .map file contents (it contains plain text). In general, the file contains the coordinates of four control points, most often the four corners of the map. To ensure that the map is aligned with the axes of the projection, you just have to check that:

      • The left corner have the same eastings
      • The right corners have the same eastings
      • The upper corners have the same northings
      • The bottom corners have the same northings

      Example 1

      Punkt Easting Northing
      Coordinates of the upper left corner 0 2700000
      Coordinates of the upper right corner 1100000 2700000
      Coordinates of the lower right corner 1100000 1600000
      Coordinates of the lower left corner 0 1600000

      In this first example, we see that the map is well positioned. Indeed:

      • The easting of the left edge is 0
      • The easting of the right edge is 11000000
      • The northing of the upper edge is 2700000
      • The northing of the lower edge is 1600000

      Beispiel 2

      Punkt Easting Northing
      Coordinates of the upper left corner 4.269040 45.882684
      Coordinates of the upper right corner 4.912734 45.870023
      Coordinates of the lower right corner 4.891744 45.422152
      Coordinates of the lower left corner 4.253713 45.434813

      In this second example, we see that the map is misaligned. Indeed:

      • The left edge of the map passes through points of eastings 4.269040 and 4.253713: it is tilted
      • The right egde of the map passes through points of eastings 4.912734 and 4.891744: it is tilted
      • The upper edge of the map passes through points of northings 45.882684 and 45.870023: it is tilted
      • The lower edge of the map passes through points of northings 45.422152 and 45.434813: it is tilted

      Note : This simple method is able to prove that the projection indicated in the .map file is incorrect. It does not check that the projection, datum and coordinates are correct, this should be done by displaying known points in ttMaps.

      Tutorial n 1 : Conversion of a french map coming with a correct calibration file

      Here is an example, with a .map file found on a forum:

      .map file lines Beschreibung
      Map Datum,NTF France Datum
      Map Projection,(II) France Zone II,PolyCal,No,AutoCalOnly,No,BSBUseWPX,No Projektion
      Image Width,44000 Image width, in pixels
      Image Height,44000 Image height, en pixels
      Point01,xy, 0, 0,in, deg, , ,N, , ,E, grid, , 0, 2700000,N Coordinates of the upper left corner
      Point02,xy,44000, 0,in, deg, , ,N, , ,E, grid, , 1100000, 2700000,N Coordinates of the upper right corner
      Point03,xy,44000,44000,in, deg, , ,N, , ,E, grid, , 1100000, 1600000,N Coordinates of the lower right corner
      Point04,xy, 0,44000,in, deg, , ,N, , ,E, grid, , 0, 1600000,N Coordinates of the lower left corner

      This table contains all the information necessary to create a georeferenced ECW file.

      • The first line gives the datum: New Triangulation French (ErMapper code is NTF)
      • The second line gives the projection: Lambert France Zone II (Ermapper code is LM2FRANC)
      • The fifth line gives the coordinates of the upper left corner: (0, 2700000)
      • With the coordinates of the lower right corner (1100000, 1600000) and the number of pixels, you can deduce the size of pixels:
        • Horizontal (1100000 - 0) / 44000 = 25 m
        • Vertical: (2700000 - 1600000) / 44000 = 25 m

        The easiest way to make the conversion is to use GDAL:

        Note : The LARGE_OK=YES option here is essential, because the size of the map (44000 x 44000 x 3 = 5808000000 bytes) exceeds 500 Mb.

        Tutorial n 2 : Conversion of a french map coming with an incorrect calibration file

        .map file lines Beschreibung
        WGS 84,WGS 84, 0.0000, 0.0000,WGS 84 Datum
        Map Projection,Latitude/Longitude,PolyCal,No,AutoCalOnly,No,BSBUseWPX,Yes Projektion
        Image Width,5000 Image width, in pixels
        Image Height,5000 Image height, en pixels
        Point01,xy, 0, 0,in, deg, 45, 52.96104,N, 4, 16.1424,E, grid, , , ,N Coordinates of the upper left corner (in degrees + decimale minutes)
        Point02,xy, 5000, 0,in, deg, 45, 52.20138,N, 4, 54.76404,E, grid, , , ,N Coordinates of the upper right corner (in degrees + decimale minutes)
        Point03,xy, 5000, 5000,in, deg, 45, 25.32912,N, 4, 53.50464,E, grid, , , ,N Coordinates of the lower right corner (in degrees + decimale minutes)
        Point04,xy, 0, 5000,in, deg, 45, 26.08878,N, 4, 15.22278,E, grid, , , ,N Coordinates of the lower left corner (in degrees + decimale minutes)

        We see immediately that the map is not aligned with the WGS84 projection. The main challenge will be to find the correct projection and datum.

        As it is a French map, it's not very difficult: Most french maps use the NTF datum and the extented Lambert II projection (at the exception of some maps of Corsica that use the Lambert IV projection).

        We'll check that by converting the coordinates of the four corners of the map into NTF/extented Lambert II. There are many softwares to convert coordinates, use whatever you prefer.

        Punkte Longitude (WGS84) Latitude (WGS84) X (Lambert IIe) Y (Lambert IIe)
        Upper left corner 4.269040 45.882684 750000.06 2099889.00
        Upper right corner 4.912734 45.870023 799993.98 2099915.04
        Lower right corner 4.891744 45.422152 799982.76 2050105.46
        Lower left corner 4.253713 45.434813 750024.37 2050092.08

        This map has probably been calibrated manually, and there are errors of a few tens of meters. After rounding results, we get:

        Punkte X (Lambert IIe) Y (Lambert IIe)
        Upper left corner 750000 2100000
        Upper right corner 800000 2100000
        Lower right corner 800000 2050000
        Lower left corner 750000 2050000

        So we see that the map is well aligned with respect to the axes of the projection NTF/extended Lambert II, and we can now convert it:

        Note : The LARGE_OK=YES option is not useful, because the size of the map (5000 x 5000 x 3 = 75000000 bytes) does not exceed 500 MB

        Tutorial n 3 : Conversion of an english map coming with a correct calibration file

        To understand this example, it is necessary to know the reference system used in the United Kingdom. Read for example http://en.wikipedia.org/wiki/British_national_grid_reference_system.

        .map file lines Beschreibung
        Ord Srvy Grt Britn,WGS 84, 0.0000, 0.0000,WGS 84 Datum
        Map Projection,(BNG) British National Grid,PolyCal,No,AutoCalOnly,No,BSBUseWPX,No Projektion
        IWH,Map Image Width/Height,32704,32576 Taille de l'image, en pixels
        Point01,xy, 200, 128,in, deg, , ,N, , ,W, grid, HV, 01000, 00000,N
        Point02,xy,32400, 128,in, deg, , ,N, , ,W, grid, HW, 62000, 00000,N
        Point03,xy,32400,32328,in, deg, , ,N, , ,W, grid, NG, 62000, 39000,N
        Point04,xy, 200,32328,in, deg, , ,N, , ,W, grid, NF, 01000, 39000,N

        This conversion is more complex than previous ones:

        • First difficulty: the coordinates use a system of letters + numbers, useless with most software.
        • Second difficulty: the coordinates given by the .map file do not correspond to the corners of the map.

        We will begin by converting the coordinates from letters + numbers to fully numerical coordinates. For that, it is enough to know that the squares measure 100km aside and that the reference is the southwest corner of the SV square (see map on Wikipedia). We deduce the following table:

        Square X Offset Y Offset
        HV 0 1000 km
        HW 100 km 1000 km
        NG 100 km 800 km
        NF 0 km 800 km

        that allows us to calculate the coordinates of the four control points:

        Control Point of reference Easting Northing
        Point01 1000 1000000
        Point02 162000 1000000
        Point03 162000 839000
        Point04 1000 839000

        We note in passing that the map is well aligned with respect to the axes of the projection.

        Now calculate the coordinates of the upper left corner and lower right corner of the map.


        Schau das Video: Read and write raster files with GDAL in Python