First raster::projectRaster
не "устанавливает" проекцию, а скорее перепроектирует растр с учетом преобразования и повторной выборки. Принимая во внимание вычислительные требования этого, гораздо быстрее перепроецировать данные точек, используя sp::spTransform
. Как только ваши данные окажутся в том же пространстве проекции, вы можете использовать raster::extract
для извлечения растровых значений. Значениям вне растра или в областях узлов (NA) будут присвоены значения NA. Вы можете отбросить эти наблюдения, используя простой индекс NA с which
.
Похоже, ваши данные могут иметь постоянное значение вне вечной мерзлоты. Как только вы определите, что это за значение (например, 0), вы также можете удалить эти точки. Вот рабочий пример. Сначала мы добавляем пакеты и создаем некоторые примеры данных, которые похожи на ваши.
library(sp)
library(raster)
dist1 <- raster(nrow=20, ncol=20)
dist1[] <- sample(1:10, ncell(dist1), replace=TRUE)
dist1[200:400] <- 0
trees <- sampleRandom(dist1, 100, sp=TRUE)
plot(dist1)
plot(trees,pch=20,col="red",add=TRUE)
Теперь мы извлекаем растровые значения и просматриваем размеры точечного объекта (обратите внимание, что мне не нужно использовать аргумент sp = TRUE в функции raster::extract
).
trees@data <- data.frame(trees@data, dist1 = extract(dist1, trees))
dim(trees)
Теперь мы создадим индекс строки, указывающий, какие строки содержат нули, убедитесь, что мы идентифицировали строки (используя оператор if), а затем удалим их. Снова посмотрев на размеры объекта, мы увидим, сколько точек было удалено из исходных данных точек.
( idx <- which(trees$dist1 %in% 0) )
if(length(idx) > 0) trees <- trees[-idx,]
dim(trees)