
Produkty - Map Generator
English
Stručný popis
Program Map Generator vytváří geografické statistické mapy.
Geografická statistická mapa (dále jen zkráceně mapa) slouží ke grafickému znázornění určité veličiny v podobě mapy
s barevným podkladem, kde barva podkladu v daném místě vyjadřuje intenzitu veličiny vzhledem ke zvolené škále.
Mapa obsahuje jednak barevný podklad, dále pomocné informace (hranice, města, místa měření, atd.) a legendu s barevnou škálou a rozsahy hodnot, kterým přísluší jednotlivé barvy podkladu.
Základní informace
Souřadný systém
Generátor map používá interně
Kartézský souřadný systém
.
Systém je bezjednotkový - na použitých jednotkách v podstatě nezáleží. Pouze je
potřeba nadefinovat vztah mezi jednotkou souřadného systému a pixelem výsledné bitmapy (měřítko mapy).
Pro tvorbu map České Republiky používáme souřadný systém
Gauss-Krüger S-42
.
Dále je možno použít jakýkoliv jiný souřadný systém, který lze transformovat do dvojrozměrných
kartézských souřadnic, např. WGS 84
.
Veličina
Veličina je typ údajů, zobrazovaných v mapě – může to být v podstatě jakýkoliv statistický údaj, např. procentní míra nezaměstnanosti, naměřená koncentrace látky, teplota, množství srážek a podobně.
Vstupní data
Vstupní data jsou prvotní hodnoty, jejichž zpracováním vznikne mapa. Pokud chceme vytvořit mapu, musíme mít vstupní data. Každý údaj vstupních dat musí mít následující informace:
- Geografickou pozici místa, kde byl údaj zjištěn nebo naměřen
- Název místa, kde byl údaj zjištěn – např. název měřicí stanice
- Hodnota zjištěného nebo naměřeného údaje
Vstupní data lze do programu načítat z XML souborů, nebo pomocí rozšíření napojit program na libovolný externí zdroj.
Barevná škála
Barevná škála je tabulka, pro převod učitého rozsahu hodnot na barvu.
Matrix
Matrix, nebo také grid je dvojrozměrná matice hodnot, která je základní jednotkou zpracování dat v generátoru map. Pro naše potřeby dělíme matrixy na:
- Vstupní matrixy obsahují předpřipravená data jako např. výškopis, hustotu obyvatel, apod. Načítají se ze souboru, nebo z databáze.
- Počítaný matrix obsahuje data, která jsou produktem interpolace vstupních dat
- Výsledkový matrix obsahuje data, která jsou produktem kombinace hodnot jiných matrixů
Všechny matrixy, které spolu vstoupí do procesu generování mapy musí mít stejné rozměry (rozměr buňky a počet buněk v obou osách) a geografickou pozici levého dolního rohu.
Zpracování dat
Při generování mapy jsou vstupní data zpracována pomocí různých algoritmů.
Interpolace
Úkolem interpolace je dosadit do jednotlivých buněk matrixu hodnoty v závislosti na vstupních datech.
Každý vstupní matrix musí mít přiřazen zdroj dat a interpolační algoritmus.
V současné době je implementován algoritmus IDW
.
Na obrázku vidíte matrix, který obsahuje v několika buňkách vstupní hodnoty. Ostatní buňky jsou prázdné - jejich hodnoty neznáme, protože v těchto místech nebyly zjištěny (nebo naměřeny) vstupní data.
Pro každou z prázdných buněk je pomocí IDW spočítán vážený průměr ze vstupních dat, kde váhu tvoří vzdálenost mezi středem počítané buňky a místem kde byla zjištěna vstupní hodnota. Bližší vstupní hodnoty ovlivní výslednou hodnotu více, vzdálenější méně. Tento popis IDW je ovšem velmi zjednodušený.
Modifikace
Úkolem modifikace je projít jednotlivé buňky jednoho nebo více matrixů, provést výpočet podle daného algoritmu a výsledek uložit do původního nebo nově vytvořeného matrixu.
Takto lze upravovat hodnoty matrixů - provádět jejich korekce, kombinace apod.
Rendering
Úkolem rendrování je vytvořit z matrixu, který obsahuje finální data barevný podklad mapy. Hodnota každé buňky je pomocí škály převedena na příslušnou barvu a zapsána do odpovídajícího bodu (pixelu) na mapě.

Další fází je překrytí barevného podkladu vektorovými vrstvami jako hranicemi, legendou, měřicími stanicemi a podobně. Výsledkem je obrázek ve formátu PNG. Podporovány jsou také další formáty (BMP, GIF, JPG) a pomocí Java API lze sloučit více půběhů generování map do animovaného GIFu.
Řízení zpracování dat
Proces generování mapy může být velmi flexibilní. Některé mapy vznikají z více matrixů, jiné pouze z jednoho. Také další algoritmy jsou volitelné a plně konfigurovatelné.
Existují dva způsoby, jak řídit proces generování map:
- Pomocí XML souboru (tzv. Runsetu)
- Pomocí API
XML Runset
Runset řídí zpracování dat generátorem od načtení vstupních dat, přes jejich interpolaci do matrixů, kombinaci, modifikaci, rendering až po zapsání výsledné mapy do souboru nebo do databáze.
Runset je tvořen XML souborem, ve kterém jednotlivé XML elementy reprezentují příslušné objekty generátoru map. Změnou obsahu runsetu je možné flexibilně měnit činnost generátoru map a přizpůsobit tak výsledek svým požadavkům.
Java API
MapGenerator je vytvořen na platformě Java SE
.
Pomocí jazyka Java je možné řídit generování mapy. Můžete si vytvořit vlastní Java projekt například
ve vývojovém prostředí Eclipse
a
do tohoto projektu přidat MapGenerator.jar. Voláním API v třídách MapGeneratoru je možné přímo řídit
proces vytvoření mapy.
Řozšiřování programu
Při vývoji MapGeneratoru byl kladen velký důraz na flexibilitu a rozšiřitelnost. MapGenerator je schopen generovat statistické mapy z jakékoliv oblasti a jeho schopnosti lze rozšiřovat. Lze si doprogramovat vlastní interpolační, kombinační a modifikační algoritmy, zdroje vstupních dat, zapisovače map, grafické objekty (shapes) atd.
Tato rozšiřitelnost je v praxi zajištěna pomocí schopnosti Javy nahrávat třídy za běhu programu pomocí classloaderu
.
Většina objektů v XML Runsetu má atribut class, který určuje název Java třídy, která zajistí vykonání požadované
funkcionality.
Pokud by například uživateli modulu MapGenerator nevyhovoval žádný současný interpolační algoritmus, je možné si naprogramovat vlastní
a v Runsetu na příslušném místě vyměnit název dosavadní class="idea.map.interpolator.IDWInterpolator" za identifikaci své třídy.
Jedinou podmínkou je, že uživatelská třída musí dědit z třídy idea.map.interpolator.AbstractInterpolator,
aby byl dodržen kontrakt mezi třídou vytvořenou uživatelem a zbytkem programu.
ISKO MapGenerator
Příkladem rozšíření MapGeneratoru je projekt ISKO MapGenerator, který jsme vyvinuli pro ČHMÚ Praha
.
Tento program generuje mapy znečištění ovzduší na základě dat z databáze ISKO 2.
Mapy jsou v hodinovém intervalu generovány z dat v DB ISKO2 a ukládány zpět to této databáze. Dva výpočetní servery si mezi sebou kooperativně dělí tuto práci. V případě výpadku jednoho z nich, druhý vytváří mapy podle priority ve veškerém dostupném čase.
Pro prezentaci slouží
JSF aplikace IskoPollutionMapView
na aplikačním serveru.
MapGenerator SDK
SDK je určen uživatelům ovládajících jazyk Java. Obsahuje dokumentaci k API tříd Map Generátoru a
Eclipse projekt MapGeneratorExtension s příklady uživatelských tříd. Tento zdrojový kód může být použit
jako startovní bod pro výuku rozšiřování Map Generátoru o vlastní funkcionalitu.
| UserModificator.java | Příklad uživatelského modifikačního algoritmu - upraví jeden matrix |
| UserCombinator.java | Příklad uživatelského modifikačního algoritmu - zkombinuje tři matrixy do jiného |
| UserInterpolator.java | Kostra uživatelského interpolačního algoritmu |
| MapWriterToFtp.java | Zapisovač mapy, provede upload mapy na FTP server |
| DataValuesFromPgSQL.java | Načte vstupní data z tabulky v PostgreSQL |
| ColorScaleFromPgSQL.java | Načte barevnou škálu z tabulky v PostgreSQL |
| TextWithShadow.java | Příklad jednoduchého uživatelského grafického objektu - stínovaného textu |
| Hamburg.java | Příklad složeného uživatelského grafického objektu - město Hamburg |
| RotatedRectangles.java | Demonstruje otáčení bodů v kartézských souřadnicích |
| SegmentedPolygon.java | Demonstruje otáčení bodů v polárních souřadnicích |
| RunSet.xml | Příklad Runsetu, ukázka použití uživatelských tříd |
| HamburgPM10.xml | Příklad Runsetu, ukazuje vytvoření mapy znečištění |
| RunMapGeneratorExt.java | Dělá totéž jako RunSet.xml, ale pomocí Java API |
Pokud máte zájem o rozšíření MapGeneratoru (např. o napojení na vlastní databázi), a nemáte k dispozici potřebné znalosti Javy - kontaktujte nás.
Licence
Program MapGenerator je dostupný v těchto variantách:
- Free edition - Zdarma pro nekomerční použití nebo pro vyzkoušení. Umožňuje řízení programu pomocí XML Runsetu.
- Standard edition - Umožňuje vytvářet mapy pro použití ve vlastní firmě/organizaci. Obsahuje MapGenerator SDK pro vytváření vlastních rozšíření.
- Professional edition - umožňuje prodávat řešení založené na Generátoru map jiným firmám/organizacím.
Pokud máte zájem o získání kterékoliv varianty, kontaktujte nás.
Dokumentace
Stažení dokumentace.
Galerie map
Mapa koncentrace SO2
Koncentrace SO2, hodinový průměr, generováno z databáze ISKO2.
Prach nad střední Evropou
24 března 2007 pronikl nad naše území prach, pocházející z východní Ukrajiny.
Zdroj dat - ČHMÚ
Teplotní inverze a kvalita ovzduší
Studio ČT24 - Počasí ve světě 19.1.2009
Vliv zimní teplotní inverze
na kvalitu ovzduší v České republice.