2017-04-15 7 views
1

2 개의 높이에 해당하는 2 개의 레이어가있는 래스터 스택이 있습니다. 모든 레이어는 Lon 및 Lat 좌표 값이 1 인 래스터입니다 (누락 값은 모두 NA 임). 다각형을 형성합니다. RasterStack example3D 래스터 스택 플롯

r1<-raster(xmn = 2.5, xmx = 3.3, ymn = 42, ymx = 42.5, nrows = 28, ncols = 33) 
r2<-raster(xmn = 2.5, xmx = 3.3, ymn = 42, ymx = 42.5, nrows = 28, ncols = 33) 

a<-c(421, 422, 424, 453, 454, 455, 456, 457, 485, 486, 487, 488, 489, 513, 514, 515, 516, 517, 518, 519, 546, 547, 548, 549, 550, 579, 580, 581, 582, 583, 613, 614, 615, 646, 647, 648, 649, 680, 681, 682) 
r1[a]<-1 
b<-c(514, 515, 516, 547, 548, 549, 550, 613, 614, 615, 647, 648, 649) 
r2[b]<-1 

st<-stack(r1,r2) 

층에 따라 다른 고도에있는 모든 다각형을 보여주는 3D 그래프를 만들 수있는 방법이 있습니까? (x = LON, Y = LAT, Z = nlayer)

레이어 1과 레이어 2에 대해 scatter3D 플롯을 얻었으나, 전체 수직선 내에서 영역이 겹치는 것을 확인하기 위해 다각형으로 표시하고 싶습니다.

+0

는 R 태그 위에 마우스를 올려주십시오 시도해 볼 수도 있습니다 - 그것은 금주 모임 요청) 한 현재 상태 문제를 사용하여 복사본을 다시 만들 수있는, B) 재현 예 및 최소를, 붙여 넣기, 실행. 아마도 당신은'라이브러리 (래스터), 라이브러리 (플롯 3D), 라이브러리 (rgl), slogo <- stack (system.file ("external/rlogo.grd", package = "raster")); f <- function (x = 0, add = FALSE), x = 0, add = FALSE (slogo [1]), 0 * 1000, F (slgo [1]), persp3d (z = x + offset, zlim = c (0,3000), col = "lightblue", add =), f (slogo [3], 1 * 1000, T); f (slogo [3], 2 * 1000, T)'? – lukeA

+0

고마워요! 그게 내가 원하는거야. – ADM

+0

@lukeA 아직 문제가 있습니다. 3D 플롯이 원래 다각형의 모양을 변경하는 이유는 무엇입니까? (위의 재현 가능한 예제 코드 줄을 첨부했습니다). 단순한 "플롯"기능을 사용하여 "r1"래스터를 그렸습니다. 그러면 다각형에 문제가있는 것 같습니다. – ADM

답변

0

당신은

library(raster) 
library(plot3D) 
f <- function(x, offset=0, add=FALSE) { 
    poly <- rasterToPolygons(x, dissolve = T) 
    coords <- [email protected][[1]]@Polygons[[1]]@coords 
    polygon3D(
    x=coords[,1], 
    y=coords[,2], 
    z=rep(offset,nrow(coords)), 
    xlim=lims[1:2], 
    ylim=lims[3:4], 
    zlim=lims[5:6], 
    add=add, 
    col="red", 
    theta = 0 
) 
} 
lims <- c(as(extent(st),"vector"), 0, 3000) 
f(st[[1]],0*1000,F) 
for (x in 2:nlayers(st)) 
    f(st[[x]],x*1000,T) 

enter image description here

+0

전혀 아녜요, 제가 원하는 것은 폴리곤을 그대로 그려내는 것입니다. 어쩌면 나는 3D 플롯이 어떻게 작동하는지 이해할 수 없지만, 폴리곤이 연속적으로 보이고 (세포가 잘 연결되어있는 것처럼) st [1]에 대한 간단한 플롯에서 왜 "persp3d" "함수는이 연결이 사라지고 st [[1]]이 두 개의 다른 영역으로 표시됩니다. – ADM

+0

아마도'rasterToPolygons'을 가지고 놀고 싶을 것입니다. 제 편집을보십시오. – lukeA

+0

https://gis.stackexchange.com 참고,이 문제에 더 적합 할 수도 있습니다. – lukeA