#1 Fri 27 April 2018 17:11
- Jean-Marie64
- Participant actif
- Lieu: Pau
- Date d'inscription: 6 Nov 2007
- Messages: 131
[MAPSERVER] affichage d'un polygone avec un label
Bonjour
je souhaite afficher des polygones stockés dans postgis ainsi qu'un label pour chacun d'eux
pour se faire j'ai défini 2 layers :
-un layer qui affiche les polygones (POLYGON)
-un layer qui affiche les labels associés aux polygones (POLYGON_LABEL)
je parviens bien à afficher ces 2 entités mais l'affichage des labels me parait un peu "chanceux" puisque
je garde la même définition que pour l'affichage des polygones (même type "Polygon", même "data")
et le simple fait de définir une classe label à la place du style outlincolor m'affiche le label au centre du polygone...
donc si quelqu'un voit une définition du layer labels (POLYGON_LABEL) plus "rigoureuse" je suis preneur
Code:
layer name "POLYGON" status Off type Polygon validation "SERVER" "^.*$" "DBNAME" "^.*$" end connectiontype postgis connection "host=%SERVER% dbname=%DBNAME%" data "geom from (select geom, from ....) projection "init=epsg:4326" end class style outlinecolor 84 84 84 end end end
Code:
layer name "POLYGON_LABEL" status Off type Polygon validation "SERVER" "^.*$" "DBNAME" "^.*$" end connectiontype postgis connection "host=%SERVER% dbname=%DBNAME%" data "geom from (select geom, description from ....) projection "init=epsg:4326" end class label TEXT "[description]" force true type TrueType font ArialRegular size 8 color 0 0 0 position cc end end end end
Hors ligne
#2 Wed 02 May 2018 17:53
- Jean-Marie64
- Participant actif
- Lieu: Pau
- Date d'inscription: 6 Nov 2007
- Messages: 131
Re: [MAPSERVER] affichage d'un polygone avec un label
en fait il est normal que le label s'affiche au centre de la zone
on peut aussi facilement afficher les 2 entités dans un seul layer
par contre le problème que je n'ai pas résolu est l'affichage ou non du label suivant la valeur d'un paramètre passé dans la requête http
en utilisant l'instruction EXPRESSION dans le label (voir le mapfile défini ci-dessous)
j'ai essayé aussi de passer la condition entière dans la requête mais la substitution n'a pas l'air de se faire..
il semble que dans EXPRESSION je ne puisse accéder qu'aux champs référencés dans le select (exemple 'description')
si quelqu'un a une idée
merci d'avance
Jean-Marie
Code:
layer name "POLYGON" status Off type Polygon validation "SERVER" "^.*$" "DBNAME" "^.*$" "DISPLAYLABEL" "^.*$" end connectiontype postgis connection "host=%SERVER% dbname=%DBNAME%" data "geom from (select geom, description from ....) projection "init=epsg:4326" end class style outlinecolor 84 84 84 end label # une EXPRESSION du genre : EXPRESSION (%DISPLAYLABEL% = 'true') TEXT '[description]' force true type TrueType font ArialRegular size 8 color 255 0 0 end end end
Hors ligne
#3 Thu 03 May 2018 09:06
Re: [MAPSERVER] affichage d'un polygone avec un label
Bonjour,
pourquoi ne pas essayer de rajouter le champ dynamique dans le SELECT ?
Attention, les paramètres ne peuvent pas être inséré partout (mais ici c'est supporté : http://mapserver.org/cgi/runsub.html#pa … supported!
Y.
Yves Jacolin, bénévole de l'association GeoRezo.net, agit au nom et pour le compte de l'association - Partageons ce qui nous départage !! - GeoRezo vous aide ? Aidez GeoRezo !
Hors ligne
#4 Thu 03 May 2018 11:51
- Jean-Marie64
- Participant actif
- Lieu: Pau
- Date d'inscription: 6 Nov 2007
- Messages: 131
Re: [MAPSERVER] affichage d'un polygone avec un label
Bonjour
merci pour la piste !
çà donne :
Code:
validation "SERVER" "^.*$" "DBNAME" "^.*$" "DISPLAYLABEL" "^.*$" end ... data "geom from (select geom,(case when %DISPLAYLABEL%=true then description end) from ..."
le dernier problème que je n'ai pas résolu est de donner une valeur par défaut à DISPLAYLABEL de sorte que si ce paramètre n'est pas passé dans l'url le select ne plante pas et affiche le label systématiquement
d'après la documentation http://mapserver.org/cgi/runsub.html#de … in-the-url l'instruction suivante devrait fonctionner mais ce n'est pas le cas, mapserver signale "Parameter pattern validation failed. ERROR: syntax error at or near "%""
Code:
validation ... "DISPLAYLABEL" "true" end
avez-vous une idée d'où peut venir le problème ?
Jean-Marie
Hors ligne
#5 Thu 03 May 2018 12:48
Re: [MAPSERVER] affichage d'un polygone avec un label
Bonjour,
La doc l'explique : http://mapserver.org/cgi/runsub.html#de … in-the-url
VALIDATION
'default_sound' 'yes'
'default_nseats' '5'
'default_multimedia' 'yes'
END
Y.
Yves Jacolin, bénévole de l'association GeoRezo.net, agit au nom et pour le compte de l'association - Partageons ce qui nous départage !! - GeoRezo vous aide ? Aidez GeoRezo !
Hors ligne
#6 Thu 03 May 2018 14:16
- Jean-Marie64
- Participant actif
- Lieu: Pau
- Date d'inscription: 6 Nov 2007
- Messages: 131
Re: [MAPSERVER] affichage d'un polygone avec un label
effectivement il fallait bien lire la doc
"default_DISPLAYLABEL" "false"
thanks
JM
Hors ligne