2011-12-06 29 views
6

Tôi tự hỏi nếu nó có thể caclulate khu vực này trong vòng một đường viền trong R.Làm cách nào để tính diện tích trong một đường bao trong R?

Ví dụ, diện tích của đường viền đó là kết quả của:

sw<-loess(m~l+d) 
mypredict<-predict(sw, fitdata) # Where fitdata is a data.frame of an x and y matrix 

contour(x=seq(from=-2, to=2, length=30), y=seq(from=0, to=5, length=30), z=mypredict) 

Xin lỗi, tôi biết mã này có thể được phức tạp. Nếu nó quá khó đọc. Bất kỳ ví dụ nào bạn có thể chỉ cho tôi cách tính diện tích của một đường bao được tạo ra đơn giản sẽ hữu ích.

Cảm ơn bạn đã được trợ giúp.

+1

Bạn có nghĩa là khu vực * trong * một đường bao không? – Phonon

+0

Đường bao được định nghĩa như thế nào (ví dụ) ... bạn muốn khu vực nào? Nếu bạn đã có tọa độ của một ranh giới nó tương đối dễ dàng. – John

+0

Có. Khu vực trong một đường bao. @ John: Tôi sẽ chỉnh sửa một ví dụ về câu hỏi ban đầu của tôi. –

Trả lời

5

Nhờ @DWin ví dụ tái sản xuất, và các tác giả của sos (gói R yêu thích của tôi!) Và splancs ...

library(sos) 
findFn("area polygon compute") 
library(splancs) 
with(clines[[9]],areapl(cbind(x,y))) 

Gets câu trả lời tương tự như @DWin, đó là an ủi. (Có lẽ đó là cùng một thuật toán, nhưng được thực hiện trong một thói quen Fortran trong gói splancs ...)

+2

Tôi không xứng đáng nhận được nhiều tín dụng vì tôi chỉ đến trang 'help (contourlInes)' và lấy ví dụ ở đó. @BurtonGuster nên cảm thấy tự do để cung cấp cho Ben dấu kiểm. Tôi có lẽ nên tặng một vài nghìn điểm cho Ben cho tất cả những công việc tốt ông đã đăng ở đây và trên danh sách gửi thư R-help. Tương tự như vậy với Hadley và Gabor Grothendeick –

+0

Tôi đồng ý với @DWin – Andrie

+0

@DWin và Ben: Cảm ơn sự giúp đỡ! –

6

Tôi sẽ giả sử bạn đang làm việc với một đối tượng được trả về bởi contourLines. Tôi đã mong đợi để tìm thấy điều này trong một dễ dàng để truy cập vị trí nhưng thay vì tìm thấy một tập tin pdf cung cấp một thuật toán mà tôi mơ hồ nhớ nhìn thấy http://finzi.psych.upenn.edu/R/library/PBSmapping/doc/PBSmapping-UG.pdf (Xem pdf trang 19, có nhãn " -11- ") (Added lưu ý: các bài viết trên Wikipedia về "đa giác" trích dẫn cuộc thảo luận này của Formula của khảo sát: http://www.maa.org/pubs/Calc_articles/ma063.pdf, mà biện minh sử dụng của tôi abs().)

Xây dựng một ví dụ:

x <- 10*1:nrow(volcano) 
y <- 10*1:ncol(volcano) 
contour(x, y, volcano); 
clines <- contourLines(x, y, volcano) 
x <- clines[[9]][["x"]] 
y <- clines[[9]][["y"]] 
level <- clines[[9]][["level"]] 
level 
#[1] 130 

Khu vực ở mức == 130 (được chọn vì không có hai cấp độ 130 và không đáp ứng bất kỳ ranh giới lô đất nào):

A = 0.5* abs(sum(x[1:(length(x)-1)]*y[2:length(x)] - y[1:(length(x)-1)]*x[2:length(x)])) 
A 
#[1] 233542.1 
Các vấn đề liên quan