#1 Thu 25 October 2018 08:23
- JPr31
- Participant occasionnel
- Date d'inscription: 7 Jun 2012
- Messages: 15
PYTHON : Update sommet de début et de fin de polyline
Bonjour,
Je bloque dans l'élaboration d'un script autonome qui permet dans un premier temps de bouger des points à certaines coordonnées et ensuite de faire suivre les polyline sur ces points.
En gros, j'ai un réseau (ligne) et des équipements (points) sur ce réseau. Au départ les 2 couches sont bien concordantes au niveau topologie.
Je dois déplacer les points sur des coordonnées présentes dans la table. Jusque là pas de soucis. Le soucis est que ces points était rattaché à un début ou fin de tronçons. Le but du script est de faire suivre dans un deuxième temps ces lignes au bons points ( il y a bien des champs en commun).
Donc, j'arrive bien à récupérer les coordonnées des sommets de début et fin de ligne mais pas à les mettre à jour avec les coordonnées des points.
Si quelqu'un a déjà réussi à faire une manip de ce genre cela m'intéresse.
Merci d'avance. Je mets le code en dessous
Code:
with arcpy.da.UpdateCursor(path_noeud, ["Id_node", "Coordx", "Coordy", "Coordx_m", "Coordy_m", "SHAPE@X", "SHAPE@Y"]) as ucursor: n = 0 for row1 in ucursor: x_move, y_move = False, False if row1[3] != 0 and row1[4] != 0: if row1[1] != row1[3]: row1[5] = row1[3] x_move = True if row1[2] != row1[4]: row1[6] = row1[4] y_move = True if x_move or y_move: n += 1 ucursor.updateRow(row1) dict_noeud = {} with arcpy.da.SearchCursor(path_noeud, ["Id_node", "Coordx_m", "Coordy_m", "SHAPE@X", "SHAPE@Y"], spatial_reference=pt_sr) as scursor: for row in scursor: Id_node = row[0] ptX = row[3] ptY = row[4] dict_noeud = str(int(Id_node)), str(ptX), str(ptY) with arcpy.da.UpdateCursor(path_arc, ["SHAPE@", "F_id_node", "T_id_node", "Id_arc"]) as curs: for row in curs: shape = row[0] F_id_node = row[1] T_id_node = row[2] for key in dict_noeud: if F_id_node in dict_noeud: arcpy.AddMessage("hi") shape.firstPoint.X = dict_noeud[(ptX)] shape.firstPoint.Y = dict_noeud[(ptY)] elif T_id_node in dict_noeud: shape.lastPoint.X = dict_noeud[(ptX)] shape.lastPoint.Y = dict_noeud[(ptY)] arcpy.AddMessage("ho") curs.updateRow(row) arcpy.RefreshActiveView()
Hors ligne
#2 Thu 25 October 2018 12:30
- Ylx_bc
- Juste Inscrit !
- Date d'inscription: 18 Apr 2017
- Messages: 5
Re: PYTHON : Update sommet de début et de fin de polyline
Bonjour,
Avec un réseau géométrique les lignes suivent les déplacements des points. A tester ^^
http://desktop.arcgis.com/fr/arcmap/10. … works-.htm
cdlt,
Hors ligne
#3 Fri 26 October 2018 11:57
- JPr31
- Participant occasionnel
- Date d'inscription: 7 Jun 2012
- Messages: 15
Re: PYTHON : Update sommet de début et de fin de polyline
Merci de la réponse.
Par contre ça m'aide pas trop dans mon script même si je vois le raisonnement de Network Analyst, ça ne marcheras pas avec mon problème
Dernière modification par JPr31 (Fri 26 October 2018 11:57)
Hors ligne
#4 Thu 22 November 2018 14:55
- JPr31
- Participant occasionnel
- Date d'inscription: 7 Jun 2012
- Messages: 15
Re: PYTHON : Update sommet de début et de fin de polyline
J'ai résolu mon soucis avec l'aide esri : WKT dans Geometry Si cela peut aider d'autres
http://desktop.arcgis.com/fr/arcmap/10. … ometry.htm
Hors ligne