Pages: 1
- Sujet précédent - Renseigner table attributaire avec des points coupant une ligne - Sujet suivant
#1 Fri 05 February 2016 16:23
- pauleg
- Juste Inscrit !
- Date d'inscription: 5 Feb 2016
- Messages: 1
Renseigner table attributaire avec des points coupant une ligne
Bonjour à tous,
J'ai un petit soucis que je n'arrive pas à résoudre...
J'ai une couche vecteur de polyligne sur laquelle se superpose des points. Imaginons des sections de route avec des bornes d'information.
J'ai découpé ma ligne pour avoir une entité de la couche route entre chaque borne. Sur ma couche ligne, je souhaite renseigner le nom des bornes qui se situent aux deux extrémités de chaque section de route.
Par exemple, une portion de route se situe entre la borne 1 et 2, je souhaite ajouter un champs dans ma couche route avec borne = 1-2
Avez-vous une idée de la façon dont je pourrai procéder ?
J'espère ne pas vous avoir embrouillée en ayant voulu faire simple !
Merci beaucoup.
Hors ligne
#2 Tue 16 February 2016 12:40
- Nicolas Granier
- Participant assidu
- Date d'inscription: 19 Apr 2007
- Messages: 271
Re: Renseigner table attributaire avec des points coupant une ligne
Bonjour,
Désolé le post date un peu.
J'ai utilisé cette problématique comme TP pour les étudiants de la licence PRO GGAT de Auch.
J'ai repris votre exemple de tronçons routiers et de bornes
La couche tronçon routier possède deux colonnes au préalable Borne_A et Borne_B qui seront complétées par le code ci-dessous.
Code:
#-*-coding:Latin-1 -*- import arcpy #modifier ici le chemin d'accès aux troncons routiers troncon=r"C:\troncon_routier.shp" tronconTemp="tronconTemp" arcpy.MakeFeatureLayer_management(troncon,tronconTemp) #modifier ici le chemin d'accès aux bornes routieres borne=r"C:\borne.shp" borneTemp="borneTemp" arcpy.MakeFeatureLayer_management(borne,borneTemp) #champ d'identifiant du TRONCON id_troncon ="TRONCON" #champ identifiant de la borne id_borne ="BORNE_ID" tableTr = arcpy.UpdateCursor(tronconTemp) for ligneTr in tableTr : codeTr = ligneTr.getValue(id_troncon) #tr print codeTr reqSQL = "\"%s\" = '%s'" %(id_troncon,codeTr) #ou arcpy.SelectLayerByAttribute_management(tronconTemp,"NEW_SELECTION", reqSQL) arcpy.SelectLayerByLocation_management(borneTemp,"INTERSECT",tronconTemp,1,"NEW_SELECTION") nb_borne= int(str(arcpy.GetCount_management(borneTemp))) if nb_borne==2 or nb_borne==1: tableBo = arcpy.SearchCursor(borneTemp) compteur=0 for ligneBo in tableBo : compteur = compteur+1 codeBo = ligneBo.getValue(id_borne) print codeBo if compteur==1 : ligneTr.setValue("BORNE_A" ,codeBo) elif compteur==2 : ligneTr.setValue("BORNE_B" ,codeBo) tableTr.updateRow(ligneTr) elif nb_borne==0 : print "Aucune borne" else : print "Plus de 2 bornes"
Ce script est en Python.
il doit être lancé depuis la console windows (invité de commande).
Pour être sur d'utiliser la bonne version de python, il faut se déplacer dans le répertoire de python installé
avec Arcgis comme ceci par exemple
Code:
cd C:\Python27\ArcGIS10.3
Puis lancer le code comme ceci
Code:
python "C:/moncode.py"
Hors ligne
Pages: 1
- Sujet précédent - Renseigner table attributaire avec des points coupant une ligne - Sujet suivant