Je dois utiliser les routes pour comparer les positions GPS pour vérifier qu'il n'y a pas d'erreurs dans les données.
J'ai téléchargé le map.osm à partir d'un site contenant des informations sur la ville de Rome et je l'ai transformé en lignes spatiales en R.
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")
Donc, avec l'objet Lignes spatiales, j'ai essayé d'utiliser la fonction distm mais on l'accuse que l'objet spatial ne peut pas être utilisé (il n'est pas dans un format approprié).
Il existe un autre moyen d'utiliser OSM pour obtenir des informations sur les routes uniquement que je peux comparer avec les données GPS dans R?
distm
est une fonction de la géosphère du package dans R, il calcule la distance entre point à point ou point à objet spatial, renvoyant une matrice dans le second cas. `a <- distm (c (taxi $ lat [1], taxi $ lon [1]), hw_lines, fun = distHaversine)` L'erreur indique "Erreur dans .pointsToMatrix (y): les points doivent être des vecteurs de longueur 2, matrices à 2 colonnes, ou héritant d'un objet SpatialPoints * ". as_sp
du package osmar convertit l'objet OSM chargé en objet spatial. > class(hw_lines)
[1] "SpatialLinesDataFrame"
attr(,"package")
[1] "sp"
distm
fonction? Pouvez-vous montrer ce que vous avez essayé et le message d'erreur? Essayez-vous de calculer les distances de certains points au point le plus proche sur le réseau routier?