При извлечении значений растра вдоль SpatialLine
в R, как связать эти значения с фактическим расстоянием вдоль этой линии?R-растровое извлечение вдоль SpatialLine: связать извлеченные значения с фактическим расстоянием
Предположим, я хочу, чтобы извлечь значение R логотипа вдоль следующей строки:
library(raster)
r <- raster(system.file("external/rlogo.grd", package="raster"))
x=c(5, 95)
y=c(20, 50)
line = SpatialLines(list(Lines(Line(cbind(x,y)), ID="a")))
plot(r)
plot(line, add=TRUE)
я могу извлечь значения и сюжет их - но как заменить значения х (1:length(vals)
ниже) на фактическое расстояние (начиная, например, на 0 с левой стороны линии)?
vals <- extract(r, line)[[1]]
plot(1:length(vals), vals, type='o')
Я мог бы объединить экстракцию клеток с xyFromCell
, чтобы получить координаты извлеченных клеток, как было предложено here, но мне не понятно, как идти дальше.
Благодаря @jvj. Предполагая, что извлеченные значения связаны с самой линией, я больше рассматривал расстояния на самой линии (я знаю, что это не совсем правильно, а также зависит от метода, используемого для извлечения, но не должно быть слишком большим проблема, если разрешение сетки велико по сравнению с длиной линии). Интуитивно я больше думал о расстоянии между самой левой координатой линии и проекциями * центров клеток на линии (я полагаю, это легко существует в другом месте в «R»), но, возможно, в более эффективном/строгий/встроенный способ ... – ztl
BTW @jvj, не является ли ваш 'start' выше фактически НЕ (или, скорее всего, нет, кроме случаев, когда линия проходит через центр ячейки) на линии? Кроме того, 'start' не гарантируется, как определено как самая левая * и * самая низкая ячейка, не так ли? Или я где-то ошибаюсь? – ztl
Чтобы получить дистанции на самой линии, вы можете использовать геосферу :: dist2Line – RobertH