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 !.
Nom d'utilisateur    Mot de passe              Toujours pas inscrit ?   Mot de passe oublié ?

Annonce

GeoRezo est partenaire média de la Conférence Francophone SIG 2017 organisée par ESRI.

Les bénévoles de l'association seront présents les 11 et 12 Octobre aux Docks de Paris.

Le programme est riche, mais vous trouverez bien un  moment pour venir faire une pause au stand GeoRezo, et rencontrer les animateurs du portail francophone de la géomatique.

Nous serons à votre écoute pour partager avec vous notre passion pour l’animation du portail GeoRezo.

L'équipe GeoRezo

#1 jeu. 05 janvier 2017 21:33

mariesoleilfradette
Membre
Date d'inscription: 25 sept. 2015
Messages: 11

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 ven. 06 janvier 2017 09:12

FPNO
Membre
Date d'inscription: 24 oct. 2013
Messages: 96

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 ven. 06 janvier 2017 16:13

mariesoleilfradette
Membre
Date d'inscription: 25 sept. 2015
Messages: 11

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 ven. 06 janvier 2017 18:10

mariesoleilfradette
Membre
Date d'inscription: 25 sept. 2015
Messages: 11

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 dim. 08 janvier 2017 12:22

FloSnow
Membre
Date d'inscription: 1 janv. 2010
Messages: 19

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 (dim. 08 janvier 2017 12:24)

Hors ligne

 

#6 lun. 09 janvier 2017 17:09

mariesoleilfradette
Membre
Date d'inscription: 25 sept. 2015
Messages: 11

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 lun. 09 janvier 2017 18:12

mariesoleilfradette
Membre
Date d'inscription: 25 sept. 2015
Messages: 11

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 lun. 09 janvier 2017 22:11

FloSnow
Membre
Date d'inscription: 1 janv. 2010
Messages: 19

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 (lun. 09 janvier 2017 22:12)

Hors ligne

 

#9 mar. 10 janvier 2017 08:10

Franck B
Moderateur
Lieu: PACA
Date d'inscription: 6 sept. 2005
Messages: 1321
Site web

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


Association GeoRezo.net
Le GeoRezo.net, c'est aussi un wiki et un moteur de recherche !

Hors ligne

 

Pied de page des forums

Powered by FluxBB

Partagez  |