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

Suite à un problème technique intervenu entre le 22 et le 23 mars, nous avons du procéder dans la soirée du 25 mars, à la restauration de la base de données du 24 mars (matinée).

En clair, nous avons perdu vos contributions et inscriptions du dimanche 24 et du lundi 25 mars.
Nous vous prions de nous excuser.

#1 Sat 10 September 2016 09:43

Louiszen
Juste Inscrit !
Date d'inscription: 12 Jul 2016
Messages: 9

Les seuils de visibilité dans un mapfile

Bonsoir,
Je suis en train de rédiger un mapfile que je compte appeler en fond avec openlayers. Mon mapfile s'affiche très bien dans le navigateur mais je n'arrive pas à faire apparaitre et disparaitre les couches ainsi que leurs labels en fonction des échelles. Je suis perdu entre les Maxscaledenom, Labelmaxscale... mais je réuissi à afficher correctement les labels sans y inclure les seuils de visibilité. Bref, ci-dessous une copie du mapfile. J'aimerai que la couche "routier" disparaisse à 1/5000 et n'apparaisse qu'à partir de 1/50000. SVP que quelqu'un de plus expérimenté m'aide à intégrer ces fonctionnalités dans mon mapfile. Merci!

#############copie du mapfile###############
LAYER
NAME "routier"
STATUS DEFAULT
TYPE LINE
CONNECTIONTYPE POSTGIS
CONNECTION "dbname=test user=postgres password=postgres host=localhost port=5432"
DATA "geom from routier using unique gid using srid=32632"
CLASSITEM 'type2'
LABELITEM 'name'
CLASS
EXPRESSION "Principale"
STYLE
WIDTH 4
COLOR 76 38 0
END#style
STYLE
WIDTH 2
COLOR 253 191 111
END#style
LABEL
FONT ARIAL
TYPE truetype
SIZE 8
COLOR 0 0 0
ANGLE 0
POSITION uc
FORCE true
ANTIALIAS true
PARTIALS true
END#label
END#class
PROJECTION
"init=epsg:32632"
END#projection
END#layer
END#map

Hors ligne

 

#2 Mon 12 September 2016 10:35

JP LLORENS
Participant assidu
Date d'inscription: 12 Nov 2008
Messages: 231

Re: Les seuils de visibilité dans un mapfile

Bonjour.
Pour les seuils d'affichage de la géométrie vous allez utiliser, MAXSCALEDENOM,  MINSCALEDENOM, SYMBOLSCALEDENOM dans la définition du layer. Pour le texte vous allez, dans la définition du layer, utiliser LABELMINSCALE et  LABELMAXSCALE.
Dans la définition du  syle ou du label vous allez jouer avec le MINSIZE ou MAXSIZE pour adapter la taille des objets à l'échelle.
Ci-dessous un exemple qui fonctionne sur du ponctuel :

Code:

LAYER
    METADATA
            "TITLE" "test"
    END
    CONNECTION "user=postgres password=dbname= host= "
    CONNECTIONTYPE POSTGIS
    DATA "wkb_geometry from v_sites_details USING UNIQUE ogc_fid"
    GROUP "Administrations et services"
    MAXSCALEDENOM 50100
    MINSCALEDENOM 0
    SYMBOLSCALEDENOM 500
    NAME "admin"
    STATUS ON
    TOLERANCE 3
    TYPE POINT
    UNITS METERS
    LABELMINSCALE 0
    LABELMAXSCALE 5100
    LABELITEM "nom_court"

   CLASS
      EXPRESSION xxx
      NAME ""
          TITLE "xxx"
      STYLE 
        SYMBOL  "fond_rond"
        SIZE 15
        MINSIZE 13
        MAXSIZE 31
        COLOR 248 236 7
      END     
    
      LABEL
        TYPE TRUETYPE
        FONT "ARIBLK"
        SIZE 8
        MINSIZE 8
        MAXSIZE  11
        POSITION CL
        BUFFER 0
        COLOR 240 78 0
        OUTLINEWIDTH 4
        OUTLINECOLOR 255 255 254
        PARTIALS TRUE
        FORCE TRUE
        MAXLENGTH 9
        WRAP ' '
      END
     
    END
END

Cordialement
JP

Hors ligne

 

#3 Tue 13 September 2016 22:14

Louiszen
Juste Inscrit !
Date d'inscription: 12 Jul 2016
Messages: 9

Re: Les seuils de visibilité dans un mapfile

Ok, merci bien!
Cependant, j'ai un autre problème qui cette fois me traumatise seulement. Je n'arrive pas à intégrer le mapfile crée avec openlayers 2. J'ai pourtant essayé de nombreuses techniques d'appel de la couche, le résultat est toujours déplorable jusqu'à présent. Je reçois soit une carte très petite (à peine visible), ou alors une carte qui est dans un autre système de projection. Quand j'essaie d'afficher le mapfile tout simplement dans le navigateur, il s'affiche très bien même. Mais dès que j'essaie de l'appeler avec openlayers c'est là où les maux de tête commencent. Je suis dépassé!
Ci-joint le code openlayers que j'utilise pour afficher le mafile:

***********OpenLayers 2 mapfile*******************
function init() { var epsg4326 = new OpenLayers.Projection("EPSG:4326");
map = new OpenLayers.Map('map', {
                    controls: [
                        new OpenLayers.Control.Navigation(),
                        new OpenLayers.Control.PanZoomBar(),
                        new OpenLayers.Control.LayerSwitcher({'ascending':false}),
                        new OpenLayers.Control.Permalink(),
                        new OpenLayers.Control.ScaleLine(),
                        new OpenLayers.Control.Permalink('permalink'),
                        new OpenLayers.Control.MousePosition({displayProjection: epsg4326}),
                        new OpenLayers.Control.OverviewMap(),
                        new OpenLayers.Control.KeyboardDefaults()
                    ],
                    numZoomLevels: 8
                   
                });

routier = new OpenLayers.Layer.WMS( "Routier",
                    "http://localhost/cgi-bin/mapserv.exe?map=C:/ms4w/Apache/htdocs/****/****/mapfiles/routier.map&mode=map", {layers: 'routier'},
                    {singleTile: true} );

map.addLayers([routier]);

map.addLayer(vector);
map.setCenter(10.18141,5.1995);
}

Hors ligne

 

Pied de page des forums

Powered by FluxBB