Я пытаюсь вычислить средние значения для климатических переменных для пространственных объектов в R. Задача состоит в том, что я пытаюсь вычислить эти средства для каждой административной области уровня 2 в мире (www.gadm.org), и мне нужен эффективный способ расчета статистики. Я рассчитал эти статистические данные без проблем для определения меньших площадей, которые охватывают меньше климатических зон/плиток, но проблемы с логистикой стали препятствием при попытке масштабировать эту задачу до всего мира.Расчет геопространственной статистики для большого набора растров и пространственных объектов в R
Я попытался использовать шейдерный файл gadm.org уровня 2 для всего мира, а затем импортировал и объединил полный набор биоклиматических растеров worldclim.org (с самым высоким доступным пространственным разрешением) и зонами/плитами, но, похоже, быть слишком требовательными к ресурсам. В частности, операция слияния полного набора растровых зон/плиток в один глобальный растровый объект никогда не заканчивается. Казалось, что это самый эффективный подход, а также вероятность свести к минимуму ошибки, чтобы объединить растровые зоны для всего мира.
Я не уверен, как подойти к проблеме здесь, так как подсчет этих статистических данных по странам кажется крайне утомительным и неэффективным. Кроме того, в административном пограничном слое имеется большое количество форм, которые перекрывают отдельные зоны/плитки Worldclim, что приведет к ошибкам, если отсутствуют соответствующие климатические объекты при расчетах для форм, которые не лежат целиком в пределах одной зоны/плитки ,
Мне интересно, как я мог придумать эффективное решение с учетом размера операции.
После загрузки уровня 2 глобальных данных административных границ, я попытался код ниже:
library(raster)
library(rgdal)
library(maptools)
library(foreign)
#SET WORKING DIRECTORY
setwd("C:/gadm28")
#IMPORT GLOBAL ADMINISTRATIVE BOUNDARIES (LEVEL 2) DATA FROM HARD DRIVE
gadm <- readOGR(dsn="C:/gadm28", layer="gadm28")
#IMPORT GLOBAL (ALL TILES) BIOCLIMACTIC DATA DIRECTLY FROM WORLDCLIM.ORG
climatezone00 <- getData('worldclim', var='bio', res=0.5, lon=-180, lat=90)
climatezone01 <- getData('worldclim', var='bio', res=0.5, lon=-150, lat=90)
climatezone02 <- getData('worldclim', var='bio', res=0.5, lon=-120, lat=90)
climatezone03 <- getData('worldclim', var='bio', res=0.5, lon=-90, lat=90)
climatezone04 <- getData('worldclim', var='bio', res=0.5, lon=-60, lat=90)
climatezone05 <- getData('worldclim', var='bio', res=0.5, lon=-30, lat=90)
climatezone06 <- getData('worldclim', var='bio', res=0.5, lon=0, lat=90)
climatezone07 <- getData('worldclim', var='bio', res=0.5, lon=30, lat=90)
climatezone08 <- getData('worldclim', var='bio', res=0.5, lon=60, lat=90)
climatezone09 <- getData('worldclim', var='bio', res=0.5, lon=90, lat=90)
climatezone010 <- getData('worldclim', var='bio', res=0.5, lon=120, lat=90)
climatezone011 <- getData('worldclim', var='bio', res=0.5, lon=150, lat=90)
climatezone10 <- getData('worldclim', var='bio', res=0.5, lon=-180, lat=60)
climatezone11 <- getData('worldclim', var='bio', res=0.5, lon=-150, lat=60)
climatezone12 <- getData('worldclim', var='bio', res=0.5, lon=-120, lat=60)
climatezone13 <- getData('worldclim', var='bio', res=0.5, lon=-90, lat=60)
climatezone14 <- getData('worldclim', var='bio', res=0.5, lon=-60, lat=60)
climatezone15 <- getData('worldclim', var='bio', res=0.5, lon=-30, lat=60)
climatezone16 <- getData('worldclim', var='bio', res=0.5, lon=0, lat=60)
climatezone17 <- getData('worldclim', var='bio', res=0.5, lon=30, lat=60)
climatezone18 <- getData('worldclim', var='bio', res=0.5, lon=60, lat=60)
climatezone19 <- getData('worldclim', var='bio', res=0.5, lon=90, lat=60)
climatezone110 <- getData('worldclim', var='bio', res=0.5, lon=120, lat=60)
climatezone111 <- getData('worldclim', var='bio', res=0.5, lon=150, lat=60)
climatezone20 <- getData('worldclim', var='bio', res=0.5, lon=-180, lat=30)
climatezone21 <- getData('worldclim', var='bio', res=0.5, lon=-150, lat=30)
climatezone22 <- getData('worldclim', var='bio', res=0.5, lon=-120, lat=30)
climatezone23 <- getData('worldclim', var='bio', res=0.5, lon=-90, lat=30)
climatezone24 <- getData('worldclim', var='bio', res=0.5, lon=-60, lat=30)
climatezone25 <- getData('worldclim', var='bio', res=0.5, lon=-30, lat=30)
climatezone26 <- getData('worldclim', var='bio', res=0.5, lon=0, lat=30)
climatezone27 <- getData('worldclim', var='bio', res=0.5, lon=30, lat=30)
climatezone28 <- getData('worldclim', var='bio', res=0.5, lon=60, lat=30)
climatezone29 <- getData('worldclim', var='bio', res=0.5, lon=90, lat=30)
climatezone210 <- getData('worldclim', var='bio', res=0.5, lon=120, lat=30)
climatezone211 <- getData('worldclim', var='bio', res=0.5, lon=150, lat=30)
climatezone30 <- getData('worldclim', var='bio', res=0.5, lon=-180, lat=0)
climatezone31 <- getData('worldclim', var='bio', res=0.5, lon=-150, lat=0)
climatezone32 <- getData('worldclim', var='bio', res=0.5, lon=-120, lat=0)
climatezone33 <- getData('worldclim', var='bio', res=0.5, lon=-90, lat=0)
climatezone34 <- getData('worldclim', var='bio', res=0.5, lon=-60, lat=0)
climatezone35 <- getData('worldclim', var='bio', res=0.5, lon=-30, lat=0)
climatezone36 <- getData('worldclim', var='bio', res=0.5, lon=0, lat=0)
climatezone37 <- getData('worldclim', var='bio', res=0.5, lon=30, lat=0)
climatezone38 <- getData('worldclim', var='bio', res=0.5, lon=60, lat=0)
climatezone39 <- getData('worldclim', var='bio', res=0.5, lon=90, lat=0)
climatezone310 <- getData('worldclim', var='bio', res=0.5, lon=120, lat=0)
climatezone311 <- getData('worldclim', var='bio', res=0.5, lon=150, lat=0)
climatezone40 <- getData('worldclim', var='bio', res=0.5, lon=-180, lat=-30)
climatezone41 <- getData('worldclim', var='bio', res=0.5, lon=-150, lat=-30)
climatezone42 <- getData('worldclim', var='bio', res=0.5, lon=-120, lat=-30)
climatezone43 <- getData('worldclim', var='bio', res=0.5, lon=-90, lat=-30)
climatezone44 <- getData('worldclim', var='bio', res=0.5, lon=-60, lat=-30)
climatezone45 <- getData('worldclim', var='bio', res=0.5, lon=-30, lat=-30)
climatezone46 <- getData('worldclim', var='bio', res=0.5, lon=0, lat=-30)
climatezone47 <- getData('worldclim', var='bio', res=0.5, lon=30, lat=-30)
climatezone48 <- getData('worldclim', var='bio', res=0.5, lon=60, lat=-30)
climatezone49 <- getData('worldclim', var='bio', res=0.5, lon=90, lat=-30)
climatezone410 <- getData('worldclim', var='bio', res=0.5, lon=120, lat=-30)
climatezone411 <- getData('worldclim', var='bio', res=0.5, lon=150, lat=-30)
#COMBINE ZONES TO CREATE ONE COMPLETE CLIMATE OBJECT
climatemosaic <- mosaic(climatezone01, climatezone02, climatezone03, climatezone04, climatezone05, climatezone06, climatezone07, climatezone08, climatezone09, climatezone010, climatezone011, climatezone10, climatezone11, climatezone12, climatezone13, climatezone14, climatezone15, climatezone16, climatezone17, climatezone18, climatezone19, climatezone110, climatezone111, climatezone20, climatezone21, climatezone22, climatezone23, climatezone24, climatezone25, climatezone26, climatezone27, climatezone28, climatezone29, climatezone210, climatezone211, climatezone30, climatezone31, climatezone32, climatezone33, climatezone34, climatezone35, climatezone36, climatezone37, climatezone38, climatezone39, climatezone310, climatezone311, climatezone40, climatezone41, climatezone42, climatezone43, climatezone44, climatezone45, climatezone46, climatezone47, climatezone48, climatezone49, climatezone410, climatezone411, fun=mean)
#EXTRACT MEAN VALUES FOR BOUNDARY POLYGONS & ATTACH TO SPDF (WEIGHT AND BUFFER OPTIONS NOT USED HERE)
gadmMEANS <- extract(climatemosaic, gadm, fun=mean, na.rm=TRUE, small=TRUE, layer=1, nl=19, sp=TRUE)