

MapServer gyorstalpaló¶
A MapServer egy nyílt forráskódú szerver alapú alkalmazás, mely lehetővé teszi raszteres és vektoros térképi adatok publikálását az interneten keresztül, OGC Standards használatával mint például Web Map Service (WMS), Web Feature Service (WFS) és Web Coverage Service (WCS).
Tartalom
MapServer beállítása a MapFile konfigurációs állomány felhasználásával¶
Megjegyzés
Mit fogunk tanulni ? Ebben a fejezetben megtanuljuk mi a Map fájl és hogyan konfiguráljuk,hogy a MapServer képként szolgáltassa a shape fájljainkat WMS kérések használatával.
Mi az a mapfájl?¶
A Map fájl <https://mapserver.org/mapfile/index.html>`_ egy konfigurációs fájl, melyet a MapServer a raszter és vektor adatok megjelenítéshez használ. Elsődleges célja, hogy megadja megjelenítendő rétegeket, hogyan érhetők el a szükséges adatok és hogy kell megjeleníteni őket (pl. szín, szimbólum, címke, stb.).
Első Map fájlom létrehozása¶
Nyisson meg egy szövegszerkesztőt (pl.
).Hozza létre a „mapserver_quickstart.map” fájlt a home könyvtárában: file:/home/user/mapserver_quickstart.map
Írja bele a következő tartalmat:
MAP NAME "MAPSERVER_QUICKSTART" EXTENT -137 29 -53 88 UNITS DD SHAPEPATH "/home/user/data/natural_earth2/" SIZE 800 600 IMAGETYPE PNG24 PROJECTION "init=epsg:4326" END WEB METADATA ows_title "MapServer Quickstart" ows_enable_request "*" ows_srs "EPSG:4326 EPSG:25832 EPSG:25833" END END LAYER NAME "Countries" STATUS ON TYPE POLYGON DATA "ne_10m_admin_0_countries" CLASS STYLE COLOR 246 241 223 OUTLINECOLOR 0 0 0 END END END END
Megjegyzés
A példa a natural earth adatokat használja, melyet telepítettek az OSGeoLive-ra a
~/data/natural_earth2
mappába (ez egy rövidítése ehhez/usr/local/share/data/natural_earth2
).
A Map fájlban minden objektum a nevével kezdődik (például MAP) és END zárja le. A Map fájl mindig a MAP objektummal kezdődik és a LAYER objektumok listáját tartalmazza, melyeket a Map fájl képes beolvasni és megjeleníteni. A Map fájlunkban most csak egy réteget adtunk meg.
Vessünk egy pillantást néhány a Map fájlunkban megadott objektumra (és tulajdonságra):
EXTENT: megadja az alapértelmezett határoló téglalapot ehhez a konfigurációhoz.
LAYER: egy térinformatikai adathalmazhoz megadja a hozzáférést és a megjelenítési tulajdonságokat. Később egy másik réteget is hozzáadunk.
SHAPEPATH: a fájl alapú adatok elérési útját állítja be (pl. shape fájl vagy tiff képek).
Ha közelebbről megvizsgáljuk a LAYER-t a Map fájlunkban, láthatjuk, hogy egy csomó tulajdonságot és objektumot is tartalmaz. Többek között:
STATUS: megadja, hogy a réteg megjelenítendő (ON), nem rajzolandó (OFF) vagy mindig megjelenítendő (DEFAULT).
TYPE: A geometria típus, amit a MapServernek használnia kell az adatok kirajzolásánál. A mi Map fájlunkban az adatokat polygon-ként rajzolja ki.
DATA: a téradat fájl amit a réteg használ, ebben az esetben egy shape fájl.
CLASS: meghatározza hogyan rajzolja ki a réteget (stílus). Ezzel az elemmel később foglalkozunk részletesebben.
Megjegyzés
A Map fájlban használható objektumok és tulajdonságok teljes listája megtalálható a MapServer dokumentáció oldalon.
Rajzoltassunk egy térképet a MapServer-rel a WMS GetMap kéréssel¶
Megjegyzés
Mit fogok tanulni? Megtanulja hogy a MapServer-rel a MapFile rétegeiből hogyan készítsen egy képet egy OGC WMS kérésre.
Nyisson meg egy böngésző programot és írja be a következő címet:
http://localhost/cgi-bin/mapserv?map=/home/user/mapserver_quickstart.map&SERVICE=WMS&REQUEST=Getmap&VERSION=1.1.1&LAYERS=Countries&SRS=EPSG:4326&BBOX=-137,29,-53,88&FORMAT=PNG&WIDTH=800&HEIGHT=600
Mit jelentenek a fentiek? Ha egyszerűen akarjuk elmondani, ez a Web Map Service (WMS) GetMap kérés, mely azt mondja a MapServernek „használd a következő map fájlt a megadott rétegek png képként megjelenítéséhez, a felhasználó által megadott paraméterek alapján, például képméret, földrajzi kiterjedés, vetület, stb.”. Minden a „&LAYERS=…” paraméterben megadott, a MapFájlban STATUS ON beállítással rendelkező réteg megjelenítése, hozzáadva a STATUS DEFAULT rétegeket. Az eredmény így néz ki:
Megjegyzés
A kérés minden paramétere WMS specifikus, kivéve a „?map=/home/user/mapserver_quickstart.map”, mely MapServer specifikus.
Készítsünk térkép képet a MapServerrel a parancssorból¶
Bár a MapServert webes alkalmazásokhoz készítették, képeket is készíthetők vele a parancssorból. Ez akkor lehet hasznos, ha megismételhető térképet szeretne vagy hibakereséskor.
Nyisson egy terminált (
) és írja be:shp2img -m mapserver_quickstart.map -o mymap.png
Ha a parancs sikeresen lefut, láthatja az elkészült térképet file:///home/user/mymap.png.
Egy új réteg hozzáadása a Map fájlhoz egy helyi shape fájl szolgáltatásához¶
Megjegyzés
Mit fogok tanulni? Meg fogja tanulni egy új réteg objektum definíció hozzáadását a Map fájljához.
Most egy új réteget fogunk hozzáadni a Map fájlunkhoz. A Map fájlban az utolsó END sor elé illessze be a következő réteg konfigurációt:
LAYER
NAME "Lakes"
STATUS ON
TYPE POLYGON
DATA "ne_10m_lakes"
CLASS
STYLE
COLOR 153 179 204
END
END
END
Most 2 réteg definíciónk van a Map fájlunkban. Vegye figyelembe, hogy az éppen hozzáadott réteg „STATUS” tulajdonságát „ON»-ra állítottuk. Ez azt jelenti, hacsak nem adjuk meg a kérésünkben, nem jelenik meg.
Vegyük a korábbi WMS GetMAP kérésünket és adjuk hozzá az új „Lakes” rétegünket az elkészített képhez. Egyszerűen hozzá kell adnunk az új réteg nevét a „LAYERS” tulajdonság listához:
http://localhost/cgi-bin/mapserv?map=/home/user/mapserver_quickstart.map&SERVICE=WMS&REQUEST=Getmap&VERSION=1.1.1&LAYERS=Countries,Lakes&SRS=EPSG:4326&BBOX=-137,29,-53,88&FORMAT=PNG&WIDTH=800&HEIGHT=600
A MapServer által készített kép hasonlóan néz ki mint az előző térképünk, eltekintve az új rétegünkből hozzáadott tavaktól:
Rétegstílus beállítása a Map fájl konfigurációban¶
Megjegyzés
Mit fogok tanulni? Egy példát lát majd a rétegen belüli elemek stílusának beállítására az adataik alapján.
A Map fájlban a LAYER objektum tetszőleges számú CLASS objektumot tartalmazhat. Ezeket használjuk a téradatokat tartalmazó adatfájl (DATA) elemek stílusának a beállítására. Például, ha közelebbről megnézzük a „ne_10m_lakes” adatfájlt az ogrinfo eszközzel, látni fogjuk a benne lévő geometriát és attribútum definíciókat. Ezeket az attribútum értékeket használhatjuk, hogy az térképi elemeket különböző módon jelenítsük meg több CLASS objektum használatával.
A „ne_10m_lakes” adatállományunkban van egy ScaleRank attribútum, mely a tavak méretéhez kapcsolódik. Ezt használhatjuk, hogy a tavakat különbözőképpen jelenítsük meg. A LAYER objektumhoz egy másik CLASS objektumot adunk az aktuális elé:
LAYER
NAME "Lakes"
STATUS ON
TYPE POLYGON
DATA "ne_10m_lakes"
CLASSITEM "ScaleRank"
CLASS
EXPRESSION /0|1/
STYLE
COLOR 153 179 204
OUTLINECOLOR 0 0 0
END
END
CLASS
STYLE
COLOR 153 179 204
END
END
END
Mit csinál az új CLASS objektumunk? Alapvetően azt jelzi a MapServer-nek, hogy ha a „ScaleRank” tulajdonság „0” vagy „1” fekete körvonalat rajzoljon. A CLASS objektumokat mindig fentről lefelé olvassa minden rajzolandó térképi elemre. Ha egy rajzi elem megfelel a megadott „EXPRESSION”-nek az osztályban, akkor ez az osztály határozza meg az elem megjelenését.. Ha az elem nem felel meg egy osztálynak, akkor a következő osztályt ellenőrzi. Ha egy elem nem felel meg egyik osztálynak sem, akkor ez egyáltalán nem jelenik meg kivéve, ha a réteg utolsó osztálya nem tartalmaz „EXPRESSION”-t,mert ilyenkor ez lesz az alapértelmezett megjelenés. A réteg „CLASSITEM” tulajdonsága jelzi a MapServer-nek melyik attribútumot használja, amikor a CLASS objektumban megadott „EXPRESSION”-t kiértékeli.
Ennek az újabb változtatásnak az eredményeképpen a nagy tavakat fekete körvonallal rajzolja ki:
Megjegyzés
Tanuljon többet a MapServer kifejezésekről.
Adatainak publikálása OGC WMS-ként (Web Map Service)¶
A MapServer különböző OGC szabványokat támogat mint OGC WMS, WFS vagy WCS. Az OGC WMS-el mint egy térkép szolgáltatás tudja az adatait publikálni és a szolgáltatást integrálhatja az asztali térinformatikai szoftverbe pl. QGIS vagy egy web kliensbe pl. OpenLayers vagy Mapbender.
Asztali QGIS használata OGC WMS adatainak betöltésére¶
Indítsa el a QGIS-t a
-elMenjen a :menuselection:`Layer –> Add Layer –> Add WMS/WMTS Layer`menüpontra.
Kattintson az Új gombra és adjon meg egy nevet és a szolgáltatás URL-jét
Mentse a beállításokat:
Ezután kapcsolódni tud a szolgáltatásához és a szolgáltatás egy vagy több rétegét adja hozzá a QGIS projektjéhez. Ha a 0 ID-vel rendelkező réteget választja, akkor egyszerre betöltheti a szolgáltatás összes rétegét.

Mi a következő?¶
Ez egy egyszerű példa, de sokkal többet tehet. A MapServer projekt honlapja sok forrást tartalmaz az elindulást segítendő. Itt van néhány forrás, amit legközelebb megtekinthet:
Olvassa el az Introduction to MapServer oldalt.
Vessen egy pillantást a MapServer oktatóanyagra, mely több Map fájl példát tartalmaz.
Nézze meg az OGC Support and Configuration oldalt, hogy többet tudjon meg az OGC szabványokról a MapServer-ben (WMS, WFS, SLD, WFS Filter Encoding, WCS, SOS, stb.).
Készen áll a MapServer használatára? Csatlakozzon a közösséghez a levelező listán <https://www.mapserver.org/community/lists.html>`_, az elképzelések kicseréléséhez, a lehetséges szoftver fejlesztések megtárgyalásához és kérdések feltételéhez.