Datenfilterung und Datengewinnung - DarioDagne/OSM-Analysis GitHub Wiki
Das folgende UML-Diagramm soll dazu dienen, einen Überblick über den Ablauf unseres Prozesses zur Filterung und Gewinnung der zu analysierende Daten zu bieten:
Datengewinnung
Die OSM-Database verfügt über eine größere Menge an Daten und unser Ziel ist nicht alle Daten zu analysieren sondern nur eine teil davon, denn ist hier klar, dass wir irgendwie die Daten filtern müssen, bevor wir dieser herunterladen. Für die Erste Filterung werden wir die Nominatim nutzen, also gibt uns die Möglichkeit die Name der Stadt oder Postleitzahl als Suchbegriff einzugeben und als Ergebnis liefert uns Daten wie Latitude/Longitude, Alternative Name, Box(Begrenzung des gesuchtes Elements ) etc. Wobei hier Die Box uns interessiert, denn wir brauchen dieser im Overpass API für die Download.
Datenfilterung
Nach der Download der Daten werden wir auch nicht alles auf einmal ausgeben, sondern nur bestimmte Infomationen, die für uns an der stelle interessieren. Für diese Filterung werden wir OsmSharp benutzen.
Beispiel
Für die Suche und Herunterladen der Daten findet man im Branch Tests.Hier möchte ich die geladenen Daten(Freiberg) nuten, um die Erste 5 knoten zu extraiehen:
await using var fileStream = File.OpenRead(path);
XmlOsmStreamSource source = new XmlOsmStreamSource(fileStream);
var anfangsknoten =(from os in source
where os.Type == OsmSharp.OsmGeoType.Node
select os).Take(5);
var anfang = anfangsknoten.ToComplete();
Node[] knoten = new Node[anfang.Count()];
for(int i = 0; i<anfang.Count();i++)
{ knoten[i] = (Node)anfang.ElementAt(i); }