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.