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é ?

#1 Wed 04 July 2012 23:12

lailach0
Juste Inscrit !
Date d'inscription: 4 Jul 2012
Messages: 6

algorithme pour fusion de 2 colonnes

pour faire la carte d'erodibilite il me faut superposer la carte des lithofacié  et la carte des pentes  Les polygones qui resultent  de cette superposition  sont classés selon une matrice

Classes           Classes de lithofaciés :       
de pentes :    (a)          2(b)           3(c)
1                   1(f)          1(f)            1(f)
2                   1(f)          1(f)            2(mod)
3                   2(mod)      2(mod)    3(moy)
4                   3(moy)    3(moy)     4(ft)

cette dernière a pour objectif d’hiérarchiser le terrain selon le degré d’érodibilité:

Classe :    Erodibilité :
1             Faible (f)
2             Modérée (mod)
3             Moyenne (moy)
4             Forte (ft)
   

le problème qui se pose est la classification de la base de données avec plus de 900 polygones. Le tri manuel  peut  gaspiller beaucoup de temps. Pour cela on a besoin de créer  un  algorithme sous forme d’ensemble d’instructions, qui va permettre la fusion des deux colonnes et faire sortie le degré d’érodibilité relatif à chaque polygone
alors comment faire cet algorithme afin d'obtenir la carte final(avec arcgis)

Hors ligne

 

#2 Thu 05 July 2012 09:11

dominique.lys
Participant assidu
Date d'inscription: 5 Oct 2006
Messages: 473
Site web

Re: algorithme pour fusion de 2 colonnes

Bonjour,

Si ces 2 couches sont bien au format vecteur vous pouvez utiliser l'outil union. Vous aurez alors dans le résultat toutes les informations nécessaires pr calculer un nouveau champ avec vos classes d'érodibilité.

Hors ligne

 

#3 Thu 05 July 2012 14:08

lailach0
Juste Inscrit !
Date d'inscription: 4 Jul 2012
Messages: 6

Re: algorithme pour fusion de 2 colonnes

salam
merci pour votre interet, mais apparemment   j'ai pas pus expliquer mon problème plus clairement.
alors ce que je doit utiliser plutot c la superposition de la carte des pente et la carte des lithofaciès pour avoir pour chaque polygone sa classe de pente et sa classe de lithofacies :
ex

    classe de pente       classe des lithofaciès            Erodibilité
             1                           1a                                 ?

selon la matrice dans mon premier sujet la classe des pente1 avec classe des lithofaciès 1a donne  le degrés  de l'Erodibilité  1f .la superposition des 2 cartes (pente et lithofaciès) me donne plus de 900 polygones, si je fait le traitement manuellement  pour donner pour chaque polygone son degres l'Erodibilitéd je doit le faire plus de 900 fois
alors ma question est comment automatiser le travail. j'ai lu dans une these que je doit créer  un  algorithme sous forme d’ensemble d’instructions, qui va permettre la fusion des deux colonnes et faire sortie le degré d’érodibilité relatif à chaque polygone (automatiquement)
alors par quel outils je doit faire cet algorithme sachant que je travail avec arcgis

Hors ligne

 

#4 Thu 05 July 2012 14:51

dominique.lys
Participant assidu
Date d'inscription: 5 Oct 2006
Messages: 473
Site web

Re: algorithme pour fusion de 2 colonnes

oui il me semble avoir bien compris le problème :

classe 1 = faible
classe 2 = modéré
classe 3 = moyen
classe 4 = fort

une pente de classe 3 avec le lithofacié b donne une érodibilité modérée, juste?

Peut être que l'union n'est pas le + adapté, tout dépend de la structure de vos données. Déjà il faudrait préciser si vos couches sont au format vecteur ou raster (ou les deux). Selon le cas l'approche ne sera pas la même.

Vous dites "la superposition des 2 cartes (pente et lithofaciès) me donne plus de 900 polygones" j'en déduit que vous avez déjà croisé les deux couches? si oui comment?

Pour préciser les choses, quelle est la procédure "manuelle"? Vous cliquez un polygone et vous lisez dans ses données attributaires sa classe de pente et son lithofacié pour déterminer son érodibilité?

Si c'est le cas (j'essaye de déduire mais surement que je me trompe!) je dirai que le plus gros du boulot est fait, il suffit alors de calculer un nouveau champs avec un script (cocher "pre-logic" dans le calculateur de champs).

Hors ligne

 

#5 Thu 05 July 2012 16:51

lailach0
Juste Inscrit !
Date d'inscription: 4 Jul 2012
Messages: 6

Re: algorithme pour fusion de 2 colonnes

salam
merci infiniment. Je crois que la phrase la plus importante est celle en fin" il suffit alors de calculer un nouveau champs avec un script (cocher "pre-logic" dans le calculateur de champs)" je vois si ça marche

Hors ligne

 

#6 Thu 05 July 2012 17:53

dominique.lys
Participant assidu
Date d'inscription: 5 Oct 2006
Messages: 473
Site web

Re: algorithme pour fusion de 2 colonnes

Phrase que j'ai fortement hésité à mettre car déjà trop concrète. J'aurai préféré que vous me confirmiez toutes mes suppositions avant d'aller voir si "ça marche". En détaillant mieux votre situation initiale le sujet devient plus précis et compréhensible pour tous ceux qui, par la suite, chercheront à profiter de votre retour d’expérience.

Hors ligne

 

#7 Fri 06 July 2012 16:08

supernul
Participant actif
Date d'inscription: 31 Jan 2010
Messages: 103

Re: algorithme pour fusion de 2 colonnes

Peut-être une solution pour toi si tu es sur Arcgis 10 :

Si je comprends bien tu as une couche vecteur dont la table attributaire contient entre autre un champ 'classe de pente' (numérique) et un champ 'Classes de lithofaciés' (texte).

1) tu crées un nouveau champ erod (texte)

2) tu vas sur calculer les valeurs (menu du clic droit) et tu choisis python dans Analyseur

3) tu coches "afficher le bloc de code"

4) dans "code de scriptPre-Logic." tu colles :

Code:

def CalculErod(valpente, vallitho) :
    if (valpente == 1 and vallitho == '1a') or (valpente == 1 and vallitho == '2b') or (valpente == 1 and vallitho == '3c') or (valpente == 2 and vallitho == '1a') or (valpente == 2 and vallitho == '2b') :
        return '1f'
    elif  (valpente == 2 and vallitho == '3c') or (valpente == 3 and vallitho == '1a') or (valpente == 3 and vallitho == '2b') :
        return '2mod'
    elif  (valpente == 3 and vallitho == '3c') or (valpente == 4 and vallitho == '1a') or (valpente == 4 and vallitho == '2b') :
        return '3moy'
    else :
        return '4ft'

5) dans "erod =" tu colles :

Code:

CalculErod(!classe de pente!, !Classes de lithofaciés!)

6) tu cliques sur OK et tu devrais avoir ton résultat

PS : le code peut-être simplifié mais là, je suis trop faignant pour wink

Dernière modification par supernul (Fri 06 July 2012 16:14)

Hors ligne

 

#8 Sat 07 July 2012 16:01

lailach0
Juste Inscrit !
Date d'inscription: 4 Jul 2012
Messages: 6

Re: algorithme pour fusion de 2 colonnes

"Phrase que j'ai fortement hésité à mettre car déjà trop concrète."

concrete pour ceux qui ont  une connaissance approfondie mais moi je fait une autoformation alors il y a certainement des choses que je rate

"J'aurai préféré que vous me confirmiez toutes mes suppositions avant d'aller voir si "ça marche". "

en tous cas je peux pas voir si ça marche car la licence a expiréeeeeeeee. en attendant d'avoir une  mise a jours

Hors ligne

 

#9 Sat 07 July 2012 16:07

lailach0
Juste Inscrit !
Date d'inscription: 4 Jul 2012
Messages: 6

Re: algorithme pour fusion de 2 colonnes

merci supernul
mais j'avais la version 9.x

Dernière modification par lailach0 (Sat 07 July 2012 16:09)

Hors ligne

 

#10 Sat 07 July 2012 16:34

supernul
Participant actif
Date d'inscription: 31 Jan 2010
Messages: 103

Re: algorithme pour fusion de 2 colonnes

il faudra tenter avec la version 9. Cela fonctionne sur la 10 mais je ne me souviens plus de la fenêtre pour la 9.

Hors ligne

 

Pied de page des forums

Powered by FluxBB