GeoServer, OpenLayers és WFS Dolleschall János
A GeoServer A GeoServer egy nyílt forráskódú szerver szoftver, ami lehetővé teszi térbeli adatok megosztását. Java-ban íródott, így platformfüggetlen. A legtöbb térbeli adatformátum használható benne, nyílt szabványok (WFS, WMS, WCS) segítségével. A térképi állományok böngészőben történő kezeléséről az OpenLayers gondoskodik óta fejlesztik.
A Data mappa geoserver / data_dir / data Ebben a mappában célszerű tárolni a térképi adatokat. Ezt a mappát a GeoServer akkor is eléri, ha a teljes szervert másik gépen futtatjuk vagy a geoserver mappát más könyvtárba helyezzük. Hivatkozás a data mappára a catalog.xml-ben: Abszolút útvonal: value="file://C:/gis_data/foo.shp"file://C:/gis_data/foo.shp Relatív útvonal: value="file:data/foo.shp"file:data/foo.shp
Feature Data Set készítése A tudtára kell adni a GeoServernek, hogy az adott vektoros állományt hol érheti el. Meg kell adni az elérési útvonalat (abszolút/relatív). Meg kell adni a „Namespace”-et. Ez egy konténer, amely a layer-ek egy csoportját tartalmazza. Lehetővé teszi, hogy azonos nevű layer-eket használjunk.
FeatureType szerkesztése Meg kell adni a megjelenítendő vektor réteg stílusát. Ez kiválasztható egy listából, de lehet egyedi is. Definiálni kell az SRS-t (Spatial Reference System). Listából kiválaszthatóak a GeoServer által ismertek as jelű az EOV. Automatikusan generálni lehet a „Bounding Box”-ot az SRS megadása után.
SLD készítése Styled Layer Desrciption. Itt készíthetünk egyedi stílust a layer-hez. Egyszerűbb stílusok grafikus felületen elkészíthetőek. Az SLD XML alapon nyugszik. XML kód írásával egészen egyedi megjelenítési módok is kreálhatóak. A szükséges XML kódok a GeoServer dokumentációjában megtalálhatóak.
A DEMO lap Map Preview Itt tekinthetőek meg az egyes layer-ek WMS és OpenLayers segítségével. Sample Request WMS, WCS és WFS lekérdezést próbálhatjuk ki, előre definiált példákkal. WFS-T demo A WFS-T (transactional) kéréseket mutatja be az OpenLayers segítségével. A példa térkép rétegeit szerkeszthetjük. Overlay on Google Maps A Google Maps térképek és a GeoServer layer-ek együttes megjelenítésére mutat példát. Egyebek: Documentation, GeoRSS, WMS Example
Map Preview A Map Preview-ban láthatóak azok a térképi állományok, melyeknek korábban megadtuk az elérési útvonalát, belehelyeztük őket egy Namespace-be, definiáltuk a stílusát és koordináta rendszerét. Megtekinthetjük őket OpenLayers segítségével. Letölthetőek KML és PDF formátumban. Megtekinthetőek GeoRSS és SVG formában.
OpenLayers Az OpenLayers egy nyílt forráskódú JavaScript könyvtár, egyfajta keretrendszer, mely lehetővé teszi térképes adatok megtekintését web böngészőkben.
OpenLayers a GeoServerben A GeoServer beépítetten tartalmazz az OpenLayers-t. Egyszerű eszköztár áll rendelkezésre alapértelmezetten: navigáló gombok, grafikai beállítások, lekérdezési lehetőség. CQL: Common Query Language Egyszerű szöveges lekérdező nyelv, az SQL-hez hasonló, de egyszerűbb. Részletes tutorial a geoserver.org-on.
OpenLayers – a HTML Az OpenLayers bármely weboldal készítésénél felhasználható, ha térképet szeretnénk megjeleníteni az oldalon. Egy egyszerű HTML file formájában könnyen megérthető a működése. A következő HTML lap egy világtérképet jelenít meg WMS segítségével, mely egyszerű navigáló OpenLayers felülettel van ellátva.
OpenLayers – a kód A kód felépítése: - kell egy script címke, ami hivatkozik az OpenLayers könyvtárra: - létre kell hozni egy térkép objektumot: var map = new OpenLayers.Map('map') - layer objektum létrehozása, jelen esetben WMS segítségével: var wms = new OpenLayers.Layer.WMS( "OpenLayers WMS", " {layers: 'basic'} ) - layer hozzáadása a térképhez: map.addLayer(wms) - a nagyítás beállítása teljes terjedelemre: map.zoomToMaxExtent() -
OpenLayers & GoogleMaps OpenLayers segítségével nem csak WMS térképeket tudunk kezelni, hanem WFS vagy akár Google térképeket is. 2 tag kell a HTML kódhoz: - egy script címke, mely hivatkozik a Google-re: - Google típusú Layer objektumot kell létrehozni: var google = new OpenLayers.Layer.Google("Google",{type: G_HYBRID_MAP})
OpenLayers vezérlők Az OpenLayers oldalán részletes dokumentáció áll rendelkezésre az OpenLayers használatával kapcsolatosan. Megtalálhatóak a szükséges kódrészletek például különböző vezérlők elhelyezésére a térképfelületen. var map = new OpenLayers.Map('map', { controls: [] }); map.addControl(new OpenLayers.Control.PanZoomBar()); map.addControl(new OpenLayers.Control.MouseToolbar()); map.addControl(new OpenLayers.Control.MousePosition()); map.addControl(new OpenLayers.Control.ScaleLine()); map.addControl(new OpenLayers.Control.LayerSwitcher({'ascending':false}));
WFS A WFS az OGC által készített szabvány, melynek segítségével térbeli adatok küldhetők és fogadhatók HTTP-n keresztül. A WFS GML (Geography Markup Language) formátumban kódolja és továbbítja az információt. A GML az XML egy altípusa. A legfontosabb különbség a WFS és WMS között, hogy az utóbbi a földrajzi információkat digitális képpé alakítja. A WFS-re lehet úgy gondolni, mint a térképek mögötti forráskódra, melyet pl. WMS segítségével meg is jeleníthetünk. A WFS lehetővé teszi az adatok manipulációját: lekérdezés (térbeli vagy leíró adatok alapján), új elemek létrehozása, elemek törlése vagy módosítása. Az utóbbi 3 funkciót a WFS-T (transactional) teszi lehetővé.
WFS műveletek GetCapibilities: a szerver adatairól ad vissza egy listát, a lehetséges WFS műveletekkel és paraméterekkel DescribeFeatureType: adatok egy csoportjáról ad információkat és attribútumokat GetFeature: az aktuális adatot adja vissza, geometriai és attribútum információkkal LockFeature: megakadályozza, hogy egy elemtípus szerkeszthető legyen Transaction: egy elemtípus szerkesztése (létrehozás, törlés, módosítás)
Példák service=wfs& version=1.1.0& request=GetFeature& typeName=namespace:featuretype& featureID=feature service=wfs& version=1.1.0& request=GetFeature& typeName=namespace:featuretype& bbox=a1,b1,a2,b2 service=wfs& version=1.1.0& request=GetCapabilities service=wfs& version=1.1.0& request=DescribeFeatureType& typeName=namespace:featuretype
WFS kérés XML A WFS kéréseket nem csak HTTP formában küldhetünk. Lehetőség van XML írására is, mely egy kérést tartalmaz. Erre mutat példákat a GeoServer. A kérésre kapott válasz (.gml) ezután megtekinthető GIS szoftverrel (pl. QGIS) vagy megjeleníthető WMS-el.
WFS-T A GeoServer WFS-T példájával kipróbálható pont, illetve vonal típusú rétegek módosítása. A rétegek manipulálását a WFS-T, illetve a megfelelő OpenLayers vezérlők teszik lehetővé.
WMS - WFS /home/Johnny/Dokumentumok/states_wms.html /home/Johnny/Dokumentumok/states_wfs.html
WFS nehézségek OpenLayers FAQ-ból: Why isn't WFS working on my local checkout of OpenLayers? This is probably because you do not have a proxy host set up. See FrequentlyAskedQuestions#ProxyHost st