Nous utilisons des cookies pour vous garantir la meilleure expérience sur notre site. Si vous continuez à utiliser ce dernier, nous considèrerons que vous acceptez l'utilisation des cookies. J'ai compris ! ou En savoir plus !.
banniere

Le portail francophone de la géomatique


Toujours pas inscrit ? Mot de passe oublié ?
Nom d'utilisateur    Mot de passe              Toujours pas inscrit ?   Mot de passe oublié ?

Annonce

Printemps des cartes 2024

#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

 

Pied de page des forums

Powered by FluxBB