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

Annonce

Printemps des cartes 2024

#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

Yves
Membre du bureau
Lieu: Aix-les-Bains
Date d'inscription: 22 Mar 2006
Messages: 9855
Site web

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

Yves
Membre du bureau
Lieu: Aix-les-Bains
Date d'inscription: 22 Mar 2006
Messages: 9855
Site web

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 smile

"default_DISPLAYLABEL" "false"

thanks

JM

Hors ligne

 

Pied de page des forums

Powered by FluxBB