Pages: 1
- Sujet précédent - [Mapserver] Généralisation des géométries selon l'échelle - Sujet suivant
#1 Fri 13 November 2015 13:45
- diletant2
- Participant occasionnel
- Date d'inscription: 10 Feb 2010
- Messages: 36
[Mapserver] Généralisation des géométries selon l'échelle
Bonjour,
Dans un fichier .map, j'aimerais simplifier les géométries d'une couche (d'un shapefile) dessinée par Mapserver.
Mais uniquement quand l'échelle est inférieure à une certaine valeur.
Je connais la fonction GEOMTRANSFORM(simplify(...)) pour généraliser les géométries.
ainsi que MAXSCALEDENOM pour ne pas afficher une couche quand l'échelle est supérieure à X.
Mais cela ne suffit pas à faire ce que je veux
Auriez-vous une idée ?
Merci
Hors ligne
#2 Fri 13 November 2015 16:02
- JP LLORENS
- Participant assidu
- Date d'inscription: 12 Nov 2008
- Messages: 231
Re: [Mapserver] Généralisation des géométries selon l'échelle
Bonjour
Peut être en appelant 2 fois votre layer :
1 - le layer non généralisé entre le minscaledenom 0 et maxscaledenom XXXX
2 - le layer généralisé entre le minscaledenom XXXXX + 1 et maxscaledenom YYYYYY, avec "legend" "false" dans le METADATA pour ne pas le faire apparaître en légende.
Cordialement
JP
Hors ligne
#3 Fri 13 November 2015 17:25
Re: [Mapserver] Généralisation des géométries selon l'échelle
Bonjour,
C'est prévu dans MapServer avec cette RFC http://mapserver.org/fr/development/rfc/ms-rfc-86.html et cela évite la duplication des couches.
Cette RFC permet de de supporter le choix de la source de données en fonction d'une échelle. Il vous suffit de gérer plusieurs champs géométriques (si vous êtes en base de données du moins)
Bonne lecture
Cordialement
Thomas Gratier
Hors ligne
#4 Tue 17 November 2015 17:49
- diletant2
- Participant occasionnel
- Date d'inscription: 10 Feb 2010
- Messages: 36
Re: [Mapserver] Généralisation des géométries selon l'échelle
Bonjour
Peut être en appelant 2 fois votre layer :
1 - le layer non généralisé entre le minscaledenom 0 et maxscaledenom XXXX
2 - le layer généralisé entre le minscaledenom XXXXX + 1 et maxscaledenom YYYYYY, avec "legend" "false" dans le METADATA pour ne pas le faire apparaître en légende.
Cordialement
JP
Oui, j'avais pensé à cette solution. Mais, comme il me semble qu'on ne peut pas avoir 2 couches avec le même nom, cela implique une duplication un peu artificielle d'une couche et l'obligation de modifier le paramètre LAYERS dans les appels à Mapserver.
Hors ligne
#5 Wed 18 November 2015 10:05
- JP LLORENS
- Participant assidu
- Date d'inscription: 12 Nov 2008
- Messages: 231
Re: [Mapserver] Généralisation des géométries selon l'échelle
En effet on ne peut pas avoir 2 layers avec un même nom. Dans mon contexte ça ne pose pas de problèmes j'ai un premier layer dont le nom est celui de la couche, et un deuxième avec un nom bidon, qui fait référence à la même table (mais avec une requête ou des seuils d'affichages différents) mais qui ne peut être "consultable" !
Outre la solution (que je connaissais pas) de Thomas, si vous travaillez en base de données, vous pouvez aussi utiliser une vue pour la version généralisée des données. Ca vous oblige à avoir deux layer (comme ma solution initiale) mais l'avantage c'est que les 2 seront "consultable"
Cordialement
Hors ligne
Pages: 1
- Sujet précédent - [Mapserver] Généralisation des géométries selon l'échelle - Sujet suivant