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.
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.
la source
Réponses:
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
la source
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 ()
la source
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.la source
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
la source
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.
la source
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;
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
la source
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
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
la source