Рассчитать перекрытие полигонов охраняемых районов с прогнозируемой максимальной пригодностью среды обитания - PullRequest
0 голосов
/ 10 апреля 2020

Я хочу рассчитать процентную площадь пригодности среды обитания для вида, который перекрывается с полигонами охраняемых районов. Я не очень хорошо знаю язык R, но вот что у меня есть.

Это атрибуты области пригодности среды обитания, полученные из максимального прогноза:

class      : RasterLayer 
dimensions : 6480, 8520, 55209600  (nrow, ncol, ncell)
resolution : 0.008333333, 0.008333333  (x, y)
extent     : -103, -32, -36, 18  (xmin, xmax, ymin, ymax)
crs        : +proj=longlat +ellps=WGS84

из охраняемых районов:

Simple feature collection with 5667 features and 2 fields (with 8 geometries empty)
geometry type:  GEOMETRY
dimension:      XY
bbox:           xmin: -118.6344 ymin: -59.85538 xmax: -25.29094 ymax: 32.48333
CRS:            +proj=longlat +datum=WGS84 +no_defs +ellps=WGS84 +towgs84=0,0,0

Кто-нибудь знает способ расчета процентной площади пригодности среды обитания, которая перекрывается с полигонами охраняемых районов?

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

Буду признателен за любую информацию.

1 Ответ

0 голосов
/ 10 апреля 2020

Чтобы ответить на ваш первый вопрос, вы должны быть в состоянии использовать зональную статистику для расчета площади потенциальной среды обитания, найденной на охраняемых территориях, с использованием пакетаatialEco:

zonal.stats(x, y, stats = c("min", "mean", "max"))
#x = Polygon object of class SpatialPolygonsDataFrame
#y = rasterLayer object of class raster

https://www.rdocumentation.org/packages/spatialEco/versions/1.3-0/topics/zonal.stats

Вот воспроизводимый пример из пакета spatialEco, который сначала вычисляет процент пикселей в каждом многоугольнике> = пороговое значение, а второй вычисляет сумму пикселей в каждом многоугольнике> = пороговое значение, используемое для реклассифицировать входной растр. Возможно, вас заинтересуют оба направления вашей работы.

library(spatialEco)    
library(raster)
library(sp)                                                                          

# here the fxn will calculate the percentage of cells >= 0.5
# percent x >= p function
pct <- function(x, p=0.50, na.rm = FALSE) {
  if ( length(x[x >= p]) < 1 )  return(0) 
  if ( length(x[x >= p]) == length(x) ) return(1) 
  else return( length(x[x >= p]) / length(x) ) 
}

# create some example data
p <- raster(nrow=10, ncol=10)
p[] <- runif(ncell(p)) * 10
p <- rasterToPolygons(p, fun=function(x){x > 9})
r <- raster(nrow=100, ncol=100)
r[] <- runif(ncell(r)) 
plot(r)
plot(p, add=TRUE, lwd=4) 

# run zonal statistics using pct functions  
z.pct <- zonal.stats(x=p, y=r, stats = "pct")
z.pct

#Alternatively, reclassify the raster based on a threshold
r.c<-reclassify(r, c(-Inf, 0.5, 0, 0.5, Inf, 1)) #all values >0.5 reclassified to 1
plot(r.c)
plot(p, add=TRUE, lwd=4) #add poly to the plot

# run zonal stats and calculate sum of cells in each poly
z.sum <- zonal.stats(x=p, y=r.c, stats = "sum")
z.sum
...