User:Airjump/Ermittlung und Visualisierung von Einsatzgebieten der Polizei, Feuerwehr, THW oder andere Rettungsorganisatoren auf basis von OSM

From OpenStreetMap Wiki
Jump to: navigation, search

Vorwort

Hallo zusammen, über den OSM Stammtisch in Bonn habe ich von einem Projekt/ Vortrag beim BBK gehört. Dort habe ich Pascal Neis kennengelernt. Seit dem verfolge ich seinen großen Einsatz das Thema OpenStreetMap im Bereich des Zivil- und Katastrophenschutz in der Bundes-und Länderebene mit ganz konkreten Beispielen vorzustellen.

Danke Pascal.

Kontakt

Einführung

Kopiere den nachfolgenden Code in ein leere HTML Datei und öffne es in einem Browser.

Part 1 CSS

<!-- Danke an Pascal Neis GIScience Uni Heidelberg http://giscience.uni-hd.de -->
<html xmlns="http://www.w3.org/1999/xhtml">
  <head>
	<title>Visualisierung der Einsatzgebiete des Technischen Hilfswerk</title>
	<!-- Styling der HTML-Seite -->
    <style type="text/css">
		#map {
			position:absolute;
			top:30px; 
			left:30px;
			bottom: 30px;
		        right: 30px;
		   }
		body {
		    border: 0px;
		    margin: 0px;
		    padding: 0px;
		    height: 100%;
		   }
 	</style>
  
  .... Hier kommen die Nachfolgenden Abschnitte rein.

  </head>
  <body onload="init()">
  <center>
    <div id="map" style="position: absolute; top: 0; left: 0; bottom: 0; right: 0;"></div>
     <p>
     <TT>Copyright &copy; <a href="http://www.openstreetmap.org/">OpenStreetMap Contributors</a></TT>
     </p>
  </center>
  </body>


Part 2 OpenLayers einbinden

 	<!-- Einbinden der OpenLayers & OpenStreetMap JS Dateien -->
	<script src="http://www.openlayers.org/api/OpenLayers.js"></script>
	<script src="http://www.openstreetmap.org/openlayers/OpenStreetMap.js"></script>

Part 3 JavaScript

	<script type="text/javascript">
		var map;
 
		function init(){


Part 3.1 Erstelle das OpenLayers Map Objekt

			map = new OpenLayers.Map('map',
                    { controls:[
						new OpenLayers.Control.Navigation(),
						new OpenLayers.Control.PanZoomBar(),
						new OpenLayers.Control.Permalink(),
						new OpenLayers.Control.LayerSwitcher()],
                      maxExtent: new OpenLayers.Bounds(-20037508.34,-20037508.34,20037508.34,20037508.34), 
					  numZoomLevels: 19,
                      maxResolution: 156543.0399,
                      units: 'm',
                      projection: new OpenLayers.Projection("EPSG:900913"),
                      displayProjection: new OpenLayers.Projection("EPSG:4326")
                    });

Part 3.2 Hinzufuegen des Layerswitcher hinzu und aufklappen

			var layerswitcher = new OpenLayers.Control.LayerSwitcher();
			map.addControl(layerswitcher);
	                layerswitcher.maximizeControl();

Part 3.3 Hinzufuegen von Mapnik Layer als Standardkarte

        	var layerMapnik = new OpenLayers.Layer.OSM.Mapnik("Mapnik");
       		map.addLayers([layerMapnik]);

Part 3.4 Hinzufuegen der berechneten Erreichbarkeitspolygone (KML Files)

          	// TODO - Punkt 1
	        //Hinzufuegen der berechneten Erreichbarkeitspolygone (KML Files)
		//					Layername	  Pfad zur Dtei
	        map.addLayer(new OpenLayers.Layer.GML("OV's 2000 Meter", "2000meter.xml", { format: OpenLayers.Format.KML, projection: map.displayProjection }));

Part 3.5 Hinzufuegen der Organisation als Layer

           	// TODO - Punkt 2
        	//Hinzufuegen der Feuerwehrwachen als Layer
			var firestations = new OpenLayers.Layer.GML("THW Ortsverbaende", "ortsverbaende.gpx", {
		      format: OpenLayers.Format.GPX,
		      style: {strokeColor: "red", strokeWidth: 5, strokeOpacity: 1, externalGraphic: "181px-THW.png", graphicWidth:31, graphicHeight:31},
			  projection: map.displayProjection
		    });
			map.addLayer(firestations);

Part 3.2 Zentrum der Karte. Die Position kann aus einem OSM Permalink

         	        // TODO - Punkt 3
			// Zentrum der Karte. Die Position kann aus einem OSM Permalink
			//  entnommen werden: http://www.openstreetmap.org/?lat=50.08321&lon=8.24123&zoom=15&layers=M
			var lat=50.733; 
			var lon=7.128;
			var zoom=10;
			var lonLat = new OpenLayers.LonLat(lon, lat).transform(map.displayProjection,  map.projection);
			if (!map.getCenter()){
				map.setCenter (lonLat, zoom);
			}
        }
    </script>

TODO - Punkt 1

Ermittlung der Standorte von Feuerwehren und weitere.
Nutzung der Overpass_API
BBox.PNG
Overpass API Anfrage.PNG http://www.overpass-api.de/query_form.html

Polygonerstellung

Eine Notiz zu Beginn: die Polygondateien sollten einmalig generiert, abgespeichert und von dort eingebunden werden. Die Serverkapazität von dem Openrouteserver ist begrenzt, daher sollen die Dateien nicht On-the-Fly in eine Karte generiert werden.

Bevor man die XML-Polygondateien zum Einbauen erstellt, sollte man sich über die Anforderungen der Routenberechnung informieren. Möchte man die Straßengegebenheiten vor Ort in das Routing mit einfließen lassen oder eine durchgängige Durchschnittsgeschwindigkeit verwenden? Entscheidet man sich für die Gegebenheiten vor Ort, ist interessant zu wissen, was da überhaupt beachtet wird. Die Tabelle dazu ist hier abrufbar (Spalte "Car Routing"): http://wiki.openstreetmap.org/wiki/OpenRouteService#Used_OSM_Tags_for_Routing

Möchte man eine Durchschnittsgeschwindigkeit verwenden, gibt es hierfür keine eigene Eingabemöglichkeit. Man kann sich aber mittels der Möglichkeit zur Eingabe der Meter, einfach die maximal erreichbare Strecke errechnen, angenommen wird hier eine Geschwindikeit von 40 km/h und eine verfügbare Zeit von 4 Minuten:

40 km/h * 4min / 60min = ~2666m

Nun kann das 40km/h-Polygon mit einer maximalen Anfahrtszeit von 4 Minuten durch Eingabe der Meter erstellt werden: [1]


Ausgabe in Meter

http://openls.geog.uni-heidelberg.de/connector/get/analysepolygon/ZAHLENWERTm/Longitude Latitude

Ausgabe in Minuten

http://openls.geog.uni-heidelberg.de/connector/get/analysepolygon/ZAHLENWERT/Longitude Latitude

Beispiellink

[Link zum Dienst von Pascal Neis GIScience Uni Heidelberg]
http://giscience.uni-hd.de]

TODO - Punkt 2

Hinzufuegen der Organisation als Layer.
GPX File

<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<gpx version="1.0" creator="Turbo GPS" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://www.topografix.com/GPX/1/0" xsi:schemaLocation="http://www.topografix.com/GPX/1/0 http://www.topografix.com/GPX/1/0/gpx.xsd">

<wpt lat="50.2752100" lon="8.1876718"> <name>FF Bechtheim</name> </wpt>
<wpt lat="50.2803586" lon="8.2098590"> <name>FF Beuerbach</name> </wpt>

</gpx>


Beispielseiten

Video und Folien

Zeit Titel Speaker Video Folien sonstiges
2012-03-20 15:30:00 Ermittlung und Visualisierung von Einsatzgebieten der Polizei, Feuerwehr oder von Ersthelfern auf Basis von OpenStreetMap Am Beispiel der Gemeinde Hünstetten im Taunus Pascal Neis mp4 slideshare GIScience Uni Heidelberg http://giscience.uni-hd.de

Alle Infos zur [[FOSSGIS_2012] ]