2013-10-11 4 views
1

Мне нужно использовать функцию extract(), чтобы выполнить средневзвешенное извлечение из растра, используя ячейку сетки квадратов равного размера. Моя сетка полигона находится в UTM21n, а растровое изображение - в базе данных GCS WGS84 D. Должен ли я перепрограммировать растр перед его использованием в extract()? Или функция будет обрабатывать ее правильно?Как функция «извлечь» имеет дело с разными проекциями?

ответ

3

Исходный код функции extract для SpatialPolygonshere. Код начинается со следующего фрагмента кода:

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

+1 Раздражающе я написал функцию обертки вокруг выделения, чтобы справиться с этой точной ситуацией, потому что эта функция недокументирована. Полезно знать, спасибо! –

+0

Интересно, интересно, что произойдет, если проекция не задана в многоугольном слое. –

0

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