Ich muss die Straßen verwenden, um GPS-Positionen zu vergleichen, um sicherzustellen, dass sie keine Fehler in den Daten sind.
Ich habe die map.osm von einer Site heruntergeladen, die Informationen über die Stadt Rom enthält, und sie in R in Spatial Lines umgewandelt.
src <- osmsource_file(file = "rome.osm")
bb <- center_bbox(41.9, 12.3, 1000, 1000)
rome <- get_osm(bb, src)
ways <- find(rome, way(tags(k == "highway")))
ways <- find_down(rome, way(ways))
ways <- subset(rome, ids = ways)
hw_lines <- as_sp(ways, "lines")
Also habe ich mit dem Spatial Lines Object versucht, die distm-Funktion zu verwenden, aber es wird beschuldigt, dass das Spatial Object nicht verwendet werden kann (nicht in einem geeigneten Format).
Gibt es eine andere Möglichkeit, mit OSM nur Informationen zu Straßen abzurufen, die ich mit GPS-Daten in R vergleichen kann?
distm
ist eine Funktion aus der Paketgeosphäre in R, berechnet die Entfernung zwischen Punkt zu Punkt oder Punkt zum Raumobjekt und gibt im zweiten Fall eine Matrix zurück. `a <- distm (c (Taxi $ lat [1], Taxi $ lon [1]), hw_lines, fun = distHaversine)` Der Fehler lautet "Fehler in .pointsToMatrix (y): Punkte sollten Vektoren der Länge 2 sein, Matrizen mit 2 Spalten oder Erben von einem SpatialPoints * -Objekt ". as_sp
aus dem osmar-Paket konvertieren Sie das geladene OSM-Objekt in ein räumliches Objekt. > class(hw_lines)
[1] "SpatialLinesDataFrame"
attr(,"package")
[1] "sp"
distm
Funktion? Können Sie zeigen, was Sie versucht haben und die Fehlermeldung? Versuchen Sie, Entfernungen von einigen Punkten zum nächsten Punkt im Straßennetz zu berechnen?