อะไรคือเคล็ดลับเชิงพื้นที่ R ที่มีประโยชน์ที่สุด?


44

Rกำลังกลายเป็นเครื่องมือที่แข็งแกร่งสำหรับการจัดการและวิเคราะห์ข้อมูลเชิงพื้นที่ ฉันเรียนรู้สิ่งที่มีประโยชน์ผ่านคำถามเช่น นี้ที่ SO และคิดว่าอาจมีประโยชน์ในการมีบางสิ่งที่คล้ายคลึงกัน แต่มีการ "เชิงพื้นที่" มากกว่า

คุณสามารถแบ่งปันเคล็ดลับและเทคนิค R เชิงพื้นที่ที่คุณเห็นว่ามีประโยชน์หรือไม่


5
วิกิชุมชน
relet


แอ๊กชั่น ขอบคุณ ฉันเชื่อว่าฉันเห็นสิ่งนั้น แต่มันง่ายที่จะลืม
relet

3
นอกจากนี้: rspatialtips.org.uk
radek

ฉันคิดว่านี่ควรเป็นวิกิของชุมชนเช่นกันเนื่องจากนี่เป็นรายการแปลก ๆ
RK

คำตอบ:


38

นี่ไม่ใช่กลอุบายมากนักเพราะมันเป็นspplot()ฟังก์ชั่นในตัวที่ดี spplot()ความสามารถในการปรับขนาด swatches คำอธิบาย (เพื่อให้ตรงกับช่วงการแบ่งประเภท) ทำหน้าที่เป็นเครื่องมือการสอนที่มีประโยชน์เมื่อพูดถึงการกระจายข้อมูลคุณลักษณะและประเภทการจำแนก การรวมแผนการกระจายแบบสะสมเข้ากับแผนที่ช่วยในความพยายามนี้

ป้อนคำอธิบายรูปภาพที่นี่ ป้อนคำอธิบายรูปภาพที่นี่

นักเรียนจะต้องแก้ไขพารามิเตอร์สคริปต์เพียงเล็กน้อยเพื่อสำรวจประเภทการจำแนกประเภทและเอฟเฟกต์การแปลงข้อมูล นี่คือการโจมตีครั้งแรกของพวกเขาใน R ในหลักสูตร ArcGIS ซึ่งเป็นศูนย์กลางส่วนใหญ่

นี่คือข้อมูลโค้ด:

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

Ref: การวิเคราะห์ข้อมูลเชิงพื้นที่ประยุกต์ด้วย R (R. Bivand, E Pebesma & V. Gomez-Rubio)


1
เด็ดมาก! นั่นดูมีประโยชน์มาก
djq

2
PolyGeo แย่มากในฐานะผู้ดูแล
Below the Radar

28

แก้ไข: โปรดทราบว่านี่ใช้งานไม่ได้ในปี 2018-10-24 เนื่องจากข้อกำหนดใหม่สำหรับแหล่งแผนที่ของ Google

ฉันมีความสุขมากที่ได้ค้นหาแพ็คเกจ dismo ด้วยการดาวน์โหลด geocoding และ google maps:

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)

ที่อยู่ใน R 2.12.0 บน Windows มันเป็นเรื่องเล็กน้อยที่จะติดตั้ง 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 TRUEx[4:7]
djq

ใช่คุณต้องการตัวอย่างที่ทำซ้ำได้
mdsumner

ฉันพยายามที่จะทำซ้ำตัวอย่างในคำตอบนี้และมันไม่ทำงาน x <- geocode('110 George Street, Bathurst, NSW, Australia')คืนค่าZERO_RESULTSตัวอย่างและเมื่อฉันใช้ตัวอย่างที่ส่งคืนค่า lat / long ฟังก์ชัน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

ยังไม่ได้หลอกลวง แต่นี่เป็นแหล่งข้อมูล / ตัวอย่างที่ฉันรวบรวม

ตัวอย่างของการพล็อตข้อมูลแผนที่ Areal ขนาดเล็กจำนวนมากใน R โดยใช้แพ็คเกจ lattice

มีคำถามสองสามข้อใน StackOverflow ที่ถามเกี่ยวกับการแมปและ R และนี่คือตัวอย่างที่ดี ฉันจะดูคำตอบอื่น ๆ และแหล่งข้อมูลที่พวกเขาให้ (รวมถึงการค้นหาตัวอย่างเพิ่มเติม) ใน SO เช่นกัน

ลิงก์อื่นไปยังกลุ่มr-sig-geoเดียวกันที่แบรดได้มอบให้ มันคล่องแคล่วมากและ Roger Bivand ตอบคำถามทุกวันในกลุ่ม ทั้งที่เกี่ยวข้องกับการเขียนโปรแกรมและการวิเคราะห์ทางสถิติ

นอกจากการตรวจสอบหน้าอวกาศ cran ฉันยังจะแนะนำเฉพาะการตรวจสอบหน้าSpatstatดูแลโดย Adrian Baddeley ตัวอย่างมากมายหลักสูตรและหนังสืออิเล็กทรอนิกส์ที่กำลังจะมาถึง (ในขณะที่ฉันได้ผ่านหลักสูตร spatstat และฉันคิดว่ามันเป็นการแนะนำที่อ่อนโยนกว่าหนังสือ Bivand)

ไม่ใช่ทรัพยากรฟรี แต่สำหรับทุกคนที่สนใจ RI ขอแนะนำให้คุณลองใช้ R! ซีรีส์โดยสปริงเกอร์ มีหนังสือประยุกต์การวิเคราะห์ข้อมูลเชิงพื้นที่ด้วย R ที่เกี่ยวข้องโดยตรง (เช่นหนังสือA Beginner's Guide to Rคือการเรียนรู้หนังสือ R ที่แนะนำของฉัน)

e-book ฟรีคู่มือปฏิบัติเพื่อการทำแผนที่ทางภูมิศาสตร์ (Hengl 2009) มีตัวอย่างของ geostats ที่ประยุกต์ใช้ใน R, GRASS และ Google Earth (KML)

หากฉันพบตัวอย่างที่ดีอีกต่อไปฉันจะอัปเดตต่อไป (ฉันหวังว่าคนอื่นโพสต์ตัวอย่างที่ดีเช่นกัน!)


ขอบคุณแอนดี้ ฉันชอบตัวอย่างขัดแตะ เห็นด้วยกับ Bivand และคณะ หนังสือ - ทรัพยากรที่ยอดเยี่ยม
radek

10

สำหรับการวิเคราะห์แรสเตอร์แพคเกจแรสเตอร์นั้นมีประสิทธิภาพอย่างมาก ข้างคู่มือมาตรฐานมีสะเพร่าเล็กน้อยเพื่อเริ่มต้น


สำหรับทุกสิ่งที่แพ็คเกจ raster ไม่สามารถจัดการได้เพราะมันทำงานกับ RAM คุณอาจพิจารณา gdal_Utlis ซึ่งมีฟังก์ชั่น wrapper สำหรับการใช้ gdal ช่วยให้คุณสามารถประมวลผลไฟล์ขนาดใหญ่ได้
joaoal

7

ฉันไม่ใช่ผู้ใช้ PostGIS แต่หลังจากแนะนำรูปหลายเหลี่ยม Voronoi สำหรับคำถามเพื่อนบ้านที่ใกล้ที่สุดฉันได้ทำการค้นหาเล็กน้อย ฉันพบว่ากับ R คุณสามารถสร้างรูปหลายเหลี่ยม Voronoi สำหรับ PostGIS ฉันประทับใจ.


ฉันแน่ใจว่ามีวิธีง่ายกว่าที่ฉันจะแนะนำ แต่คุณสามารถสร้าง Tesselations ในแพ็คเกจ spatstat แล้วแปลงtessวัตถุนั้นเป็นspวัตถุโดยใช้ฟังก์ชันนี้ที่ Adrian Baddeley นำเสนอ จากspวัตถุคุณสามารถส่งออกไปยังรูปร่างไฟล์ถ้าคุณต้องการ
Andy W

5

ฉัน stumbled เมื่อSpatial-Analyst.net ข้อมูลมากครอบคลุมและมีประโยชน์ เฉพาะเจาะจงมากขึ้นสำหรับคำถามนี้และอยู่ในแนวเดียวกันกับคำตอบก่อนหน้านี้บางส่วนโปรดดูหน้านี้



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.