2. Mintapélda: Szinesítés

A shaderek bemutatása:

Az előző példában a térképen szereplő poligonok belseje szürke szinnel volt kitöltve. Ha ennél színesebb térképet akar, akkor a shader -t kell használnia.

A Shader-eket a Theme használja a térképi adatok megjelenésének beállítására. A GeoTools számos shadert tartalmaz, melyek közül a monoshader   a legegyszerűbb.

A MonoShader (minden azonos szinnel jelenik meg):

Az első mintapéldában a következő sorokkal hoztuk létre a Theme-t (témát) és adtuk a view-hoz:

Theme theme = loader.getTheme(); // Theme létrehozása a shapefájlból
view.addTheme(theme); // hozzáadás a viewhoz
A monoshader  hozzáadásához a következő kód szükséges:
Theme theme = loader.getTheme(); // Theme létrehozása a shapefájlból
Shader shade = new MonoShader(Color.blue);
theme.setShader(shade);
view.addTheme(theme); // hozzáadás a viewhoz
Egy másik egyszerű színezési lehetőséget biztosít a RandomShader  , mely véletlenszerűen rendel színeket az egyes elemekhez.
Shader shade = new RandomShader();

Tematikus színezés:

Ha azt akarja, hogy a térképen használt színek a az elemekhez kapcsolt adat értékeket tükrözzék, akkor az egyik a RampShader -en (vagy a később ismertetett DiscreteShader-en) alapuló színezést kell alkalmaznia. Ezek a következők:

Ezek mindegyike egy színátmenetet eredményez a térképen, az értékek megadott intervallumai alapján. Emellett a réteg minden eleméhez rendelkezésre kell állnia a színezés alapját képező adatnak.

Szerencsére, ha a ShapefileReader-t használja, akkor a munka nagyobbik része már elkészült:

Shader shade = new HSVShader(Color.blue,Color.red);
Theme theme = loader.getTheme(shade,"KOD");
view.addTheme(theme); // hozzáadás a view-hoz

Itt először a shade-t hozzuk létre, mint egy átmenetet a kékből a pirosba, majd a theme-t állítjuk elő a loader-ből. Bár most a shade-t és a shape .dbf fájlban található oszlop nevét (esetünkben KOD) paraméterként adjuk meg. Ekkor a KOD oszlopban található adatok alapján a loader beállítja a shade intervallumait és hozzárendeli az adatokat a theme-hez (ez a GeoData objektum felhasználásával történik, de most még nem kell foglalkoznunk ezzel).

Végül a theme-t a szokásos módon adjuk hozzá a view-hoz.

Hiányzó érték:

Sok térinformatikai adatbázis tartalmaz olyan elemeket, melyek adatai hiányoznak. Például egy térkép 10 és 2000 közötti népesség adatokat tartalmaz, de néhány területre nincs adatunk. Ezekhez a területekhez gyakran 0-t vagy valamilyen speciális értéket (pl. -9999) rendelünk. Ha a shadert nem értesítjük ezen értékek speciális jelentéséről, akkor helytelen eredményt kaphatunk (például egy szín lépcső, mely a -9999-től 2000-ig tart és nem a kívánt 10 és 2000 között).

A probléma megoldása érdekében minden shader képes kezelni a hiányzó értékeket, amit beállíthatunk és az ehhez tartozó megjelenítési színt is megadhatjuk.

shader.setMissingValueCode(-99999);
shader.setMissingValueColor(Color.white);

A diszkrét shader:

A színátmenet helyett ez a színezési technika lehetővé teszi, hogy minden egyes eltérő értékhez egy színt rendeljünk. A használatához egy extra 'key' (kulcs) fájlra van szükség, mely az egyes értékeket összerendeli egy színnel.
0,'#c0f0c0',egyéb
1,'#c0c0f0',oktatás
2,'#00ff00',tanreaktor
3,'#f0f0c0',átjáró
4,'#040406',raktár
5,'#008080',könyvtár
6,'#000080',labor
epulet.key
A kulcs használatához szükséges kód:
shader = new DiscreteShader(new URL("http://foo.bar.com/maps/epulet.key"));
Theme theme = loader.getTheme(shade,"KOD");
view.addTheme(theme); // hozzáadás a vire-hoz
A DiscreteShader létrehozása során megadott URL hivatkozik a kulcs fájlra (a példában egy nem létező URL szerepel).

A kész mintapélda:

NoJVM switched on in this browser

Az applet elem:

<APPLET
CODE="Tutorial2"
WIDTH="300"
HEIGHT="320"
archive="jars/geotools.jar,jars/support.jar,jars/collections.jar">
<PARAM NAME="shapefile" VALUE="epulet">
<PARAM NAME="lut" VALUE="epulet.key">
<PARAM NAME="shadeBy" VALUE="KOD">
</APPLET>

A 'lut' PARAM elem tartalmazza a kulcs fájl relatív címét.
A 'shadeBy' PARAM elem adja meg a színezéshez használt oszlop nevét

A Tutorial2.class letöltésével és a PARAM elemek értékének módosításával bármilyen shape fájl tartalmát megjelenítheti egy honlapon, további programozási munka nélkül.

 

Tutorial2.java,Tutorial2.class

Előző rész Következő rész