Compter et pixelliser les chevauchements de polygones dans ArcGIS Desktop?

17

Comment prendre une couche vectorielle avec des polygones qui se chevauchent et la transformer en raster où chaque cellule compte le nombre de polygones contenant cette cellule?

Nous examinons des polygones de zones de brûlage entre 1976 et 2000 et voulons voir combien d'incendies seraient contenus dans chaque cellule raster.

user15201
la source

Réponses:

22

Pour ce faire, en trois étapes: divisez les polygones en leurs composants, comptez les chevauchements et convertissez-les en raster. Cela évite le coût de calcul potentiellement énorme de la conversion séparée de chaque polygone en raster et de la combinaison de ces rasters.

  1. Union(dans le Geoprocessingmenu) divise les polygones en leurs parties.

    Malheureusement, chaque chevauchement est dupliqué dans la sortie: il a une copie identique pour chaque polygone d'origine qui le recouvre. Donc

  2. Dissolve(à nouveau dans le Geoprocessingmenu) fusionnera les parties qui se chevauchent, à condition que vous puissiez trouver un moyen de les identifier de manière unique. Lisez la boîte de dialogue: vers la fin, vous aurez la possibilité de calculer des "statistiques". Choisissez n'importe quel champ qui aurait pu identifier les polygones d' origine et demandez un décompte.

    Dans de nombreux cas, la combinaison de l'aire du polygone et du périmètre identifiera de manière unique les pièces. Sinon, vous pouvez ajouter plus de propriétés géométriques dans des champs supplémentaires, tels que les coordonnées du centroïde, jusqu'à ce que vous ayez accumulé suffisamment d'informations pour distinguer chaque entité.

    La couche résultante a une caractéristique pour chaque chevauchement de polygones et une sorte de champ "count" comptant le nombre de chevauchements.

  3. Convertissez cela en raster, en utilisant le champ "count" pour les attributs.


Par exemple, voici quelques polygones qui se chevauchent et leurs identificateurs avec la table d'attributs montrée:

entrez la description de l'image ici

Après la deuxième étape, nous avons un enregistrement pour chaque région qui se chevauchent avec un décompte qui peut déjà être utilisé pour symboliser la quantité de chevauchement:

entrez la description de l'image ici

Le reste est facile - et ce n'est qu'une seule opération de tramage.

whuber
la source
Cette méthode vectorielle fonctionne également très bien, sauf lorsqu'elle est appliquée à des centaines de milliers de polygones avec de nombreux chevauchements sur un ordinateur avec une mémoire limitée ...
ccn
@ccn Lorsqu'il y a plus de polygones que ArcGIS ne peut en gérer, divisez l'ensemble de données en parties qu'il peut traiter. Le résultat sera plusieurs rasters - mais pas des milliers ou des millions d'entre eux - qui sont ensuite simples à résumer. Un autre avantage de l'utilisation Unionest qu'avec presque le même flux de travail, il peut traiter la situation dans laquelle les polygones résident dans plusieurs jeux de données (ce qui est généralement une mauvaise conception de base de données mais malheureusement commun): on unifie simplement tous les jeux de données d'entrée à la fois.
whuber
@ccn (suite) le point que vous évoquez se résume à ceci: quand est-il préférable de pixelliser les polygones et d'utiliser des opérations raster pour les fusionner par rapport à l'utilisation d'opérations vectorielles ( union) suivies d'une pixellisation? Les opérations vectorielles s'embourberont lorsque les entités seront numérisées avec plus de détails que nécessaire, leur conférant trop de sommets. Dans ces circonstances extrêmes, l'approche raster pourrait être meilleure (bien que la première simplification des polygones puisse être une option supérieure). Dans toutes les autres situations, cependant, la pixellisation de chaque polygone séparément est un énorme gaspillage de temps informatique et humain.
whuber
1
+1 pour une solution vectorielle. Pour mettre les choses en perspective ici, graver des données de périmètre n'est jamais très important. Par exemple, l'ensemble de données du périmètre de brûlage MTBS (États-Unis, y compris l'Alaska) pour 1984-2010 contient ~ 19 000 polygones. Une approche basée sur un vecteur ou un raster fonctionnera très bien.
Aaron
@Aaron Merci pour la perspective. Pour effectuer simultanément les USA conjoints à une résolution raisonnable (par exemple, 100 m), vous auriez besoin, par exemple, d'une trame de 50000 colonnes et de 30000 lignes contenant 1 500 000 000 de cellules. Générer 19 000 de ces rasters - même en tenant compte de la compression intégrée - puis effectuer 19 000 * 1500000000 = environ 30000 milliards d' ajouts - nécessiterait un certain temps! Si à la place chaque polygone utilise, disons, 100 sommets (ce qui est très détaillé), l'union implique 1 900 000 sommets et est une opération O (n log (n)); en principe (mais pas dans ArcGIS :-) cela prend moins de 1 sec.
whuber
1

Le message suivant a une question quelque peu similaire que vous pourriez trouver une solution connexe: Créer une surface raster de chevauchements à partir de fichiers de formes de polygones vectoriels? .

Pour cette approche raster simple et rapide, vous devrez (1) séparer les polygones qui se chevauchent en couches distinctes (probablement par année pour les polygones de feu) à l'aide de Select By Attributes dans ModelBuilder avec un itérateur ou un outil de script, (2) convertir chacun Polygone vers raster avec l'affectation de cellule MAXIMUM_COMBINED_AREA (garantissant la même taille de cellule , accrochant le raster et que l' étendue reste la même que l'ensemble des polygones) - en utilisant une valeur de champ constante (par exemple, utilisez le champ de l'année ou les lignes qui ont tous les 1) pour effectuer la conversion (utilisez à nouveau ModelBuilder avec un itérateur ou un script Python pour faciliter l'automatisation), puis (3) appliquez l'outil Spatial Analyst suivant: Statistiques des cellules - utilisez la statistique_type VARIETY si chaque raster a une valeur unique telle que l'année ou SUM si toutes les valeurs des cellules rasters sont 1s - assurez-vous de cochez pour ignorer NoData.

Les rasters intermédiaires (de la conversion précédente) peuvent être supprimés ou sont prêts à être utilisés dans les analyses de raster ultérieures.

ccn
la source
(Veuillez voir mon commentaire à la réponse d' Aaron .)
whuber