J'ai deux fichiers de formes, Point et Polyline. J'essaie de remplir ma couche de polyligne avec l'ID de données de point (systemID) où les lignes commencent à leur fin; par exemple. créer deux colonnes (de et vers). Les lignes sont déjà affectées à la direction du flux. J'utilise les outils ArcHydro mais Arcpy est également très bien.
Dans ArcHydro, j'ai essayé d'utiliser Outils d'attributs> Générer des nœuds de / vers pour les lignes, mais cela crée des valeurs pour To et From qui ne sont pas à partir de mes données de point. Mon autre alternative était d'utiliser Feature to Vertices et de joindre le résultat à ma table de données de points pour obtenir l'ID système. Mais je devrais également mettre à jour le calque de polyligne. Je suis sûr qu'il existe un moyen plus simple de le faire.
Remarque: toutes les lignes n'ont pas de points aux sommets, les valeurs vides leur conviennent.
Réponses:
Parfois, il vaut mieux ne pas utiliser la solution prête à l'emploi. Voilà pourquoi je suggère
Aller à 2, mais utiliser le dernier point pour attribuer TO nodeID
la source
J'ai fait la même chose il y a quelques mois. J'ai utilisé arcpy mais le script est beaucoup trop long pour être posté ici, donc je vais vous donner un aperçu de ce que j'ai fait.
J'ai utilisé une jointure spatiale pour détecter quels points / nœuds se trouvaient dans une entité linéaire particulière.
Étant donné que la jointure spatiale ne prend pas en compte la direction du flux, j'ai utilisé arcpy pour déterminer quel était le point de départ et quel était le point d'arrivée. J'ai pu le faire en utilisant la fonction de description arcpy pour extraire des informations de coordonnées pour les sommets de début / fin de l'entité linéaire et les comparer aux valeurs de coordonnées des points connectés.
Enfin, une fois que j'ai déterminé quels étaient les points de destination / d'arrivée, j'ai utilisé la fonction setValue pour remplir les champs de / vers dans le jeu de données de polyligne d'origine.
De toute évidence, il y a un peu plus que cela, mais j'ai souligné les principaux points.
la source
J'ai été inspiré par @FelixIP, mais je voulais écrire une solution sans jointures ni création de fichiers supplémentaires, car mon réseau est assez grand avec 400K + tubes et 500K + nœuds.
La construction du réseau géométrique oblige les X, Y des nœuds et les extrémités des tuyaux à coïncider. Vous pouvez accéder à ces emplacements avec les jetons de forme dans les curseurs arcpy et les faire correspondre. Les jetons de forme pour les lignes renvoient un tableau des sommets dans l'ordre où ils ont été dessinés. Dans mon réseau, l'ordre de tirage des tuyaux est fortement contrôlé par la qualité, car nous l'utilisons pour définir les directions d'écoulement. Ainsi, le premier sommet est le début du tuyau et le dernier sommet est la fin du tuyau.
Référence: ASSETID = id du tuyau, UNITID = id du nœud au début du tuyau, UNITID2 = id du nœud à la fin du tuyau.
la source