Мне нужно использовать функцию extract(), чтобы выполнить средневзвешенное извлечение из растра, используя ячейку сетки квадратов равного размера. Моя сетка полигона находится в UTM21n, а растровое изображение - в базе данных GCS WGS84 D. Должен ли я перепрограммировать растр перед его использованием в extract()? Или функция будет обрабатывать ее правильно?Как функция «извлечь» имеет дело с разными проекциями?
1
A
ответ
3
Исходный код функции extract
для SpatialPolygons
here. Код начинается со следующего фрагмента кода:
setMethod('extract', signature(x='Raster', y='SpatialPolygons'),
function(x, y, fun=NULL, na.rm=FALSE, weights=FALSE, cellnumbers=FALSE, small=FALSE, df=FALSE, layer, nl, factors=FALSE, sp=FALSE, ...){
px <- projection(x, asText=FALSE)
comp <- .compareCRS(px, projection(y), unknown=TRUE)
if (!comp) {
.requireRgdal()
warning('Transforming SpatialPolygons to the CRS of the Raster')
y <- spTransform(y, px)
}
...
Что наводит на мысль, что extract
делает фактически выполнять саму проекцию (изменение проекции SpatialPolygon в проекции растра), несмотря на то, что она не документирована в справочную страницу.
0
В документации не упоминается автоматическое повторное нанесение. Итак, я думаю, что сохранить, чтобы функция не делала этого. Поэтому перед вызовом extract
вам необходимо выполнить перепрограммирование.
+1 Раздражающе я написал функцию обертки вокруг выделения, чтобы справиться с этой точной ситуацией, потому что эта функция недокументирована. Полезно знать, спасибо! –
Интересно, интересно, что произойдет, если проекция не задана в многоугольном слое. –