У меня есть SpatialPoints объект с 3-х измерениях:Удаление третье измерение в SpatialPointsDataFrame
x <- c(1,1,1,2,2,2,3,3,3)
y <- c(1,2,3,1,2,3,1,2,3)
z <- c(1,3,5,2,1,2,1,2,3)
xyz <- cbind(x,y,z)
ss <- SpatialPoints(xyz)
dimensions(ss)
И в raster
объекта:
rr <- raster(matrix(round(runif(49,0,10)),7,7), xmn=0, xmx=4, ymn=0, ymx=4, crs=NA, template=NULL)
Я хочу, чтобы извлечь значения растра с использованием SpatialPoints
объекта:
extract(rr,ss)
#Error in .xyValues(x, coordinates(y), ..., df = df) :
# xy should have 2 columns only.
#Found these dimensions: 9, 3
Вы можете визуализировать данные, если вы нт:
plot(rr)
plot(ss, add=T)
Таким образом, проблема в том, что функция extract
пакета растрового требует 2 объекта измерения SpatialPoints. Моя (по моим реальным данным) в 3-х мерных. Есть ли способ отказаться от 3-го измерения моей формы фигуры? Я пробовал:
coordinates(ss) <- coordinates(ss)[,-3]
#Error in `coordinates<-`(`*tmp*`, value = c(1, 1, 1, 2, 2, 2, 3, 3, 3, :
# setting coordinates cannot be done on Spatial objects, where they have #already been set
Я не хочу, чтобы перестроить форму с нуля.
вы ищете это: сс @ координатам [, 1: 2]? – MLavoie
@MLavois, что вы говорите, дает мне два измерения в виде матрицы (что совпадает с моим: 'coord (ss) [, - 3]'), это не то, что я хочу, я хочу новый объект формы, но с только 2 измерения, а не три. Все остальное одинаково (данные, проекция и т. Д.) – Bastien
Просто перезапишите слот 'coords':' ss @ coords <- ss @ coords [, 1: 2] ' – rcs