Gói sp
cung cấp một số lớp cho các khái niệm không gian khác nhau (điểm, đường, đa giác). Đối với một số lớp học, việc truy cập các tọa độ tính năng rất đơn giản, ví dụ: . Tất cả các ví dụ được lấy từ các trang trợ giúp của lớp tương ứng.Trích xuất tọa độ tính năng từ SpatialPolygons và các lớp sp khác
l1 = cbind(c(1,2,3),c(3,2,2))
l1a = cbind(l1[,1]+.05,l1[,2]+.05)
l2 = cbind(c(1,2,3),c(1,1.5,1))
Sl1 = Line(l1)
Sl1a = Line(l1a)
Sl2 = Line(l2)
S1 = Lines(list(Sl1, Sl1a), ID="a")
S2 = Lines(list(Sl2), ID="b")
Sl = SpatialLines(list(S1,S2))
coordinates(Sl)
# [prints a list of two with corresponding segments]
Để SpatialPolygons
, coordinates()
trả về các trung tâm đa giác như minh họa bên dưới.
Sr1 = Polygon(cbind(c(2,4,4,1,2),c(2,3,5,4,2)))
Sr2 = Polygon(cbind(c(5,4,2,5),c(2,3,2,2)))
Sr3 = Polygon(cbind(c(4,4,5,10,4),c(5,3,2,5,5)))
Sr4 = Polygon(cbind(c(5,6,6,5,5),c(4,4,3,3,4)), hole = TRUE)
Srs1 = Polygons(list(Sr1), "s1")
Srs2 = Polygons(list(Sr2), "s2")
Srs3 = Polygons(list(Sr3, Sr4), "s3/4")
SpP = SpatialPolygons(list(Srs1,Srs2,Srs3), 1:3)
coordinates(SpP)
[,1] [,2]
[1,] 2.696970 3.545455
[2,] 3.666667 2.333333
[3,] 6.133333 3.933333
Có chức năng tiện dụng trong các gói phổ biến có thể trích xuất tọa độ tính năng không? Tôi đã đưa ra một chức năng cho SpatialPolygons
, nhưng tôi đang tìm một cái gì đó đã được kiểm tra tốt hơn và nhất quán, có lẽ ngay cả trên hầu hết/tất cả các lớp học sp
.
getEdges <- function(x) {
stopifnot(class(x) == "SpatialPolygons")
lapply([email protected], function(y) {
[email protected][[1]]@coords
})
}
getEdges(SpP)
# [returns a list of three, coordinates in a matrix]
tôi khuyên bạn nên cuốn sách rất tốt: "Ứng dụng không gian phân tích dữ liệu với R" trong serie "Sử dụng R ! " -> http://www.springerlink.com/content/978-0-387-78171-6#section=147788&page=1 – Pop
Nói chung, không nên sử dụng '@ property' để trích xuất nội dung. Đây là tổ chức nội bộ của đối tượng, có thể thay đổi mà không cần thông báo. –