Saya sangat baru dalam GIS.
Saya menggunakan gdal
untuk membaca dalam peta penggunaan lahan / tutupan lahan dan saya perlu memilih lat / lng dari tipe tutupan lahan tertentu untuk diindeks ke dalam dataset yang berbeda yang hanya dinyatakan dalam lat / lng. Unfortuantely, saya tidak mengerti bentuk x dan y koordinat yang diberikan kepada saya dari transformasi geografi, khususnya yang originX
dan originY
bawah:
geotransform = dataset.GetGeoTransform()
originX = geotransform[0]
originY = geotransform[3]
Mencetak nilai-nilai ini memberi saya koordinat seperti (447466.693808, 4952570.40529)
. Bagaimana hubungan ini dengan garis lintang dan bujur asli?
Edit:
Berikut adalah contoh python sederhana yang memberi saya apa yang saya cari:
srs = osr.SpatialReference()
srs.ImportFromWkt(dataset.GetProjection())
srsLatLong = srs.CloneGeogCS()
ct = osr.CoordinateTransformation(srs,srsLatLong)
print ct.TransformPoint(originX,originY)
Dicuri dari: tolatlong.py
gdal
coordinate-system
Kaya
sumber
sumber
dataset.GetProjectionRef()
dan mencari tahu saya menggunakan "UTM Zone 10", tapi lalu apa? Saya mencari-cari metode seperti "tidak memproyeksikan" tetapi saya akan muncul nol.Jawaban:
gdal_translate akan memproyeksi ulang data Anda dari proyeksi apa pun ke proyeksi lain (dalam hal ini Anda ingin EPSG: 4326) menggunakan:
atau Anda dapat menggunakan gdaltrasform untuk mengonversi titik (dan saya yakin Anda dapat mengaksesnya dari Python (?) juga)
sumber
Geotransform ini didokumentasikan di https://gdal.org/user/raster_data_model.html . Idenya adalah bahwa Anda mengambil (x, y) koordinat langsung dari dataset, menerapkan transformasi linear untuk mendapatkan (u, v) dengan
(Anda dapat menganggap ini sebagai definisi transformasi linear), kemudian menggeser asal dengan menambahkan geotransform [0] ke u dan geotransform [3] ke v. Itu memberikan "transformasi affine" dari (x, y). Ini benar-benar dimaksudkan untuk memutar, mengubah skala, mungkin mengoreksi sedikit untuk beberapa kesalahan miring, dan menempatkan kembali koordinat spesifik data (x, y) agar cocok dengan sistem koordinat yang dikenal. Hasilnya seharusnya menghasilkan koordinat yang diproyeksikan. Ini berarti ada prosedur matematika yang mengambil (bujur, lintang) dan mengubahnya menjadi koordinat yang dikenal: ini disebut "proyeksi." "Tidak memproyeksikan" berarti sebaliknya; jadi, jika Anda tahu proyeksi mana yang dibutuhkan, Anda menerapkannya pada koordinat transformasi x (y, y) untuk mendapatkan garis lintang dan bujur.
Omong-omong, nilai konstanta a, b, c, d diberikan oleh entri 1, 2, 4, dan 5 dalam array geotransform.
sumber
Anda dapat menggunakan yang berikut ini:
coord akan mengembalikan garis bujur (x) dan garis lintang (y) dari semua piksel. Ingatlah bahwa koordinat berada di sudut kiri piksel
sumber