2011-10-18 4 views
4

여러 개의 다각형이 있습니다 &이 다각형 내의 여러 래스터 레이어에서 평균값을 추출하고 싶습니다. ArcMap에 이들을 추가하면 두 데이터 유형의 투영이 일치하지 않는다는 것을 알게되었습니다. Project 도구 (데이터 관리 도구 상자> 투영 및 변환 도구 세트> 래스터)를 사용하여 ArcGIS의 디스플레이 문제를 해결할 수있었습니다.Raster & Polygons in R 좌표계 참조 시스템

for (i in 1:length(poplist)) 
{pop_kernels[i]<-readShapeSpatial(poplist[i],repair=TRUE,proj4string=CRS("+proj=utm +ellps=WGS84 +datum=WGS84 +units=m")) 
pop_kernels[[i]]<-unionSpatialPolygons(pop_kernels[[i]],ID=c(rep(1,times=length(pop_kernels[[i]])-1),0),threshold=NULL,avoidGEOS=FALSE)} 

> str(pop_kernels[[1]]) 
    Formal class 'SpatialPolygons' [package "sp"] with 4 slots 
     [email protected] polygons :List of 2 
     .. ..$ :Formal class 'Polygons' [package "sp"] with 5 slots 
     .. .. .. [email protected] Polygons :List of 2 
     .. .. .. .. ..$ :Formal class 'Polygon' [package "sp"] with 5 slots 
     .. .. .. .. .. .. [email protected] labpt : num [1:2] 2404422 893343 
     .. .. .. .. .. .. [email protected] area : num 1.15e+12 
     .. .. .. .. .. .. [email protected] hole : logi FALSE 
     .. .. .. .. .. .. [email protected] ringDir: int 1 
     .. .. .. .. .. .. [email protected] coords : num [1:1625, 1:2] 2551236 2533236 2533236 2523236 2523236 ... 
     .. .. .. .. .. .. .. ..- attr(*, "dimnames")=List of 2 
     .. .. .. .. .. .. .. .. ..$ : NULL 
     .. .. .. .. .. .. .. .. ..$ : chr [1:2] "x" "y" 
     .. .. .. .. ..$ :Formal class 'Polygon' [package "sp"] with 5 slots 
     .. .. .. .. .. .. [email protected] labpt : num [1:2] 2468549 865776 
     .. .. .. .. .. .. [email protected] area : num 6.31e+11 
     .. .. .. .. .. .. [email protected] hole : logi TRUE 
     .. .. .. .. .. .. [email protected] ringDir: int -1 
     .. .. .. .. .. .. [email protected] coords : num [1:1385, 1:2] 2551236 2551236 2563236 2563236 2569236 ... 
     .. .. .. .. .. .. .. ..- attr(*, "dimnames")=List of 2 
     .. .. .. .. .. .. .. .. ..$ : NULL 
     .. .. .. .. .. .. .. .. ..$ : chr [1:2] "x" "y" 
     .. .. .. [email protected] plotOrder: int [1:2] 1 2 
     .. .. .. [email protected] labpt : num [1:2] 2404422 893343 
     .. .. .. [email protected] ID  : chr "0" 
     .. .. .. [email protected] area  : num 1.15e+12 
     .. ..$ :Formal class 'Polygons' [package "sp"] with 5 slots 
     .. .. .. [email protected] Polygons :List of 1 
     .. .. .. .. ..$ :Formal class 'Polygon' [package "sp"] with 5 slots 
     .. .. .. .. .. .. [email protected] labpt : num [1:2] 2468549 865776 
     .. .. .. .. .. .. [email protected] area : num 6.31e+11 
     .. .. .. .. .. .. [email protected] hole : logi FALSE 
     .. .. .. .. .. .. [email protected] ringDir: int 1 
     .. .. .. .. .. .. [email protected] coords : num [1:1385, 1:2] 2551236 2541236 2541236 2529236 2529236 ... 
     .. .. .. .. .. .. .. ..- attr(*, "dimnames")=List of 2 
     .. .. .. .. .. .. .. .. ..$ : NULL 
     .. .. .. .. .. .. .. .. ..$ : chr [1:2] "x" "y" 
     .. .. .. [email protected] plotOrder: int 1 
     .. .. .. [email protected] labpt : num [1:2] 2468549 865776 
     .. .. .. [email protected] ID  : chr "1" 
     .. .. .. [email protected] area  : num 6.31e+11 
     [email protected] plotOrder : int [1:2] 1 2 
     [email protected] bbox  : num [1:2, 1:2] 1819236 207017 3013236 1577017 
     .. ..- attr(*, "dimnames")=List of 2 
     .. .. ..$ : chr [1:2] "x" "y" 
     .. .. ..$ : chr [1:2] "min" "max" 
     [email protected] proj4string:Formal class 'CRS' [package "sp"] with 1 slots 
     .. .. [email protected] projargs: chr " +proj=utm +ellps=WGS84 +datum=WGS84 +units=m +towgs84=0,0,0" 

는 I가 플롯 수

의 Raster :

for (i in 1:length(rasterlist1)) 
{ndvi_raster_stack1[i]<-raster(rasterlist1[i]) 
raster::NAvalue(ndvi_raster_stack1[[i]])<--999 
projection(ndvi_raster_stack1[[i]])<-"+proj=utm +ellps=WGS84 +datum=WGS84 +units=m"} 

> ndvi_raster_stack1[[1]] 
class  : RasterLayer 
dimensions : 226, 150, 33900 (nrow, ncol, ncell) 
resolution : 0.57504, 0.5753628 (x, y) 
extent  : -28.728, 57.528, -55.08, 74.952 (xmin, xmax, ymin, ymax) 
coord. ref. : +proj=utm +ellps=WGS84 +datum=WGS84 +units=m +towgs84=0,0,0 
values  : Z:\master\lusmeg_sw_kernel_data\ndvi0910\Y2008_P47.tif 
min value : -91 
max value : 550.8125 

다각형 그래서 (코드의 일부) 다음과 같이 R로 데이터를로드하여, 투영을 표준화하려고 다각형 및 래스터는 별도로 배치되지만, 래스터를 통해 다각형 중 하나를 플롯하려고하면 다각형이 표시되지 않습니다.

plot(ndvi_raster_stack1[[1]],xlab="Longitude",ylab="Latitude") 
plot(pop_kernels[[1]],col="black",add=TRUE) 

그들은 여전히 ​​"중첩"하지 않는 것 같습니다. 이것은 또한 다른 경계 상자로 표시됩니다, 내 생각 : 나는 다각형 내에서 래스터 값을 추출 할 때문에

> bbox(ndvi_raster_stack1[[1]]) 
     min max 
s1 -28.728 57.528 
s2 -55.080 74.952 

> bbox(pop_kernels[[1]]) 
     min  max 
x 1819236 3013236 
y 207017 1577017 

, 나는 그들이 올바른 방법으로 참조되어 있는지 확인해야합니다. 누군가가 문제의 원인을 알고 있습니까?

답변

7

다각형 모양 파일에는 좌표계가 없습니다. 이는 길이가 길지 않습니다. 숫자는 매우 크고 일부 시스템에서는 미터 일 수 있습니다. proj4string을 할당하면 lat-long으로 데이터를 재 투영하지 않고 단지 그것이 생각하는 좌표의 레이블을 설정합니다. 이 경우, 그 잘못!

다각형이 그 안에 들어있는 숫자에 대해 올바른 proj4string을 가져야합니다. - .shp 및 .dbf와 함께 [shapefile] .prj 파일이있을 수 있습니다. 그것에 proj4string을 설정하십시오.

그런 다음 sp 또는 rgdal의 spTransform을 사용하여 다각형을 lat-long WGS84 좌표로 투영 할 수 있습니다.

래스터 좌표를 잘못 사용하면 지저분한 전체 격자를 다시 투영 할 수 있기 때문에 항상 폴리곤을 래스터 좌표로 변환하는 것이 가장 좋습니다.