Ich bin sehr neu in GIS.
Ich benutze gdal
, um eine Landnutzungs- / Landbedeckungskarte einzulesen, und ich muss die Länge bestimmter Landbedeckungstypen auswählen, um sie in einem anderen Datensatz zu indizieren, der nur in Länge ausgedrückt wird. Unfortuantely, ich verstehe nicht , die Form der x und y , die ich gegeben Koordinaten aus dem Geotransformation, insbesondere die originX
und originY
unten:
geotransform = dataset.GetGeoTransform()
originX = geotransform[0]
originY = geotransform[3]
Das Drucken dieser Werte gibt mir Koordinaten wie (447466.693808, 4952570.40529)
. Wie hängen diese mit dem ursprünglichen Breiten- und Längengrad zusammen?
Bearbeiten:
Hier ist ein einfaches Python-Beispiel, mit dem ich gefunden habe, wonach ich gesucht habe:
srs = osr.SpatialReference()
srs.ImportFromWkt(dataset.GetProjection())
srsLatLong = srs.CloneGeogCS()
ct = osr.CoordinateTransformation(srs,srsLatLong)
print ct.TransformPoint(originX,originY)
Gestohlen von: tolatlong.py
gdal
coordinate-system
Reich
quelle
quelle
dataset.GetProjectionRef()
und herausfinden kann, dass ich "UTM Zone 10" verwende, aber was dann? Ich google nach Methoden wie "unproject", komme aber auf null.Antworten:
gdal_translate projiziert Ihre Daten von jeder Projektion in eine andere (in diesem Fall EPSG: 4326) mit:
oder Sie könnten gdaltrasform verwenden , um die Punkte zu konvertieren (und ich bin sicher, Sie können auch von Python aus darauf zugreifen)
quelle
Die Geotransformation ist unter https://gdal.org/user/raster_data_model.html dokumentiert . Die Idee ist, dass Sie (x, y) -Koordinaten direkt aus dem Datensatz nehmen und eine lineare Transformation anwenden, um (u, v) zu erhalten
(Sie können dies als Definition einer linearen Transformation ansehen.) Verschieben Sie dann den Ursprung, indem Sie Geotransform [0] zu u und Geotransform [3] zu v hinzufügen. Dies ergibt die "affine Transformation" von (x, y). Es ist wirklich beabsichtigt, sich zu drehen, den Maßstab zu ändern, möglicherweise einige Schrägstellungsfehler ein wenig zu korrigieren und die datenspezifischen Koordinaten (x, y) neu zu positionieren, um sie an ein bekanntes Koordinatensystem anzupassen. Das Ergebnis soll projizierte Koordinaten erzeugen . Dies bedeutet einfach, dass es eine mathematische Prozedur gibt, bei der Längen- und Breitengrade in die bekannten Koordinaten umgewandelt werden. Dies wird als "Projektion" bezeichnet. "Unprojecting" macht das Gegenteil; Wenn Sie also wissen, welche Projektion erforderlich ist, wenden Sie diese auf die affinen transformierten (x, y) Koordinaten an um den Breiten- und Längengrad zu erhalten.
Übrigens sind die Werte der Konstanten a, b, c, d durch die Einträge 1, 2, 4 und 5 im Geotransform-Array gegeben.
quelle
Sie können Folgendes verwenden:
coord gibt den Längengrad (x) und Breitengrad (y) aller Pixel zurück. Beachten Sie, dass sich die Koordinaten in der linken Ecke eines Pixels befinden
quelle