Упрощение данных в растре - R - PullRequest
0 голосов
/ 19 июня 2020

У меня есть растровый файл, который я создал из данных, загруженных из DIVA-GIS: http://www.diva-gis.org/datadown

nz_map<-raster("NZL1_msk_cov.grd")

Используя plot() на этом объект отлично работает, поэтому нет проблем с его импортом. Растровый объект содержит много ненужных мне данных, данных о земном покрове. Мне нужен более простой растровый объект с координатами долгота и широта и значением 1 для суши и NA для океана.

Этот растр будет использоваться с функцией dismo randomPoints() для выборки фоновых данных для моделирования распределения видов, поэтому наиболее важно определить, какие районы являются сушей (подходят для выборки), а какие - океаном (непригодны ).

Я могу визуализировать растр проще с помощью plot(!is.na(nz_map5)). Это хорошо работает и обслуживает функцию randomPoints(), но я не уверен, как редактировать цвет карты. Выполнение этого: plot(!is.na(nz_map5), col="grey") приводит к полностью серому блоку вместо того, чтобы просто окрашивать соответствующие области в серый цвет; вот почему я подумал, что мне может быть лучше использовать более простой растровый объект, чтобы избавиться от аргумента !is.na. Есть идеи?

Если кто-нибудь знает, где можно скачать такие файлы, избавив меня от хлопот - это тоже работает.

1 Ответ

0 голосов
/ 19 июня 2020

Вот аналогичные данные для высоты

library(raster)
a <- getData("alt", country="NZL")
r <- a[[1]]
plot(r)

Я думаю, ваше замешательство связано с тем, что здесь происходит

x <- !is.na(r)

Это превращает значения в TRUE (те, которые не были NA) или FALSE (те, что были NA). Итак, теперь у вас есть две категории

plot(x, col=c("red", "blue"))

И теперь это уже не хороший набор данных для dismo::randomPoints

Если вы предпочитаете NA и 1 другое значение, вы можете

y <- r * 0
plot(y, col="blue")

Или

 y <- reclassify(y, cbind(-Inf, Inf, 1))

Но, как вы сами говорите, для randomPoints можно просто использовать исходные данные.

...