Saya bertanya-tanya apakah ada yang punya pengalaman dalam mendapatkan data elevasi dari raster tanpa menggunakan ArcGIS , tetapi lebih suka mendapatkan informasi sebagai python list
atau dict
?
Saya mendapatkan data XY saya sebagai daftar tupel:
xy34 =[perp_obj[j].CalcPnts(float(i.dist), orientation) for j in range (len(perp_obj))]
Saya ingin mengulang daftar atau meneruskannya ke fungsi atau metode-kelas untuk mendapatkan elevasi yang sesuai untuk pasangan xy.
Saya melakukan riset pada topik dan API gdal terdengar menjanjikan. Adakah yang bisa menasihati saya cara mengerjakan sesuatu, perangkap, kode sampel?
GDAL bukan opsi karena saya tidak dapat mengedit variabel jalur sistem pada mesin yang sedang saya kerjakan!
Adakah yang tahu tentang pendekatan yang berbeda?
Jawaban:
Inilah cara yang lebih terprogram untuk menggunakan GDAL daripada jawaban @ Aragon. Saya belum mengujinya, tetapi sebagian besar kode boiler-plate yang telah bekerja untuk saya di masa lalu. Itu bergantung pada ikatan Numpy dan GDAL, tapi itu saja.
sumber
mapToPixel()
danpixelToMap()
merupakan bit yang penting, selama Anda dapat membuat array numpy (atau yang Python biasa, tetapi mereka umumnya tidak seefisien untuk hal-hal semacam ini), dan dapatkan kotak batas geografis array.gt
dalam contoh) salah. Matriks affine seperti yang digunakan dalam CGAL (lihat: gdal.org/gdal_datamodel.html ) umumnya tidak dapat dibalik (jika tidak, Anda memiliki beberapa nilai penskalaan yang funky terjadi). Jadi di mana kita miliki,g = p.A
kita juga dapat melakukanp = g.A^-1
Numpy.linalg agak berat untuk tujuan kita - kita dapat mengurangi segalanya menjadi dua persamaan sederhana.Lihat jawaban saya di sini ... dan baca di sini untuk beberapa informasi. Info berikut diambil dari Geotips:
Dengan gdallocationinfo , kami dapat menanyakan ketinggian pada suatu titik:
Output dari perintah di atas memiliki bentuk:
Ini berarti, bahwa nilai ketinggian pada geolokasi yang disediakan adalah 1418.
sumber
Lihat misalnya kode ini yang didasarkan pada GDAL (dan Python, tidak perlu numpy): https://github.com/geometalab/retrieve-height-service
sumber
Kode python yang disediakan mengekstrak data nilai sel raster berdasarkan pada x, y yang diberikan. Ini adalah versi contoh dari sumber yang sangat bagus ini . Ini didasarkan pada
GDAL
dannumpy
yang bukan bagian dari distribusi python standar. Terima kasih kepada @Mike Toews karena menunjukkan Binari Windows Tidak Resmi untuk Paket Ekstensi Python untuk membuat instalasi dan penggunaan yang cepat dan mudah.sumber