Saya ingin menetapkan posisi panjang / lat tertentu pada peta ke ketinggian dari file data SRTM3, tetapi tidak tahu bagaimana menemukan nilai spesifik. Jadi saya ingin beberapa contoh bagaimana saya dapat menemukan di ketinggian N50E14.hgt ke 50 ° 24'58.888 "N, 14 ° 55'11.377" E.
20
.hgt
format file dalam dokumentasi SRTM , tetapi jawaban langkah demi langkah spesifik tergantung pada perangkat lunak yang Anda miliki.Jawaban:
Format data
Saya akan menganggapnya sebagai latihan kecil tentang cara memprogram pembaca data. Lihatlah dokumentasi :
Bagaimana cara melanjutkan
Untuk posisi Anda, 50 ° 24'58.888 "N 14 ° 55'11.377" E, Anda sudah menemukan ubin yang benar, N50E14.hgt. Mari kita cari tahu piksel mana yang Anda minati. Lintang pertama, 50 ° 24'58.888 "N:
detik busur. Dibagi dengan tiga dan dibulatkan ke bilangan bulat terdekat memberikan baris grid 500. Perhitungan yang sama untuk hasil garis bujur dalam kolom grid 1104.
Dokumentasi quickstart tidak memiliki informasi tentang bagaimana baris dan kolom disusun dalam file, tetapi dalam dokumentasi lengkap dinyatakan bahwa
Baris pertama dalam file sangat mungkin yang paling utara, yaitu jika kita tertarik pada baris 500 dari tepi bawah , kita sebenarnya harus melihat baris
dari awal jika file . Sel kisi kami adalah angka
dari awal file (yaitu lewati 700 baris, dan yang 701 ambil sampel 1104). Dua byte per sampel berarti kita harus melewati 1683606 byte pertama dalam file dan kemudian membaca dua byte untuk mendapatkan sel grid kita. Data adalah big-endian, yang berarti Anda harus menukar dua byte pada platform Intel misalnya.
Program sampel
Program Python sederhana untuk mengambil data yang tepat akan terlihat seperti ini (lihat dokumen untuk penggunaan modul struct):
Perhatikan bahwa pengambilan data yang efisien harus terlihat sedikit lebih canggih (mis. Tidak membuka file untuk masing-masing dan setiap sampel).
Alternatif
Anda juga bisa menggunakan program yang bisa membaca file .hgt di luar kotak. Tapi itu membosankan.
sumber
GDAL dapat membaca / menulis format raster ini dengan driver SRTMHGT . Ini berarti Anda dapat melihat raster dengan QGIS, ArcGIS, atau menggunakan utilitas GDAL seperti gdallocationinfo untuk mendapatkan nilai dari suatu titik, misalnya:
Ubah DMS ke DD:
Kemudian dari shell, gunakan
gdallocationinfo file.hgt -wgs84 long lat
:Ketinggian 216 m.
sumber
Jika Anda menggunakan QGIS, periksa apakah plugin python "Point Sampling Tool" diinstal. Anda akan menemukannya di -> Enhancements (Python) -> Analisis.
Pilih layer titik Anda dari posisi yang diperlukan, kemudian mulai PST, pilih hgt (atau file raster / poligon apa pun) dan pilih bentuk titik baru untuk output.
Itu saja :-)
sumber
Jawaban Chris menunjukkan langsung untuk mengambil sampel poin dari sebuah layer di QGIS.
Namun, karena balasan Anda untuk komentar saya menjelaskan Anda sedang menulis program Anda sendiri untuk membaca nilai ketinggian dari
.hgt
file, lihat lagi Quickstart PDF di dokumen SRTM. Ini menjelaskan bagaimana data ketinggian disimpan. Untuk meringkas:-32768
, yang menunjukkan piksel tanpa data.Anda mengatakan bahwa Anda dapat mengkonversi antara koordinat lon / lat dan piksel, sehingga mendapatkan ketinggian adalah masalah membaca nilai integer dari offset yang sesuai dalam file. Diberikan koordinat piksel
x
dany
relatif ke sudut kiri atas tempat kejadian, itu pada dasarnyaoffset = (y * 1201) + x
. Pixel0,0
adalah integer pertama dalam file dan pixel1200,1200
adalah integer terakhir dalam file.sumber