Saya baru mengenal GIS.
Saya memiliki beberapa kode yang mengubah gambar inframerah Mars menjadi peta inersia termal, yang kemudian disimpan sebagai array numpy 2D. Saya telah menyimpan peta-peta ini sebagai file hdf5 tetapi saya benar-benar ingin menyimpannya sebagai gambar raster sehingga saya dapat memprosesnya di QGIS. Saya telah melalui beberapa pencarian untuk menemukan cara melakukan ini tetapi tidak berhasil. Saya sudah mencoba mengikuti petunjuk dalam tutorial di http://www.gis.usu.edu/~chrisg/python/ tetapi file yang saya hasilkan menggunakan kode contohnya terbuka sebagai kotak abu-abu ketika saya mengimpornya ke QGIS. Saya merasa jika seseorang dapat menyarankan prosedur yang paling sederhana untuk contoh sederhana dari apa yang ingin saya lakukan maka saya mungkin dapat membuat beberapa kemajuan. Saya memiliki QGIS dan GDAL, saya akan sangat senang menginstal kerangka kerja lain yang bisa direkomendasikan oleh siapa pun. Saya menggunakan Mac OS 10.7.
Jadi jika misalnya saya memiliki array inertia termal yang numpy yang terlihat seperti:
TI = ( (0.1, 0.2, 0.3, 0.4),
(0.2, 0.3, 0.4, 0.5),
(0.3, 0.4, 0.5, 0.6),
(0.4, 0.5, 0.6, 0.7) )
Dan untuk setiap piksel saya memiliki garis lintang dan bujur:
lat = ( (10.0, 10.0, 10.0, 10.0),
( 9.5, 9.5, 9.5, 9.5),
( 9.0, 9.0, 9.0, 9.0),
( 8.5, 8.5, 8.5, 8.5) )
lon = ( (20.0, 20.5, 21.0, 21.5),
(20.0, 20.5, 21.0, 21.5),
(20.0, 20.5, 21.0, 21.5),
(20.0, 20.5, 21.0, 21.5) )
Prosedur mana yang akan direkomendasikan orang untuk mengubah data ini menjadi file raster yang dapat saya buka di QGIS?
Jawaban:
Salah satu solusi yang mungkin untuk masalah Anda: Konversikan menjadi ASCII Raster, dokumentasi yang ada di sini . Ini seharusnya cukup mudah dilakukan dengan python.
Jadi dengan contoh data Anda di atas, Anda akan berakhir dengan yang berikut dalam file .asc:
Ini berhasil menambah QGIS dan ArcGIS, dan bergaya di ArcGIS seperti ini:
Tambahan: Meskipun Anda dapat menambahkannya ke QGIS seperti yang disebutkan, jika Anda mencoba dan masuk ke properti untuk itu (untuk menyesuaikan dgn mode itu), QGIS 1.8.0 hang. Saya akan melaporkan itu sebagai bug. Jika ini terjadi pada Anda juga, maka ada banyak SIG gratis lainnya di luar sana.
sumber
Di bawah ini adalah contoh yang saya tulis untuk lokakarya yang memanfaatkan modul Python numpy dan gdal. Bunyinya data dari satu file .tif ke array numpy, melakukan klasifikasi ulang dari nilai-nilai dalam array dan kemudian menulisnya kembali ke .tif.
Dari penjelasan Anda, sepertinya Anda mungkin berhasil menulis file yang valid, tetapi Anda hanya perlu menyimbolkannya di QGIS. Jika saya ingat benar, ketika Anda pertama kali menambahkan raster, sering muncul semua satu warna jika Anda tidak memiliki peta warna yang sudah ada sebelumnya.
sumber
outDs = None
untuk menyelamatkannyaSaya akhirnya menemukan solusi ini, yang saya dapatkan dari diskusi ini ( http://osgeo-org.1560.n6.nabble.com/gdal-dev-numpy-array-to-raster-td4354924.html ). Saya suka karena saya bisa langsung dari array numpy ke file raster tif. Saya akan sangat berterima kasih atas komentar yang dapat meningkatkan solusi. Saya akan memposting di sini kalau-kalau ada orang lain mencari jawaban yang sama.
sumber
Ada juga solusi bagus di Cookbook GDAL / OGR resmi untuk Python.
sumber
Alternatif untuk pendekatan yang disarankan dalam jawaban lain adalah dengan menggunakan
rasterio
paket. Saya mengalami masalah dalam menghasilkan penggunaan inigdal
dan menganggap situs ini bermanfaat.Dengan asumsi Anda memiliki file tif lain (
other_file.tif
) dan array numpy (numpy_array
) yang memiliki resolusi dan luas yang sama dengan file ini, ini adalah pendekatan yang bekerja untuk saya:sumber