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 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

 

Pied de page des forums

Powered by FluxBB