Jak jsme otevírali pražská Geodata
17.06.2014 – 12:29 amO tomto víkendu jsem měl možnost účastnit se akce 1. PRAŽSKÝ GEODATA HACKATHON, kterou pořádal Fond Otakara Motejla spolu s Institutem plánování a rozvoje Prahy.
IPR chtělo pro začátek částečně otevřít svoje data a pozvali bandu hackerů, aby nad těmito daty vytvořili něco nového. Když se podíváte na pražský geoportál, zjistíte, že výmýšlet něco nového už je celkem oříšek, protože IPR už publikuje celou řadu zajímavých mapových aplikací. Ukázalo se ale, že nás 9 účastníků hackatonu, když se dostanou k datům, přeci jenom mohou něco nového vymyslet.
Začátek byl trochu drhnoucí, protože IPR místo aby nám prostě dali ESRI Shapefile nebo zpřístupnili servery s daty přes OGC WFS, nám posktyli rozhraní XML-RPC pro interná databázi Oracle. Dokumentace nebyla také nic moc. Spojení s databází spíš padalo, než drželo. S daty uvnitř to nevypadalo bůhvíjak slavně. Naštěstí jsme těsně před akcí dostali kopii obsahu databáze ve formě shapefilů, a trochu jsme se spolehli na data z OpenStreetMap a další zdroje, jako je RUIAN.
Už jsem psal, že se akce účastnilo asi 9 lidí, tedy kromě Michaely Rybičkové z Fondu Otakara Motejla, která se o nás celý víkend starala. Byli to většinou lidi z IT prostředí, půl na půl Javisti a zbytek světa. Několik geo-pozitivních lidí, několik pure-IT lidí. Co bylo zajímavé: ani jeden člověk neměl nebo nedělal v ArcGIS. Všichni se spolehli na open source nástroje.
.@jancibulka, Jelen a @jachymc hackuji pod dohledem Otakara Motejla #geohackprg pic.twitter.com/ReivvXPId6
— Nas stat (@nasstat) June 14, 2014
O tom co jsme dělali a jak jsme byli úspěšní si můžete přečíst krátkou prezentaci na GISMentors. Já sem díky Jelenovi, jehož to byl nápada, zkusil spočítat zastínění dětských křišť okolními stromy a domy – z časových a výpočetních důvodů pouze na Jičním Městě. Krátký popis postupu (vše GRASS GIS):
- Z vrstevnic z IPR jsem vypočítal digitální model terénu
GRASS> v.in.ogr dsn=vrstevnice.shp out=vrstevnice # import GRASS> g.region res=5 vect=vrstevnice # nastavení regionu GRASS> v.surf.rst in=vrstevnice elev=dmt # interpolace DMT
- Import budov z RUIAN, jejich převod na rastr s atributem počet pater
GRASS> v.in.ogr dsn=budovy.shp out=baraky # import GRASS> v.to.rast in=baraky out=baraky attrcolumn=POCETPODLA type=area use=attr
- Import stromů z OSM stejně jako památných stromů z IPR
GRASS> v.in.ogr dsn="PG:dbname=crosm" layer=osm_point out=stromy where="natural = 'tree'" GRASS> v.buffer in=stromy out=stromy_bufffer distance=3 # 6 metru prumer koruny GRASS> v.to.rast in=stromy_buffer out=stromy_buffer use=val val=5 # prevod na rastr
- Vylepšení DMT o domy a stromy (výška domu = počet pater * 4)
GRASS> r.mapcalc "dmt_baraky_stromy = dmt+ if(not(isnull(baraky)), baraky*4, 0) + if(not(isnull(stromy_buffer)), stromy_buffer, 0)"
- Následuje vlastní výpočet osvitu (na regionu Jižního Města), kvůli rychlosti jsem musel rozlišení srazit na 10m/pixel
GRASS> g.region jm res=10 GRASS> for i in `seq -f "%20g" 6 21`; do r.sunmask elev=dmt_baraky_stromy out=sunmask_jm_$i year=2014 month=06 day=15 hour=$i minute=0 second=0 timezone=1; done
Počítáno od 6 hodin ráno do 21 hodin večer (zimní čas). Výsledkem je soubor rastrových map zobrazujících stín v danou hodinu.
- Mapa celkového zastínění – počet hodin ve stínu
GRASS> g.region jm res=10 GRASS> r.mapcalc "sunmask = sunmask_jm_06 + sunmask_jm_07 + sunmask_jm_08 + sunmask_jm_09 + sunmask_jm_10 + sunmask_jm_11 + sunmask_jm_12 + sunmask_jm_13 + sunmask_jm_14 + sunmask_jm_15 + sunmask_jm_16 + ^Cnmask_jm_17 + sunmask_jm_18 + sunmask_jm_19 + sunmask_jm_20 + sunmask_jm_21"
-
Pak už stačí jenom převézt hřiště na rastr, překrýt maskou a vyrobit report
+-----------------------------------------------------------------------------+ | RASTER MAP CATEGORY REPORT | |LOCATION: prg Sun Jun 15 15:23:02 2014| |-----------------------------------------------------------------------------| | north: -1048827.00934 east: -735134.151414 | |REGION south: -1051646.33025 west: -739499.993014 | | res: 9.99759188 res: 9.99048421 | |-----------------------------------------------------------------------------| |MASK: hriste in jachym, categories 1 | |-----------------------------------------------------------------------------| |MAP: (untitled) (sunmask in sunmask) | |-----------------------------------------------------------------------------| | Category Information | square| | #|description | meters| |-----------------------------------------------------------------------------| | 1| . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . | 2597| | 2| . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . | 6492| | 3| . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . | 7791| | 4| . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . | 3096| | 5| . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . | 1398| | 6| . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . | 1798| | 7| . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . | 599| | 8| . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . | 599| |10| . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . | 100| | *|no data. . . . . . . . . . . . . . . . . . . . . . . . . . . . |12,284,238| |-----------------------------------------------------------------------------| |TOTAL |12,308,709| +-----------------------------------------------------------------------------+
Hodnoty 1-10 jsou počet zastíněných hodin na hřištích.
-
Pro lepší vizualizaci jsem stíny přetáhnul přes ortofoto (naimportováno pomocí
r.in.wms
ze serveru IPR)GRASS> for i in `seq -f "%20g" 6 21`; do r.blend first=ortofoto_hriste second=sunmask_jm_$i output_prefix=pref_; r.composite red=pref_.r green=pref_.g blue=pref_.b levels=32 output=orto_sunmask_$i; done
Jelen at #geodatahackaton pic.twitter.com/15yhEQFquZ
— Jachym Cepicky (@jachymc) June 15, 2014
Pomocí časových modulů t.create
a t.register
jsem vyrobil časovou řadu pro takto vzniklé rastry a pomocí g.gui.animate
jsem je zanimoval do GIFu.
Postup je popsán velice hrubě, ale takhle nějak jsem po překonání všech překážek postupoval. Výsledné obrázky:
Ostatní projekty si můžete prohlídnout na speciální stránce. Já jsem se ještě podílel na výdejním modulu pražských geodat (na straně serveru).
Akce byla skvělá, atmosféra dělná. Hodně věcí jsem si konečně vyzkoušel, na některé jiné jsem zase po letech sáhnul. Bylo o nás postaráno moc pěkně.
Všichni doufáme, že nezůstane u jednoho hackatonu, že toho bude víc a že se sejdeme v hojném počtu a hlavně s více daty někdy příště.
One Response to “Jak jsme otevírali pražská Geodata”
Jsou ta data, se kterými jste pracovali někde k dispozici? Nebo se jedná o otevřená data pouze na jednu akci? Našel jsem mapové listy (což je pouze grid), ale nevím jak se dostat třeba k vrstevnicím?
By Michal Med on Jun 28, 2014