Déterminer le nombre minimum de polygones du fichier de formes pour couvrir une zone d'intérêt

10

J'ai un grand nombre de fichiers de formes représentant des domaines d'intérêt pour une analyse qui sera réalisée à l'aide de différentes sources d'imagerie satellite (IKONOS, RapidEye, etc.). Malheureusement, l'imagerie n'utilise pas de système pathrow comme Landsat par exemple, de sorte que les étendues varient considérablement.

J'ai des fichiers de formes coupés sur chaque AOI représentant l'étendue des différentes acquisitions d'images, qui ont toutes déjà été jugées acceptables. Certains de ces fichiers de formes contiennent 500 polygones ou plus.

Je dois trouver une approche, de préférence une qui peut être automatisée (Python et ArcInfo 10 de préférence, FOSS serait également acceptable) pour déterminer le moins de polygones pour couvrir chacun de mes domaines d'intérêt.

Chad Hawkins
la source
3
En général, il s'agit d'un problème NP difficile, il nécessite donc probablement un logiciel puissant. Une approche consiste à l'encadrer comme un programme linéaire entier: les polygones dissèquent l'AOI en polygones "atomiques" et chaque polygone d'origine couvre entièrement ou ne couvre pas chaque polygone atomique. Ces informations peuvent être codées dans des vecteurs binaires. Vous cherchez à minimiser le nombre de ces vecteurs dont la somme est égale ou supérieure à 1 dans chaque composant. Des exemples pratiques de résolution de problèmes similaires se trouvent sur mathematica.stackexchange.com/a/6888 et gis.stackexchange.com/a/27678 .
whuber

Réponses:

3

Comme indiqué par whuber généraliser ce type de problème pour trouver une solution de haute qualité serait difficile mais cette approche pourrait vous rapprocher suffisamment sans beaucoup de travail. Voici un pseudo-code basé sur les hypothèses suivantes:

  1. Zone d'intérêt A
  2. Ensemble de polygones Y couvrant complètement 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'idée est que vous réduisez de manière itérative votre zone d'intérêt avec l'étendue du satellite qui a le plus grand chevauchement avec la zone d'intérêt restante. L'AOI diminue à chaque itération jusqu'à ce qu'il ne reste plus rien. Ce ne sera probablement pas une solution optimale mais elle devrait être raisonnable et fonctionner assez rapidement.

dblanchett
la source
0

Ok, vous avez donc une zone A qui représente une zone et un tas d'étendues d'imagerie qui peuvent être définies comme l'ensemble Y.

Si j'ai ce correct, vous pouvez faire un tas de fonctions différentes:

  1. découpage des étendues d'imagerie par la zone A
  2. Effectuez une sélection par emplacement à l'aide des polygones d'étendue et l'option contient complètement

Vous pouvez ensuite examiner les zones de chacun et déterminer si vous avez des polygones à sélection automatique en effectuant un tri de géométrie spatiale à l'aide d'ArcPy et de curseurs.

J'espère que cette aide.

base de code 5000
la source
1
Pouvez-vous nous en dire plus sur la façon dont vous utiliseriez les curseurs? En entrant, j'ai supposé que cela se résumerait à cela d'une manière ou d'une autre, mais je n'ai pas été en mesure de concevoir une méthodologie. J'ai envisagé de commencer par les n premiers polygones de la zone, d'éliminer des polygones restants ceux qui sont complètement contenus et de continuer à répéter de cette façon. Cela peut être un début, mais bien sûr, les polygones avec les plus grandes zones peuvent ne pas avoir des étendues très différentes.
Chad Hawkins,