х у координаты вверх ногами с ргл - PullRequest
3 голосов
/ 24 августа 2011

Извиняюсь, если я упускаю очевидное ...

Я строю трехмерную поверхность с помощью rgl. Мой код

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)

, которая дает эту карту (цвет был добавлен, чтобы лучше видеть возможности, хотя я не поместил код для этого выше)

enter image description here

Проблема в том, что все, что я делаю с этой картой, она перевернута, т. Е. Х должен быть у, а то, что сейчас у, идет с запада (0) на восток (5000), но это должно быть наоборот, так что повышенный элемент на самом деле должно быть внизу слева, а не внизу справа.

Я нарисовал очень простую контурную карту, используя тот же файл с этим сценарием

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

что дает

enter image description here

и который получает правые оси и самую возвышенную область в левом нижнем углу, именно там, где и должно быть, поэтому с данными нет проблем.

Я объясняю, как данные выглядят здесь и почему я чувствую необходимость изменить их порядок с

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

Странно то, что я использую приведенную выше команду или нет, карта трехмерной поверхности выглядит точно так же, что заставляет меня задуматься, действительно ли код использует набор данных "dem", созданный с помощью команды order, или это все еще используя исходные данные "dem1", которые он прочитал из файла и находится в неправильном порядке.

Я очень рад отправить данные по запросу или поместить их куда-нибудь, это можно увидеть, но я не могу скопировать их здесь, поскольку это 1250 строк x1250 столбцов.

Заранее спасибо!

1 Ответ

2 голосов
/ 24 августа 2011

Проблема с созданием z, матрицы высот. R заполняет матрицы столбцами при создании матриц. Именно это заполнение столбцами переставляет возвышения относительно друг друга. Это усугубляется тем, что матрица является квадратной. Если бы матрица не была квадратной, отношения между x, y и z изменились бы более заметно, а не просто перевернулись.

Решение состоит в том, чтобы R заполнял матрицу строками, например, определить z используя:

z <- matrix(dem$V3, nrow=1250, ncol=1250, byrow = TRUE)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...