#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