У меня проблемы с агрегацией строк в результате цикла в SpatialLinesDataFrame (или аналогичном)
У меня есть ряд береговых линий, на которых я иратирую, создаю перпендикулярные разрезы через равные промежутки времени и в конечном итоге люблю хранить эти разрезы. Для каждого разреза я на следующем этапе выполню некоторые вычисления, например, наложив их на растр, чтобы вычислить экстент определенной функции. Таким образом, последний SpatialLinesDataFrame должен позволить мне получить доступ к отдельным строкам в цикле.
Таблица воспроизводимых выходных данных, которая соответствует идентификатору формы в шейп-файле.
- Положение соответствует уникальному идентификатору и количеству метров на линии вдали от начальной точки линии.
- CoordX и CoordY - это координаты линии (начальная точка линии разреза)
Endx / EndY - это конечные точки трансекта
Класс - это пример метаданных для той строки, которую я хотел бы сохранить.
# for each coastline inside the shape:
position <- seq(0,3000, by=500)
coordX <- c(279501, 275678, 271002, 270944, 266825, 273316, 278284)
coordY <- c(983194.8, 981770.6, 975915.3, 975824.3, 968631.0, 963332.4, 963716.7)
endx <- c(279501.9, 275678.4, 271002.6, 270944.6, 266825.3, 273316.2, 278284.1)
endy <- c(983194.8, 981770.6, 975915.3, 975824.3, 968631.0, 963332.4, 963716.7)
class <- c(3,3,3,3,3,3,3)
out<- cbind(position, class, coordX, coordY, endx, endy)
beginpoint <- cbind(out[,3], out[,4])
endpoint <- cbind(out[,5], out[,6])
lines <- vector('list', nrow(out)) # empty line vector
# loop over starting points on the line segment and create transects
for(n in seq_along(lines_sf)){
# n = 1
col_names <- list('lon', 'lat')
row_names <- list('begin', 'end')
# dimnames < list(row_names, col_names)
x <- as.matrix(rbind(beginpoint[n], endpoint[n,]))
dimnames(x) <- list(row_names, col_names)
# Sl <- Line(x) # line based on begin & end coordinates
# S1 <- Lines(list(Sl), ID = output$pos[n])
lines[[n]] <- SpatialLines(list(Lines(list(Line(x)), as.character(out[n,1]))),
proj4string = CRS(as.character(kustlijn2001@proj4string)))
}
df <- SpatialLinesDataFrame(lines_sf, data.frame(out))
Выдает ошибку:
Ошибка в слоте (sl, «линии»): невозможно получить слот («линии») из
объект типа "список"
В конечном счете это, вероятно, сводится к тому, что я не до конца понимаю работу SpatialDataFrame и свойства SpatialLines, я читаю документацию и т. Д., И я думал, что соответствующие идентификаторы между lines_sf и out не совпадают. Но ошибка говорит об обратном?
Заранее спасибо!