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()
.