Tentukan jumlah minimum poligon dari shapefile untuk mencakup bidang yang diminati

10

Saya memiliki sejumlah besar shapefile yang mewakili bidang yang diminati untuk analisis yang akan dilakukan menggunakan berbagai sumber citra satelit (IKONOS, RapidEye, dll.). Sayangnya, citra tidak menggunakan sistem jalur seperti Landsat misalnya, sehingga luasannya sangat bervariasi.

Saya memiliki shapefile yang terpotong untuk setiap AOI yang mewakili luasan akuisisi citra yang berbeda, yang semuanya sudah dianggap dapat diterima. Beberapa shapefile ini memiliki 500 poligon atau lebih.

Saya perlu menemukan pendekatan, lebih disukai yang dapat diotomatiskan (Python dan ArcInfo 10 lebih disukai, FOSS juga dapat diterima) untuk menentukan jumlah poligon paling sedikit untuk mencakup setiap bidang yang saya minati.

Chad Hawkins
sumber
3
Secara umum penuh, ini adalah masalah NP keras sehingga kemungkinan membutuhkan beberapa perangkat lunak yang kuat. Salah satu pendekatan adalah membingkainya sebagai program linear bilangan bulat: poligon membedah AOI menjadi poligon "atom" dan setiap poligon asli mencakup sepenuhnya atau tidak mencakup setiap poligon atom. Informasi ini dapat dikodekan dalam vektor biner. Anda berupaya meminimalkan jumlah vektor seperti itu yang jumlahnya 1 atau lebih besar di setiap komponen. Contoh yang berhasil tentang cara mengatasi masalah serupa ada di mathematica.stackexchange.com/a/6888 dan gis.stackexchange.com/a/27678 .
whuber

Jawaban:

3

Seperti dicatat oleh whuber generalisasi jenis masalah ini untuk menemukan solusi berkualitas tinggi akan sulit tetapi pendekatan ini mungkin membuat Anda cukup dekat tanpa banyak kerja. Berikut adalah beberapa kode pseudo berdasarkan asumsi berikut:

  1. Bidang Minat A
  2. Set poligon Y yang sepenuhnya menutupi A

    Start loop
     Iterate through Y
       Select the polygon x from Y that has greatest area of intersection with A
    
     Clip A with polygon x
     Remove x from Y 
     If A is null then end program

Idenya adalah Anda secara iteratif mengurangi Area Minat Anda dengan tingkat satelit yang memiliki tumpang tindih terbesar dengan Area Minat yang tersisa. AOI semakin kecil pada setiap iterasi sampai tidak ada yang tersisa. Ini mungkin bukan solusi yang optimal tetapi harus masuk akal dan harus berjalan cukup cepat.

dblanchett
sumber
0

Ok, jadi Anda memiliki area A yang mewakili beberapa area dan sekelompok luasan pencitraan yang dapat didefinisikan sebagai set Y.

Jika ini benar, Anda dapat melakukan banyak fungsi berbeda:

  1. Memotong Luas Gambar dengan Area A
  2. Lakukan pemilihan berdasarkan lokasi menggunakan poligon Extent dan opsi yang sepenuhnya berisi

Anda kemudian dapat memeriksa area masing-masing dan menentukan apakah Anda memiliki poligon memilih sendiri dengan melakukan beberapa penyortiran geometri spasial menggunakan ArcPy dan kursor.

Semoga bantuan ini.

basis kode 5000
sumber
1
Bisakah Anda menguraikan lebih lanjut tentang bagaimana Anda akan menggunakan kursor? Masuk saya mengira itu akan turun ke entah bagaimana tapi saya belum bisa menyusun metodologi. Saya telah mempertimbangkan mulai dengan poligon n teratas di daerah, menghilangkan dari poligon yang tersisa yang benar-benar terkandung, dan terus mengulanginya dengan cara ini. Ini mungkin permulaan, tetapi tentu saja poligon dengan area terbesar mungkin tidak memiliki luasan yang sangat berbeda.
Chad Hawkins