PyWPS / GRASS analýza viditelnosti / Verze 4
Tato stránka popisuje čtvrtou verzi WPS služby pro výpočet viditelnosti. Implementováno pomocí PyWPS a GRASS GIS. GRASS lokace 'eu-dem-merc' je ke stažení zde.
Tato verze vychází z třetí verze služby pro výpočet viditelnosti a je upravena pro potřeby webové aplikace napsané pomocí OpenLayers.
Soubor se skriptem pojmenujeme viewshed-4.py, výsledek je ke stažení zde.
Úprava skriptu
Skript bude mít následující povinné vstupní parametry:
-
obs_x
- x-ová souřadnice observačního bodu -
obs_y
- y-ová souřadnice observačního bodu
Volitelné vstupní parametry:
-
obs_h
- výška observačního bodu nad terénem
Výstupní parameter:
-
output
- rastr viditelnosti ve formátu PNG (Base64)
Výpočetní region bude odvozen z observačního bodu s offsetem 5km. Výsledný region bude vždy 10km x 10km.
Soubor se skriptem pojmenujeme viewshed-4.py, výsledek je ke stažení zde.
V konstruktoru třídy Process
přidáme argument storeSupported
a statusSupported
:
WPSProcess.__init__(self,
identifier="viewshed-4", # odpovídá názvu souboru
...
grassLocation=location, storeSupported = True, statusSupported = True)
...
Funkci pro definování výpočetního regionu upravíme tak, že bude nastavovat region s daným offsetem kolem observačního bodu:
# výpočet viditelnosti v daném výpočetním regionu a observačního bodu (viewpoint)
def execute(self, raster='dmt'):
obs_point = (self.obs_x.getValue(), self.obs_y.getValue())
# nastavení regionu
self.set_region(raster, obs_point)
...
# nastavení výpočetního regionu (rozlišení převzato ze vstupního rastru)
def set_region(self, raster, obs_point, offset=3e3):
run_command('g.region', rast=raster, n=obs_point[1]+offset, s=obs_point[1]-offset,
w=obs_point[0]-offset, e=obs_point[0]+offset)
Dále při exportu rastru viditelnosti do formátu PNG nastavíme hodnutu '0' na no-data:
# exportovat výsledek do formátu PNG
def export_to_png(self):
png_file = self.view_map + '.png'
run_command('r.out.gdal', input=self.view_map,
output=png_file,
format = 'PNG', type='Byte', nodata=0)
self.output.setValue(png_file)
Test služby
- DescribeProcess:
http://geo102.fsv.cvut.cz/services/yfsgwps?service=wps&version=1.0.0&identifier=viewshed-4&request=DescribeProcess
- Execute:
http://geo102.fsv.cvut.cz/services/yfsgwps?service=wps&version=1.0.0&identifier=viewshed-4&datainputs=%5Bobs_x=1550820.86;obs_y=6542921.33%5D&request=execute
Webová aplikace
Tuto verzi služby publikujeme pomocí ukázkové webové aplikace vytvořené pomocí knihovny OpenLayers. Kód aplikace byl inspirován http://rsg.pml.ac.uk/wps/example/index.html.
→ http://geo102.fsv.cvut.cz/~landa/vyuka/155YFSG/viewshed/
Zdrojové kódy webová aplikace jsou ke stažení zde.