Суперклассовый мажоритарный фильтр - PullRequest
0 голосов
/ 27 апреля 2020

У меня возникли проблемы с выполнением фильтра большинства на моем классифицированном растре. Исходный растр представляет собой изображение RGB Drone orthomosai c. Процессы классификации использовали этот метод . Когда я запускаю функцию superclass, я получаю предупреждающее сообщение, но это потому, что моя полоса 4 содержит только одно значение, поэтому она пропускает эту полосу. Первоначально я пытался использовать WhiteboxTools, но этот пакет не работает в моей версии (3.6.3), поэтому я в итоге использовал этот метод (стр. 62). Полученная ошибка говорит о том, что функция focal не может работать с целочисленным типом. Я не уверен, что я должен изменить это, поскольку целые числа используются для классификации. Есть предложения?

library(caret) # 6.0-86
library(randomForest) # *4.6-14
library(e1071) # 1.7-2
library(raster) # 3.0-12
library(sf) # *0.8-0
library(RStoolbox) # *0.2.6
library(glcm) # 1.6.5

img <- brick("C:/Users/name/location/raster.tif")

NDVI.Overlay <- function(b1, b4) {
  NDVI.Calc <- (b4 - b1) / (b4 + b4)
  return(NDVI.Calc)
}

NDVI <- overlay(img[[1]], img[[4]], fun = NDVI.Overlay)

img_update <- addLayer(img, NDVI)
names(img_update) <- c('b1', 'b2', 'b3', 'b4', 'NDVI')

shp <- st_read("C:/Users/name/location/Training.shp")
shpS4 <- as_Spatial(shp)

olpar <- par(no.readonly = TRUE)
par(mfrow = c(1,2))
colors <- c("black", "green", "grey")

SC <- superClass(img, trainData = shpS4, responseCol = "id", model = "rf", tuneLength = 1, trainPartition = 0.8)

SC_focal <- focal(SC$map, w = matrix(1,5,5), fun = modal)
Error in (function (classes, fdef, mtable)  : 
  unable to find an inherited method for function ‘focal’ for signature ‘"integer"’
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...