#1 Tue 25 June 2019 12:57
- FloCom
- Juste Inscrit !
- Date d'inscription: 8 Mar 2019
- Messages: 2
Combinaison de plusieurs champs de valeurs
Bonjour,
Je bloque sur un problème depuis quelques jours, et j'aurais bien besoin d'un petit coup de main.
Je travaille avec une couche d'occupation des sols, où chaque type d'occupation est associé à un code numérique (appelons cette colonne CODE). Mais sur celle-ci ne figure pas la différence entre les types de routes (autoroute, nationale, départementale … ), et j'en ai besoin pour mon étude. J'ai donc, avec l'outil Agréger de ArcGIS, assemblé les polygones de chaque type de route avec ma couche initiale.
Je me retrouve alors avec une table attributaire ayant les colonnes de chacune de mes couches de façon séparée: CODE, avec les codes d'occupation initiaux, CODE 1 avec le code correspondant aux autoroutes, CODE 2 pour les nationales etc...
La finalité que je souhaiterais obtenir, c'est le tout rassemblé en une seule colonne, avec une hiérarchisation des codes.
Je m'explique: Si jamais un polygone sur ma couche initiale était considéré comme habitat forestier (disons code = 1), et qu'après ajout des routes, ce polygone est recouvert par une départementale (code = 2), elle-même passant sous une autoroute (code = 3), je voudrais que dans la colonne récapitulative, l'autoroute soit priorisée, puis les nationales et ainsi de suite de façon décroissante et en tout dernier, si aucune route ne passe sur le polygone de la couche initiale, laisser le code habitat tel quel (dans notre exemple, le code 1). Ici je voudrais donc que ce soit 3 qui s'affiche dans ma colonne.
Je ne sais pas comment assembler ces colonnes de manière automatique ou bien s'il y a une autre manipulation que j'aurais pu faire à la place d'Agréger pour faciliter ceci. Etant donné que j'ai des milliers d'entrées dans ma table, je me vois mal tout modifier un par un de façon manuelle.
PS: J'avais tenté via la calculatrice de champ sous python une commande IF ELSE répétée, de type "si la colonne autoroute a un code, afficher ce code, sinon, si la colonne nationale a un code, afficher ce code… etc" mais soit ce n'est pas possible, soit je fais des erreurs dans ma syntaxe.
J'ai cherché des solutions un peu partout, sans succès, vous êtes donc mon dernier recours.
Merci d'avance pour votre aide ! (Si jamais je ne suis pas clair dans mes propos, je pourrai rajouter une image de ma table attributaire pour illustrer)
Hors ligne
#2 Wed 26 June 2019 16:41
- FloCom
- Juste Inscrit !
- Date d'inscription: 8 Mar 2019
- Messages: 2
Re: Combinaison de plusieurs champs de valeurs
J'ai eu en parallèle une réponse sur un forum anglophone et j'ai réussi à résoudre mon souci
Je ne sais pas si c'était la solution la plus simple, mais en tout cas, en fonctionnant à base de IF ELSE imbriqués, ça marche.
Pour donner un aperçu du code, des fois que ce soit utile à quelqu'un dans le futur, ça donne ça (CODEFINAL étant ma colonne finale de résumé):
CODEFINAL =
!AUTOROUTE! if !AUTOROUTE! else !NATIONALE! if !NATIONALE! else !DEPARTEMENTALE! if !DEPARTEMENTALE! … else !CODEINITIAL!
ce qui fait que s'il y a une valeur dans la colonne autoroute, il copiera celle-ci, sinon il passe à la suivante etc...
Désolé pour le spam de courte durée, en espérant que ça serve à une autre pauvre âme en galère un jour.
Hors ligne