2011-02-11 4 views
4

У меня есть кирпичный файл переменных bioclim, кирпич был объединен с четырьмя кирпичами из 30sec, поэтому он немного велик. Я хотел бы получить кирпичный файл моей исследовательской области, разрезав его, используя полигон в качестве границы. Что мне делать? В противном случае, если это невозможно сделать с кирпичом, могу ли я сделать это с растром?Как отрезать кирпич полигоном?

Заранее спасибо ~

Marco

+0

Каков формат? Растровое или adehabitat может это сделать, и у меня есть некоторые настраиваемые функции для работы с .asc bioclim файлами. –

+0

Растр или кирпич из растрового пакета, также известный как «grd». Это формат растрового пакета по умолчанию. – Marco

ответ

4

ЗАКАНЧИВАТЬ extent(), если вы хотите, чтобы обрезать кирпич до меньшего прямоугольника. Также drawExtent(), если вы предпочитаете выбирать, нажав.

EDIT: Поскольку вы использовали термины «вырезать» и «маску», я не уверен, что правильно понял, но вот два способа, которые могут помочь. Вы могли бы использовать и то, и другое.

# an example with dimensions: 77, 101, 3 (nrow, ncol, nlayers) 
myGrid_Brick <- brick(system.file("external/rlogo.grd", package="raster")) 

# a simple polygon within those dimensions 
myTriangle_P <- Polygon(cbind(c(10, 80, 50, 10), c(10, 20, 65, 10))) 
myTriangle_Ps <- Polygons(list(myTriangle_P), "fubar") 
myTriangle_SP <- SpatialPolygons(list(myTriangle_Ps)) 
myTriangle_Ras <- rasterize(myTriangle_SP, myBrick) 

# this will crop a brick to minimal rectangle that circumscribes the polygon 
# extent(myCrop) is smaller than extent(myGrid) but no values are changed 
myCrop_Brick <- crop(myGrid_Brick, myTriangle_SP) 

# while this converts every coordinate that is NA in 
# the mask to become NA in the returned brick 
# while leaving the brick extent unchanged 
myMask_Brick <- mask(myGrid_Brick, myTriangle_Ras) 
+0

Спасибо Jonw! Я думаю, что crop(), extent() или drawExtent() не для ограничения «bounday» или «Mask», а только для протяженности, то есть для четырех углов сетки. В другом слове, я хочу знать, есть ли способ, которым все мои шаги могут только воздействовать на эту границу? – Marco

+0

Еще раз спасибо jonw! Я думаю, что маска нужна мне! – Marco

+1

@Marco: Если это правильный ответ, вы можете отметить его для будущих пользователей, щелкнув галочку рядом с количеством голосов. Кроме того, я получу несколько баллов, если вы примете мой ответ. :) –