Comment identifier les polygones avec des erreurs de ruban «indicateur»


12

En travaillant dans ArcMap, je suis tombé sur des erreurs dans une couche de polygones que j'appellerai "slivoïdes de drapeau" (tirés d'un langage similaire dans les parcelles, appelés "lots de drapeaux"). Ces polygones de ruban (voir l'image ci-dessous) sont généralement composés d'un seul nœud supplémentaire que l'utilisateur a accidentellement ajouté.

Dans les images ci-dessous, le «drapeau» et le «mât de drapeau» sont une caractéristique en une seule partie où le «mât de drapeau» se chevauche simplement. L'image de gauche a un total de 5 nœuds.

drapeau simple entrez la description de l'image ici

Lorsqu'elles sont vues seules, les erreurs sont très évidentes, mais lorsque plusieurs polygones sont adjacents, ils sont presque impossibles à voir car ils semblent être la frontière entre 2 polygones.

Cela se produit probablement parce qu'ils utilisent un éditeur basé sur un fichier de formes, et que je ne peux donc pas implémenter de règles d'édition basées sur la topologie pour empêcher que cela ne se reproduise à l'avenir.

Quelqu'un a-t-il un moyen d'identifier et de résoudre ces types d'erreurs? Je préférerais une méthode automatisée d'identification et de résolution car les utilisateurs sur le terrain sont ceux qui ont créé les erreurs, mais je suis coincé à les nettoyer. Merci.


3
Je me demande pourquoi Esri fournit une règle de non-auto-intersection pour les entités linéaires, mais pas pour les polygones.
Kirk Kuykendall,

L'outil Vérifier la géométrie les trouve-t-il?
mkennedy

Recherchez également sur balancer et dépasser. Les deux ont fait apparaître quelques arcscripts, mais rien de courant et beaucoup de polylignes, plutôt que des polygones.
mkennedy

Ryan, serait-il possible pour vous de fournir un sous-ensemble de vos données? Avez-vous également, par hasard, enquêté sur le commentaire de mkennedy à propos de l'outil "Vérifier la géométrie"?
Allan Adair

Quelle version d'arcmap?
Kirk Kuykendall

Réponses:


5

si vous avez accès aux outils Safe Fme, vous trouverez utile le transformateur appelé spikeRemover, jetez-y un œil. Vous pouvez essayer une version limitée téléchargeable de SAFE FME ou vérifier votre licence ArcGis pour "FME Extension for ArcGIS"

http://docs.safe.com/fme/html/FME_Transformers/Default.htm#Transformers/spikeremover.htm

http://cdn.safe.com/resources/fme/FME-Transformer-Reference-Guide.pdf


J'ai pu utiliser avec succès le SpikeRemover dans l'extension ArcGIS Data Interop afin de nettoyer les pics. Il a également des sorties qui vous permettent de spécifier des fonctionnalités inchangées, modifiées et marquées (pointes). Tous ces éléments ont été très utiles pour identifier les fonctionnalités qui avaient des pointes, et créer une nouvelle couche "sans pointes" était très facile en affichant simplement les sorties inchangées et modifiées sur la même couche, et la sortie "signalée" sur une couche QC pour une inspection plus approfondie. esri.com/software/arcgis/extensions/datainteroperability/…
RyanKDalton

2

Je ne sais pas où votre problème se produit, ni où vous avez la possibilité de l'éviter / le résoudre. Mais j'ai beaucoup vu cela dans notre base de données SDE bien que les géométries dans SDE devraient toujours être correctes. Dans notre cas, c'est parce que nous avons importé des fichiers de formes à l'aide d'ArcObjects dans le SDE. Lorsque les géométries ont été stockées, elles se sont accrochées à la grille du SDE et ont ainsi créé des géométries incorrectes avec les éclats que vous décrivez lorsque la géométrie avait un pic fin. En effet, les fichiers de formes ont une double précision complète pour les coordonnées et le SDE une grille plus grossière.

Notre solution consistait à corriger les géométries lors de leur importation par:
1. Définissez la référence spatiale de la géométrie du fichier de formes sur la référence spatiale de la classe d'entités SDE correspondante
2. Accrochez la géométrie à la référence spatiale (IGeometry.SnapToSpatialReference () )
3. Définissez ITopologicalOperator2.IsKnownSimple = false (important, sinon simplifier ne fait rien).
4. Effectuez une opération de simplification. Pour les polygones, nous avons utilisé IPolygon.SimplifyPreserveFromTo ()


2

Avec arcmap 9.3.1, j'ajouterais un champ appelé Flag (ou peut-être FlagFlag?) Et utiliserais le code VBA dans la calculatrice de champ pour calculer ce champ.

Le code VBA atténuerait une variable comme ITopologicalOperator3 et la définirait dans le champ Shape.

Il appellerait alors la méthode IsSimpleEx pas si simple .

Définissez la valeur du champ Indicateur sur esriNonSimpleEnum . Vraisemblablement, l'erreur qui vous préoccupe reviendrait esriNonSimpleSelfIntersections.

Avec 10.0, il peut y avoir un moyen de le faire avec python dans la calculatrice (?) ... Je ne suis pas sûr. J'utiliserais une commande de complément. IMO Esri devrait fournir un support pour c # dans la calculatrice de terrain. Après tout, le compilateur c # est installé dans le cadre du framework .NET.

Mise à jour

Le code que j'ai publié ici peut trouver des pôles de drapeau si vous appliquez une expression de définition "Left_OID" = "Right_OID"au calque de traits de polyligne résultant.


1

Ce script Python est un outil pratique

Élimine les polygones de ruban des fichiers de formes

"EliminateSlivers.py parcourt toutes les entités d'un fichier de formes polygonal et supprime celles du fichier de formes de sortie qui tombent en dessous d'un seuil de zone donné.

Les opérations de géotraitement et les tolérances des clusters pourraient entraîner la création de minuscules polygones de ruban supplémentaires. Celles-ci peuvent être dénuées de sens et pourraient fausser la fiabilité des données spatiales. "

Remarque: vous devrez tester avec différentes tolérances avec vos données (prenez d'abord une copie de vos données)

http://arcscripts.esri.com/details.asp?dbid=14672


1
C'était facile avec ArcInfo Coverages> Clean Arcs> Build
Polygons

Je ne suis pas sûr que cet outil éliminerait réellement les erreurs que je représente. Vous voyez, le ruban (mât de drapeau) et le corps principal du polygone (drapeau) sont en fait une entité. Par conséquent, ce script ne supprimerait PAS UNIQUEMENT la partie "mât de drapeau" du polygone sans supprimer la fonction "drapeau" en même temps.
RyanKDalton

1

Ryan,

J'ai travaillé avec le bureau d'étude des sols et j'ai vérifié périodiquement leurs polygones de sol. Ce que je fais est vérifié pour les éclats. J'enverrais la classe de fonctionnalités à la couverture, puis je les construirais pour étiqueter afin d'identifier les erreurs. Si vous voyez 2 étiquettes dans un polygone, c'est une erreur. Si c'est une étiquette par polygone, vous savez que c'est correct. Je créerais une classe de traits comme point pour marquer une erreur. Ou vous pouvez sélectionner une ou plusieurs étiquettes dans une nouvelle classe de fonctions. De cette façon, vous pouvez revenir et corriger l'erreur. Cela fonctionne très bien pour moi avec les polygones de sol. Je l'utilise pour informer les pédologues du sol afin de résoudre le problème.

C'est juste ma façon d'identifier le problème. Je partage juste ça avec vous.


1

Si l'identification n'est pas un point majeur et juste le correctif automatisé, essayez ceci. Ajoutez les données à un nouveau document ArcMap vierge, puis;

  • Créer une topologie de carte
  • sélectionner toutes les fonctionnalités
  • utiliser les fonctionnalités de construction pour diviser les fonctionnalités existantes

J'ai testé cela et cela semble fonctionner mais je ne sais pas si j'ai exactement répliqué votre source de données

Amusez-vous, CDB


1

Voilà, il y a quelques façons de résoudre ce problème et à mon avis, la plus élégante est d'utiliser une extension appelée GIS Data Reviewer . Le réviseur de données SIG vous permet de créer des vérifications personnalisées et simplifiées de la précision spatiale et des attributs en plus de la topologie de base. Dans la topologie, des éléments non disponibles font partie des vérifications standard pour Data Reviewer Like

  • Fermeture 3D
  • Trou non valide
  • Expression SQL
  • Zone inférieure à la référence spatiale
  • Fonctionnalité sur fonctionnalité
  • et beaucoup plus

J'utiliserais cela pour interroger vos données. Une autre solution consiste à créer une nouvelle classe d'entités basée sur votre classe d'entités surfaciques existante. puis créez une nouvelle classe d'entités Polygone et remplissez-la avec les lignes à l'aide de l'outil de construction d'entités dans la barre d'outils Topologie. Cela signifierait alors que les éclats devraient alors s'afficher comme tels et que tout autre outil de topologie devrait détecter l'erreur. Il s'agit ensuite de sélectionner, supprimer et remplacer les entités dans la classe d'entités existante.

J'espère que cela vous aidera, CDB

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.