2013-10-08 5 views
5

정의 된 격자 셀에서 고해상도에서 저급 (다른 범위로) 래스터를 리샘플링하고 싶습니다. 기존 래스터 파일을 스냅하기위한 입력으로 사용하는 방법이 있습니까?래스터를 기존 그리드에 스냅하는 방법을 다시 샘플링하는 방법은 무엇입니까?

래스터 패키지에서 aggregateresample이 적당하지만 나는 그 방법을 찾을 수 없습니다.

+0

다른 그리드로 보간해야합니까? 지금까지 내가 아는 모든 '래스터'파일은 균일 한 직사각형 그리드의 데이터를 정의하므로 "기존 래스터 파일을 사용"하면 "MxN에서 LxK 그리드로 집계 또는 보간"을 의미합니다. –

+0

질문에 명확성이 부족하고 예제가 없습니다. –

답변

1

을 당신은 리터 수 있습니다 사용할 수 있습니다 system으로 외부 명령을 실행하고 gdal_translate 또는 gdal_warp 명령을 호출하십시오. 이것은 물론 GDAL 유틸리티

를 설치해야
+0

감사합니다. 그러나 gdal_translate를 사용하면 보간 방법을 제어 할 수 없습니다. 나는 gdalwarp를 사용하여 해결책을 찾았습니다. – Wraf

6

래스터의 투영과 해상도가 다르며 다른 특정 해상도와 해상도로 출력해야하는 경우 projectRaster을 사용할 수 있습니다.

인수가 고해상도 래스터이고 to 인수가 저해상도 래스터입니다. 당신이 범주 형 데이터의 집합 (즉, 연속적인 데이터에 대한 bilinearngb (가장 가까운 이웃)에 대한 올바른 방법을 선택해야합니다.

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) 

enter image description here

당신의 입력 및 출력 데이터의 해상도를 제외하고 동일한 경우 ... 총

# 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) 

enter image description here

+1

감사하지만 내 두 파일이 같은 투영에 있기 때문에 프로젝트가 작동하지 않습니다. 집계에 관해서는 "사실"인수를 사용하지 않고 파일을 사용하기 때문에 그리드에 스냅하기 위해 파일을 직접 지정할 수는 없습니까? – Wraf

+0

@Wraf 당신이 실제로했던 것을 보여주는 재현 가능한 예제를 제공해야합니다. 나는 당신의 요구 사항에 대해이 추측에 더 많은 노력을 기울이지 않는다고 생각합니다. [** 재현 할 좋은 예제를 만드는 방법 **] (http://stackoverflow.com/q/5963269/1478381)을 읽고 그에 따라 업데이트하십시오! –

+0

감사합니다. 실제로 재현 할 수없는 예를 제시 할 때 대답을 찾기가 쉽지 않습니다. 그러나 사용 된 데이터 세트는 상당히 크고 그러한 예제를 만드는 것이 쉽지 않습니다. – Wraf

1

이 솔루션은 작동합니다 dir_path 당신이 저장되어있는 파일 디렉토리입니다

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

, fileHR.tif는 고해상도 파일, fileLR.tif가 낮은 resoltion 파일입니다 .