Mehr

So definieren Sie den PROJ.4-String für die GDAL-Projektion

So definieren Sie den PROJ.4-String für die GDAL-Projektion


Ich mache einige zonale Berechnungen in GDAL mit dem Code, der in der Lösung hier veröffentlicht wurde: Problem Beim Versuch, zonale Statistiken mit Gdal und Python zu erstellen.

Es läuft gut für mich mit den Beispieldaten, die mit der Frage gepostet wurden, aber wenn ich es mit meinem eigenen GeoTiff und Shapefile versuche, ist dieser Schritt:

# Projektionsinformationen aus der Eingabe von GeoTiff lesen raster_srs.ImportFromWkt(raster.GetProjectionRef()) target_ds.SetProjection(raster_srs.ExportToWkt()) # Zonenpolygon in Raster rastern gdal.RasterizeLayer(target_ds, [1], lyr, burn_values=[1] )

wirft folgenden Fehler aus:

FEHLER 1: Keine PROJ.4-Übersetzung für Ziel-SRS, Initialisierung der Koordinatentransformation ist fehlgeschlagen.

gdal info:

Treiber: GTiff/GeoTIFF Dateien: data/ndvi/ndvi_c_dk_20150405.tif Größe ist 29424, 30470 Koordinatensystem ist: LOCAL_CS["unnamed", UNIT["metre",1, AUTHORITY["EPSG","9001"]]] Origin = (-19.000000000000000,37.999585000000003) Pixelgröße = (0.002413000000000,-0.002413000000000) Metadaten: AREA_OR_POINT=Gebietsbildstruktur-Metadaten: INTERLEAVE=BAND Eckkoordinaten: Oben links ( -19.0000000, 37.9995850) Unten links ( -19.0000000, -35.5245250) ( 52.0001120, 37.9995850) Unten rechts ( 52.0001120, -35.5245250) Mitte ( 16.5000560, 1.2375300) Band 1 Block=29424x1 Typ=Byte, ColorInterp=Palette Farbtabelle (RGB mit 256 Einträgen)

Da ich weiß, dass die Koordinatensysteminformationen fehlen, sollte ich die Proj4-Zeichenfolge explizit definieren. Ich habe Beispiele für solche Vorgehensweisen gefunden:

wgs84_wkt = """ GEOGCS["WGS 84", DATUM["WGS_1984", SPHEROID["WGS 84",6378137,298.257223563, AUTHORITY["EPSG","7030"]], AUTHORITY["EPSG","6326" ]], PRIMEM["Greenwich",0, AUTHORITY["EPSG","8901"]], UNIT["degree",0.01745329251994328, AUTHORITY["EPSG","9122"]], AUTHORITY["EPSG"," 4326"]]"""

dann nehme ich an, ich könnte es tun

raster_srs.ImportFromWkt(wgs84_wkt) target_ds.SetProjection(raster_srs.ExportToWkt())

Aber ich habe keine Ahnung, wie man den richtigen Proj4-String überhaupt definiert.


Wenn der Datensatz den gesamten afrikanischen Kontinent abdecken soll, sind die CRS-Informationen falsch und WGS84 sollte richtig sein.

Wenn es sich wirklich um ein lokales CRS handelt, das 71 m östlich und 73,5 m nördlich abdeckt, müssen Sie am Punkt (0; 0) ein lokales CRS einrichten, das Sie mit GPS oder offiziellen Vermessungsinformationen sammeln müssen:

+proj=tmerc +lat_0=… +lon_0=… +k=0.9999 +x_0=0 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs

Für eine so kleine Fläche sind die Projektionsverzerrungen sehr gering, sodass Sie mit tmerc Glück haben sollten.


Versuchen Sie, zum Raumbezug zu gelangen

Um eine spezifische proj4-Definition zu finden


OsgEarth verwendet Bildhöhendaten

Einige der online heruntergeladenen Kartendaten sind keine projizierten Koordinateninformationen oder andere Koordinatensysteme (wie UTM). Wir können häufig verwendete GIS-Tools verwenden, um sie zu ändern. Hier werden die Höhendaten von ETOPO1 verwendet, um zu demonstrieren:

Öffnen Sie die Datei ETOPO1_Ice_g_geotiff.tif mit Global Mapper

Einstellen der Projektionsparameter, Projektion: Geografisch (Breite/Länge), Datum: WGS84, Panar-Einheiten: ARC GRAD

Nach dem Laden wählt es den Export in das Höhenrasterformat - > GeoTIFF. Die abgeleiteten Parameter können standardmäßig verwendet werden. Nach dem Export werden die GeoTiff-Höhendaten nach Projektionskoordinaten verarbeitet.

Datenerstellung auf der VPB-Datenseite

VPB-Datenseiten werden mit osgdem-Tools erstellt, wobei die Höhen der NASA-Bilder BlueMarble und ETOP1 als Beispiele verwendet werden.

osgdem-Parameterbeschreibung:

osgdem kann Patch-Funktionen verwenden, um lokale High-Definition-Daten zu erstellen, wie zum Beispiel:


2. ARC COVERAGE-DATEIEN

Alle Vektor-Coverage-Dateien (ARC) werden im selben Verzeichnis gespeichert. Der Name dieses Verzeichnisses ist der Name des Coverages.

Der Name des Coverage-Verzeichnisses (und damit der Name des Coverages) scheint auf 13 Zeichen beschränkt zu sein.

2.1 Datei-Header

2.1.1 V7.x Coverage-Datei-Header

Die meisten dieser Dateien haben einen 100-Byte-Header:

2.1.2 Header der PC-Abdeckungsdatei

PC-Abdeckungen V1 Beginnen Sie zunächst mit einem 256-Byte-Header, gefolgt von dem oben beschriebenen 100-Byte-Header, was insgesamt 356 Byte Header ergibt. Alle Dateien mit diesem 256-Byte-Header haben eine tatsächliche Größe, die ein Vielfaches von 256 Byte ist und am Ende mit Junk aufgefüllt wird. Daher ist es sehr wichtig, beim Lesen dieser Dateien die im Header angegebene Größe zu berücksichtigen.

Folgendes finden wir in diesem 256-Byte-Header, der für PC-Abdeckungen spezifisch ist:

Beachten Sie auch, dass PC-Abdeckungen IMMER EINZELNE PRÄZISION sind, egal wie der Wert in den Bytes 4-7 im 100-Byte-Header lautet. (d. h. der Wert des Genauigkeits-Flags ist manchmal negativ, aber die Daten haben wirklich immer einfache Genauigkeit.)

2.1.3 PC V2 und seltsame Coverage-Datei-Header

PC V2 und seltsame Abdeckungen haben nur einen 100-Byte-Header, genau wie V7 Coverages.

Diese Coverages können sowohl in einfacher als auch in doppelter Genauigkeit vorliegen.

2.2 Indexdateien

    Die Dateien, die Datensätze variabler Länge enthalten (d. h. ARC, PAL, CNT usw.), werden von einer Indexdatei begleitet. Der Name der Indexdatei (sofern vorhanden) wird in der Dokumentation für jeden Dateityp unten angegeben.

Alle Indexdateien haben denselben 100-Byte-Header wie die Datei, der sie entsprechen (sie ist identisch, mit Ausnahme des Größenwerts bei Byte 24).

Dann haben Sie ab Byte 100 in der Datei für jedes Objekt aus der Masterdatei einen Indexeintrag:

PC-Abdeckung V1 Indexdateien beginnen mit dem 256-Byte-Header, gefolgt vom üblichen 100-Byte-Header, gefolgt von Indexeinträgen.

PC-Abdeckung V2 Indexdateien sind identisch mit V7-Indizes.

Seltsame Abdeckung Indexdateien sind mit V7-Indizes identisch, haben jedoch einen anderen Dateinamen.

2.3 ARC.ADF

    Die Datei "arc.adf" enthält die Bogendefinitionen und ihre Scheitelpunkte.

Es wird mit einer Indexdatei namens "arx.adf" geliefert.

2.3.1 ARC.ADF-Datei in V7.x-Abdeckungen

Die Datei beginnt mit dem üblichen 100-Byte-Header:

Dann folgen Bogendatensätze mit variabler Länge:

Es folgen die Scheitelpunkte (Num_Vertices-Paare von x,y-Werten).

2.3.2 ARC-Datei in PC Coverages V1

In PC Coverages V1 heißt die Hauptdatei "ARC" und der Index "ARX".

Beide beginnen mit dem für PC Coverages spezifischen 256-Byte-Header, gefolgt vom 100-Byte-Header und den oben beschriebenen Datensätzen.

Beachten Sie, dass PC Coverages-Dateien IMMER einfache Genauigkeit haben.

2.3.3 ARC-Datei in PC Coverages V2

2.3.4 ARC-Datei in Weird Coverages

Wie V7 Coverages, außer dass die Hauptdatei "ARC" und der Index "ARX" heißt.

2.4 PAL.ADF

    • Arc_Id ist negativ, wenn die Richtung des Bogens umgekehrt wird
    • From_Node_Id ist die FNODE# des Bogens. Wenn der Bogen umgekehrt wird, ist From_Node_Id die TNODE# des Bogens.
    • Adjacent_Polygon_Id ist die ID des Polygons, das diesen Bogen mit dem aktuellen Polygon teilt.

    Es wird mit einer Indexdatei namens "pax.adf" geliefert.

    2.4.1 PAL.ADF-Datei in V7.x-Abdeckungen

    Die Datei beginnt mit dem üblichen 100-Byte-Header:

    Dann folgen Polygon-Datensätze variabler Länge:

    Für jeden Bogen in der Bogenliste haben wir einen Datensatz mit fester Länge:

    2.4.2 PAL-Datei in PC Coverages V1

    In PC Coverages heißt die Hauptdatei "PAL" und der Index "PAX".

    Beide beginnen mit dem für PC Coverages spezifischen 256-Byte-Header, gefolgt vom 100-Byte-Header und den oben beschriebenen Datensätzen.

    Beachten Sie, dass PC Coverages-Dateien IMMER einfache Genauigkeit haben.

    2.4.3 PAL-Datei in Weird Coverages

    Wie V7 Coverages, außer dass die Hauptdatei "PAL" und der Index "PAX" heißt.

    2.5 LAB.ADF

      Die Datei "lab.adf" enthält Beschriftungspunktdatensätze.

    Dieser Datei ist kein Index zugeordnet, da sie Datensätze mit fester Größe enthält.

    2.5.1 LAB.ADF-Datei in V7.x Coverages

    Die Datei beginnt mit dem üblichen 100-Byte-Header:

    Dann folgen Label-Punkt-Datensätze mit fester Größe:

    2.5.2 LAB-Datei in PC Coverages V1

    In PC Coverages heißt diese Datei "LAB".

    Es beginnt mit dem für PC Coverages spezifischen 256-Byte-Header, gefolgt vom 100-Byte-Header und den oben beschriebenen Datensätzen.

    Beachten Sie, dass PC Coverages-Dateien IMMER einfache Genauigkeit haben.

    2.5.3 LAB-Datei in Weird Coverages

    Wie V7 Coverages, außer dass die Datei "LAB" heißt.

    2.6 CNT.ADF

      Die Datei "cnt.adf" enthält Informationen zum Polygonschwerpunkt.

    Es wird mit einer Indexdatei namens "cnx.adf" geliefert.

    2.6.1 CNT.ADF-Datei in V7.x-Abdeckungen

    Die Datei beginnt mit dem üblichen 100-Byte-Header:

    Dann folgen Schwerpunktdatensätze variabler Länge:

    2.6.2 CNT-Datei in PC Coverages V1

    In PC Coverages heißt die Hauptdatei "CNT" und der Index "CNX".

    Beide beginnen mit dem für PC Coverages spezifischen 256-Byte-Header, gefolgt vom 100-Byte-Header und den oben beschriebenen Datensätzen.

    Beachten Sie, dass PC Coverages-Dateien IMMER einfache Genauigkeit haben.

    2.6.3 CNT-Datei in Weird Coverages

    Wie V7 Coverages, außer dass die Hauptdatei "CNT" und der Index "CNX" heißt.

    2.7 PRJ.ADF - Projektionsdatei

    2.7.1 PRJ.ADF-Datei in V7.x-Abdeckungen

    Die Datei PRJ.ADF ist eine einfache ASCII-Datei mit einer Zeile für jede Projektionsinformation. Die Zeilen haben eine variable Länge und werden mit einem Newline-Zeichen abgeschlossen.

    Hier ist ein Beispiel für eine prj.adf-Datei:

    2.7.2 PRJ-Datei in PC Coverages V1

    PC Coverages enthalten anscheinend keine PRJ-Datei. oder zumindest sind wir nie einem begegnet.

    2.7.3 PRJ-Datei in Weird Coverages

    Genau wie für PC-Abdeckungen. sie scheinen keine PRJ-Datei zu enthalten. oder zumindest sind wir nie einem begegnet.

    2.8 LOG - Abdeckungsverlauf

    2.8.1 LOG-Datei in V7.x Coverages

    Die LOG-Datei (mit dem Namen "log", nicht "log.adf"!) ist eine ASCII-Datei mit Zeilen variabler Länge, die jeweils mit einem Zeilenumbruch abgeschlossen werden.

    Die Zeilen haben keine bekannte Längenbegrenzung, sie können sicher länger als 80 Zeichen sein.

    2.8.2 LOG-Datei in PC Coverages V1

    Nichts Besonderes. die Datei heißt auch LOG.

    2.8.3 LOG-Datei in Weird Coverages

    Wahrscheinlich das gleiche. aber wir sind noch nie auf welche gestoßen.

    2.9 TOL - Abdeckungstoleranzen

      • 1. verschwommen
      • 2. verallgemeinern (unbenutzt)
      • 3. Knotenübereinstimmung (unbenutzt)
      • 4. baumeln
      • 5. Tic-Match
      • 6. undefiniert
      • 7. undefiniert
      • 8. undefiniert
      • 9. undefiniert
      • 10. undefiniert

      2.9.1 TOL.ADF-Datei in V7.x-Abdeckungen

      Die TOL-Datei enthält die beim Verarbeiten eines Polygon-Coverages zu verwendenden Toleranzwerte. Es enthält normalerweise 10 Toleranzeinträge. Für jeden Eintrag haben wir eine Toleranzart, einen Toleranzstatus und einen Toleranzwert. Die Toleranztypen sind:

      Der Toleranzstatus "wird auf 1 gesetzt, wenn die Toleranz verifiziert ist (auf Operationen des Coverages angewendet) und auf 2, wenn die Toleranz nicht verifiziert ist (durch den TOLERANCE-Befehl gesetzt, aber noch nicht in der Verarbeitung verwendet). 34

      In einem SINGLE PRECISION-Coverage heißt die Datei "tol.adf", hat keinen Header und für jeden Toleranzwert gilt:

      In DOUBLE PRECISION-Coverages heißt die Datei "par.adf" und hat den üblichen 100-Byte-Header:

      Dann haben wir für jeden Toleranzwert mit doppelter Genauigkeit:

      Hinweis: Der Header der Datei mit doppelter Genauigkeit ("par.adf") scheint nicht der allgemeinen Regel für den Header zu folgen. sein Genauigkeitsfeldwert ist > 0, während dieser Wert für alle anderen Dateien mit doppelter Genauigkeit (. ) negativ ist. Außerdem hat das dritte Feld den Wert 8, während es in allen anderen Headern 0 ist.

      2.9.2 TOL-Datei in PC Coverages V1

      In PC Coverages heißt diese Datei "TOL".

      Im Gegensatz zu den meisten anderen Dateien hat die TOL-Datei in PC Coverages keinen Header. es beginnt sofort mit den Toleranzeinträgen wie "tol.adf" in V7.x-Coverages mit einfacher Genauigkeit.

      Beachten Sie, dass PC Coverages-Dateien IMMER einfache Genauigkeit haben.

      2.9.3 TOL-Datei in Weird Coverages

      Wie "tol.adf" in V7-Coverages mit einfacher Genauigkeit, außer dass die Datei "TOL" heißt.

      2.10 TX6/TX7 - Anmerkungen

        • test.txt - Die eigentliche Anmerkungsdatei
        • test.txx - Indexdatei
        • test.tat - INFO-Tabelle für diesen Satz von Anmerkungen

        2.10.1 TX6/TX7-Dateien in V7.x-Abdeckungen

        TXT, TX6 und TX7 sind 3 Variationen von Textanmerkungen, die wir in E00-Dateien finden. TX6- und TX7-Annotationen werden normalerweise mit einer .TAT-Infotabelle oder einem Satz von .TAT-Tabellen geliefert.

        Es scheint, dass Sie mehrere "Unterklassen" von Anmerkungen haben können, in der Datei E00 sind sie Unterabschnitte des Hauptabschnitts TX6/TX7 und in einem binären Coverage werden sie in separaten Dateien gespeichert.

        Es gibt keinen Unterschied zwischen den Binärdateien für einen TX6 und den Dateien für einen TX7. Im E00-Format gibt es jedoch in der ersten Zeile eines TX7-Eintrags einen zusätzlichen Wert (der in einem TX6 nicht vorhanden ist), dieser Wert ist sehr oft 0 (oder 1 in einigen Fällen), aber auch wenn er gesetzt ist , es ist nicht in der Binärdatei vorhanden. Ich habe keine Ahnung, woher es kommt.

        Für die Unterklasse der Annotationen namens TEST finden Sie 3 Dateien im Coverage-Verzeichnis:

        Die Datei "test.txt" hat den üblichen 100-Byte-Header, gefolgt von Datensätzen mit variabler Länge für jedes Textstück.

        Gefolgt von Datenaufzeichnungen für jedes Textstück:

        Der Rest der Aufzeichnung hängt von der Genauigkeit ab. Für SINGLE PRECISION haben wir:

        Und für DOPPELTE PRÄZISION hätten wir:

        Notiz:
        Die letzten 8 Bytes an Junk scheinen in V7-Coverages immer vorhanden zu sein. Sie sind jedoch manchmal in Weird Coverages vorhanden und manchmal nicht vorhanden. Daher besteht die einzige sichere Möglichkeit, um festzustellen, ob am Ende eines TX6-Datensatzes Junk zu überspringen ist, darin, den Datensatzlängenwert in den Bytes 4-7 zu verwenden.

        2.10.2 TX6/TX7-Dateien in PC Coverages V1

        PC Coverages können wahrscheinlich keine TX6/TX7-Dateien haben, aber sie können TXT-Dateien haben. siehe unten.

        2.10.3 TX6/TX7-Dateien in seltsamen Abdeckungen

        Seltsame Coverages können TX6/TX7-Dateien haben und funktionieren genauso wie V7-Coverages, außer dass der Name mit "txt" statt ".txt" endet. (z. B. haben wir "testtxt" statt "test.txt")

        2.11 TXT - Anmerkungen

          • Die Dateinamen lauten "txt.adf" und "txx.adf" für die Indexdatei
          • Die Werte in den Bytes 40-119 jedes Eintrags sehen wie Müll aus. es scheint absolut keine Korrelation mit dem zu geben, was Sie im entsprechenden TXT-Abschnitt einer E00-Datei finden.
          • Wenn die binäre TXT-Struktur in E00-TXT konvertiert wird, wird der erste Scheitelpunkt der Scheitelpunktliste für die Polylinie des Textes immer ignoriert (der erste und der zweite Scheitelpunkt in der Scheitelpunktliste sind immer gleich).
            Wenn zum Beispiel num_vertices1=ɥ in der Binärdatei ist, sollten wir den ersten Vertex ignorieren und der entsprechende E00-TXT-Eintrag hätte num_vertices1ɤ (entsprechend den Vertices 2 und 3 in der Vertices-Liste).

          2.11.1 TXT.ADF-Datei in V7.x-Abdeckungen

          Anmerkungen vom TXT-Typ verwenden genau dieselbe Dateistruktur wie TX6/TX7 oben, mit den folgenden Unterschieden:

          2.11.2 TXT-Datei in PC Coverages V1

          In PC Coverages heißt die Hauptdatei "TXT" und der Index "TXX".

          Beide beginnen mit dem für PC Coverages spezifischen 256-Byte-Header, gefolgt vom 100-Byte-Header:

          Im Gegensatz zu den meisten anderen Dateitypen unterscheiden sich die Datensätze in der TXT-Datei jedoch von denen, die wir in V7.x TXT.ADF-Dateien finden.

          PC Coverage TXT-Einträge sind immer mit einfacher Genauigkeit. Für jedes Textstück haben wir:

          2.11.3 TXT-Datei in Weird Coverages

          Die TXT-Dateien von seltsamen Coverages können entweder in der PC-Struktur oder in der V7-Struktur gespeichert werden. In beiden Fällen sind die Dateinamen gleich ("TXT" und "TXX"). Die einzige Möglichkeit zu erkennen, ob die Datei im PC TXT-Format oder im V7 TXT/TX6/TX7-Format vorliegt, besteht darin, das Präzisionsfeld im 100-Byte-Header zu betrachten:

          Bei Verwendung der V7-Struktur sind die Dateien bis auf den Dateinamen identisch mit den oben beschriebenen V7 TXT/TX6/TX7-Dateien.

          Wenn die PC-TXT-Struktur verwendet wird, ähneln die Dateien den PC-Coverage-TXT-Dateien, mit Ausnahme der Byte-Reihenfolge und der Tatsache, dass die Weird-Coverage-Dateien keinen 256-Byte-Header enthalten. Ein weiterer kleiner Unterschied: Wenn eine Textzeichenfolge in Weird Coverages eine Länge hat, die ein Vielfaches von 4 Zeichen ist, wird sie nicht mit 4 Leerzeichen aufgefüllt, wie es in einer PC Coverage-Datei der Fall gewesen wäre. Dies ist ein kleines Detail, aber es ist interessant zu bemerken, dass dieser Fehler zwischen PC Arc/Info und der Version von Arc/Info, die die seltsamen Coverages erzeugte, behoben wurde.

          2.12 RXP – spezifisch für Regionen

            RXP-Abschnitte enthalten die Liste der Polygone aus dem PAL-Abschnitt, die jede Region bilden, und treten nur in Region-Coverages auf. Für jede Region im Coverage gibt es eine .rxp-Datei.

          RXP-Dateien wurden in PC-Coverages und Weird-Coverages nie gefunden.

          .rxp-Dateien haben keinen Header und enthalten Datensätze mit fester Größe:

          Regionen, die aus mehreren Polygonen bestehen, haben mehrere Datensätze mit derselben Regions-Polygon-ID und unterschiedlichen PAL-Polygon-IDs.

          2.13 RPL – spezifisch für Regionen

            E00-RPL sind auch spezifisch für regionale Abdeckungen. In der binären Abdeckung entsprechen sie Dateien mit der Erweiterung ".pal". Für jede Region im Coverage gibt es eine .pal-Datei, und sie verwenden genau dieselbe Struktur wie "pal.adf"-Dateien. Jede .pal-Datei enthält wahrscheinlich die Definition der Polygone, die zu dieser Region gehören.

          RPL-Dateien werden mit einer Indexdatei mit der Erweiterung ".pax" geliefert.

          RPL-Dateien wurden in PC-Coverages und Weird-Coverages nie gefunden.