Determina il numero minimo di poligoni dal file di forma per coprire un'area di interesse


10

Ho un gran numero di shapefile che rappresentano le aree di interesse per un'analisi che verrà condotta utilizzando varie fonti di immagini satellitari (IKONOS, RapidEye, ecc.). Sfortunatamente, le immagini non usano un sistema di pathrow come Landsat per esempio, quindi le estensioni variano notevolmente.

Ho gli shapefile ritagliati in ogni AOI che rappresentano l'estensione di diverse acquisizioni di immagini, che sono già state ritenute accettabili. Alcuni di questi shapefile hanno 500 o più poligoni.

Devo trovare un approccio, preferibilmente uno che può essere automatizzato (preferibilmente Python e ArcInfo 10, anche FOSS sarebbe accettabile) per determinare il minor numero di poligoni per coprire ciascuna delle mie aree di interesse.


3
In generale, questo è un problema difficile NP quindi probabilmente richiede un software potente. Un approccio è quello di inquadrarlo come un programma lineare intero: i poligoni suddividono l'AOI in poligoni "atomici" e ogni poligono originale copre completamente o non copre ciascun poligono atomico. Queste informazioni possono essere codificate in vettori binari. Si cerca di ridurre al minimo il numero di tali vettori la cui somma è 1 o maggiore in ciascun componente. Alcuni esempi di come risolvere problemi simili sono disponibili su mathematica.stackexchange.com/a/6888 e gis.stackexchange.com/a/27678 .
whuber

Risposte:


3

Come notato da un whuber generalizzare questo tipo di problema per trovare una soluzione di alta qualità sarebbe difficile ma questo approccio potrebbe avvicinarti abbastanza senza molto lavoro. Ecco alcuni pseudo codici basati sui seguenti presupposti:

  1. Area di interesse A
  2. Set di poligoni Y che coprono completamente 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

L'idea è che stai riducendo in modo iterativo la tua area di interesse con l'estensione satellitare che ha la più grande sovrapposizione con la restante area di interesse. L'AOI si riduce su ogni iterazione fino a quando non viene lasciato nulla. Probabilmente questa non sarà una soluzione ottimale, ma dovrebbe essere ragionevole e dovrebbe funzionare abbastanza rapidamente.


0

Ok, quindi hai un'area A che rappresenta un'area e un mucchio di estensioni di immagini che possono essere definite come set Y.

Se ho questo corretto, puoi fare un sacco di diverse funzioni:

  1. ritagliare le estensioni di immagini dall'area A
  2. Esegui una selezione per posizione utilizzando i poligoni Extent e l'opzione contiene completamente

È quindi possibile esaminare le aree di ciascuno e determinare se si dispone di poligoni a selezione automatica eseguendo un ordinamento della geometria spaziale utilizzando ArcPy e i cursori.

Spero che questo aiuto.


1
Puoi approfondire di più su come utilizzeresti i cursori? Entrando ho pensato che in qualche modo sarebbe arrivato a questo, ma non sono stato in grado di escogitare una metodologia. Ho preso in considerazione l'idea di iniziare con i primi n poligoni nell'area, eliminando dai poligoni rimanenti quelli completamente contenuti e continuando a iterare in questo modo. Questo può essere un inizio, ma ovviamente quei poligoni con le aree più grandi potrebbero non avere estensioni molto diverse.
Chad Hawkins,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.