Визначте мінімальну кількість багатокутників із формфайлу, щоб охопити область, що цікавить


10

У мене є велика кількість форм-файлів, що представляють цікаві області для аналізу, який буде проведений з використанням різних джерел супутникових знімків (IKONOS, RapidEye тощо). На жаль, зображення не використовують, наприклад, систему шляху, як Landsat, тому розширення сильно різняться.

У мене на кожному AOI прикріплені формулярні файли, що представляють собою різноманітні придбання різних зображень, і всі вони вже вважаються прийнятними. Деякі з цих профілів мають 500 або більше багатокутників.

Мені потрібно знайти підхід, бажано такий, який може бути автоматизований (Python та ArcInfo 10, бажано, щоб було також прийнято FOSS), щоб визначити найменшу кількість полігонів, що охоплюють кожну з моїх цікавих областей.


3
В цілому, це складна проблема NP, тому, ймовірно, потрібне потужне програмне забезпечення. Один із підходів полягає у формуванні його як цілолінійної лінійної програми: багатокутники розсікають AOI на «атомні» багатокутники, а кожен оригінальний багатокутник або повністю охоплює, або не охоплює кожен атомний багатокутник. Ця інформація може бути закодована у двійкові вектори. Ви прагнете мінімізувати кількість таких векторів, сума яких становить 1 або більше в кожному компоненті. Приклади роботи над вирішенням подібних проблем є на веб-сайті mathematica.stackexchange.com/a/6888 та gis.stackexchange.com/a/27678 .
whuber

Відповіді:


3

Як зазначає, узагальнення такого типу проблем знайти високоякісне рішення було б складно, але такий підхід може зробити вас досить близьким без великої роботи. Ось декілька псевдокодів на основі таких припущень:

  1. Область інтересів A
  2. Сукупність багатокутників Y, які повністю охоплюють 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
    

Ідея полягає в тому, що ви ітераційно зменшуєте область інтересів із супутниковою мірою, яка має найбільше перекриття з тією, що залишилася в районі інтересів. AOI стає меншою на кожній ітерації, поки нічого не залишиться. Це, ймовірно, не буде оптимальним рішенням, але воно повинно бути розумним і працювати досить швидко.


0

Гаразд, значить, у вас є область A, яка представляє деяку область та купу розширень зображень, які можна визначити як Y.

Якщо у мене це правильно, ви можете виконати купу різних функцій:

  1. відсікання розширень зображень за площею A
  2. Виконайте вибір за місцеположенням, використовуючи полігони Extent та повністю містить параметр

Потім ви можете вивчити області кожного та визначити, чи маєте ви самостійний вибір полігонів, виконавши сортування просторової геометрії за допомогою ArcPy та курсорів.

Сподіваюся, що це допоможе.


1
Чи можете ви детальніше розповісти, як би ви використовували курсори? Увійшовши, я припускав, що це якось зведеться, але я не зміг розробити методологію. Я розглядав питання, починаючи з верхніх n полігонів у зоні, виключаючи з решти багатокутників ті, які повністю містяться, і продовжую ітерацію таким чином. Це може бути початком, але, звичайно, ті багатокутники з найбільшою площею можуть не мати дуже різного розширення.
Чад Хокінс
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.