Apa trik R spasial yang paling berguna?


44

R menjadi alat yang cukup kuat untuk menangani dan menganalisis data spasial. Saya belajar beberapa hal yang berguna melalui pertanyaan seperti ini di SO dan saya pikir mungkin berguna untuk memiliki sesuatu yang serupa, tetapi lebih berorientasi spasial.

Bisakah Anda membagikan beberapa tip dan trik spasial R yang menurut Anda berguna?


5
komunitas wiki?
Relet


ack. Terima kasih. Saya percaya saya melihat yang itu, tapi mudah untuk dilupakan.
Relet


Saya pikir ini juga harus menjadi wiki komunitas karena ini telah menjadi semacam daftar.
RK

Jawaban:


38

Ini bukan tipuan karena ini adalah spplot()fungsi bawaan yang bagus. spplot()Kemampuan untuk skala swatch legenda (untuk mencocokkan rentang jeda klasifikasi) berfungsi sebagai alat pedagogis yang berguna ketika membahas distribusi data atribut dan tipe klasifikasi. Menggabungkan plot distribusi kumulatif dengan peta membantu dalam upaya ini.

masukkan deskripsi gambar di sini masukkan deskripsi gambar di sini

Para siswa hanya perlu memodifikasi beberapa parameter skrip untuk mengeksplorasi tipe klasifikasi dan efek transformasi data. Ini biasanya perampokan pertama mereka ke R dalam apa yang sebagian besar merupakan kursus sentris ArcGIS.

Berikut cuplikan kode:

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: Analisis Data Spasial Terapan dengan R (R. Bivand, E Pebesma & V. Gomez-Rubio)


1
sangat keren! Itu terlihat sangat berguna.
djq

2
PolyGeo menyebalkan sebagai moderator
Below the Radar

28

EDIT: perhatikan ini tidak berfungsi lagi 2018-10-24, karena persyaratan baru untuk sumber peta google.

Saya cukup senang menemukan paket dismo dengan geocoding dan unduhan peta 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)

Itu ada di R 2.12.0 pada Windows, itu sepele untuk menginstal dismo dan dependensinya di sana, tidak yakin pada sistem lain.

teks alternatif


1
Ini terlihat sangat berguna - namun, saya mengalami masalah dengan e <- extent(x[4:7] + c(-0.001, 0.001, -0.001, 0.001))iklan baris saya mendapatkan pesan kesalahan Error: c("x", "y") %in% names(x) is not all TRUE. x[4:7]tampaknya baik-baik saja; ada pemikiran tentang apa masalahnya?
djq

Ya, Anda memerlukan contoh yang dapat direproduksi
mdsumner

Saya mencoba mereproduksi contoh dalam jawaban ini dan tidak berhasil. x <- geocode('110 George Street, Bathurst, NSW, Australia')mengembalikan ZERO_RESULTSmisalnya, dan ketika saya menggunakan contoh yang mengembalikan lat / panjang, fungsie <- extent(x[4:7] + c(-0.001, 0.001, -0.001, 0.001)) also fails.
djq

Mungkin ada cara yang lebih elegan untuk melakukan ini, tetapi extentmembutuhkan vektor angka. Jadi ini berhasil e <- extent(c(x[,4], x[,5], x[,6], x[,7]) + c(-0.001, 0.001, -0.001, 0.001)).
djq

2
Berikut ini juga berfungsi:e <- extent(as.numeric(x[4:7]) + c(-0.001, 0.001, -0.001, 0.001))
snth


11

Juga bukan tipuan tapi di sini ada beberapa sumber / contoh yang saya kumpulkan

Contoh merencanakan beberapa peta kecil dari data Areal di R menggunakan paket kisi.

Ada beberapa pertanyaan di StackOverflow bertanya tentang pemetaan dan R, dan di sini adalah satu dengan contoh yang bagus. Saya akan melihat jawaban lain dan sumber daya yang mereka berikan (serta mencari beberapa contoh lainnya) di SO juga.

Tautan berbeda ke grup r-sig-geo yang sama yang sudah diberikan Brad. Ini sangat aktif, dan Roger Bivand menjawab pertanyaan praktis setiap hari di grup. Keduanya terkait dengan pemrograman dan analisis statistik.

Selain memeriksa halaman spasial cran saya juga menyarankan secara khusus memeriksa halaman Spatstat yang dikelola oleh Adrian Baddeley. Banyak contoh, kursus, dan e-book yang akan datang. (Saat ini saya telah melalui kursus spatstat , dan saya pikir itu adalah pengantar yang jauh lebih lembut daripada buku Bivand).

Bukan sumber daya gratis, tetapi bagi siapa pun yang tertarik pada RI akan menyarankan Anda memeriksa Penggunaan R! seri oleh Springer. Memiliki buku Analisis Data Spasial Terapan dengan R yang berkaitan langsung (juga buku A Beginner's Guide to R adalah buku pembelajaran R. yang disarankan).

E-book gratis, Panduan Praktis untuk Pemetaan Geostatistik (Hengl 2009), memiliki contoh geostat terapan di R, GRASS, dan Google Earth (KML).

Jika saya menemukan lagi contoh yang baik, saya akan terus memperbarui (Saya harap orang lain juga mengirim contoh yang baik!)


Terima kasih Andy. Saya suka contoh kisi. Sepenuhnya setuju dengan Bivand et al. buku - sumber yang bagus.
radek

10

Untuk analisis raster, paket raster sangat kuat. Selain manual standar ada beberapa sketsa untuk memulai.


Untuk semua yang tidak dapat ditangani oleh paket raster karena ia bekerja dengan RAM, Anda dapat mempertimbangkan gdal_Utlis yang menyediakan fungsi wrapper untuk menggunakan gdal yang memungkinkan Anda memproses file besar.
joaoal

7

Saya bukan pengguna PostGIS, tetapi setelah menyarankan poligon Voronoi untuk pertanyaan tetangga terdekat , saya melakukan sedikit pencarian. Saya menemukan bahwa dengan R, Anda dapat membuat poligon Voronoi untuk PostGIS . Saya terkesan.


Saya yakin ada cara yang lebih mudah daripada apa yang akan saya sarankan, tetapi Anda dapat membuat Tesselations dalam paket spatstat, dan kemudian mengonversi tessobjek itu ke spobjek menggunakan fungsi ini yang disediakan oleh Adrian Baddeley. Dari spobjek, Anda dapat mengekspornya ke shapefile jika diinginkan.
Andy W



4

Dengan fungsi ini, Anda dapat dengan mudah membuat gabungan spasial, tetapi hanya jika semua area diisi dengan poligon.

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

Contoh analisis pola titik:

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

Membuat pola titik dan menggambarkannya. The spatstat paket memiliki sejumlah fungsi untuk menganalisis data geografis. Berikut ini beberapa tutorial spatstat :


1

Tidak yakin apakah ini memenuhi syarat sebagai "trik", tapi saya penggemar berat kombinasi acspaket (untuk memilih data Sensus AS) dan leafletpaket (untuk membuat peta javascript interaktif yang dapat dihosting secara online).

Tutorial ini melakukan pekerjaan luar biasa yang menggambarkan manfaat menggunakan kedua paket ini secara bersamaan.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.