Suite

Divisez la couche de lignes brisées en groupes séparés en fonction de l'emplacement


Sur la base d'une question posée précédemment sur ce forum, je voudrais poser une question supplémentaire pour accomplir la tâche que j'ai posée ici : Diviser la couche polyligne en clusters avec des exigences spécifiques dans ArcGIS for Desktop ?.

Pour me préparer à cette tâche, je voudrais créer un script pour diviser ma couche de lignes en parties séparées en formant un cluster si les liens sont connectés. Donc, dans l'image suivante, je montre un exemple de ce que je veux dire.

Pour ce faire, j'ai créé une jointure spatiale «un à plusieurs» et l'option de correspondance «touches de frontière». Cela crée donc une table avec toutes les valeurs qui sont connectées les unes aux autres. Mon idée est de prendre le FID de la "table d'origine" (par exemple 0), et de rechercher cette valeur dans la "table de jointure" dans le champ "Target_FID". Ensuite, prenez les valeurs de la colonne JOIN_FID dans les mêmes lignes (47, 109, 111). Et puis recherchez à nouveau ces valeurs (47, 109, 111) dans la colonne Target_FID' et obtenez les valeurs de la colonne JOIN_FID dans les mêmes lignes (non visibles sur l'image). Et faites-le jusqu'à ce que j'obtienne une liste de toutes les valeurs (FID) qui sont connectées les unes aux autres. L'étape suivante consiste alors à attribuer la même valeur dans une nouvelle colonne à tous les FID de cette liste dans la "table d'origine". Pour visualiser cela :

Si la liste des FID qui sont connectés entre eux était par exemple (0,1,2,3,4,5 et 6) donner cette valeur 1. Et ainsi de suite pour les autres listes de FID qui sont connectés en leur donnant les valeurs 2, 3,4 etc… Cela devrait créer des clusters des pièces connectées.

Pour ce faire, j'ai pensé à créer un script en utilisant searchcursor et updatecursor. J'ai cherché comment le faire avec ces options, mais je ne pouvais pas comprendre comment le faire pour ma situation typique. Aussi parce que je suis nouveau dans l'utilisation de ces options dans les scripts. Alors, je me demande si l'utilisation des curseurs de recherche et de mise à jour est la bonne méthode pour accomplir cette tâche ? Et si oui, quelqu'un a-t-il une idée à quoi devrait ressembler le script python ? Ou si ce n'est pas la bonne méthode, quelqu'un a-t-il une meilleure idée pour accomplir cette tâche ? Cela ne devrait pas être trop difficile, je dirais, mais je n'ai tout simplement pas encore trouvé la bonne méthode.


Si je vous comprends bien et que vous essayez d'attribuer des identifiants à n'importe quel ensemble de fonctionnalités qui se touchent, il existe un moyen plus simple. Effectuez une fusion sur votre classe d'entités et définissez leen plusieurs partiespossibilité depièce unique. Ensuite, vous pouvez effectuer une jointure spatiale, en utilisant votre classe d'entités d'origine comme classe d'entités cible et le résultat de votre fusion comme classe d'entités de jointure. Cela transférera les OID de votre classe d'entités dissoute vers la sortie de votre jointure spatiale, tout en conservant la géométrie de votre classe d'entités d'origine.


Voir la vidéo: lignes brisees fiche (Octobre 2021).