Сопоставление карт в R на карте.osm

Я застрял и не знаю, почему мой код не работает, но мне нужно сопоставить карту на карте.osm. Ниже приведен код, который я пробовал. У меня есть файл траектории.csv и карта.osm, загруженные из OpenStreetMap. Мне нужно привязать точки траектории на дорожной карте. Я не уверен, как получить р нужной функции. Я следовал за учебником по этой ссылке: код с сайта

src <- osmsource_api()
bb = center_bbox(14.43068,45.34672,1000,1000)
map.osm <- get_osm(bb, source = src)
highways = find(map.osm,way(tags(k == "highway")))
highways = find_down(map.osm,way(highways))

bs = subset(map.osm,id=highways)

l <- as_sp(bs, "lines") 

#l = readOGR(dsn = ".", layer = "subset_street_graph")

#crs = osm_crs()
#crs = CRS("+proj=tmerc +lat_0=0 +lon_0=9 +k=1 +x_0=3500000 +y_0=0 +ellps=bessel +datum=potsdam +units=m +no_defs")

#proj4string(l) = crs
#proj4string(l)=CRS("+proj=longlat +ellps=WGS84")

#l = spTransform(l,CRSobj = crs)

#x = read.csv("track_points.csv", header = F, sep = ",", skip = 1)
x = read.csv("koordinate.csv", header = F, sep = ",", skip = 1)
p = coordinates(x)
#x$t = as.POSIXct(strptime(do.call(paste, x[c("V7","V8")]), "%Y/%m/%d %H:%M:%S"))

#m = matrix(c(x[,2],x[,1]),ncol=2)
#df = data.frame(x$t, x[,5],x[,6])
#p = SpatialPointsDataFrame(coords=m,data=df,proj4string=CRS("+proj=longlat +datum=WGS84"))
#p = SpatialPointsDataFrame(coords=m,data=df,match.ID = F)
#p = spTransform(p,crs)

nearestPointOnSegment = function(s,p){ 
 .....
}

nearestPointOnLine = function(coordsLine, coordsPoints){
  nearest_points = vapply(2:nrow(coordsLine),function(x)nearestPointOnSegment(coordsLine[(x-1):x,], coordsPoints),FUN.VALUE=c(0,0,0))
  # Return coordinates of the nearest point in this line
  nearest_points[1:2, which.min(nearest_points[3,])] 
}

snapPointsToLines <- function( points, lines, maxDist=NA, withAttrs=TRUE){
  ......
}

snappedPoints = snapPointsToLines(p, l)
#snappedPoints = snapPointsToLines(p, l, 100)
#snappedPoints = snapPointsToLines(p, l, 100, FALSE)

#plot(p,col="red")
#plot(snappedPoints,add=TRUE,col="green")
plot(l,add=TRUE)

0 ответов

Другие вопросы по тегам