MapServer - névrajz

Ha egy réteg elemeihez neveket is akarunk írni a térképre, akkor egyrészt a réteg objektumban a LABELITEM elemmel meg kell határozni, hogy melyik attribútum legyen a név, másrészt az osztályokban egy LABEL objektumban definiálni kell az adott osztályhoz tartozó betűtípust és egyebeket.

...
  LABELITEM "Nev"
...
  CLASS
...
   LABEL 
     TYPE bitmap
     SIZE medium
     COLOR 0 0 0
   END   
  END # class
...
  

Ha egy rétegen több osztályt is definiálunk, akkor ez azt is jelenti, hogy minden osztálynál meg kell adni ezt a LABEL objektumot. Ez néha jó (ha pl. a különböző településkategóriákat más méretű betűkkel írjuk meg), néha azonban meglehetősen kényelmetlen (mondjuk egy egyszerű tematikus rétegnél, ahol csak a felületi szín változik).

Ez utóbbi esetben célszerű egy külön név réteget (annotation layer) készíteni. Az ilyen rétegek a geometriai alakzatokat nem jelenítik meg, csak a hozzájuk tartozó neveket:

...
 LAYER
  NAME "Megye_nevek"
  TYPE annotation
  DATA "megyek.shp"
  STATUS DEFAULT
  PROJECTION
   "init=epsg:23700"
  END
  LABELITEM "Nev"
  CLASS
   NAME "megyenevek"
   LABEL 
     TYPE bitmap
     SIZE medium
     COLOR 0 0 0
   END    
  END # class megyenevek
 END # layer Megye_nevek
...
  

Bitmap és truetype betűtípusok

Ha nem akarunk font-fájlokkal bajlódni, akkor a legegyszerűbb megoldás a beépített betűtípusok használata. Ehhez az előző példákban is használt TYPE bitmap definícióra van szükség. A bitmap betűtípusoknál csak ötféle méret létezik (ezt mondjuk meg a SIZE ... sor segítségével): tiny, small, medium, large, giant. Ezek így mutatnak:

megjegyzés: Sajnos a Mercatoron jelenleg futó Maprever verzióban problémák vannak az ékezetes betűkkel bitmap betűtípusok esetén, így célszerűbb truetype fontokat használni.

A bitmap betűtípusokkal gyorsabban dolgozik a MapServer, de nem túl nagy a választékuk. Emiatt sokszor célszerű truetype fontokat alkalmazni. A megfelelő .ttf fájlokat el kell helyezni a szerveren, és a használni kívánt típusokat definiálni egy külön fájlban (melynek neve hagyományosan fonts.list):

arial arial.ttf
arial-bold arialbd.ttf  
  

Erre pedig hivatkozzunk a MAP objektumban:

...
  FONTSET "fonts.list"
...
  

Ezek után a LABEL elem a következőképp nézhet ki:

...
   LABEL 
    TYPE truetype
    FONT arial
    SIZE 12
    COLOR 0 0 0
   END
...
  

Példa a truetype címkékre:

Hogy ne kelljen mindenkinek ttf fontokat a szerverre másolni, itt van egy fontlist a mercator néhány saját fontjával. Ezek így néznek ki:

Beállítások

A LABEL objektumhoz rengeteg beállítás tartozik még, ezek teljes leírása itt megtalálható. Ezek közül a legfontosabbak:

Cimkék mozaikolt térképen

A legtöbb esetben a MapServer mozaikolva küldi a térképet a kliens oldali megjelenítőnek. Ilyenkor a mozaikdarabok határán megszakadhatnak a nevek. Ez elkerülhető, ha a neveket tartalmazó rétegeken beszúrjuk a következő sort a mapfile-ba:

...
 LAYER
  ...
  PROCESSING "LABEL_NO_CLIP=ON"
  ...
 END
...
  
...