Menghitung batas gambar / tapak gambar satelit menggunakan alat sumber terbuka?

10

Saya perlu membuat garis besar poligon dari beberapa gambar raster layer tunggal, bukan kotak luas / batas, tetapi area tanpa nilai nodata, seperti yang ditunjukkan di sini: Membuat shapefile yang memperlihatkan jejak kaki Raster? .

Dalam jawaban atas pertanyaan di atas, plugin Image Boundary disebutkan, namun, saya tidak menemukannya di Lisboa QGIS 1.8.0, yang berjalan di Ubuntu.

Apakah alat ini masih tersedia?

Jika tidak, apakah ada cara untuk melakukan ini menggunakan alat opensource, baik gdal, R, QGIS, GRASS, atau serupa, tidak dengan ArcMap?

spib
sumber

Jawaban:

4

Anda dapat menambahkan repositori lama di mana ada plugin di Repositori Resmi.

http://pyqgis.org/repo/contributed

Plugin batas gambar memiliki opsi untuk menghitung piksel yang valid, tetapi, gambar perlu adegan penuh, bagaimana CBERS atau Landsat, di mana proses ini menghitung 4 sudut pertama. Kebutuhan gambar memiliki nodata dengan nilai ZERO untuk area tanpa pencitraan (dipindai oleh sensor satelit).

Penulis Batas Gambar

lmotta
sumber
Hai @lmotta, terima kasih atas tautan repositori. Gambar yang sedang saya kerjakan saat ini adalah semua gambar SAR, dengan nilai-nilai NA (atau -3,4e + 38 sesuai dengan nilai alat di QGIS). Jika seseorang dapat menambahkan nilai nodata secara manual di alat, alih-alih memiliki NOL sebagai satu-satunya pilihan, itu akan lebih bagus, jika tidak, saya mungkin pertama kali menjalankan skrip di R untuk memberikan nilai NA saya nilai baru nol. Ini alat yang hebat, terima kasih!
spib
Apakah ada repositori baru untuk Image Boundary? Tautan yang Anda berikan adalah 404. Mungkin yang berikut ?: github.com/lmotta/imagefootprint_plugin
Aaron
Apakah ada tempat di mana kita dapat menemukan dokumentasi untuk Batas Gambar?
Loonuh
11

Saya akhirnya menemukan cara untuk melakukan ini:

Langkah 1: gdalwarp -dstnodata 0 -dstalpha -of GTiff foo1 foo2

Ini melakukan dua hal penting: ini menetapkan nilai No Data (batas luar) tujuan ke 0, dan itu menciptakan pita alpha.

Langkah 2: gdal_polygonize.py foo2 -b 2 -f "ESRI Shapefile" foo3

Langkah kedua menggunakan pita alpha (pita 2), dibuat pada langkah 1, dan membuat shapefile dari pita itu.

Ini kemudian dapat dengan mudah ditulis dalam skrip bash, jika Anda memiliki banyak gambar, untuk membuat garis besar yang tepat.  

spib
sumber
Cemerlang, solusi ini tidak bergantung pada plugin atau perangkat lunak apa pun. Membuat jejak kaki raster yang peka terhadap NoData adalah salah satu tugas GIS yang tidak semudah yang seharusnya.
Charlie Parr
Ketika saya menggunakan metode ini saya berakhir dengan shapefile penuh poligon yang saya anggap mewakili warna berbeda yang dikelompokkan bersama. Bagaimana saya bisa menghindari ini dan berakhir hanya dengan beberapa poligon yang mewakili ya-data ??
Loonuh
5

Saya menggunakan gdal_translateseperti yang disarankan oleh proyek GDAL.

gdal_translate -b mask -of vrt -a_nodata 0 test.tif test.vrt
# Note the  -a_nodata 0 doesn't seem to work when the mask is input, so do another pass
gdal_translate -b 1 -of vrt -a_nodata 0 test.vrt test2.vrt
gdal_polygonize.py -q  -8 test2.vrt -b 1 -f "ESRI Shapefile" testdata.shp

masukkan deskripsi gambar di sini

pengguna2856
sumber
1
Dengan versi trunk GDAL sekarang dimungkinkan untuk menggunakan gdal_polygonize secara langsung terhadap sumber gambar osgeo-org.1560.x6.nabble.com/… . Namun, beberapa pembersihan diperlukan untuk menghapus poligon tanpa data.
user30184
4

Plugin Image Boundary juga tidak berfungsi untuk saya, oleh karena itu saya menggunakan pendekatan yang sama dengan GDAL. Namun demikian itu hanya berhasil bagi saya setelah mengubah langkah pertama menjadi:

langkah 1 : gdalwarp -srcnodata 0 -dstalpha -of GTiff foo1 foo2

Saya bekerja dengan band Landsat8 (di mana tidak ada data = 0) dan ketika menggunakan -dstnodatafungsi saya dapatkan:

Band1 dengan tidak ada data = 'ada data'
band2 (Alpha band) = '255' untuk seluruh adegan / batas

sedangkan dengan -srcnodatafungsi saya dapatkan:

Band1 dengan tidak ada data = 'ada data'
band2 (pita alpha) dengan data tidak = 'data tidak' dan data yang valid = '255' yang kemudian memungkinkan untuk ekstrak poligon untuk data yang valid saja.

Saya tidak bisa sepenuhnya memahami alasan di balik perilaku ini (bagaimana alpha dihitung?), Tapi saya harap ini dapat membantu orang lain menghadapi masalah yang sama.

dorakiara
sumber