GeoBusiness    |    3/2007 www.geobusiness.cz open & free V  předchozím čísle GeoBusinessu jsme představili projekt OpenJUMP, desktopový open source nástroj pro práci s  prostorovými daty. V tomto článku se podíváme na praktické zkušenosti s  jeho užíváním a  vývojem aplikací nad jeho jádrem. Instalace Instalace může nezkušeného uživatele překvapit, zvláště pak začínajícího uživatele operačního systému GNU/Linux. Instalace spočívá v rozbalení ZIP archivu kdekoli v souborovém systému. Spuštění se provádí spuštěním skriptu (buď z příkazové řádky nebo z grafického prostředí). Problém obvykle není v nutné podmínce nainstalovaného Java Runtime Environment (JRE), ale ve spouštěcím skriptu, který je napsán v jazyce BASH. Tento skript má jako konce řádků znaky používané v  OS Windows (DOS), a  to může v některých linuxových prostředích způsobit nespuštění aplikace. Jediným řešením je nahradit konce řádků správnými znaky, a to buď ručně nebo příkazem dos2unix (ten v základních distribucích obvykle nenajdeme a musíme jej doinstalovat). Instalace ve Windows může probíhat podobně jako v  GNU/Linux nebo s  využitím instalátoru, který uživateli připraví i zástupce v nabídce Start nebo na Ploše. Zde spouštěný skript napsaný v jazyce MS-DOS Batch Language problémy s konci řádků nemá. Proto je instalace ve Windows obvykle bez problémů. Instalace zásuvných modulů je jednoduchá a je obvykle nezávislá na operačním systému. V zásadě se zásuvné moduly instalují tak, že zkopírujete knihovny s kódem ve formátu JAR do adresáře lib/ext v domovském adresáři programu. Někdy je však nutné zavést i  jiné knihovny, které daný zásuvný modul využívá, což může být pro běžného uživatele obtížnější neboť to často znamená editaci spouštěcího skriptu, případně jiný zásah do konfigurace instalace. Datové formáty Načítání a ukládaní vektorových geodat je bezproblémové především u  formátu JUMP GML. To je XML soubor, který je založen na jazyce GML (Geography Markup Language), ale především je jednodušší, na druhou stranu neposkytuje tak rozsáhlé možnosti a jen obtížně se setkáme s  jeho implementací mimo OpenJUMP (JUMP). U  formátu ESRI Shapefile se občas setkáte s  problémy způsobenými kódováním češtiny, jinak je práce se soubory v tomto formátu bez potíží. Načtení datových souborů, definovaných s využitím jazyka GML verze 2.0, je připraveno obecně, a je možné načítat soubory s libovolně definovaným schématem dle jazyka GML 2.0. Tato možnost je sice užitečná, ale vyžaduje od uživatelů znalost jazyka GML a vytvoření šablony pro načtení takovýchto dat. Vytvoření šablony je sice triviální, ale vyžaduje listování v manuálu programu, což jistě nepřispívá k využívání této jistě užitečné funkce. Doufejme, že v  nejbližší době bude součástí distribuce OpenJUMP i  sada předdefinovaných šablon pro nejznámější schémata. Práce s databázemi Vedle datových souborů umí program pracovat také s daty načtenými z databáze PostgreSQL/PostGIS. Před samotným spuštěním musíte do adresáře obsahujícího JRE vložit ovladač pro PostgreSQL. Čtení dat je bezproblémové, zobrazovat si můžete i  atributovou tabulku. Chcete-li data do databáze rovněž ukládat, musíte sáhnout po zásuvném modulu PostGIS database connector, který zapisování dat umožňuje. V souvislosti s tímto zásuvným modulem musíme zmínit problém načítání větších objemů dat. V závislosti na konfiguraci počítače (především paměť RAM a odkládací oddíl) může dojít k nenačtení dat. S programem můžete dále pracovat, dojde pouze k zobrazení chybového hlášení a k nenačtení vrstvy. (Objektivní srovnávací testy by však vystačily na celý samostatný článek.) Rastrová data Načtení rastrových dat je v  nové verzi OpenJUMP dostupné přímo, nemusíte tudíž instalovat zásuvný modul. Z dosavadních zkušeností tuto funkci zatím nedoporučujeme (k  načtení dat obvykle nedojde, u  negeoreferencovaných dat nelze definovat souřadnice umístění), proto je lepší využít některý ze zásuvných modulů. WMS Webové služby podle specifikací konsorcia Open Geospatial jsou v současnosti již velmi snadno dostupné z celé řady zdrojů, proto se vám bude v OpenJUMP hodit Praktické zkušenosti s projektem OpenJUMP Načtení vrstev pomocí WMS služby E1 GeoBusiness    |    3/2007www.geobusiness.cz open & free možnost připojit si WMS vrstvu. Funkce ovšem selže v  případě, že WMS služba vrátí nekorektní XML dokument na požadavek GetCapabilities. Toto selhání, resp. ohlášení výjimky, je sice v pořádku, ale z chybového hlášení se uživatel nedozví, proč došlo k selhání při připojení. Pokud uživatel vyzkouší několik služeb a u žádné (z výše uvedeného důvodu) neuspěje, může ho použití funkce WMS zklamat. Druhou pastí, číhající na uživatele, je samotné načtení dat pomocí WMS. Aktuální výřez mapového pole se může nacházet mimo rozsah geodat poskytovaných službou – v takovém případě dojde k  vykreslení prázdné plochy, což může uživateli připadat, že nedošlo k žádnému spojení. Úprava stylů U WMS nabízí OpenJUMP ještě jednu funkci, která může pomoci při tvorbě služeb WMS. Je to generátor Styled Layer Descriptor (SLD) popisů. Pro každou vrstvu si můžete uložit její styl dle specifikace SLD a poté popis využít pro definování vzhledu geoprvků v mapě, poskytované WMS službou. OpenJUMP umí u  symbolů měnit barvu a vzor výplně, barvu, vzor a šířku obrysu. K dispozici je úprava průhlednosti symbolů nebo úprava velikosti bodů/ zlomových bodů. Vrstvy podle měřítka Možnost zobrazování vrstev v  závislosti na aktuálním měřítku mapy je funkce, která byla do programu doplněna později a proto její zařazení do dialogového okna Styly je mírně zavádějící. Uživatelé jsou totiž zvyklí tuto funkci hledat v jiné nabídce. Grafické úpravy Upravit si můžete rovněž počáteční a koncové bodů linií. Někdy mohou být základní funkce pro grafické úpravy nedostatečné, např. u geologických symbolů – zásuvný modul VertexSymbols rozšířuje grafické úpravy o další vektorové symboly včetně možnosti použití vlastních symbolů (vektorových i rastrových) a rozšiřuje také možnosti u popisků prvků (např. pozadí popisků, či umístění popisků vůči geoprvku). Pokud chceme klasifikovat vykreslenou vrstvu pro vytvoření tematické mapy, můžeme, avšak metody, které jsou v OpenJUMPu k dispozici, jsou omezené. V programu lze přiřadit jedinečnou hodnotu jednomu symbolu nebo je rozdělit dle hodnot do námi zadaného počtu tříd, takže každé třídě bude přidělen stejný interval hodnot. Intervaly lze dále ručně upravovat. Upravovat můžete názvy jednotlivých tříd, jejich průhlednost a symboly pro jednotlivé třídy nebo celé škály najednou. Rozdělení se poté objeví v legendě ve formě struktury rozbalovacího stromu. S tím si ovšem zatím neumí úplně poradit zásuvné moduly pro tisk (o nich více viz dále v textu). Editace geodat Načtená geodata samozřejmě můžete upravovat (editovat). Po označení vrstvy k  editaci se zobrazí dialogové okno s celou škálou editačních nástrojů. Najdete zde nástroj pro posun, přidání, odstranění zlomových bodů prvků, nástroj pro přichytávání bodů k  jiným bodům, pro přesun geoprvků, rozdělování linii, rotování prvků a další. Po zobrazení atributové tabulky můžeme editovat atributová data nebo přidávat a odstraňovat atributy. V textovém režimu rovněž můžete editovat geografickou složku dat (po poklepání myší na prvek se zobrazí textový výpis souřad- nic). Jediným problémem, na který můžete narazit, je opět čeština. Problém nebudete mít s daty vytvořenými přímo v OpenJUMPu nebo v některém z programů, které pracují s kódováním UTF-8. Funkce pro kopírování geoprvků včetně jejich atributových dat jsou velmi užitečné a fungují bez nejmenších problémů. Prvky je možno kopírovat i mezi vrstvami, zde však z pochopitelných důvodů nedochází ke kopírování atributů, pokud mají vrstvy jinou sadu atributů. Prostorové dotazy Pro dotazování a výběry nad atributovou či geometrickou složkou dat nalezneme v nabídce Tools -> Queries hned tři položky. Položka Spatial Query umožňuje vytvořit prostorové dotazy pro výběr geoprvků na základě jiných vrstev nebo na základě systémové vrstvy „Fence“, ohraničujícího polygonu, který si předem vykreslíme. Při výběru vztahu prvků s  tzv. maskovací vrstvou máme možnost definovat průnik, dotyk, obsahuje, překryv, je překrýván, kříží se, je roven atd. Výběr můžeme zkopírovat do nové vrstvy nebo se pouze provede výběr ve zdrojové vrstvě. K dispozici máte tak zvolit si doplněk – vyberou se pouze ty prvky, které danému zadání nevyhovují. Funkce Attribute Query umí provést jednoduché dotazy nad atributy, kde opět z vybrané zdrojové vrstvy na základě atributu a jeho vztahu se zadanou hodnotou (je roven, obsahuje, začíná, atd.) jsou vybrány žádané geoprvky, případně jejich doplněk. Tyto dvě dotazovací možnosti dále rozšiřuje třetí položka v nabídce Queries s názvem Simple Query. Dialogové okno sice nepůsobí na první pohled uživatelsky přívětivě, ale po krátkém zkoušení zjistíte rozsáhlé možnosti výběrů nad atributovými daty. Příjemnou vlastností je možnost uložit si sestavený dotaz a později se k němu vrátit. Zajímavou možností je výběr geografických prvků pomocí nástrojů v  nabídce Edit. Na výběr máte již zmiňovaný vykreslený polygon, vykreslený kruh nebo podle typu geoprvku (bod, multipoint, linie polygon a další). Prostorové překryvné operace (sjednocení, průnik či rozdíl) naleznete také mezi nástroji pro překryv vrstev. K  dispozici jsou v různých variantách. Testovali jsme zejména funkce umožňující sjednocení administrativních jednotek do vyšších územních celků. Funkce umí vytvořit pouze multipolygony, což může být pro následné využití omezující. Obecně je však nabídka funkcí pro prostorové dotazování velmi široká a  další možnosti postupně přibývají. Analytické funkce OpenJUMP nabízí další analytické funkce, například tvorbu obalových zón, konvexní obálky, či Thiessenovy polygony. S analýzami implementovanými v OpenJUMP nebývají zpravidla problémy. Někdy se ovšem může stát, že narazíme na limit paměti, kdy například při vytváření Thiessenových polygonů u  velkého množství bodů se výpočet nedokončí. Exporty dat Možnosti výstupů do formátu Scalable Vector Graphics (SVG), Portable Network Graphics (PNG), Joint PhotoILU:Ezequias Rodrigues daRocha, martin davis Vektorová i rastrová data načtená společně E2 GeoBusiness    |    3/2007 www.geobusiness.cz graphic Experts Group (JPEG) jsou velmi dobré. Užitečný je export do formátu SVG. Použitelnou mapu získáte po úpravách v open source vektorovém editoru Inkscape (obdoba Adobe Illustratoru). Podpora tiskových výstupů Na stránkách projektu OpenJUMP najdete odkazy na dva zásuvné moduly určené pro podporu tvorby tiskových výstupů. Jedná se o zásuvný modul Print PlugIn od Geoff a Print Layout PlugIn od Intevitation. První z nich je uživatelsky na horší úrovni, nicméně nabízí zajímavé možnosti přidání nadpisu, měřítka, okraje, směrové růžice, poznámky a  legendy. U  měřítka lze měnit pouze rozsah a barvu, možnost výběru stylu u něj není. U směrové růžice máme na výběr pouze ze čtyř stylů, legenda vypadá značně nedokončeně. U  legendy se nevykreslují žádné klasifikované kategorie. Poslední verze vyžaduje zásuvný modul VertexSymbols, který rozšíří možnosti celého programu, proto se toto jako problém nejeví. Jednou z dalších výhod modulu, které stojí za zmínku, je možnost rozdělení tištěného mapového výstupu na více archů papíru. Druhý zásuvný modul nabízí přívětivější prostředí, nabízí obdobné možnosti jako první zmíněný (kromě směrové růžice), na druhé straně je zde možné importovat obrázky, rastrové i vektorové (SVG), tudíž můžeme použít libovolnou směrovou růžici. Při importu některých SVG souborů jsme ovšem zaznamenali problémy. Místo tisku můžete výstup exportovat do formátů SVG, JPG nebo do PDF souboru. Export do PDF ovšem v době, kdy jsme psali tento článek, nefungoval. U  legendy, která oproti předchozímu modulu vypadá velmi hezky, jsou uvedeny i kategorie klasifikované vrstvy. Ovšem i tomuto modulu chybí některé vlastnosti, například možnost umístit mapu před tiskem na papír na šířku, to se dá nahradit pouze rotací jednotlivých prvků. V  konečném výsledku se nám ani z jednoho modulu nepodařilo na tiskárně HP Designjet 840C připojené k USB portu vytisknout výstup, přestože tisk z jiných aplikací na této tiskárně funguje. Nezbylo nám tedy nic jiného než exportovat výstup do SVG nebo JPG. Oba zásuvné moduly mají ovšem nakročeno správným směrem a  vývojáři za krátký čas urazili pořádný kus cesty. Zásuvné moduly pro další formáty se již také objevily. Dobré zkušenosti máme s moduly umožňujícími načtení ASCII delimited souboru se souřadnicemi bodů, s  modulem podobného ražení, který však načítá souřadnice a  další atributy z databáze připojené přes rozhraní JDBC (ODBC) a s modulem pro načtení formátu DXF. V  případě formátu DXF jsme ovšem netestovali složité struktury ani rozsáhlé datové soubory. Modul pro ArcIMS ArcIMS Plugin umožňuje připojení ImageService systému ESRI ArcIMS. Zásuvný modul má stejný problém jako funkce přidání WMS služby, je nutné mít výřez okna v  oblasti rozsahu ArcIMS služby, jinak k vykreslení geodat nedojde. Modul rovněž vyžaduje znát adresu pro připojení ArcIMS služby. Bylo by vhodnější umožnit vyhledání takovýchto služeb přímo v nějakém registru. Modul pro plánování trasy Route Planner Plugin umožňuje vyhledávání cesty obchodního cestujícího nad daty odboru silniční databanky Ostrava Ředitelství silnic a dálnic. Aplikace funguje spolehlivě, ale je závislá hned na několika podmínkách. Vyžaduje instalaci dalších dvou knihoven JGraphT a javadbf a dále pak načtená data silniční databanky. Vývoj aplikací Vývoj zásuvných modulů, případně celých aplikací, které jsou založené na platformě JUMP, není triviální. Základní dokumentace pro vývoj aplikací je dostupná ve formě návodů, problémem je nedostatek dalších příkladů užití tříd a rozhraní balíků OpenJUMP. Popis aplikačního rozhraní API je sice k  dispozici, včetně komentářů, ale to začínajícímu vývojáři nebude stačit. Současný způsob vývoje je pro začínající vývojáře obvykle založen na studiu existujících modulů a metodě pokus-omyl. Po určité době se však vývojář začne ve strukturách JUMP orientovat lépe a je schopen vyvíjet aplikace relativně snadno. Výhodou vývoje s užitím OpenJUMP je existující prostředí, kdy není nutné vyvíjet kompletní grafické uživatelské rozhraní, ale lze využít stávající. Vývoj je možný efektivně provádět v  prostředí nástroje Eclipse (k dispozici je návod, jak korektně načíst struktury do prostředí Eclipse) nebo NetBeans (návod neexistuje, ale je připravován jedním ze studentů oboru Geoinformatika na VŠB-TU Ostrava v rámci diplomové práce). Druhou možností, jak vytvářet a  spouštět drobné aplikace (skripty), je využít nástroj BeanShell. V  kontextu OpenJUMPu umožňuje BeanShell provádět automaticky opakované úlohy nebo vykonávat úlohy, které není možné provádět použitím grafického uživatelského rozhraní, bez potřeby zásuvných modulů, nebo změny zdrojových kódů. BeanShell lze využít pro řadu úkolů, které by se musely provádět manuálně nebo by vyžadovaly vlastní zásuvný modul. BeanShell funguje bez problémů, pro začínajícího uživatele bez znalostí programování v  jazyku Java však může být složité naučit se jej využívat. Využívání BeanShellu je nicméně jednodušší než programování vlastních zásuvných modulů. Vyzkoušené skripty nemusíte znovu vypisovat – můžete si vytvořit skript, například „Změň_viditelnost_všech.bsh“ v adresáři, kde je OpenJUMP instalován, a  tento skript se po obnovení nabídky objeví pod daným názvem „Změň_viditelnost_všech“ přímo v  hlavní nabídce programu. Pár slov nakonec Projekt OpenJUMP i  přes některé své drobné chyby a nedodělky již nyní nabízí použitelnou alternativu k finančně náročným produktům. Jeho kredit zajisté bude i  dále stoupat a  to nejen z  důvodu jeho dobré licenční politiky, ale i  s  rostoucími možnostmi, které se téměř každodenně rozšiřují.  František Klímek, Jan Růžička, Institut geoinformatiky, VŠB-TU Ostrava Projekt Open JUMP: http://openjump.org/ Seznam hlavních zdrojů zásuvných modulů pro OpenJUMP: http://openjump.org/wiki/show/Plugins Projekt deeJUMP a příbuzné projekty: http://lat-lon.de/ SkyJUMP: http://skyjumpgis.org Projekt PIROL: www.al.fh-osnabrueck.de/jump-download.html Projekt JUMP Plugins from GISAK.VSB.CZ: http://gis.vsb.cz/ruzicka/Projekty/jump/index.php Wikipedia – internetová encyklopedie: http://en.wikipedia.org/wiki/JUMP_GIS Informační zdroje k OpenJUMP E3 open & free