„GeoTools” változatai közötti eltérés
(→Lekérdezések használata) |
(→Lekérdezések használata) |
||
140. sor: | 140. sor: | ||
Ezután létrehozunk egy FeatureBuildert, ami a tereptárgyak megjelenítésében segít. Erre a rétegre helyezzük fel a különböző objektumokat. Később ezt a réteget tudjuk megjeleníteni a térképen.<br /> | Ezután létrehozunk egy FeatureBuildert, ami a tereptárgyak megjelenítésében segít. Erre a rétegre helyezzük fel a különböző objektumokat. Később ezt a réteget tudjuk megjeleníteni a térképen.<br /> | ||
− | [[Fájl: | + | [[Fájl:Geotools_terkep.jpg]] |
Rövid magyarázat a képhez: | Rövid magyarázat a képhez: |
A lap 2016. június 20., 20:31-kori változata
Tartalomjegyzék
GeoTools
A GeoTools egy általános célú nyílt forráskódú (LGPL) térinformatikai Java kód könyvtár, amely OGC szabványoknak megfelelő adatszerkezeten alapul, lehetővé téve vektor, raszter, adatbázis és térinformatikai formátumok kezelését előre definiált interfészen keresztül, mint:
• WMS: Web Map Service, GIS adatbázisból származó georeferenciával rendelkező térképek internetes továbbítását és megjelenítését teszi lehetővé (a térképi adatokat digitális képpé alakítja)
• WCS: Web Coverage Service, georeferált digitális képek (légifotó, űrfelvétel) internetes továbbítását teszi lehetővé
• WFS: Web Feature Service, georeferenciával rendelkező térbeli adatok (vektoros adatok) internetes továbbítását teszi lehetővé (nem alakítja az adatokat digitális képpé)
Története
1996-ban kezdődött a GeoTools 1 fejlesztése a leedsi egyetem (University of Leeds, West Yorkshire, Anglia) mesterképzésének keretében, amelynek célja, hogy egy olyan eszközt hozzanak létre az ügyfelek számára, mely lehetővé teszi különböző adatok interaktív földrajzi megjelenítését. 2002-ben fejlesztők egy nemzetközi csoportjával újraírták, követve az OGC előírásokat, ez a GeoTools 2. Addig a verziószámokat követve frissítették a projekt nevét, majd 2007-ben ezt ejtették és javították egyszerűen GeoTools-ra, a verziószámot pedig külön kezelik.
Felépítés
Java-ban íródott, nyílt forráskódú platformfüggetlen szoftver/bővítmény, melyet jelenleg is fejlesztenek. Moduláris felépítése lehetővé teszi funkcionalitásának egyszerű bővítését. Másrészről, így szakértői területek szerint tagolódik.
A többi open source szoftverhez hasonlóan a GeoTools is nyílt repozitorival kell, hogy rendelkezzen. Vagyis rendelkezik egy fejlesztői és egy vagy több futó verzióval (stabil és karbantartott). Ez utóbbiak, amelyeket fejlesztenek, ezek új szolgáltatásokat, fejlesztéseket és hibajavításokat tartalmaznak. Verziókezelőnek Git-et használ, ahol major.minor.patch számozási rendszert alkalmaz.
• major – a növekvő fő verziószámot jelöli (pl.: 8.xy-ról 9.0.0-ra), vagyis olyan jelentős változás következett be, amely tönkreteheti az előző verziókkal való kompatibilitást.
• minor – kisebb változás (pl.: 8.0.x-ről 9.0.1-re), ahol új funkciók és/vagy javítások következnek, amely nincs hatással a kompatibilitásra
• patch – csak a patch azonosító változik, azaz kisebb javításokat/változtatásokat eszközöltek az előző verzióhoz képest
Architektúra
Egymásra épülő rétegekből áll.
• Térinformatikai rendszer használatához szükség van: gt-opengis, gt-referencing and gt-metadata,
• továbbá a használni kívánt adatokhoz a gt-api, gt-data, gt-main, jts, gt-opengis, gt-referencing, gt-opengis, gt-metadata modulokra.
Modulok
OpenGIS (gt-opengis) – Térinformatikai koncepciók
Térinformatikai elemzések a következőkre: környezettudomány, élettan, ökológia, geológia, járványtan. A GIS célja, hogy rögzítse, tárolja, elemezze, kezelni és megjeleníteni tudja a más-más típusú földrajzi adatokat, s azt különböző kontextusokban, műveletekben és alkalmazásokban felhasználja. Az adatok OGC vagy ISO szabvány szerint definiáltak. Interfészek: gt-main, gt-coverage, gt-referencing, gt-metadata
JTS (Java Topology Suite) – Geometriai adatokat alkalmazásához
Geometriai műveletek, tranformációk számítása Interfészek: gt-api, gt-main
API
Helper osztályokat tartalmaz, melyek geometriai adatokat fordítanak Interfészek: gt-main
Metadata
Térinformatikai adatok és szolgáltatások leírása Interfészek: gt-opengis
Referencing – (EPSG[1]) Referensz információk
A hivatkozott terület adatait, koordinátáit tartalmazza Interfészek: gt-opengis Coverage – Raszter adatok használata Lehetőséget biztosít különféle távérzékelési, térinformatikai, térképészeti, földmérési adatokat tartalmazó raszter képfájlok használatához (GeoTIFF) vagy többdimenziós mátrixhoz (NetCDF). A TIFF formátumú képek digitális műholdas felvételek tárolására és szállítására alkalmas, ami lehet légi fotó, terepmodell, térkép vagy különféle földrajzi elemzések. Interfészek: gt-opengis
Main – Szűrők, funkciók, stílusok
Alapértelmezett implementációkat tartalmaz a gt-api és gt-opengis interfészek számára, mint szűrők, funkciók, stílusok használata, ezek összessége már elegendő egy alkalmazás készítéséhez. Interfészek: gt-opengis
Data
Támogatja a hozzáférést a különböző információkhoz, például vektorgrafikus adatok elérése, külső szolgáltatások, lemezfájlok használata az alkalmazásban. Interfészek: gt-api
JDBC
Hozzáférést biztosít a különböző adatbázisokhoz a Java JDBC segítségével.
CQL
A térinformatikai adatokkal való munkához, olyan ember által olvasható szűrőkifejezésekre van szükségünk, mint a gt-cql modulban található kontextus leíró nyelv. (ítéletlogika)
XML
XML használatával támogatja a térinformatikai adatok elemzését és kódolását.
Render
Java2D felhasználásával térinformatikai adatok képi megjelenítését teszi lehetővé a térképen.
Lekérdezések használata
A GeoTools programcsomag többféle lekérdezési műveletet és adatbázisok széles körét támogatja. Lehetőség van fájlokból (pl. shapefile) adatokat betölteni és raktuk lekérdezéseket elvégezni valamint lokális és távoli szerveren elérhető adatbázishoz csatlakozni és ott térbeli lekérdezéseket (spatial query) végrehajtani.
A GeoTools adatbáziskezelő rétegének felépítése
Adatbázisból úgynevezett Filterek segítségével tudunk lekérdezni. A filterek a CQL nyelv segítségével fogalmazhatjuk meg. A CQL hasonló az SQL nyelv where záradékában használt feltételekhez. Az adatbázist egy DataStore nevű objektum reprezentálja. A CQL nyelv segítségével lehetőségünk van különféle térbeli lekérdezéseket (pl. legkisebb befoglaló négyzet, terület, kerület, távolásg meghatározása) elvégezni, de lehetséges nem-térbeli lekérdezések végrehajtása is.
Az adatbázis-kapcsolat felépítésében egy beépített, JDataStoreWizard nevű komponens nyújt segítséget. Itt csak be kell paramétereznünk, hogy milyen adatbázisból vagy fájlból szeretnénk kinyírni az adatokat.
Példa kódrészletek
Filter filter = CQL.toFilter("BBOX(ATTR1, 151.12, 151.14, -33.5, -33.51)");
SimpleFeatureCollection features = source.getFeatures(filter);
FeatureCollectionTableModel model = new FeatureCollectionTableModel(features);
table.setModel(model);
Az első sorban létrehozzuk a Filter objektumot. A Filter az argumentumban megadott CQL lekérdezés eredményét - jelen esetben a pontok által határolt befoglaló négyszögben lévő térobjektumokat - adja vissza.
A második sorban lévő kód végzi a tényleges szűrést: egy FeatureCollection-be tölti be a lekérdezésnek eleget tevő tereptárgyakat.
Ez után létrehozunk egy modellt, amit később egy táblázatban meg tudunk jeleníteni grafikusan.
Lekérdezés megjelenítése grafikusan
A lekérdezett tereptárgyakat grafikus úton a követlezőképpen tudjuk megjeleníteni:
StyleBuilder styleBuilder = new StyleBuilder(); PolygonSymbolizer restrictedSymb = styleBuilder.createPolygonSymbolizer(Color.BLUE, Color.BLACK, 0); Style myStyle = styleBuilder.createStyle(restrictedSymb); FeatureLayer layer = new FeatureLayer(features, myStyle); layer.setTitle(text.getText()); mapFrame.getMapContent().addLayer(layer);
A StyleBuilder osztállyal tudunk egyéni megjelnítései stílust létrehozni.
A 2. sorban beállítjuk, hogy fekete kontúrú, kék színnel kitöltött objektumok kelektezzenek.
Ezután létrehozunk egy FeatureBuildert, ami a tereptárgyak megjelenítésében segít. Erre a rétegre helyezzük fel a különböző objektumokat. Később ezt a réteget tudjuk megjeleníteni a térképen.
Rövid magyarázat a képhez:
- Rétegek neve, színek, láthatósága
- Lekérdezések eredményének táblázatos megjelenítése az összes attribútummal együtt
- A lekérdezés eredményét (vörös) és az eredeti adathalmazt megjelenítő térkép
- A térkép nagyítására, kicsinyítésére és mozgatására használható eszköztár
Használata
Telepítést nem igényel, mivel ez egy könyvtár. Szükség van fejlesztői környezetre (Eclipse, NetBeans), valamint magára a könyvtárra[2], ahol a 11-es verziótól kezdődően Java 1.7 SDK szükséges.
Maven használata (ajánlott) Eclipse-ben:
1. Válasszuk a File > New > Other menüpontot
2. A varázslóban a Maven > Maven project pontot
3. A New Maven varázslójában menjünk tovább, majd az alapértelmezett maven-archtype-quickstart –ot választjuk és tovább megyünk
4. A következő pontban meg kell adnunk a projekt adatait:
• Group Id: org.geotools
• Artifact Id: tutorial
• Version: 0.0.1-SNAPSHOT (default)
• Package: org.geotools.tutorial
5. Finish-re kattintva létrejött az új projekt
6. Az App.java futtatásakor megjelenik a konzolon a „Hello World!”
A pom.xml fájlban a különböző pluginokhoz tartozó Jar fájlokat a Maven projekt letölti az ún. „local repository”-ba. A GeoTools használatához adjuk hozzá a következőket a pom.xml fájlunkhoz:
<properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <geotools.version>12-RC1</geotools.version> </properties>
<dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.11</version> <scope>test</scope> </dependency> <dependency> <groupId>org.geotools</groupId> <artifactId>gt-shapefile</artifactId> <version>${geotools.version}</version> </dependency> <dependency> <groupId>org.geotools</groupId> <artifactId>gt-swing</artifactId> <version>${geotools.version}</version> </dependency> </dependencies>
<repositories> <repository> <id>maven2-repository.dev.java.net</id> <name>Java.net repository</name> <url>http://download.java.net/maven/2</url> </repository> <repository> <id>osgeo</id> <name>Open Source Geospatial Foundation Repository</name> <url>http://download.osgeo.org/webdav/geotools/</url> </repository> </repositories>
Példaprogram shapefájlok megjelenítésére
1. Az előző Maven projektben hozzunk létre egy új csomagot org.geotools.tutorial.quickstart névvel a következő osztállyal org.geotools.tutorial.quickstart.Quickstart
2. Egy fájlválasztó létrehozásával megkönnyítjük a shapefájlok kiválasztásához
File file = JFileDataStoreChooser.showOpenFile("shp", null); if (file == null) { return; }
FileDataStore store = FileDataStoreFinder.getDataStore(file); SimpleFeatureSource featureSource = store.getFeatureSource();
3. Betöltjük a shapefájlt
MapContent map = new MapContent(); map.setTitle("Quickstart"); Style style = SLD.createSimpleStyle(featureSource.getSchema()); Layer layer = new FeatureLayer(featureSource, style); map.addLayer(layer);
4. Megjelenítjük
JMapFrame.showMap(map);
Programozási megoldások
GeoServer
1. Telepítés után a következő linken érjük el: http://localhost:8080/geoserver/web/
2. Hozzunk létre egy új Workspace-t
3. Ehhez adjunk egy új adattárat, amely shapefájlokat tartalmaz, tehát válasszuk a Directory of spatial files (shapefiles) lehetőséget
4. A GeoServer telepítési helyét keressük meg a számítógépen, ebben a Server Status menüpont szolgál segítségül. Majd a data_dir mappába másoljunk kedvünk szerint shapefájlokat.
5. Válasszuk ki a 2. pontban létrehozott Workspace-t, töltsük ki az erre a pontra vonatkozó leírást, valamint válasszuk ki a GeoServer data_dir mappájába azt a mappát, amely tartalmazza a használni kívánt shapefájlokat és mentsünk.
6. A Layers menüpontban tegyük nyilvánossá azokat a shapefájlokat, amelyeket használni szeretnénk a továbbiakban. Ehhez szükséges egy SRS kód, ami legyen 4326 (WSG – földmérési adatokat tartalmaz). Ezek után a határok számítása következik, ezt kitölti az oldal a Compute linkekre kattintva. Mentsünk.
7. A Layers Group menüpontban hozzunk létre egy csoportját az új rétegeknek. Adjunk nevet és leírást a csoportnak. Majd adjuk hozzá a használni kívánt rétegeket (shapefájlokat). Ezeket kirajzolásuk szerinti sorrendbe helyezhetjük. Mentsünk.
8. A Layer Prewiev menüpontban keressük meg azt a csoportot, amit az előző pontban létrehoztunk, majd kattintsunk az OpenLayers hivatkozásra. Ekkor egy új lapon kirajzolódnak a shapefájlok.
Felhasználási helye
- GeoServer
- uDig
- GeoPublisher
- Geomajas
- Postgresql/PostGIS
- 52N
Felhasználási lehetőségek
- Térinformatikai adatok, szimbólumok megjelenítése és szűrése OGC szabványból (CQL, SLD, SFS, WCS, WCPS, WFS, WMS, WMTS, WPS)
- JTS - az Euklideszi vektorteren végzett geometriai transzformációk modellezéséhez
- Rácshálók, shape fájlok és raszter felvételek olvasása
- Grafikonok és hálózatok készítése, elemzése
Jellemző funkciók
Térbeli fogalmakra és adatszerkezetekre meghatározott interfészek
• Attribútum és térbeli szűrőkkel OGC adatok használata
• Geometriai transzformációk modellezése
Adatelérés
• Térbeli adatbázisok és GIS adatok számos formátumának támogatása
Alacsony memóriahasználat
• Disk-ről renderel, nem a memóriába ír. Különösen hasznos szerveroldali környezetben.
• Bonyolult térképek megjelenítése
Támogatott formátumok
Raszter formátum: arcsde, arcgrid, geotiff, grassraster, gtopo30, image (JPEG, TIFF, GIF, PNG), imageio-ext-gdal, imagemoasaic, imagepyramid, JP2K, matlab
Adatbázis “jdbc-ng” támogatás: db2, h2, mysql, oracle, postgis, spatialite, sqlserver
Vektor formátum: app-schema, arcsde, csv, dxf, edigeo, excel, geojson, org, property, shapefile, wfs
XML: xsd-core (xml simple types), fes, filter, gml2, gml3, kml, ows, sld, wcs, wfs, wms, wps, vpf.
Hivatkozások
http://www.opengeospatial.org/
Mi az az OGC? - https://www.youtube.com/watch?v=bfkCdir-yO8
http://svn.osgeo.org/geotools/trunk/modules/plugin/
https://github.com/geotools/geotools/wiki
http://sourceforge.net/projects/geotools/files/
http://www.naturalearthdata.com/
http://spatialreference.org/ref/epsg/wgs-84/
http://docs.geotools.org/latest/userguide/tutorial/filter/query.html