R 은 공간 데이터를 처리하고 분석하는 데 매우 강력한 도구 가되었습니다 . 나는 질문을 통해 몇 가지 유용한 것들을 배웠 같은 이러한 SO에서하고 뭔가에 simmilar을하는 것이 유용 할 거라고 생각하지만, 더 '공간'지향.
유용한 공간 R 팁과 요령을 공유 할 수 있습니까?
R 은 공간 데이터를 처리하고 분석하는 데 매우 강력한 도구 가되었습니다 . 나는 질문을 통해 몇 가지 유용한 것들을 배웠 같은 이러한 SO에서하고 뭔가에 simmilar을하는 것이 유용 할 거라고 생각하지만, 더 '공간'지향.
유용한 공간 R 팁과 요령을 공유 할 수 있습니까?
답변:
이것은 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)을 사용한 공간 데이터 분석 적용
편집 : 구글지도 소스에 대한 새로운 요구 사항으로 인해 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 및 해당 종속성을 설치하는 것이 쉽지 않습니다.
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]
그래도 괜찮아 보인다; 문제가 무엇인지에 대한 의견이 있으십니까?
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.
extent
숫자 벡터가 필요합니다. 그래서 이것은 작동합니다 e <- extent(c(x[,4], x[,5], x[,6], x[,7]) + c(-0.001, 0.001, -0.001, 0.001))
.
e <- extent(as.numeric(x[4:7]) + c(-0.001, 0.001, -0.001, 0.001))
또한 트릭은 아니지만 여기에 수집 한 리소스 / 예제가 있습니다.
격자 패키지를 사용하여 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)에 적용된 지리 통계의 예가 있습니다.
더 이상 좋은 예를 찾으면 계속 업데이트 할 것입니다 (다른 사람들도 좋은 예를 게시하기를 바랍니다)
저는 PostGIS 사용자는 아니지만 가장 가까운 이웃 질문에 대한 보로 노이 다각형을 제안한 후 약간의 검색을 수행했습니다. R을 사용하면 PostGIS 용 Voronoi 다각형을 만들 수 있습니다 . 나는 감동.
GRASS에서 고품질 통계 분석을 즐기는 방법도 여기를 참조하십시오 : http://grass.osgeo.org/wiki/R_statistics
이 기능을 사용하면 공간을 쉽게 조인 할 수 있지만 모든 영역이 다각형으로 채워진 경우에만 가능합니다.
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)
포인트 패턴 분석의 예 :
#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 자습서입니다.