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

Rencontres QGIS 2025

L'appel à participation est ouvert jusqu'au 19 janvier 2025!

#1 Wed 21 August 2019 23:09

antony vigneron
Juste Inscrit !
Date d'inscription: 7 May 2019
Messages: 2

Requete spatiale sur chaque element d une couche

Salut à tous ,

dans le cadre de mon activité professionnel j'ai besoin de calculer pour chaque objet de la couche "regard de visite" le nombre d'objet appartenant à la couche 'collecteur gravitaire" qui intersect chacun des objet de la première couche.
Je voudrai ensuite renseigner cette information dans le champ " Nb_collecteur" appartenant à la couche "Regard de visite"

J'ai donc dans un premier temps voulu récupérer les couches qui m'interessent dans mon environnement de travail :

Code:

# Import arcpy module
import arcpy
from arcpy import env
arcpy.env.overwriteOutput = True

# Variables 
Reg = "Regards de visite"
Col = "Collecteurs gravitaires"

# Récupération de la couche collecteurs gravitaires et regard de visite
mxd = arcpy.mapping.MapDocument("CURRENT")
df = arcpy.mapping.ListDataFrames(mxd)[0]
for lyr in arcpy.mapping.ListLayers(mxd, "", df):
    if Col in str(lyr) :
        Collecteur = lyr
        break
    if Reg in str(lyr) :
        Regard = lyr

for row in regard :
    Value = arcpy.GetCount_management(arcpy.SelectLayerByLocation_management(Collecteur,"INTERSECT",row,0,"NEW_SELECTION"))
    print Value

je suis maintenant bloquer car je voudrais parcourir les objets de ma couche "regards de visite" pour ensuite lancer :

Code:

Value = arcpy.GetCount_management(arcpy.SelectLayerByLocation_management(Collecteur,"INTERSECT",row,0,"NEW_SELECTION"))
    print Value

avec la valeur de mon objet à la place de la variable row

j'ai essayer de passer par ceci :

Code:

for row in regard :
    Value = arcpy.GetCount_management(arcpy.SelectLayerByLocation_management(Collecteur,"INTERSECT",row,0,"NEW_SELECTION"))
    print Value

je pense que ce qui ce trouve dans ma variable row ne correspond pas aux attentes de la fonction mais je ne trouve pas de solution me permettant de parcourir ma couche regard élément par élément pour appliquer la sélection par requête spatiale.

J'ai essayer de passer par la création d'une nouvelle couche contenant les informations de chaque row mais je ne pense pas que ce soit la bonne solution.

Savez par quelle moyen je peux passer pour réaliser ma commande en parcourant la couche ?

je vous remercie par avance pour le temps que vous m'accorderez.

PS : je n'ai pas encore réfléchis à intégrer la valeur de la variable Value dans un champ pour le moment

Hors ligne

 

#2 Thu 22 August 2019 11:10

Eckmül
Participant actif
Date d'inscription: 5 Feb 2019
Messages: 62

Re: Requete spatiale sur chaque element d une couche

Bonjour,

Je pense que tu peux faire un truc plus simple :

Cr?er ton champ dans ta table attributaire
- S?lection selon l'emplacement de la couche "collecteur de visite" avec comme couche source "regard de visite" et "intersecter l'entit? la couche source"

Puis clic droit sur ton en-t?te de champ, calculateur de champ = *ton nombre d'entit?s s?lectionn?es* qui s'affiche en bas de la table attributaire


Le SIG c'est donné une réponse spatiale à des problèmes statistiques

Hors ligne

 

#3 Thu 22 August 2019 14:05

antony vigneron
Juste Inscrit !
Date d'inscription: 7 May 2019
Messages: 2

Re: Requete spatiale sur chaque element d une couche

Bonjour,
merci à toi pour ta réponse.
je vais essayer quelque choses dans le style que tu dis ou passer éventuellement par une jointure spatiale puis une jointure attributaire.

Je te remercie.

Hors ligne

 

Pied de page des forums

Powered by FluxBB