#1 Thu 05 January 2017 21:33
- mariesoleilfradette
- Participant occasionnel
- Date d'inscription: 25 Sep 2015
- Messages: 10
ArcGIS : outils de proximité
Bonjour,
J’ai deux couches arcgis.
La première est une couche contenant plus de mille carrées 15m par 15m.
Pour chaque case, j’ai le type de couvert forestier soit feuillu, résineux ou mélangé.
J’ai une autre couche qui contient des polygones irréguliers de diverses formes et grosseurs.
Pour chaque polygone j’ai également le type de couvert soit feuillu, mélangé ou résineux, mais j’ai aussi d’autres informations comme l’essence principale.
Je voudrais être capable de mettre l’information des polygones dans mes carrées.
Donc pour chaque carrée je voudrais l’information du polygone le plus près pour lequel le type de couvert est le même.
Je connais un peu les outils de proximité, mais je n’arrive pas à rentrer la condition qu’il faut que le type de couvert soit le même et non juste qu’il faut l’information du polygone le plus près.
Est-ce que vous pouvez m’aider ?
Merci beaucoup
Bonne journée
Hors ligne
#2 Fri 06 January 2017 09:12
- FPNO
- Participant actif
- Date d'inscription: 24 Oct 2013
- Messages: 141
Re: ArcGIS : outils de proximité
Bonjour
Avez vous essayé Jointure et Joidre les données d'une couche selon l'emplacement ?
Cdt
Franck
Hors ligne
#3 Fri 06 January 2017 16:13
- mariesoleilfradette
- Participant occasionnel
- Date d'inscription: 25 Sep 2015
- Messages: 10
Re: ArcGIS : outils de proximité
Oui, mais je ne réussi pas a faire en sorte de joindre avec le polygone le plus près qui possède le même type de couvert que le polygone joint. J'arrive seulement a joindre avec le polygone le plus près.
Hors ligne
#4 Fri 06 January 2017 18:10
- mariesoleilfradette
- Participant occasionnel
- Date d'inscription: 25 Sep 2015
- Messages: 10
Re: ArcGIS : outils de proximité
J’ai essayé le script python suivant, mais je ne suis vraiment pas habitué avec cet outil et je n’y arrive pas.
arcpy.Near_analysis('chantier1', 'chantier2')
WHERE (((chantier1.TYPE_COUV)=(chantier2.type_couv2))
Chantier1 et chantier2 sont mes deux couches arcgis. TYPE_COUV et type_couv2 sont les champs dans chacune de mes couches qui doivent être identiques.
Donc pour chaque polygone de chantier1, je veux le polygone de le plus proche pour chantier 2 pour lequel le champ TYPE_COUV de chantier1 est égale ou champ type_couv2 de chantier2.
Merci d’avance si quelqu’un peu m’éclairer.
Bonne journée
Hors ligne
#5 Sun 08 January 2017 12:22
- FloSnow
- Participant occasionnel
- Date d'inscription: 1 Jan 2010
- Messages: 28
Re: ArcGIS : outils de proximité
Bonjour.
Si vous n'avez que trois modalités différentes pour les couverts (feuillu, résineux et mélangé), vous pouvez peut-être scinder vos couches en trois distinctes via une sélection attributaire.
Ainsi, une fois que vous avez une couche de polygones avec seulement les couverts feuillus et une couche de carrés composée uniquement de feuillus aussi, vous pourrez procéder à votre jointure spatiale sur ces deux couches (information du polygone le plus près pour chaque carré).
Faire de même avec les autres types de couvert. Vous devriez obtenir trois couches de carrés avec vos informations, distinctes selon le type de couvert.
Pour les rassembler en une seule couche de carrés, vous pouvez utiliser l'outil Combiner ou effectuer une jointure attributaire sur les couches de carrés d'origine si chaque carré à un identifiant propre.
Je pense que ces étapes peuvent aussi être automatisés via ArcPy.
En espérant que cette méthode réponde à votre besoin.
Bonne journée.
Dernière modification par FloSnow (Sun 08 January 2017 12:24)
Hors ligne
#6 Mon 09 January 2017 17:09
- mariesoleilfradette
- Participant occasionnel
- Date d'inscription: 25 Sep 2015
- Messages: 10
Re: ArcGIS : outils de proximité
Merci pour l'idée. Je crois que je suis sur la bonne voie pour l'automatiser via ArcPy, mais j'obtient un message d'erreur (NameError: name 'chantier_par_pixel_F' is not defined).
Mon script est :
Code:
arcpy.SelectLayerByAttribute_management ("chantier_par_pixel", "NEW_SELECTION", " TYPE_COUV = 'F' ") arcpy.CopyFeatures_management("chantier_par_pixel", "chantier_par_pixel_F") arcpy.SelectLayerByAttribute_management ("inventaire", "NEW_SELECTION", " type_couv2= 'F' ") arcpy.CopyFeatures_management("inventaire", "inventaire_F") arcpy.Near_analysis('chantier_par_pixel_F', ' inventaire_F') # Set the local parameters joinField1 = "NEAR_FID" joinField2 = "FID" fieldList = ["ess_prin"] arcpy.JoinField_management (chantier_par_pixel_F, joinField1, inventaire_F, joinField2, fieldList)
Je ne comprends pas comment régler le problème, j'ai faites beaucoup de recherche sur internet, mais comme je débute avec python je ne comprends pas tout
Hors ligne
#7 Mon 09 January 2017 18:12
- mariesoleilfradette
- Participant occasionnel
- Date d'inscription: 25 Sep 2015
- Messages: 10
Re: ArcGIS : outils de proximité
J’ai un problème avec mon script. J’obtiens l’erreur : NameError: name 'chantier_par_pixel_F' is not defined
Mon script est :
Code:
arcpy.SelectLayerByAttribute_management ("chantier_par_pixel", "NEW_SELECTION", " TYPE_COUV = 'F' ") arcpy.CopyFeatures_management("chantier_par_pixel", "chantier_par_pixel_F") arcpy.SelectLayerByAttribute_management ("inventaire", "NEW_SELECTION", " type_couv2= 'F' ") arcpy.CopyFeatures_management("inventaire", "inventaire_F") arcpy.Near_analysis('chantier_par_pixel_F', ' inventaire_F') # Set the local parameters joinField1 = "NEAR_FID" joinField2 = "FID" fieldList = ["ess_prin"] arcpy.JoinField_management (chantier_par_pixel_F, joinField1, inventaire_F, joinField2, fieldList)
Je ne comprends pas comment régler le problème. J'ai faites beaucoup de recherche sur internet, mais comme je débute avec python je ne comprends pas tout.
Hors ligne
#8 Mon 09 January 2017 22:11
- FloSnow
- Participant occasionnel
- Date d'inscription: 1 Jan 2010
- Messages: 28
Re: ArcGIS : outils de proximité
Je pense que le script ne sait pas où créer la couche "chantier_par_pixel_F".
Pour éviter ce type d'erreur, il est possible d'indiquer dans une variable le chemin de la couche.
Un peu comme ça :
Code:
chantierOrigine = "C:\\dossier\...\geodatabase.gdb\nom_de_la_classe d'entité" # Chemin de la classe d'entité d'origine chantierCopie = "C:\\..." # Chemin de destination de la copie avec les entités sélectionnées chantierSelection = "Chantier_Lyr" # Nom de la couche temporaire de sélection arcpy.MakeFeatureLayer_management(chantierOrigine, chantierSelection, " TYPE_COUV = 'F' ") # Création de la couche de sélection temporaire avec requête arcpy.CopyFeatures_management(chantierSelection, chantierCopie) # Création de la copie
Faire de même avec les couches d'inventaire. J'ai préféré avoir recours à une couche de sélection temporaire, mais peut-être que votre méthode fonctionnait également.
Dernière modification par FloSnow (Mon 09 January 2017 22:12)
Hors ligne
#9 Tue 10 January 2017 08:10
Re: ArcGIS : outils de proximité
Bonjour,
L'erreur est sur la derière ligne :
Code:
arcpy.JoinField_management (chantier_par_pixel_F, joinField1, inventaire_F, joinField2, fieldList)
Comme le dis l'erreur, l'identificateur de variable 'chantier_par_pixel_F' n'existe pas, l'outil "Near_analysis" génère une couche qui s'appelle 'chantier_par_pixel_F' pas une variable chantier_par_pixel_F.
Il faudrait écrire :
Code:
arcpy.JoinField_management ('chantier_par_pixel_F', joinField1, inventaire_F, joinField2, fieldList)
A+
Franck
PS : c'est plus agréable de lire un message qui commence par 'Bonjour'
Hors ligne