RamaGeo

Georeferencování a katalogizace rastrových map

Jedním z nejdůležitějších podkladů pro přípravu modelu jsou naskenované (historické) mapy. Může jít o polohopisné a regulační plány, stavební plány, speciální situace (železnice, tramvaje) nebo i jen o načrtnuté plánky. Ve všech případech může mapa obsahovat velmi zajímavé informace, byť i třeba ne v úplně přesně zaměřené pozici. Na obrázku je příklad orientačního plánku sloužícího návštěvníkům Všeobecné zemské jubilejní výstavy v roce 1891.

zdroj: Kafka, J. (Ed.): Illustrovaný průvodce všeobecnou zemskou jubilejní výstavou s průvodcem Prahou, Praha, 1891

Zpracování rastrové mapy

Hlavním požadavkem je co nejpřesnějším napasování takovéto rastrové mapy na zeměpisné souřadnice, označované jako georeferencování. Druhým požadavkem je potom vhodné utřídění značného množství napasovaných map – ze všech možných zdrojů jsou jich už nyní získány desítky tisíc a počet stále roste. Jde o to mít možnost snadno a rychle zobrazit všechny mapy, které se (byť jen malým kouskem) týkají daného místa. Zároveň je třeba mít možnost procházet pro zvolené místo mapy z různých období a porovnávat změny, ke kterým došlo.

Některé komerční GIS aplikace umožňují umísťovat rastrové mapy jako další vrstvy a případně je i transformovat do zeměpisných souřadnic. Jejich nevýhodou je vysoká cena a hlavně patrně neexistuje žádná, která by poskytla všechny výše uvedené požadované funkce. Proto byla vlastními silami vytvořena aplikace RamaGeo, kterou je navíc dále možné rozšiřovat přesně podle nově vzniklých potřeb.

Základní postup při umísťování rastrové mapy je naznačen na následujícím obrázku:

zdroj: aplikace RamaGeo

Nalevo je část vektorové mapy Bubenče v zeměpisném souřadném systému. Napravo je výše zmíněný naskenovaný plánek Výstaviště. Úkolem je nalézt na obou mapách body, které jsou totožné, a ty spojit čarou. V tomto případě se jako vhodné ukázaly rohy půdorysu Průmyslového paláce a dále výstavních pavilonů Města Prahy (dnes Lapidárium) a Uměleckých spolků. Kromě toho byla ještě podle literatury a osobní prohlídky identifikována pozice bývalé železniční zastávky (již v katastru Holešovic). Po spuštění výpočtu nalezla aplikace vhodné parametry transformace plánku a jeho napasování, jak je vidět na následujícím obrázku:

zdroj: aplikace RamaGeo zdroj: aplikace RamaGeo

Nalevo je celý plánek, napravo pak detail vstupu do výstaviště (před Průmyslovým palácem). Patrná je jak původní úprava záhonu, tak i jižnější poloha dřevěné Wiehlovy brány oproti dnešní vstupní bráně.

Množství bodů nutných pro kvalitní napasování rastrové mapy se liší podle kvality původního zaměření, ale i kvality naskenování. Protože je použita uniformní transformace (viz dále), tak stačí zadat body tři (nesmí však být na jedné přímce).

Uvažovaná transformace rastrové mapy se skládá ze změny měřítka (nezávisle podle osy x a y), otočení a posunu. Transforace je uniformní pro všechny body rastrové mapy. Pro každou nadefinovanou dvojici bodů je počítána penalizace jako vzdálenost mezi transformovaným bodem z rastrové mapy a bodem z vektorové mapy. V rámci optimalizační úlohy je minimalizováno kritérium dané součtem penalizace za všechny dvojice bodů. Penalizacím za různé dvojice bodů mohou být přiřazeny různé váhy a vyjádřit tak rozdílnou důležitou dvojic. Pro nalezení optimální hodnoty byl použit evoluční algoritmus, který umožňujete nadefinovat optimalizační funkci s libovolným počtem dvojic bodů. Pro zrychlení výpočtu se nedopočítává přímo vzdálenost mezi dvěma body a ušetří se výpočet odmocniny. Jde tak vlastně o metodu nejmenších čtverců.

Existují algoritmy, které by umožnily i lokální deformace. Protože však u historických map bývá problém identifikovat body skutečně na obou mapách stejné, tak byla implementována jednodušší verze transformace uniformní. Lokální deformace lze i nyní realizovat vyříznutím malé části původní mapy a jejím samostatným napasováním (když je dostatek použitelných bodů).

Filtrování a vyhledávání map

Spolu s mapami se ukládají i další údaje, z nichž asi nejdůležitější je časové určení jejího vzniku (přesný rok, před rokem..., po roce...) a přesnost, se kterou se jí podařilo napasovat. Následně lze mapy podle různých kritérií filtrovat. Na obrázku je nalevo ukázka hlavní obrazovky aplikace RamaGeo a napravo pak detail s obrysem aktuálně vybrané mapy Výstaviště. Další šedivé obdélníky znázorňují pozice dalších napasovaných map.

zdroj: aplikace RamaGeo zdroj: aplikace RamaGeo

Pouhým kliknutím myší na vektorovou mapu lze vyfiltrovat všechny rastrové mapy, které toto místo zobrazují. Dvěma kliknutími pak všechny mapy, které jakýmkoliv způsobem zasahují do obdélníku jehož rohy jsou vymezeny těmito dvěma kliknutími.

Vyhledávání a filtrování map bylo v omezené funkcionalitě zpřístupněno online v podobě aplikace OKAP.

Automatický výřez map

Automaticky lze vytvořit výřezy z různých map zobrazující ve stejné velikosti a ve stejné orientaci danou lokalitu.


zdroj: aplikace RamaGeo

Zobrazení transformovaného obrázku

Z pohledu implementace je zajímavým problémem vykreslení původní mapy ve správné změně měřítka a hlavně otočení. Dostupné systémové funkce pro vykreslování rastrových obrázků očekávají na vstupu obrázek daný obdélníkem se stranami rovnoběžnými s osami x a y. Proto musela být vyvinuta objektové třída, která z otočené mapy vytvoří opět obdélník (viz šachovnicová plocha na obrázku).

zdroj: aplikace RamaGeo

Nový obdélník ohraničuje otočenou mapu (tvoří tzv. bounding-box) a pro pixely uvnitř něj platí, že jsou buď průhledné (nevykreslují se) nebo obsahují transformovaný pixel původní rastrové mapy. Původní bod se zjistí inverzní transformcí k té, která byla nalezena jako optimální pro napasování mapy.

Aby však byla implementace vykreslování transformované mapy použitelná, je třeba maximálně urychlit výpočet inverzní transformace (protože se musí provést pro každý pixel nového obdélníku a těch jsou miliony).

Toho bylo dosaženo předpočítáním tabulky hodnot arctg používaných při výpočtu a pomocí cache transformovaných map, aby se nemusela transformace počítat stále znovu. Konečně je také možné uživatelsky volit kvalitu vykreslování rastrového obrázku (danou počtem vynechávaných bodů na každém řádku). Pro prvotní hrubé nastavení pozice mapy je tedy možné zrychlit vykreslování a následně se vrátit ke kvalitnímu vykreslování pro finální upřesnění pozice.