Bienvenue! Inscrivez-vous et rejoignez notre communaut :)
  • Login:

Bienvenue sur Forum SIG - Systmes d'Information Gographique et Gomatique.

Bienvenue sur le forumSIG. S'il s'agit de votre premire visite, assurez vous de faire une recherche pralable dans les FAQ SIG. Vous devez vous inscrire avant de pouvoir poster.

Affichage des rsultats 1 1 sur 1
  1. #1

    Date d'inscription
    avril 2015
    Emploi
    Charg d'tude
    Messages
    61

    Par dfaut Boucle sur le nombre d'entits qui intersectent chaque lment d'une couche

    Bonjour tous,

    Je viens vers vous car je rencontre un problme lors de la rdaction de mon script.

    Pour commencer, voici la situation de mes donnes :

    Cliquez sur l'image pour la voir en taille relle 

Nom : 		DONNEES.jpg 
Affichages :	12 
Taille :		25,2 Ko 
ID : 			8693

    Donnes d'entres :
    - Routes (2 types : lignes secondaires et ma route principale slectionne en bleu)
    - Carrefours (points turquoises)
    - Adresses (points bleus)

    Le but de mon script est qu'en renseignant l'ID de ma route principale (ici il y en a qu'une), le script m'indique le nombres de routes secondaires qui intersectent mes carrefours le long de cette route principale. Si par exemple 3 lignes secondaires intersectent mon carrefour, je veux ajouter un champ "NB_lignes_sec" ma couche CARREFOURS avec le nombre d'intersections entre ces deux couches.

    Sur l'exemple illustr ci-dessus, j'aurai donc ma couche CARREFOURS avec un nouveau champs "NB_lignes_sec" qui va avoirs 3 valeurs : 5, 1 et 3.

    Voici le script que j'ai implment jusque l :

    Code:
    import arcpy.mapping as mapping
    
    mxd = mapping.MapDocument("CURRENT")
    mxd.title = "ROUTES"
    df = arcpy.mapping.ListDataFrames(mxd, "*")[0]
    idRoutePrincipale = arcpy.GetParameter(0)
    
    
    
    
    layers = mapping.ListLayers(mxd)
    
    
    for fts in layers :
        if fts.name == "CARREFOURS":
            arcpy.AddField_management ("CARREFOURS", "NB_lignes_sec", "LONG",1)
    
    
    #2 : Selection des cables de desserte
    
    
    for layer in layers :
        if layer.name == "ROUTES":
            query = '"type" = '+ str(2) #Les routes secondiares ont comme "type" "2"
            layer.definitionQuery=query
            with arcpy.da.SearchCursor("CARREFOURS",("OBJECTID")) as cursor:
                for row in cursor:
                    selection_routesSecondaires=arcpy.SelectLayerByLocation_management ("ROUTES", "intersect", "CARREFOURS")
                    cnt = arcpy.GetCount_management(selection_routesSecondaires)
                    print(cnt)
    Le script ainsi excut me slectionne l'ensemble des entits de la couche ROUTES qui intersectent ma couche CARREFOURS alors que seuls les routes de type "2" sont destines tre slectionnes en boucle pour chaque carrefour.

    RESULTAT :
    9
    9
    9

    Avez-vous une ide de la manire dont je dois m'y prendre pour raliser cela ?

 

 

Discussions similaires

  1. [ArcGIS 10.x] Cration d'un outil pour slectionner des entits pour chaque polygones d'une couche
    Par Yennaiv dans le forum Assistance Technique
    Rponses: 2
    Dernier message: 27/06/2014, 15h32
  2. [QGIS 2.x] Mettre le nombre de points de chaque chaque entit dans la lgende
    Par Alexis86 dans le forum Assistance et Programmation
    Rponses: 1
    Dernier message: 02/06/2014, 16h10
  3. [ArcGIS 9.x] Gnrer une boucle pour selectionner des entits
    Par depdep dans le forum Assistance Technique
    Rponses: 0
    Dernier message: 28/03/2011, 17h03
  4. [VBA Excel] Boucles et boucle et boucle et ... Tiens, une boucle!
    Par Speed-Popeye dans le forum Assistance Logiciel
    Rponses: 9
    Dernier message: 17/06/2010, 11h22
  5. [ArcGIS 9.x] Visualisation d'entits dans une boucle
    Par eoux dans le forum Programmation
    Rponses: 9
    Dernier message: 10/04/2009, 09h33

Les tags pour cette discussion

Liens sociaux

Rgles de messages

  • Vous ne pouvez pas crer de nouvelles discussions
  • Vous ne pouvez pas envoyer des rponses
  • Vous ne pouvez pas envoyer des pices jointes
  • Vous ne pouvez pas modifier vos messages
  •