terra extract() дает значения NA в R

Я пытаюсь получить средние значения NDVI в посылках с помощью terra :: extract (). Я заметил, что мой фрейм данных из terra :: extract () дает мне значения NA (на самом деле у меня есть 2494 значения NA из 4519 наблюдений). Мой растр NDVI имеет пространственное разрешение ~ 0,5 фута (0,15 метра). Ниже мой код. Я также пробовал exactextractr :: Exact_extract (), но он не дал мне тех же значений, что и raster :: extract (). Из того, что я читал, exactextractr :: Exact_extract () учитывает часть ячейки, лежащую внутри многоугольника. Мне интересно, что лучше использовать, exactextractr :: Exact_extract () или terra :: extract (). Любая помощь / руководство было бы отличным!

      epa_fatparcels_sidewalk_adjacent <- 
  epa_parcels_sidewalk_adjacent %>%
  st_transform(projection) %>% 
  st_buffer(330) %>% 
  st_transform(st_crs(epa_ndvi))

tictoc::tic()
epa_ndvi_sr<- terra::rast(epa_ndvi)
epa_fatparcels_sidewalk_adjacent_sv <- epa_yards_sidewalk_adjacent %>%
  st_transform(st_crs(epa_ndvi)) %>%
#--- convert to a SpatVector object ---#
  as(., "Spatial") %>% terra::vect()
epa_fatparcels_ndvi_v2 <- terra::extract(
    epa_ndvi_sr, 
    epa_fatparcels_sidewalk_adjacent_sv, 
    fun="mean"
)
tictoc::toc() #took 17.92 sec elapsed

2 ответа

Пожалуйста, предоставьте автономный минимально воспроизводимый пример, задавая вопрос R.

Можете добавить na.rm=TRUE игнорировать NA значения

      epa_fatparcels_ndvi_v2 <- terra::extract(
    epa_ndvi_sr, 
    epa_fatparcels_sidewalk_adjacent_sv, 
    fun="mean", na.rm=TRUE
)

Также эта строка

      as(., "Spatial") %>% terra::vect()

Вероятно, можно упростить до

      terra::vect()

Что касается exactrextactr--- это наиболее важно, если ячеек относительно мало. С участием terra::extract вы можете использовать аргумент exact=TRUE чтобы получить тот же результат.

@MireilleVargas Возможно, это связано с тем, какой столбец в растре используется. К сожалению, я не могу объяснить, почему он иногда выбирает неправильный столбец или как это исправить (хотелось бы услышать какие-либо предложения!), Но я столкнулся с той же проблемой, но только в нескольких моих растрах, поэтому я исследовал дальше перекрестным ссылаясь в ArcMap, и выяснили, что он вытягивает столбец «Счетчик», который подсчитывает количество пикселей каждого конкретного значения, а не столбец «Значение» . Я заметил, что это происходит как при импорте указанного растра через rastи при преобразовании RasterLayer в объект SpatRast. Это может объяснить, почему это работает, когда вы используете raster::extract() и оставляет вам так много НА при использовании terra::extract().

Другие вопросы по тегам