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

Rencontres QGIS 2025

L'appel à participation est ouvert jusqu'au 19 janvier 2025!

#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

ThomasG
Membre
Lieu: Nantes
Date d'inscription: 9 Sep 2005
Messages: 948
Site web

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

JP LLORENS a écrit:

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

 

Pied de page des forums

Powered by FluxBB