Как повторно сэмплировать растровую привязку к существующей сетке?

Я хотел бы изменить выборку растра с высокого разрешения до низкого (с разной степенью) в определенной ячейке сетки. Есть ли способ использовать существующий растровый файл в качестве входных данных для привязки?

В растровом пакете, aggregate а также resample Кажется, достаточно, но я не могу найти, как это сделать.

3 ответа

Решение

Вы можете запустить внешнюю команду с system и позвонить gdal_translate или же gdal_warp команда. Это требует, конечно, установки утилит GDAL

Ты можешь использовать projectRaster для этого, если у вас есть растр в одной проекции и разрешении, и вам нужен вывод в другом конкретном разрешении и проекции.

from аргумент ваш растр с высоким разрешением и to аргумент - ваш растр в низком разрешении. Убедитесь, что вы выбрали правильный метод агрегирования (т.е. bilinear для непрерывных данных и ngb (ближайший сосед) для категориальных данных.

require( raster )

#  Projection info
proj1 <- CRS("+proj=laea +lon_0=20 +lat_0=5 +ellps=sphere +unit=km +to_meter=1e3")
proj2 <-  CRS("+proj=longlat +datum=WGS84 +ellps=WGS84")
#  High res raster
r1km <- raster( nrows = 1515 , ncols = 2300 , xmn = -4000 , xmx = -1700 , ymn = -15 , ymx = 1500 , crs = proj1 )

#  Low res raster
r5km <- raster( nrows = 303 , ncols = 460 , xmn = -20 , xmx = -5 , ymn = 4 , ymx = 15 , crs = proj2 )

#  Set some values in high res raster
pts <- rasterToPoints(r1km)
values( r1km ) <-  0.01*pts[,1] + sin(0.02*pi*pts[,2])

#  Reproject using the attributes of the low res raster for output
out <- projectRaster( from = r1km , to = r5km , method = "bilinear" )

#  Plot - extent of second raster doesn't fully cover first so some data is missing
par( mfrow = c(1,2) )
plot( r1km )
plot( out )

Если ваши входные и выходные данные совпадают, за исключением разрешения, вы можете использовать агрегат...

#  If same extent and resolution require use aggregate
r1 <- raster(system.file("external/rlogo.grd", package="raster"))
r5 <- aggregate( r1 , fact = 5 , method = "bilinear" )
par( mfrow = c(1,2) )
plot( r1 )
plot( r5 )

Это решение работает:

system(paste("gdalwarp"
,paste(dir_path,"fileHR.tif",sep="")
,paste(dir_path,"fileLR.tif",sep=""),sep=" "))

где dir_path каталог, в котором хранятся ваши файлы, fileHR.tif это файл высокого разрешения, fileLR.tif файл с низким разрешением

Другие вопросы по тегам