가장 유용한 공간 R 트릭은 무엇입니까?


44

R 은 공간 데이터를 처리하고 분석하는 데 매우 강력한 도구 가되었습니다 . 나는 질문을 통해 몇 가지 유용한 것들을 배웠 같은 이러한 SO에서하고 뭔가에 simmilar을하는 것이 유용 할 거라고 생각하지만, 더 '공간'지향.

유용한 공간 R 팁과 요령을 공유 할 수 있습니까?


5
커뮤니티 위키?
relet


ack. 감사. 나는 그 것을 보았지만 잊기 쉽다.
relet


나는 이것이 일종의 목록이 되었기 때문에 이것이 커뮤니티 위키라고 생각합니다.
RK

답변:


38

이것은 spplot()멋진 내장 기능 이기 때문에 그렇게 트릭은 아닙니다 . spplot()범례 견본을 확장 (분류 구분 범위와 일치)하는 기능은 속성 데이터 분포 및 분류 유형을 논의 할 때 유용한 교육 도구로 사용됩니다. 누적 분포도를지도와 결합하면 이러한 노력에 도움이됩니다.

여기에 이미지 설명을 입력하십시오 여기에 이미지 설명을 입력하십시오

학생들은 분류 유형 및 데이터 변환 효과를 탐색하기 위해 몇 가지 스크립트 매개 변수 만 수정하면됩니다. 이것은 주로 ArcGIS 중심 코스 인 R에서 처음으로 진출한 것입니다.

다음은 코드 스 니펫입니다.

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")

참고 : R (R. Bivand, E Pebesma & V. Gomez-Rubio)을 사용한 공간 데이터 분석 적용


1
매우 시원하다! 매우 유용합니다.
djq

2
PolyGeo는 중재자로 짜증을냅니다
레이더 아래에서

28

편집 : 구글지도 소스에 대한 새로운 요구 사항으로 인해 2018-10-24에서는 더 이상 작동하지 않습니다.

지오 코딩 및 Google지도 다운로드가 포함 된 dismo 패키지를 찾는 것이 매우 기뻤습니다.

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)

즉, Windows의 R 2.12.0에서는 다른 시스템에서 확실하지 않은 곳에 dismo 및 해당 종속성을 설치하는 것이 쉽지 않습니다.

대체 텍스트


1
이 방법은 매우 유용합니다. 그러나 e <- extent(x[4:7] + c(-0.001, 0.001, -0.001, 0.001))광고 메시지에 오류 메시지가 표시 Error: c("x", "y") %in% names(x) is not all TRUE됩니다. x[4:7]그래도 괜찮아 보인다; 문제가 무엇인지에 대한 의견이 있으십니까?
djq

예, 재현 가능한 예가 필요합니다
mdsumner

이 답변의 예를 재현하려고하는데 작동하지 않습니다. x <- geocode('110 George Street, Bathurst, NSW, Australia')반환 ZERO_RESULTS예를 들어, 나는 예를 사용할 때 리턴 위도 / 경도, 기능e <- extent(x[4:7] + c(-0.001, 0.001, -0.001, 0.001)) also fails.
djq

이 작업을보다 우아한 방법이있을 수 있지만 extent숫자 벡터가 필요합니다. 그래서 이것은 작동합니다 e <- extent(c(x[,4], x[,5], x[,6], x[,7]) + c(-0.001, 0.001, -0.001, 0.001)).
djq

2
다음도 작동합니다.e <- extent(as.numeric(x[4:7]) + c(-0.001, 0.001, -0.001, 0.001))
snth


11

또한 트릭은 아니지만 여기에 수집 한 리소스 / 예제가 있습니다.

격자 패키지를 사용하여 R에서 Areal 데이터의 작은 다중 맵 을 플로팅 하는 예입니다 .

StackOverflow에는 매핑과 R에 대해 묻는 몇 가지 질문이 있으며 여기 에 좋은 예가 있습니다. SO에 대한 다른 답변과 그들이 제공하는 리소스 (예 : 더 많은 예제 검색)도 살펴 보겠습니다.

같은 r-sig-geo 그룹 Brad에 대한 다른 링크가 이미 제공했습니다. 매우 활발하며 Roger Bivand는 매일 그룹에서 매일 질문에 답변합니다. 프로그래밍 및 통계 분석과 관련이 있습니다.

크랜 공간 페이지를 확인하는 것 외에도 Adrian Baddeley가 관리 하는 Spatstat 페이지를 확인하는 것이 좋습니다 . 많은 예, 코스 및 향후 전자 책. (현재 나는 spatstat 과정을 겪었고 Bivand 책보다 훨씬 부드러운 소개라고 생각합니다).

무료 리소스는 아니지만 RI에 관심이있는 사람은 Use R! Springer의 시리즈. R에 직접 적용되는 공간 데이터 분석 책이 있습니다 (또한 R 의 초보자 안내서 는 제가 제안한 학습 R 책입니다).

무료 e-book 인 Geostatistical Mapping에 대한 실용 안내서 (Hengl 2009)에는 R, GRASS 및 Google Earth (KML)에 적용된 지리 통계의 예가 있습니다.

더 이상 좋은 예를 찾으면 계속 업데이트 할 것입니다 (다른 사람들도 좋은 예를 게시하기를 바랍니다)


고마워 앤디. 나는 격자 예제를 좋아한다. Bivand et al.에 전적으로 동의합니다. 책-훌륭한 자료.
radek

10

래스터 분석을 위해 래스터 패키지는 매우 강력합니다. 표준 매뉴얼 외에도 몇 가지 비 네트가 있습니다.


래스터 패키지는 RAM과 함께 작동하기 때문에 처리 할 수없는 모든 것에 대해 gdal_Utlis를 고려할 수 있습니다. 이것은 gdal을 사용하여 큰 파일을 처리 할 수있는 래퍼 기능을 제공합니다.
joaoal

7

저는 PostGIS 사용자는 아니지만 가장 가까운 이웃 질문에 대한 보로 노이 다각형을 제안한 후 약간의 검색을 수행했습니다. R을 사용하면 PostGIS 용 Voronoi 다각형을 만들있습니다 . 나는 감동.


나는 확실히 내가 제안려고하고보다 쉬운 방법이 있습니다 해요,하지만 당신은 spatstat 패키지에 Tesselations를 만든 다음 그 변환 할 수 있습니다 tessA와 객체를 sp객체 이 기능을 사용 아드리안 바 델리에서 제공합니다. 에서 sp원하는 경우 개체는 모양 파일로 내보낼 수 있습니다.
Andy W



4

이 기능을 사용하면 공간을 쉽게 조인 할 수 있지만 모든 영역이 다각형으로 채워진 경우에만 가능합니다.

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

포인트 패턴 분석의 예 :

#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) 

점 패턴을 만들어 묘사합니다. spatstat 패키지는 지리적 데이터를 분석하는 기능이 있습니다. 다음은 몇 가지 spatstat 자습서입니다.


1

이것이 "트릭"으로 자격이되는지 확실하지 않지만, acs패키지 (미국 인구 조사 데이터를 선택하기위한)와 leaflet패키지 (온라인으로 호스팅 할 수있는 대화식 자바 스크립트 맵을 만들기위한 ) 의 조합을 좋아하는 팬입니다 .

튜토리얼 은이 두 패키지를 함께 사용하는 이점을 잘 보여줍니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.