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 Mon 29 April 2002 19:53

Alain Ferraton
Invité

propagation des couleurs pour une analyse par classe de valeur

Bonjour,

quelqu'un connaitrait-il l'algorithme utilise par Map-Info pour propager les
couleurs dans les classes intermediaires (propagation RVB)
dans une analyse par classes de valeurs ?

merci

FERRATON Alain
alain.ferraton@texte-a-enlever.equipement.gouv.fr
+33 02 40 12 84 08

 

#2 Mon 06 May 2002 19:48

Jacques Paris
Invité

Re: propagation des couleurs pour une analyse par classe de valeur

Je m'excuse de ne pas etre aussi sophistique dans mes recherches; je me suis
contente de faire une thematique a 5 classes avec un gabarit standard
(rouge-jaune-vert, solide) et d'imprimer le document correspondant. Voici en
4 colonnes les valeurs de la couleur brosses (forecolor), et des valeurs
r,g,b extraites de ces codes

Rgbrgb
32768 01280
5287936 801760
115875841762080
167444482551280
16711680255 00

Cela ne ressemble certainement pas a une distribution en marches egales ni
sur rgb ni sur les r,g et b. Mais il se peut que ce gabarit soit  vicie ,
et il l'est car il contient une couleur de reference intermediaire cachee,
une inflexion sur le jaune. Il n'y aurait alors que 2 marches  automatiques
, deux fois (entre 1 et 2, 2 et 3 d'une part, entre 3 et 4, 4 et 5 d'autre
part). Marches egales? Pas plus la qu'avant.

Deuxieme thematique utilisant jaune-bleu; j'ai rajoute une colonne de rgb
calcules avec marches egales.

RgbRgb = r gb
255   255 0 0255
4210880 4194431 64 64192
8421504 8386608128128128
1263212812582784192192 64
1677696016776960255255 0

les marches egales sur les composantes devraient donner un profil de 0, 64,
128, 191, 255 (arrondis a l'entier le plus proche). C'est l'exemple le plus
proche du modele  suppose , marches egales sur les composantes, pas sur le
code global.

Finalement une thematique basee sur une seule couleur, rouge

RgbRgb = r gb
1676513616765136255208208
1675280016751772255160160
1674046416738408255112112
1672401616725044255 48 48
1671168016711680255 0 0

marches egales pour g et b : 208, 156, 104, 52, 0. Rien ne colle.

Venu cela, la notion de marches egales est loin d'etre la reponse
systematique. J'ai refait ces experiences avec MI Beta7 de peur d'avoir
manque quelque chose. Mais non, c'est la meme situation depuis toujours. Il
n'y a pas un moyen simple de decrire de facon fiable la technique de
propagation des couleurs dans toutes les situations de choix des couleurs
extremes et d'utilisation d'un point d'inflexion..

Jacques Paris

From: Alain.Ferraton@texte-a-enlever.equipement.gouv.fr
[Alain.Ferraton@texte-a-enlever.equipement.gouv.fr]
Sent: May 6, 2002 04:04
To: jacques@texte-a-enlever.paris-pc-gis.com
Subject: RE: [mapinfo_fr] propagation des couleurs pour une analyse par
classe de valeur

Bonjour !
le resultat de mes recherches me donne qu'il s'agit bien d'une repartition
par marche egale en R, V et B mais uniquement sur la propriete
BRUSH_FORECOLOR et pas
BRUSH_BACKCOLOR qui n'est pas modifiee par la repartition par couleur.
lorsqu'on modifie le BRUSH_PATTERN sur l'une des classes il est adopte pour
toutes les autres classes.

voici un extrait de code adapte pour une repartition par 5 classes (fixe)...
on recalcul les brush intermediaire en fonction des brush extremes... les
proprietes BRUSH_BACKCOLOR ne sont pas modifiees
et on memorise un motifCourant (PatternCourant) pour appliquer aux 5
brush...

for k=1 to 3
Rouge1 = int(StyleAttr(ReadControlValue(1005), BRUSH_FORECOLOR)/65536)
Vert1 = int((StyleAttr(ReadControlValue(1005), BRUSH_FORECOLOR) -
Rouge1*65536) / 256)
Bleu1 = StyleAttr(ReadControlValue(1005), BRUSH_FORECOLOR) -
rouge1*65536 - Vert1*256
Rouge2 = int(StyleAttr(ReadControlValue(1001), BRUSH_FORECOLOR)/65536)
Vert2 = int((StyleAttr(ReadControlValue(1001), BRUSH_FORECOLOR) -
Rouge2*65536) / 256)
Bleu2 = StyleAttr(ReadControlValue(1001), BRUSH_FORECOLOR) -
rouge2*65536 - Vert2*256
coulAvant = RGB(rouge2 - k*int((rouge2 - rouge1)/4), vert2 -
k*int((vert2 -vert1)/4), bleu2 - k*int((bleu2 - bleu1)/4))

id_control = 1001 + k
if PAtternCourant = 0
then
brushw = makebrush(StyleAttr(ReadControlValue(1001+k),
BRUSH_PATTERN), coulAvant, StyleAttr(ReadControlValue(1005),
BRUSH_BACKCOLOR))
else
brushw = makebrush(PatternCourant, coulAvant,
StyleAttr(ReadControlValue(1005), BRUSH_BACKCOLOR))
end if
BrushEnCours(25+k) = brushw
alter control id_control value brushw
next
if PatternCourant 0 then
Alter control 1005 value makebrush(PatternCourant,
StyleAttr(ReadControlValue(1005), BRUSH_FORECOLOR),
StyleAttr(ReadControlValue(1005), BRUSH_BACKCOLOR))
Alter control 1001 value makebrush(PatternCourant,
StyleAttr(ReadControlValue(1001), BRUSH_FORECOLOR),
StyleAttr(ReadControlValue(1001), BRUSH_BACKCOLOR))
end if

Cordialement,

FERRATON Alain
alain.ferraton@texte-a-enlever.equipement.gouv.fr
+33 02 40 12 84 08

De : Jacques Paris [jacques@texte-a-enlever.paris-pc-gis.com]
Envoye : lundi 29 avril 2002 15:46
À : Alain.Ferraton@texte-a-enlever.equipement.gouv.fr
Objet : RE: [mapinfo_fr] propagation des couleurs pour une analyse par
classe de valeur

Alain,

Je l'ai aussi cherche mais ce que j'ai trouve montre qu'il y a autre chose
qu'une simple repartition par marches egales soit sur R, G, B, ou sur RGB ou
sur H, L, S. Je n'ai obtenu a ce moment la aucune info. Si tu trouves du
nouveau, j'apprecierais de le connaitre aussi pour pouvoir mettre a jour mon
document sur les couleurs (www.paris-pc-gis.com/MI_Enviro/mie_start.htm
Colours)

Jacques Paris

 

#3 Thu 16 May 2002 19:47

Alain Ferraton
Invité

Re: propagation des couleurs pour une analyse par classe de valeur

Je mets en copie sur la liste le resultat de mes dernieres recherches sur la
propagation par couleurs (voir ci-dessous ma reponse a J. Paris)

Sinon une autre question !

Quelqu'un saurait-il m'indiquer comment retrouver en Map-Basic les tables
origines ayant servi a generer un query...
si une seule table les lignes ci-dessous donne la reponse:
select * from NomQuery into ~provi
NomTableOrigine = SelectionInfo( SEL_INFO_TABLENAME)
close ~provi

mais je n'ai pas trouve dans le cas d'une jointure pas exemple ou plus d'une
table est a l'origine du query...
faut-il generer une fichier WOR de travail et l'exploiter en recherchant les
lignes 'select......' ou y a -t-il un moyen plus simple ?

merci

FERRATON Alain
alain.ferraton@texte-a-enlever.equipement.gouv.fr
+33 02 40 12 84 08

Effectivement l'algorithme n'est pas aussi simple que je l'ai cru a partir
d'un cas qui marchait par chance !
en fait il s'agirait bien d'une repartition par marche equidistante MAIS
avec un arrondi pour utiliser des marches multiples de 16
(0,16,32,48,64,96,112,...) on peut supposer que l'algorithme est realise en
codage Hexadecimal, mais on doit pouvoir modeliser en faisant
un arrondi round(valeur,16) sur les marches theoriques calculees par
equidistances...
(ca marche sur des exemples simples)

je n'ai pas verifie si cette explication tiens la route avec un point
d'inflexion sur la couleur...

Cordialement

-

 

Pied de page des forums

Powered by FluxBB