2015-07-27 38 views
6

Tôi đã thu thập một số dữ liệu ở khoảng cách cố định R và cho các theta khác nhau (từ trục dọc) và phi (từ trục x) để thu được đại diện 3D về số lượng quan tâm. Xin lưu ý rằng trong khi phi kéo dài 360 °, theta chỉ kéo dài từ 70 ° đến 90 °.Các ô đường viền trên bề mặt hình cầu

Tôi biết cách tạo lô đất 3D với gói plot3D (cụ thể là hàm persp3D) hoặc đường viền, nhưng tôi muốn vẽ các đường bao như vậy qua một hình cầu sử dụng thông tin góc theta và phi góc.

Bạn vui lòng chỉ cho tôi nguồn tài nguyên trực tuyến thích hợp nơi tôi có thể tìm thấy giải pháp phù hợp không?

Rất cám ơn và Trân trọng

Nicola

+3

Hãy cho chúng tôi một số dữ liệu để chơi với !! – Robert

+0

@Robert, tôi có nên bao gồm một tệp tài khoản dropbox được chia sẻ hay tôi chỉ nên viết một số dữ liệu trong bài đăng? –

Trả lời

2

Đây không phải là chính xác một đại diện 3d (ví dụ trong rgl), nhưng có lẽ nó giúp bạn bắt đầu:

library(maps) 
library(mapproj)   
library(akima) 

set.seed(11) 
n <- 500 
x <- runif(n, min=-180,max=180) 
y <- runif(n, min=-90,max=90) 
z <- x^2+y^3 

PARAM <- NULL 
PROJ <- "orthographic" 
ORIENT <- c(45,15,0) 
XLIM <- c(-180, 180) 
YLIM <- c(-90, 90) 

nlevels=20 
pal <- colorRampPalette(
    c("purple4", "blue", "cyan", "yellow", "red", "pink")) 
map("world", col=NA, param=PARAM, proj=PROJ, orient=ORIENT, xlim=XLIM, ylim=YLIM) 
P <- mapproject(x,y) 
incl <- which(!is.na(P$x)) 
Field <- interp(P$x[incl],P$y[incl],z[incl], 
    xo=seq(min(P$x[incl]), max(P$x[incl]), length = 100), 
    yo=seq(min(P$y[incl]), max(P$y[incl]), length = 100) 
) 
image(Field, add=TRUE, col=pal(nlevels)) 
points(P$x, P$y, pch=".", cex=2, col=4) 
Cont <- contour(Field, add=TRUE, n=nlevels, col="white") 
lines(sin(seq(0,2*pi,,100)), cos(seq(0,2*pi,,100)), lwd=3) 

enter image description here

+0

Đánh dấu, cảm ơn bạn đã trả lời. Tôi sẽ chạy mã của bạn và xem điều gì xảy ra. Tuy nhiên, tôi thấy một chút độ phân giải kém trong biên giới của hình ảnh: có phải là nội tại của phương pháp hay liệu nó có phụ thuộc vào số điểm mẫu không? –

+0

@NicolaPasquino - Trong trường hợp này, đó chỉ là do phân phối dữ liệu. Một phương pháp chính xác hơn sẽ là sử dụng [nội suy spline tấm mỏng] (http://menugget.blogspot.de/2012/03/xyz-geographic-data-interpolation-part.html). Đây là phương pháp "nhanh chóng và bẩn" được đề cập trong liên kết. –

Các vấn đề liên quan