2014-05-20 1 views
4

60 개의 래스터 파일 세트에서 후속 다 변수 통계 분석 (예 : PCA)에 사용할 큰 (공간적) 데이터 프레임을 만들려고합니다.R의 래스터 파일에 지리적 투영법을 적용하려면 어떻게해야합니까?

저는 R에서 공간 데이터를 사용하는 것에 다소 익숙하며 데이터 파일에서 공간 좌표 데이터가 유지되거나 유지되지 않는 방법을 이해하지 못합니다. 내가 파일을 가져올 때

#load libraries 
library(raster) 
library(sp) 
library(rgdal) 
library(spatial.tools) 

#set wd 
setwd("C:/Users/...../data/") 

#get raster files from wd 
files <- list.raster.files(path = getwd(), pattern = ".tif$", recursive =FALSE, return_rasters = FALSE, return_bbox = FALSE) 

#create rasterStack 
mystack <- stack(files$raster_files) 

#read metadata/summary of rasterStack 
mystack 
#output has "NA" for coordinate reference system. 

왜 R이 spaital 참조 정보를 잃지 않았다

나는 래스터 파일에 읽고 그들로부터 스택을 만들려면 다음 코드를 사용? ArcGIS의 래스터 파일을 보면 확실히 투영 정보가 있습니다.

나는 수동 방식으로 투사를 적용하려고 :

#first define the projection using the proj4 syntax 
projection <- "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0 +k=1.0 +units=m [email protected] +wktext +no_defs" 

#then apply the projection to the rasterStack 
projectRaster(files, projection, method = bilinear, filename = "STACKprj") 

이 나에게 입력 데이터 ("mystack")를 refernece 시스템으로 NA있다, 즉, 작동 할 수없는 오류를 제공합니다 시작 참조 시스템이없는 경우

#I try instead to apply the projection in this way: 
STACKprj <- projection(mystack) 

작동하지 않습니다.

팁이 있습니까? 고맙습니다!

+0

합니까''투사 (mystack) <- "+ PROJ = 용병 + A = 6378137 + B = 6,378,137 + lat_ts = 0.0 + lon_0 = 0.0 + x_0 = 0.0 + y_0 = 0 + k = 1.0 + 단위 = m + nadgrids = @ null + wktext + no_defs "'' –

+0

대신'projection <- CRS ("+ proj = merc + a = 6378137 + b = 6378137 ...")'; 'proj4string (mystack) <- projection' –

답변

4

당신이 뭔가를 시도해야합니다 :

library(raster) 
library(sp) 
library(rgdal) 

#work wd 
wd <- "C:/Users/...../data" 

#get raster files from work wd 
files <- list.raster.files(path = wd, pattern = ".tif$", 
    recursive =FALSE, return_rasters = FALSE, return_bbox = FALSE) 

#create rasterStack 
mystack <- stack(files$raster_files) 
proj4string(mystack) <- CRS("+init=epsg:3857") # OSM Mercator projection 
+0

Paulo에게 감사드립니다. 두 제안 모두 완벽하게 작동했습니다! – user3251223

+0

당신은 환영합니다! 나는 당신의 필요에 가장 잘 접근하는 대답을 upvote (유용한 것들)하는 것이 좋습니다. –

+0

분명히 나는 ​​upvote에 충분한 포인트가 없다! – user3251223