Thủ thuật R không gian hữu ích nhất là gì?


44

R đang trở thành công cụ khá mạnh để xử lý và phân tích dữ liệu không gian. Tôi đã học được một số điều hữu ích thông qua các câu hỏi như thế này tại SO và nghĩ rằng nó có thể hữu ích khi có một cái gì đó tương tự, nhưng theo định hướng 'không gian' hơn.

Bạn có thể chia sẻ một số mẹo và thủ thuật R không gian mà bạn thấy hữu ích không?


5
wiki cộng đồng?
relet


ack. Cảm ơn. Tôi tin rằng tôi đã nhìn thấy cái đó, nhưng nó rất dễ quên.
relet

3
Ngoài ra: rspatialtips.org.uk
radek

Tôi nghĩ rằng đây cũng nên là một wiki cộng đồng vì nó đã trở thành một danh sách các loại.
RK

Câu trả lời:


38

Đây không phải là một mẹo quá nhiều vì nó là spplot()chức năng tích hợp tiện lợi. spplot()Khả năng chia tỷ lệ swatches huyền thoại (để khớp phạm vi phá vỡ phân loại) đóng vai trò là một công cụ sư phạm hữu ích khi thảo luận về các loại phân loại và phân loại dữ liệu thuộc tính. Kết hợp các lô phân phối tích lũy với các bản đồ sẽ giúp trong nỗ lực này.

nhập mô tả hình ảnh ở đây nhập mô tả hình ảnh ở đây

Các sinh viên chỉ cần sửa đổi một vài tham số tập lệnh để khám phá các loại phân loại và hiệu ứng chuyển đổi dữ liệu. Đây thường là bước đột phá đầu tiên của họ vào R trong khóa học tập trung chủ yếu vào ArcGIS.

Đây là một đoạn mã:

library(rgdal) # Loads SP package by default
NE = readOGR(".", "NewEngland") # Creates a SpatialPolygonsDataFrame class (sp)

library(classInt)
library(RColorBrewer)
pal = brewer.pal(7,"Greens")
brks.qt = classIntervals(NE$Frac_Bach, n = 7, style = "quantile")
brks.jk = classIntervals(NE$Frac_Bach, n = 7, style = "jenks")
brks.eq = classIntervals(NE$Frac_Bach, n = 7, style = "equal")

# Example of one of the map plots
spplot(NE, "Frac_Bach",at=brks.eq$brks,col.regions=pal, col="transparent",
       main = list(label="Equal breaks"))
# Example of one of the cumulative dist plots
plot(brks.eq,pal=pal,main="Equal Breaks")

Tham chiếu: Phân tích dữ liệu không gian ứng dụng với R (R. Bivand, E Pebesma & V. Gomez-Rubio)


1
rất tuyệt! Điều đó có vẻ rất hữu ích.
djq

2
PolyGeo hút như một người điều hành
Bên dưới Radar

28

EDIT: lưu ý điều này không còn hoạt động 2018-10-24, do các yêu cầu mới cho các nguồn bản đồ google.

Tôi đã rất vui khi tìm thấy gói tháo gỡ với mã hóa địa lý và tải xuống bản đồ google:

library(dismo)
x <- geocode('110 George Street, Bathurst, NSW, Australia')
a <- x[5:8] + c(-0.001, 0.001, -0.001, 0.001)
e <- extent(as.numeric(a))
g <- gmap(e, type = "satellite")

plot(g)

Đó là trong R 2.12.0 trên Windows, việc cài đặt tháo gỡ và các phụ thuộc của nó ở đó là không đáng kể, không chắc chắn trên các hệ thống khác.

văn bản thay thế


1
Điều này có vẻ rất hữu ích - tuy nhiên, tôi đang gặp vấn đề với e <- extent(x[4:7] + c(-0.001, 0.001, -0.001, 0.001))quảng cáo dòng tôi nhận được thông báo lỗi Error: c("x", "y") %in% names(x) is not all TRUE. x[4:7]có vẻ tốt mặc dù; bất kỳ suy nghĩ về những gì vấn đề có thể được?
djq

Có, bạn cần một ví dụ có thể tái tạo
mdsumner

Tôi đang cố gắng tái tạo ví dụ trong câu trả lời này và nó không hoạt động. x <- geocode('110 George Street, Bathurst, NSW, Australia')trả về ZERO_RESULTSví dụ và khi tôi sử dụng một ví dụ trả về lat / long, hàme <- extent(x[4:7] + c(-0.001, 0.001, -0.001, 0.001)) also fails.
djq

Có thể có một cách thanh lịch hơn để làm điều này, nhưng extentđòi hỏi một vectơ số. Vì vậy, điều này làm việc e <- extent(c(x[,4], x[,5], x[,6], x[,7]) + c(-0.001, 0.001, -0.001, 0.001)).
djq

2
Sau đây cũng hoạt động:e <- extent(as.numeric(x[4:7]) + c(-0.001, 0.001, -0.001, 0.001))
snth


11

Cũng không phải là một mẹo nhưng đây là một số tài nguyên / ví dụ tôi đã thu thập được

Một ví dụ về vẽ sơ đồ nhiều dữ liệu Areal trong R bằng cách sử dụng gói mạng tinh thể.

Có một vài câu hỏi trên StackOverflow hỏi về ánh xạ và R, và đây là một câu hỏi với một ví dụ hay. Tôi sẽ xem xét các câu trả lời khác và các tài nguyên họ cung cấp (cũng như tìm kiếm thêm một số ví dụ) trên SO.

Một liên kết khác đến cùng nhóm r-sig-Geo mà Brad đã đưa ra. Nó rất tích cực và Roger Bivand trả lời các câu hỏi thực tế mỗi ngày trong nhóm. Cả hai liên quan đến lập trình và phân tích thống kê.

Bên cạnh việc kiểm tra trang không gian cran, tôi cũng đề nghị kiểm tra cụ thể trang Spatstat được duy trì bởi Adrian Baddeley. Rất nhiều ví dụ, một khóa học và một cuốn sách điện tử sắp xuất bản. (Hiện tại tôi đã trải qua khóa học spatstat , và tôi nghĩ đó là một giới thiệu nhẹ nhàng hơn nhiều so với cuốn sách Bivand).

Không phải là tài nguyên miễn phí, nhưng đối với bất kỳ ai quan tâm đến RI sẽ đề nghị bạn kiểm tra Sử dụng R! loạt của Springer. Cuốn sách có Ứng dụng Phân tích dữ liệu không gian ứng dụng với R trực tiếp thích hợp (cũng là cuốn sách Hướng dẫn cho người mới bắt đầu về R là cuốn sách học R được đề xuất của tôi.)

Sách điện tử miễn phí, Hướng dẫn thực hành về lập bản đồ địa lý (Hengl 2009), có các ví dụ về các công cụ địa lý ứng dụng trong R, GRASS và Google Earth (KML).

Nếu tôi tìm thấy các ví dụ tốt nữa, tôi sẽ tiếp tục cập nhật (tôi hy vọng người khác cũng đăng các ví dụ hay!)


Cảm ơn Andy. Tôi thích ví dụ mạng tinh thể. Hoàn toàn đồng ý về Bivand et al. cuốn sách - tài nguyên tuyệt vời.
radek

10

Đối với phân tích raster gói raster là vô cùng mạnh mẽ. Bên cạnh hướng dẫn tiêu chuẩn, có một vài họa tiết để bắt đầu.


Đối với mọi thứ mà gói raster không thể xử lý vì nó hoạt động với RAM, bạn có thể xem xét gdal_Utlis cung cấp chức năng trình bao bọc để sử dụng gdal cho phép bạn xử lý các tệp lớn.
joaoal

7

Tôi không phải là người dùng PostGIS, nhưng sau khi đề xuất đa giác Voronoi cho câu hỏi hàng xóm gần nhất , tôi đã tìm kiếm một chút. Tôi thấy rằng với R, bạn có thể tạo đa giác Voronoi cho PostGIS . Tôi rất ấn tượng.


Tôi chắc chắn có nhiều cách dễ dàng hơn những gì tôi sẽ đề xuất, nhưng bạn có thể tạo T shipations trong gói spatstat, sau đó chuyển đổi tessđối tượng đó thành một spđối tượng sử dụng chức năng này do Adrian Baddeley cung cấp. Từ một spđối tượng bạn có thể xuất nó thành một shapefile nếu bạn muốn.
Andy W

5

Tôi tình cờ gặp Spatial-Analyst.net . Rất nhiều thông tin, toàn diện và hữu ích. Cụ thể hơn cho câu hỏi này và nội tuyến với một số câu trả lời trước đó, xem trang này .



4

Với chức năng này, bạn có thể dễ dàng thực hiện các phép nối không gian, nhưng chỉ khi tất cả các khu vực được lấp đầy bởi đa giác.

library(rgeos)
library(sp) 
library(maptools)
library(rgdal)
library(sp)
xy.map <- readShapeSpatial("http://www.udec.cl/~jbustosm/points.shp")
manzana.map <- readShapeSpatial("http://www.udec.cl/~jbustosm/manzanas_from.shp" )

IntersectPtWithPoly <- function(x, y) { 
# Extracts values from a SpatialPolygonDataFrame with SpatialPointsDataFrame, and appends table (similar to 
# ArcGIS intersect)
# Args: 
#   x: SpatialPoints*Frame
#   y: SpatialPolygonsDataFrame
# Returns:
# SpatialPointsDataFrame with appended table of polygon attributes

  # Set up overlay with new column of join IDs in x
  z <- overlay(y, x)

  # Bind captured data to points dataframe
  x2 <- cbind(x, z)

  # Make it back into a SpatialPointsDataFrame 
  # Account for different coordinate variable names 
  if(("coords.x1" %in% colnames(x2)) & ("coords.x2" %in% colnames(x2))) {
    coordinates(x2) <- ~coords.x1 + coords.x2  
  } else if(("x" %in% colnames(x2)) & ("x" %in% colnames(x2))) {
    coordinates(x2) <- ~x + y 
  }

  # Reassign its projection if it has one
  if(is.na(CRSargs(x@proj4string)) == "FALSE") {
    x2@proj4string <- x@proj4string  
  }
  return(x2)
}


test<-IntersectPtWithPoly (xy.map,manzana.map)

3

Ví dụ về phân tích mẫu điểm:

#Load library
library(spatstat) 
#create some coordinates        
x=c(78,120,150,17,20,402) 
#prepare the window range      
y=c(70,103,100,205,200,301)
win=owin(range(x),range(y)) 
#create the point pattern
p <- ppp(x,y,window=win)
#Plot it
plot(p) 

Tạo một mô hình điểm và mô tả nó. Các spatstat gói có một số chức năng để phân tích dữ liệu địa lý. Dưới đây là một số hướng dẫn spatstat :


1

Không chắc chắn liệu điều này có đủ điều kiện là một "mánh khóe" hay không, nhưng tôi là một fan hâm mộ lớn của sự kết hợp của acsgói (để chọn dữ liệu Điều tra dân số Hoa Kỳ) và leafletgói (để tạo bản đồ javascript tương tác có thể được lưu trữ trực tuyến).

Đây hướng dẫn thực hiện một công việc tuyệt vời minh họa lợi ích của việc sử dụng hai gói này lại với nhau.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.