Vissza az előzőleg látogatott oldalra (nem elérhető funkció)Vissza a tananyag kezdőlapjára (P)Ugrás a tananyag előző oldalára (E)Ugrás a tananyag következő oldalára (V)Fogalom megjelenítés (nem elérhető funkció)Fogalmak listája (nem elérhető funkció)Oldal nyomtatása (nem elérhető funkció)Oldaltérkép megtekintése (D)Keresés az oldalon (nem elérhető funkció)Súgó megtekintése (S)

Open Source rendszerek a térinformatikai gyakorlatban – Interaktív webtérképek készítése OpenLayers és MapServer használatával / WMS és WFS szolgáltatás MapServer segítségével

Tanulási útmutató

Összefoglalás

A lecke bemutatja, hogyan alakítható ki a MapServer felhasználásával WMS vagy WFS szolgáltatás, ami aztán kiválóan használható az OpenLayers térképeink adatforrásaként.

Követelmény

A tanuló ismerje meg a legalapvetőbb szerver oldali webkartográfiai feladatok megoldását MapServer segítségével.

Önállóan megoldható feladatok

  • Keressen az interneten vektoros térinformatikai adatokat shapefile formátumban, és készítsen egy olyan mapfile-t, amelynek segítségével az adatok WMS szolgáltatáson keresztül elérhetőek.

WMS és WFS szolgáltatás MapServer segítségével

Mi az a MapServer?

A MapServer az UMN (University of Minnesota) által kifejlesztett nyílt forráskódú webes kartográfiai/térinformatikai programcsomag. Működhet CGI programként (ebben a leírásban erről lesz szó), vagy a MapScript segítségével különböző szerveroldali script nyelvek kiegészítéseként. Mindkét esetben tipikus szerver oldali alkalmazás: a felhasználó http-kéréseket küld a szervernek, és térképet vagy térképi adatokat kap válaszként.

A program segítségével térképeket állíthatunk elő a legkülönfélébb formátumú raszteres és vektoros geoadatokból, azokon lekérdezéseket hajthatunk végre, stb.

Jelen leírás csak a legegyszerűbb feladatok megvalósítását mutatja be. Akit mélyebben is érdekelnek a MapServer lehetőségei, az további információkat találhat a hivatalos dokumentációban, illetve a http://mercator.elte.hu/~saman/hu/okt/mapserver/ oldalon.

Vissza a tartalomjegyzékhez

A Mapfile

A MapServer lelke a Mapfile, amely leírja, hogy a különböző adatforrások tartalmát hogyan ábrázoljuk a térképen. A Mapfile - ami egyébként egy egyszerű szövegfájl - kiterjesztése .MAP.

A Mapfile egymásba ágyazott objektumokból áll, melyek mindegyike az objektum típusát jelző kulcsszóval kezdődik (pl.: MAP, LAYER), és az END kulcsszóval végződik.

Nézzünk egy egyszerű Mapfile-t:

Forráskód# Mapfile minta - Magyarország megyéi EOV-ban MAP NAME "Magyarország" STATUS ON SIZE 800 600 # képméret pixelben IMAGETYPE png EXTENT 420000 45000 950000 380000 # a térkép határai (most EOV koordináták) SHAPEPATH "data" # az adatfájlok elérési útja PROJECTION "init=epsg:23700" # EOV vetület END LAYER NAME "Megye" TYPE polygon DATA "megyek.shp" STATUS DEFAULT PROJECTION "init=epsg:23700" END CLASS # az elemeket osztályokba soroljuk. Legalább 1 osztály kell. NAME "default" STYLE # a Megye réteg default osztályának megjelenítési beállításai OUTLINECOLOR 0 127 0 COLOR 180 255 180 END END END END

A Mapfile által leírt térképet a MapServer CGI programja segítségével hozhatjuk létre. Ezen a webszerveren (mercator.elte.hu) ezt legegyszerűben úgy érhetjük el, ha a következő URL-t megnyitjuk egy böngészőben: http://mercator.elte.hu/cgi-bin/mapserv?map=/home/oktatok/saman/public_html/hu/okt/mapserver/p1.map&mode=map, aminek eredménye a következő kép lesz:

Magyarázat

A http://mercator.elte.hu/cgi-bin/mapserv URL-en található CGI program létrehozott egy raszteres térképet a paraméterként kapott fájlban (/home/oktatok/saman/public_html/hu/okt/mapserver/p1.map) található Mapfile alapján. A Mapfile mindig tartalmaz egy MAP objektumot. Ez leírja a készítendő térkép általános tulajdonságait, és tartalmaz egy vagy több LAYER objektumot, melyek a különböző térképi rétegeket definiálják.

A # után található szövegek megjegyzések, nincs semmilyen hatásuk, csak segítik a megértést. Ez a térkép csak egy LAYER objektumot, azaz egy réteget tartalmaz, ami egy shapefile-ból nyeri az adatokat. A réteg poligonokat tartalmaz (TYPE polygon), melyeket most egységesen egy osztályba sorolunk (a default nevűbe). Ennek az osztálynak a megjelenése: sötétzöld kontúr és halványzöld kitöltés.

Vissza a tartalomjegyzékhez

A mapserv CGI paraméterezése

A MapServer természetesen nem csak az alapértelmezett méretben és kiterjedéssel tudja elkészíteni a térképet. Az URL-t különféle paraméterekkel is kiegészíthetjük. A mapsize=400+300 a képméretet 400*300 pixelre állítja, a mapext=600000+200000+720000+290000 pedig egy kisebb részletet rajzol csak meg (a megfelelő koordináták közé esőt). A teljes URL így:

http://mercator.elte.hu/cgi-bin/mapserv?map=/home/oktatok/saman/public_html/hu/okt/mapserver/p1.map&mode=map&mapsize=400+300&mapext=600000+200000+720000+290000,

ami a következő képet adja:

Vissza a tartalomjegyzékhez

Elemek osztályozása

Ha az adatforrás nem csak geometriai információkat tartalmaz, hanem adatmezőket is, akkor ezek alapján egyszerűen osztályozhatjuk az elemeket, a különféle osztályokba tartozó elemeket pedig más és más módon jeleníthetjük meg. Ez a legegyszerűbb módja a tematikustérkép-készítésnek.

Forráskód# Mapfile minta - Magyarország megyéi népesség alapján színezve MAP NAME "Magyarország" STATUS ON SIZE 800 600 # képméret pixelben IMAGETYPE png EXTENT 420000 45000 950000 380000 # a térkép határai (most EOV koordináták) SHAPEPATH "data" # az adatfájlok elérési útja PROJECTION "init=epsg:23700" # EOV vetület END LAYER NAME "Megye_nepesseg" TYPE polygon DATA "megyek.shp" STATUS DEFAULT PROJECTION "init=epsg:23700" END CLASS NAME "0-300000" EXPRESSION ([Nepesseg]<=300000) STYLE OUTLINECOLOR 0 127 0 COLOR 180 255 180 END END # class 0-300000 CLASS NAME "3-500000" EXPRESSION ([Nepesseg]>300000 AND [Nepesseg]<=500000) STYLE OUTLINECOLOR 0 127 0 COLOR 150 215 150 END END # class 3-500000 CLASS NAME "5-900000" EXPRESSION ([Nepesseg]>500000 AND [Nepesseg]<=900000) STYLE OUTLINECOLOR 0 127 0 COLOR 110 185 110 END END # class 5-900000 CLASS NAME "900000-" EXPRESSION ([Nepesseg]>900000) STYLE OUTLINECOLOR 0 127 0 COLOR 80 155 80 END END # class 0-300000 END END

Ebben a Mapfile-ban a megyéket népességük alapján soroljuk 4 osztályba. Minden osztálynál van egy EXPRESSION kifejezés, ami meghatározza, hogy melyik elemek esnek az adott osztályba. A kifejezésben felhasználhatók az adatforrásban található adatmezők, melyek nevét szögletes zárójelek közé kell tenni. Az eredmény a következő:

Vissza a tartalomjegyzékhez

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.

Forráskód... LABELITEM "Nev" ... CLASS ... LABEL TYPE bitmap SIZE medium COLOR 0 0 0 END END # class ...

Mivel a LABEL objektum a CLASS-on belül szerepel, minden osztályhoz külön meg kell adni. Ha egységes külalakú neveket akarunk egy réteg összes osztályához, akkor emiatt célszerűbb egy külön névrajz réteget létrehozni (itt a réteg típusa annotation legyen).

Az eredmény:

Vissza a tartalomjegyzékhez

Új Széchenyi terv
A projekt az Európai Unió támogatásával, az Európai Szociális Alap társfinanszirozásával valósul meg.

A Társadalominformatika: moduláris tananyagok, interdiszciplináris tartalom- és tudásmenedzsment rendszerek fejlesztése az Európai Unió támogatásával, az Európai Szociális Alap társfinanszírozásával, az ELTE TÁMOP 4.1.2.A/1-11/1-2011-0056 projekt keretében valósult meg.
A tananyag elkészítéséhez az ELTESCORM keretrendszert használtuk.