Correction de milliers de petits polygones qui se chevauchent?

21

J'utilise ArcMap 10.3.

J'ai une couche de différents types d'utilisation des terres. J'ai découvert que de nombreux polygones se chevauchent et que, par conséquent, le même polygone a deux types d'utilisation des terres différents.

En utilisant la réponse de @ radouxju , j'ai construit une topologie pour la couche d'utilisation des terres (avec la règle ne doit pas se chevaucher). Ensuite, j'ai utilisé la fusion pour corriger les grands polygones qui se chevauchent.

Cependant, j'ai des milliers de petits polygones qui se chevauchent. Je peux tous les réparer manuellement, ce qui prendra du temps.

Existe-t-il un moyen plus rapide de corriger toutes ces erreurs?

entrez la description de l'image ici

entrez la description de l'image ici


J'ai mis à jour la carte pour montrer tous les types d'utilisation des terres. Les polygones se chevauchent; pas des éclats.

brillant
la source
2
Est-ce que l' outil d'intégration fonctionnerait pour vous?
Fezter
@Fezter Je ne pense pas, car les polygones n'ont pas la même zone et je ne peux pas utiliser la même tolérance XY pour toute la couche.
brillant
1
@aelwan: Quel est votre objectif avec ces données? Créez-vous ces données pour qu'elles soient utilisées par d'autres (comme si vous étiez à l'origine des données)? Ou essayez-vous de le "nettoyer" pour l'utiliser dans une carte ou une analyse? La raison pour laquelle je demande, c'est que ces données ressemblent à des données d'ordures. Cela va au-delà de l'analyse SIG, il doit être complètement redigitifié et demander à une personne ayant autorité (connaissance pratique) de prendre des décisions éclairées sur l'emplacement de ces limites. Sinon, je laisserais simplement les données telles quelles.
alexGIS
@alexGIS Je suis totalement d'accord avec vous sur la gravité des données. Cependant, ce sont les MEILLEURES données que j'ai obtenues. J'essaie de nettoyer pour analyse.
brillant

Réponses:

6

La préoccupation soulevée par @Adam Cara est très valable. Cependant, quand j'ai regardé l'auto-intersection, il est apparu que la plupart d'entre eux sont soit des morceaux maigres à la frontière entre 2 polygones massifs, soit des bits / îles déconnectés d'un grand polygone assis à l'intérieur d'un autre. Dans ce cas, l'effacement des chevauchements et l'attribution des chevauchements dissous l'attribut du plus proche voisin (selon la première éventualité) peut fonctionner.

Processus:

arcpy.Intersect_analysis("Landuse2b #","D:/Scratch/mpart.shp","ALL","#","INPUT")
arcpy.MultipartToSinglepart_management("mpart","D:/Scratch/spart.shp")
arcpy.Dissolve_management("spart","D:/Scratch/dissolved_1.shp","#","#","SINGLE_PART","DISSOLVE_LINES")
arcpy.Erase_analysis("Landuse2b","dissolved_1","D:/Scratch/erased.shp","#")
arcpy.DeleteField_management("spart","FID_Landus;OBJECTID;Lnduse2013;Shape_Leng;Shape_Area")
arcpy.SpatialJoin_analysis("spart","erased","D:/Scratch/sj_1.shp","JOIN_ONE_TO_ONE","KEEP_ALL"…..)
arcpy.Merge_management("sj;erased","D:/Scratch/merge_1.shp"….)
arcpy.Dissolve_management("merge_1","D:/Scratch/dissolved.shp","Lnduse2013","#","SINGLE_PART","DISSOLVE_LINES")

Tester:

arcpy.Intersect_analysis("dissolved #","D:/Scratch/test.shp","ALL","#","INPUT")

Message:

  • Exécution: Intersection "dissous #" D: \ Scratch \ test.shp ALL # INPUT
  • Heure de début: ven 22 avr 10:16:07 2016
  • Fonctions de lecture ...
  • Fonctions de craquage ...
  • Fonctions d'assemblage ...
  • AVERTISSEMENT 000117: sortie vide d'avertissement générée.
  • Réussi le vendredi 22 avril 10:16:09 2016 (Temps écoulé: 2,34 secondes)

Notez que ce message signifie qu'il n'y a pas d'auto-intersection dans la sortie de Dissolution finale

Résultat:

https://drive.google.com/file/d/0B6B33FrGNitPT0FvbVdHQm0xMDg/view?usp=sharing

FelixIP
la source
1
Cette solution la rend "soignée", mais pas "correcte". Si OP ne craint pas qu'une zone qui chevauchait avec "Dairy" et "Sheep / Beef" soit désormais reclassée en "Builtup / Parks / Others", et d'autres reclassifications arbitraires de ce type que je vois en comparant l'entrée à la sortie, alors cette solution fonctionne. Cela étant dit, c'est un flux de travail élégant, un beau travail.
alexGIS
1
Avec de telles données, personne ne sait ce qui EST correct
FelixIP
7

Si vos polygones sont des éclats, la commande éliminer fonctionne bien pour les fusionner soit dans le polygone de plus grande surface soit dans le bord le plus long.

Si les polygones sont des chevauchements, il peut y avoir un moyen plus simple, mais je sélectionnerais les chevauchements sur une couche distincte, puis les réunirais en créant les éclats et en utilisant la commande éliminer.

Bryan Waller
la source
Merci pour votre temps et votre aide. Mes polygones se chevauchent. Afin de suivre votre réponse, comment puis-je sélectionner les chevauchements vers un calque séparé? Les chevauchements sont affichés comme des erreurs de zone après avoir créé la topologie.
brillant
Exécutez simplement l'intersection ( resources.arcgis.com/EN/HELP/MAIN/10.1/index.html#//… ) sur la couche de polygones. Le résultat de l'intersection sera tous les chevauchements dans ce calque.
iRfAn
@iRfAn Merci j'ai couru l'intersection et j'ai eu le chevauchement.
brillant
@Bryan Waller J'ai essayé de suivre ce que vous avez suggéré: j'ai sélectionné les chevauchements sur un calque séparé en utilisant "intersect"; puis les réunir dans "MAIS AUCUN ARGENT N'A ÉTÉ CRÉÉ". Après avoir utilisé la commande éliminer, je peux toujours trouver que le même polygone a deux types d'utilisation des terres différents. Toute aide serait appréciée. Vous pouvez trouver la couche d'utilisation des terres ici goo.gl/0aE3wq
brillant
6
  1. Sélectionnez une petite zone et convertissez-la en deux fichiers de forme pour voir si ce processus fonctionne.
  2. Créez un nouveau champ nommé test (nombre) dans s1 et s2.
  3. Intersection de deux fichiers de formes S1 et S2.
  4. Les zones qui se chevauchent seront identifiées dans un fichier séparé, par exemple nommé Common1 (zone hachurée sur la figure).
  5. Calculez le test sur le terrain comme 1 en commun.
  6. Union S1 et commune
  7. Sélectionnez 1 entrez la description de l'image icidans le champ de test et supprimez la zone hachurée.
  8. Maintenant, fusionnez s2 et commun. La commande d'effacement peut être utilisée pour effacer la zone commune.
Shampa
la source
@Shampe Merci pour votre aide. Les chevauchements que j'ai se trouvent dans le même fichier de formes et non dans deux fichiers de formes.
brillant
6

Avez-vous envisagé de diviser les classes individuelles d'utilisation des terres en fichiers de formes distincts pour travailler avec elles de cette façon. J'ai d'abord pensé à exécuter une intersection, mais j'ai vu que cela a échoué ci-dessus. Si vous disposez de sept fichiers de formes distincts, vous pourrez peut-être les manipuler plus facilement.

La principale question que j'ai est de savoir s'il y a chevauchement, avez-vous une hiérarchie pour quelle classe gagne et devrait apparaître à la fin? Par exemple: si les cultures et les produits laitiers se chevauchent, que gardez-vous? Une fois cette hiérarchie établie, coupez deux classes à la fois, en commençant par la plus basse et en terminant par la plus élevée. Si votre sortie est vide à une intersection donnée, cela signifie qu'ils ne se coupent pas.

Adam Kara
la source
2
Vous soulevez ici la question la plus importante: comment classer les chevauchements? Le simple fait de rendre les données «nettes» ne signifie pas qu'elles sont «correctes».
alexGIS
@alexGIS Encore une fois, je suis d'accord avec vous. Cependant, étant donné l'objectif de cette analyse et la petite zone des polygones qui se chevauchent des données, la catégorie du chevauchement n'est pas l'objectif principal par rapport à la fixation des chevauchements.
brillant
Cela pourrait être une bonne idée pour une autre raison. Les chevauchements peuvent représenter des changements dans les limites des champs et des recadrages au fil du temps.
nmtoken
5

Une fois que vous avez créé une topologie, vous avez identifié les erreurs.

Dans la liste qui montre les erreurs, vous pouvez sélectionner toutes les erreurs du même type, faites un clic droit sur cette liste et choisissez un "correctif". Dans votre cas, le correctif serait «créer une entité», ce qui créera un nouveau polygone si deux polygones se chevauchent. Il s'agit de la première étape (notez que vous pouvez obtenir un résultat similaire en utilisant l'outil d'union avec votre couche d'utilisation du sol comme entrée unique, puis l'outil de création de parties multiples en une seule partie (mais les chevauchements se chevaucheront toujours, vous devez donc supprimer l'un des la valeur d'attribut), ou convertissez votre polygone en lignes puis revenez au polygone (mais alors vous perdez l'attribut, vous avez besoin d'une jointure spatiale pour récupérer les attributs))

La deuxième étape consisterait à supprimer les petits polygones. Le problème est que vous n'avez pas vraiment de règle pour décider quelle valeur d'attribut vous souhaitez conserver. Mon outil préféré est ensuite l' outil d'élimination , où vous pouvez choisir dans quel polygone voisin les petits polygones seront fusionnés (en fonction de la plus grande frontière partagée ou de la plus grande zone)

Dernière remarque: si vous avez une règle pour la classe d'utilisation des terres prioritaire, sélectionnez de manière itérative les petits polygones (qui n'ont pas d'étiquette) par emplacement pour attribuer chaque classe d'utilisation des terres en diminuant l'ordre de priorité et utilisez le calculateur de champ pour attribuer leur étiquette.

radouxju
la source
4

Bien que je sois d'accord avec les autres pour savoir s'il s'agit de chevauchements de polygones ou d'éclats, d'après ce que je vois ici avec cette image, vous montrez tout le monde. Je vous recommande de changer vos couleurs de symbologie pour l'utilisation des terres. De cette façon, vous pouvez voir lequel doit aller ou l'autre. La seule couleur que vous nous avez montrée en rose est vraiment difficile à lire et cela peut vous prendre beaucoup de temps.

Sur la deuxième partie, je sélectionnerais tous les polygones de chevauchements ou d'éclats et les exporterais dans un nouveau fichier de formes. De cette façon, vous pouvez les identifier ce qu'ils sont dans l'utilisation des terres.

PROBERT
la source
Merci de votre aide. J'ai mis à jour la carte pour montrer les couleurs pour toutes les utilisations du sol.
brillant
4

Une solution possible, si vous avez Spatial Analyst ou 3D Analyst, consiste à convertir les polygones d'utilisation des sols en une image raster à l'aide de l'outil (Conversion de polygone en raster) pour vous assurer qu'aucun polygone se chevauchant ne sortira, car vous ne pouvez pas obtenir de pixels qui se chevauchent. Ensuite, reconvertissez le raster en polygones à l'aide de l'outil (Raster en polygone), si vous en avez toujours besoin au format vectoriel. Dans ce cas, choisissez une taille de cellule haute résolution (taille de cellule détaillée) pour obtenir des polygones de bonne qualité, mais vous devez tenir compte de la mémoire. Vous devrez peut-être l'essayer plusieurs fois en modifiant la taille de la cellule jusqu'à ce que vous soyez satisfait des résultats.Vous devrez peut-être effectuer un certain lissage des polygones de sortie, s'il n'est pas parfait, mais cela dépend si vous avez au moins la licence standard pour ArcGIS Desktop. Je sais que ce n'est pas une tâche facile, mais cela peut résoudre votre problème.

ahmadhanb
la source
4

Vérifiez les quelques intervalles ou chevauchements entre les polygones pour trouver la tolérance et utilisez l'outil d'intégration d'Arctoolbox avec les valeurs de tolérance appropriées.

entrez la description de l'image ici

Venug
la source