Rastrová analýza nákladů¶
Nejprve si v aktuálním mapsetu vytvoříme kopii vektorové mapy silnice.
Poznámka
Tento krok je potřeba, jelikož budeme modifikovat atributovou tabulku vektorové mapy. A jak již bylo uvedeno v kapitole Struktura dat - koncept lokací a mapsetů systém GRASS umožňuje editovat pouze datové elementy z aktuálního mapsetu.
Přidáme nový atribut rychlost, do
něhož uložíme průměrnou rychlost dle následující tabulky:
| Silnice | Typ | Rychlost (km/h) | 
|---|---|---|
| Dálnice | 1 | 130 | 
| Rychlostní silnice | 2 | 110 | 
| Silnice 1.třídy | 3 | 90 | 
| Silnice 2.třídy | 4 | 70 | 
| Silnice 3.třídy | 5 | 60 | 
Editaci hodnot atributů umožňuje Field Calculator.
Obr. 122 Příklad určení atributu rychlosti pro dálnice (typ = 1).
Poznámka pro pokročilé
Nastavení atributu rychlosti z příkazové řádky
v.db.addcolumn map=silnice column="rychlost integer"
v.db.update map=silnice column=rychlost value=130 where="typ=1"
v.db.update map=silnice column=rychlost value=110 where="typ=2"
v.db.update map=silnice column=rychlost value=90  where="typ=3"
v.db.update map=silnice column=rychlost value=70  where="typ=4"
v.db.update map=silnice column=rychlost value=60  where="typ=5"
Dále převedeme modulem v.to.rast () vektorovou mapu silnice do rastrové reprezentace. Před konverzí je nutné nastavit výpočetní region, např. interaktivně z mapového okna nebo z příkazové řádky:
g.region align=dmt n=-974156 s=-994356 w=-766980 e=-736680
v.to.rast input=silnice output=silnice_rast use=attr attribute_column=rychlost type=line
Dále použijeme vrstvy vodni_toky a vodni_nadrze jako přirozené bariéry pro pohyb mimo silnice. Provedeme rasterizaci, rastrové vrstvy složíme pomocí modulu r.patch.
v.to.rast input=vodni_toky output=vodni_toky_rast use=val type=line
v.to.rast input=vodni_nadrze output=vodni_nadrze_rast use=val type=area
r.patch input=vodni_toky_rast,vodni_nadrze_rast output=bariery
V místech mimo silnice (hodnota 0) přiřadíme pomocí nástroje r.mapcalc (viz kapitola Rastrová algebra) rychlost pohybu ‚5‘. Vzniklé rastrové mapě přiřadíme tabulku barev ‚sepia‘, viz kapitola Tabulka barev.
r.mapcalc expression='rychlost = if(isnull(silnice_rast), if(isnull(bariery), 5, null()), silnice_rast)'
r.colors -n map=rychlost color=sepia
Obr. 123 Rasterizovaná síť silnic s atributem průměrné rychlosti a bariérami.
Modulem v.in.ascii vytvoříme vektorovou mapu s ohniskem
požáru. Souřadnice bodu (-754235,-980474) zadáme v notaci X|Y|cat,
kategorii zvolíme libovolně, např. 1. Ve výsledku bude tedy zápis bodu
vypadat následovně: -754235|-980474|1.
Obr. 124 Vytvoření mapy s ohniskem požáru - definujeme souřadnice ohniska požáru a název výsledné vektorové mapy.
Rastrovou mapu časové náročnosti vytvoříme pomocí modulu r.mapcalc, viz kapitola Rastrová algebra. Uvažujeme prostorové rozlišení 25m a výpočet časové náročnosti pro překonání buňky v minutách.
r.mapcalc expression="rychlost_cas = 25.0 / ((1000 * rychlost) / 60.0)"
Varování
Pozor na dělení celých čísel, výsledkem je v mapové algebře systému GRASS vždy celé číslo. Proto je v čitateli použito číslo s plovoucí desetinnou čárkou (25.0).
Pomocí modulu r.cost () vypočteme rastrovou mapu nákladů pohybu, tzv. frikční povrch.
r.cost -k input=rychlost_cas output=cas_naklady start_points=pozar
Obr. 125 Analýza nákladů pohybu v terénu, ohnisko požáru a požární stanice (tabulka barev „oranges“).
Dojezdovost pro jednotlivé požární stanice k ohnisku požáru vypočteme
z rastru nákladu pomocí modulu v.what.rast
(). Nejprve si v aktuálním mapsetu vytvoříme
kopii vektorové mapy
pozarni_stanice. Přidáme nový atribut dojezdovost, do něhož uložíme hodnotu
dojezdovosti pro danou požární stanici.
Poznámka pro pokročilé
Přidání atributu dojezdovosti z příkazové řádky
g.copy vector=pozarni_stanice@osm,pozarni_stanice
v.db.addcolumn map=pozarni_stanice column="dojezdovost double precision"
v.what.rast map=pozarni_stanice raster=cas_naklady column=dojezdovost
Obr. 126 Nalezení požární stanice s nejmenší hodnotou dojezdovosti.
Souřadnice požární stanice s kategorií ‚89‘ poskytne modul v.out.ascii ().
v.out.ascii input=pozarni_stanice cats=89
-750649.82535985|-992867.12907965|89
Nejkratší (spádovou) cestu vypočteme modulem r.drain ().
r.drain -n input=cas_naklady output=cesta_rast start_coordinates=-750649,-992867
Obr. 127 Výsledek, nejkratší cesta k požáru.
Obr. 128 Vizualizace rastrové mapy nákladů včetně nejkratší spádové cesty ve 3D.
Tip
Optimální cestu lze převést do vektorové reprezentace pomocí modulu r.to.rast:
r.to.vect input=cesta_rast output=cesta type=line