2011-08-24 2 views
3

사과를 조정합니다. 내 코드는이지도를 (색상이 제가 위에서 그것을위한 코드를 삽입하지 않은 경우에도 더 나은 기능을보고 하였다)x 및 y는 거꾸로 RGL와

enter image description here

문제가 있다는 것입니다 제공

library(rgl) 
dem1 = read.table(file="file.txt",skip=5,header=F,na.strings="0.") 
dem = dem1[order(dem1$V1,dem1$V2),] 
z = matrix(dem$V3,nrow=1250,ncol=1250) 
is.na(z) = (z < 200) 

#create x y dimensions 
x=4*(1:nrow(z)) 
y=4*(1:ncol(z)) 

open3d() 
bg3d("white") 
persp3d(x,y,z) 

입니다 내가이지도에 어떤 일을하든 그것은 x가 y이어야하고 y는 서쪽 (0)에서 동쪽 (5000)으로가는 것이지만 높이가있는 특성이 실제로는 아래쪽 왼쪽이되어야한다는 것과 반대가되어야합니다. 오른쪽 하단.

나는 바닥에 우측 축과 가장 상승 지역을 얻을 수있는

enter image description here

를 제공하고이 스크립트

dem=read.table("file.txt",header=F,skip=5,na.strings="0.") 
library(lattice) 
contourplot(dem$V3 ~ dem$V1+dem$V2) 

와 같은 파일을 사용하여 매우 간단한 등고선을 그려 왼쪽으로 정확히 있어야하므로 데이터에 문제가 없습니다.

나는 데이터가 here 보이는 방법을 설명하고 내가

dem = dem1[order(dem1$V1,dem1$V2),] 

으로 순서를 변경해야 할 필요성을 느끼고 왜 이상한 것은 내가 3 차원 표면지도 정확히 같은 모양 위의 명령 사용 여부이다 코드가 실제로 order 명령으로 생성 된 "dem"데이터 세트를 사용하고 있는지 또는 파일에서 읽은 잘못된 "dem1"데이터를 여전히 사용하고 있는지 궁금하게 생각합니다.

요청시 데이터를 보내 주시거나 어딘가에 놓아두면 매우 기쁩니다. 그러나 1250 행 x1250 행만큼 여기에서 복사 할 수는 없습니다.

미리 감사드립니다.

+1

이것은 'z' 행렬을 구성하는 방식 때문이 아닙니다. R은 행이 아닌 열로 채 웁니다. 'z <- matrix (dem $ V3, nrow = 1250, ncol = 1250, byrow = TRUE)'가 작동하는지 확인하십시오. 그것은'contourplot()'과'persp3d()'에서 사용되는 것 사이에서 볼 수있는 유일한 차이입니다. –

+0

예! 정말 고맙습니다! 방금 하루 종일 보냈습니다. 나는 분명히 실종 된 것 같아 ... – SnowFrog

+0

예, 그렇습니다. 'z <- matrix (dem $ V3, nrow = 1250, ncol = 1250, byrow = TRUE)'라고 써야했습니다. – SnowFrog

답변

2

문제는 높이의 행렬 인 z이 생성되는 문제입니다. R은 행렬을 작성할 때 행별로 행렬을 채 웁니다. 표고가 서로에 대해 상대적으로 재 배열되는 것은이 충만입니다. 이것은 행렬이 정사각형이라는 사실에 더 해줍니다. 행렬이 정사각형이 아니면 x, yz 사이의 관계는 뒤집힌 것이 아니라 더 현저하게 변경됩니다. 용액은 R이 매트릭스를 행 (row)으로 채우도록해야한다. 예를 들어. 다음을 사용하여 z을 정의하십시오 :

z <- matrix(dem$V3, nrow=1250, ncol=1250, byrow = TRUE) 
관련 문제