Webbrowserbasierte Indoor-Navigation für mobile Endgeräte auf Basis der OpenStreetMap Abschlussvortrag zur Bachelor-Arbeit Andreas Hubel <hubel@in.tum.de>
Inhalt 1)Motivation 2)Einleitung 3)Techniken Modellierung Datenbanken Routing Renderer OSM Infrastruktur 4)Zwischen-Fazit 5) Umsetzung Erweiterung OSM Modell Verwendete Techniken Toolchain 6) Nativ vs. Browserbasiert 7) Live Demo 8) Fazit 9) Ausblick 2. August 2011 Andreas Hubel 2 / 18
Technische Universität München Motivation TUM Roomfinder unzureichend Dynamische, zoombare Karte wie bei Google-Maps Gebäude- und Standortübergreifendes In- und Outdoor Routing Visualisierung einfach zugänglich im Web 2. August 2011 Andreas Hubel 3 / 18
Einleitung Indoor-Navigation? Wegfindung innerhalb von Gebäuden: Musen, großen Bahnhöfen und Einkaufszentren oder Universitäten Unterschiedliche Anforderungen: z.b. für Rollstuhlfahrer ohne Treppen bestehendes Datenmaterial oft nur als Bitmap Grafiken oder PDF Unterschiede zur Outdoor Navigation Stockwerke/3D Höhere Detailstufen Lokalisierung (kein GPS) 2. August 2011 Andreas Hubel 4 / 18
Modellierung DXF: Linien IFC: Bauteile CityGML: Oberflächen BIGML: Räume OSM-XML: Node, Way, Relation!"#$%&'()*(+",(+"%&-./0&''!"#$%&'()$*+,-.$"&/0%$1/2)&!""#$%&'()*+,-)./0/#'12345/)62075/$$&'()%/7)285&/$$/')625/'9:%/$$7!"#"$%&'#"(%)"#"$%*+,%-.#%)"#"%/"0+12'.%2.%#"$%3+1".4+.5%"$6+01".%4"2%26$"$%7$8"-9 :-.:%"2."%"2.#"-12:"%.-;"$2<=6"%>"..-.:%?@3A(%-.1"$%#"$%<2"%4"+$4"21"1%-.#%+4:"$-B".% C"$#".%5D..".E%32"%>"..-.:".%:"0D<=61"$%F4)"51"%C"$#".%.2=61%."-%G"$:"4".E%HI$% 2. August 2011 Andreas Hubel 5 / 18 +00"%#$"2%F4)"511,J".%C2$#%"2.%-.1"$<=62"#02=6"$%&-;;"$.$+-;%G"$C".#"1%?"<%5+..% +0<'%<'C'60%"2.".%*+,%+0<%+-=6%"2.".%&'#"%;21%#"$%@3%K%:"4".AE!"#$% 72.%&'#"%G"$BI:1%I4"$%#2"%B'0:".#".%@.B'$;+12'.".L M :"':$+J62<=6"%NO.:"%-.#%P$"21"( M
Datenbanken Geo-Datenbanken Räumliche Indexes: z.b. R-Baum weitere Datentypen: Punkte, Linien und Flächen Funktionen zur Berechnung von Längen und Flächen Ausgabe in anderen Formaten (WKT, WKB, GeoJSON) Implementaionen PostgreSQL: PostGIS, SQLite: SpatiaLite 2. August 2011 Andreas Hubel 6 / 18
Routing Open Source Routing Machine (OSRM) OpenRouteService.org Cloudmade Routing Osm.org Routing Demo/Gosmore 2. August 2011 Andreas Hubel 7 / 18
!" #$%&'()*'+,-('().+&)/$0(+1!"#$%&' (!!!"#$%&'(")*+)'%*+',%$'-./0."11'231 '4,$5,.$'6/$'7,/5"+,$8'9*':3.5,' 6/$';.+,1'-"6<,$&/'3$"=>?$0%0'6/1'@#,$A+.,,+!"#B-./C,&+',$+:%D&,<+'3$5'="3+'"3E' Technische Universität München,%$,1'"$5,.,$'F"+,$E/.1"+'"3E8'A%,'1G**,$'5">,.'5%,'@A!BF"+,$'23,.*+'&/$6,.+%,.,$H' =,6/.'A%,'1%+'!"#$%&'5"."3*'I".+,$'.,$5,.$'&J$$,$8'F%,'K/.0,>,$*:,%*,'%*+'"<*/'0"$2' "$5,.*'"<*'=,%'@*1".,$5,.H'5"*'5%.,&+'"3E'@A!BF"+,$'/#,.%,.+8 Renderer #<"$,+ 8/*1 Mapnik (C++ Bibliothek) Osmarender (XSLT, Inkscape) Kothic (Python) KothicJS (Javascript) MapCSS /*1S#0*T< /*18V1< -/*+0.,AWR -/*+7XA :/.<5U =/3$5".%,*!"#$%& 8#$0!""#$%&'()*+,*-)./01/'2'32')"2#0)42'%25#'()0#3)671'#8!"#$%&',.2,30+'%1'7,0,$*"+2'23'@*1".,$5,.'%11,.'5%.,&+'L%+1"#*'(+M#%*D>,.:,%*,'%1' -N7BO/.1"+)8P'!"#$%&BI".+,$'*%$5'5,*>"<='#.%1?.'EG.'5%,'N3+23$0'"1'L%<5*D>%.1'3$5' :,$%0,.'EG.'5,$'F.3D&'0,5"D>+H'=,%'5,1'K,&+/.&".+,$'1%+'%>.,.'=,<%,=%0'>/>,$';3E<JB *3$0',%$,$'K/.+,%<'>"=,$8 P N,3,.,'K,.*%/$,$'&J$$,$'1%+>%<E,'5,.'Q"%./BR%=.".M'"3D>'AK7B'3$5'-FOBF"+,%,$',.2,30,$H'5"."3E' :,.5,$':%.'%$'5%,*,1'I"#%+,<'"=,.'$%D>+',%$0,>,$8!"# 2. August 2011 Andreas Hubel 8 / 18
OpenStreetMap Infrastruktur 2. August 2011 Andreas Hubel 9 / 18
Zwischen-Fazit Modellierung: OpenStreetMap wegen einfach verständlichem Modell und verfügbaren Tools weitere Tags für Räume notwendig Routing: es gibt schon einige Lösungen, die teilweise verwendbar sind Darstellung: Verschiedenste Ansätze Problemstellung mehrere Stockwerke noch nicht gelöst 2. August 2011 Andreas Hubel 10 / 18
Erweiterung des OSM Modells 3. Dimension durch zusätzlichen Tag EG: level=0, Zw.G: level=1.5, KG: level=-1 Räume als zusammenhängende Flächen z.b. Büro: Area mit room=office Türen als Node mit room=entrance Hierarchie durch Relations Zusammenfassung von mehreren Räumen zu einem Stockwerk mit type=level Gruppieren von mehreren Stockwerken zu einem Gebäude mit type=building Abweichender Stockwerksgrundriss durch Member outline room=entrance room=* 2. August 2011 Andreas Hubel 11 / 18
Verwendete Techniken Darstellung: Bereitstellung der Daten als GeoJSON Tiles via PostGIS DB KothicJS: rendert einzelne Tiles via Canvas Leaflet: User Interface fügt einzelne Kacheln zusammen zeichnet Route in Karte Routing: Vorverarbeitung via OSRM Extractor Anreichern mit weiteren Informationen Wegfindung im Browser via Dijkstra selbst implementiert 2. August 2011 Andreas Hubel 12 / 18
Toolchain OSRM extractor.osm.orsm extract_rooms.xslt osrm2json.rooms.json osm2pgsql.orsm.json PostGIS fix_coords.php Leaflet json_getter.py.orsm.fixed.json RoutingJS KothicJS GeoJSON GeoJSON GeoJSON Tiles Tiles Tiles Web-Browser 2. August 2011 Andreas Hubel 13 / 18
Nativ vs. browser-basierte Anwendungen Anwendung im Prinzip Plattform unabhängig Webentwickler können einfacher in die Anwendungsentwicklung einsteigen User Interface muss ggf. trotzdem angepasst werden Viele Plattform-APIs im Webbrowser (noch) nicht verfügbar Phonegap Entscheidung muss pro Anwendung getroffen werden 2. August 2011 Andreas Hubel 14 / 18
Demo 2. August 2011 Andreas Hubel 15 / 18
Fazit User-Interface als JavaScript Anwendung umsetzbar läuft auf aktuellen Geräten performant Darstellung von Vektordaten via HTML5 und CSS3 Anpassung an Corperate Design möglich Routing Dijkstra führt zum Ziel für größere Graphen ggf. andere Algorithmen notwendig OSM als Datenbank Vandalismus trat nicht auf Performanz im Rahmen der Arbeit ausreichend Datenmodell für neue Ideen gut verwendbar Datenaufbereitung Ist für je Anwendungsfall zwingend durchzuführen Ausgabedaten des gewählten Werkzeugs fehlerhaft (noch) server-basiert 2. August 2011 Andreas Hubel 16 / 18
Ausblick Optik und Usabilty verbessern Marker auf Karte verschieben User Interface abhängig von Bildschirmgröße Offline Nutzbarkeit Kombination mit Outdoor- und Online-Routing von Campus zu Campus Routing-Kacheln Toolchain optimieren Mehr Daten in OSM eintragen ggf. automatisiert via Konverter Anbindung an andere Gebäude Informationssysteme 2. August 2011 Andreas Hubel 17 / 18
Fragen? Andreas Hubel <hubel@in.tum.de> http://ba.andreas.hubel.de/webapp 2. August 2011 Andreas Hubel 18 / 18