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.
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
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
.
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
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
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
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