En kullanışlı mekansal R numarası nedir?


44

R , uzamsal verileri ele almak ve analiz etmek için oldukça güçlü bir araç haline geliyor . SO'da bu gibi sorularla bazı faydalı şeyler öğrendim ve simmiler ama daha “mekansal” odaklı bir şeyin olmasının yararlı olabileceğini düşündüm.

Yararlı bulduğun bazı uzaysal R ipuçlarını ve püf noktalarını paylaşabilir misin?


5
topluluk wiki?
Kasım’da


ack. Teşekkürler. Bunu gördüğüme inanıyorum, ama unutması kolay.
saat


Bence bu bir topluluk wiki olmalı, çünkü bu bir tür listesi haline geldi.
RK

Yanıtlar:


38

Bu spplot()şık bir fonksiyonellik olduğu kadar bir oyun değil . spplot()efsane renk örneklerini ölçekleme yeteneği (sınıflandırma sonu aralıklarını eşleştirme), nitelik veri dağılımı ve sınıflandırma türlerini tartışırken yararlı bir pedagojik araç olarak hizmet eder. Kümülatif dağıtım grafiklerini haritalarla birleştirmek, bu çabalarda yardımcı olur.

görüntü tanımını buraya girin görüntü tanımını buraya girin

Öğrencilerin sınıflandırma türlerini ve veri dönüştürme etkilerini keşfetmek için yalnızca birkaç komut dosyası parametresini değiştirmeleri gerekir. Bu genellikle, çoğunlukla ArcGIS merkezli bir kurs olan R'ye ilk saldırılarıdır.

İşte bir kod pasajı:

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 ve V. Gomez-Rubio) ile Uygulamalı Mekansal Veri Analizi


1
çok havalı! Bu çok kullanışlı görünüyor.
djq

2
PolyGeo moderatör olarak berbat
Radar'ın altında

28

EDIT: Google harita kaynaklarının yeni gereklilikleri nedeniyle, bunun artık 2018-10-24 çalışmadığını unutmayın.

Coğrafi kodlama ve google maps indir ile dismo paketini bulmak oldukça mutlu oldum:

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)

Bu, Windows'taki R 2.12.0'da, diğer sistemlerde emin değil, dismo ve bağımlılıklarını oraya kurmak çok önemlidir.

alt metin


1
Bu çok kullanışlı görünüyor - ancak, ben e <- extent(x[4:7] + c(-0.001, 0.001, -0.001, 0.001))bir hata mesajı alıyorum satır reklam ile ilgili sorunlar yaşıyorum Error: c("x", "y") %in% names(x) is not all TRUE. x[4:7]olsa iyi görünüyor; Sorunun ne olabileceği hakkında bir fikriniz var mı?
djq

Evet, tekrarlanabilir bir örneğe ihtiyacınız var
mdsumner

Bu cevaptaki örneği yeniden üretmeye çalışıyorum ve işe yaramadı. x <- geocode('110 George Street, Bathurst, NSW, Australia')döner ZERO_RESULTSörneğin, ben bir örnek kullandığınızda o döner bir enlem / boylam, fonksiyone <- extent(x[4:7] + c(-0.001, 0.001, -0.001, 0.001)) also fails.
DJQ

Bunu yapmanın daha zarif bir yolu olabilir, ancak extentsayıların bir vektörünü gerektirir. Yani bu işe yarıyor e <- extent(c(x[,4], x[,5], x[,6], x[,7]) + c(-0.001, 0.001, -0.001, 0.001)).
djq

2
Aşağıdakiler de çalışır:e <- extent(as.numeric(x[4:7]) + c(-0.001, 0.001, -0.001, 0.001))
11:11


11

Ayrıca bir numara değil ama burada topladığım bazı kaynaklar / örnekler var.

Kafes paketini kullanarak R'deki küçük çoklu Areal veri haritalarını çizme örneği .

StackOverflow'ta haritalama ve R hakkında sorular sormak için birkaç soru var ve işte bu güzel bir örnek. SO'daki diğer cevaplara ve verdikleri kaynaklara da bakacağım (ayrıca bazı örnekleri arayacağım).

Brad'in vermiş olduğu aynı r-sig-geo grubuna farklı bir bağlantı . Çok aktif ve Roger Bivand grupta pratik olarak her gün soruları yanıtlıyor. Her ikisi de programlama ve istatistiksel analiz ile ilgili.

Cran mekansal sayfasını kontrol etmenin yanı sıra, özellikle Adrian Baddeley tarafından tutulan Spatstat sayfasını da kontrol etmenizi öneririm . Bir sürü örnek, bir kurs ve gelecek bir e-kitap. (Şu anda spatstat kursundan geçiyorum ve bunun Bivand kitabından çok daha nazik bir giriş olduğunu düşünüyorum).

Ücretsiz bir kaynak değil, ancak RI ile ilgilenen herkes için Use R! Springer tarafından serisi. Doğrudan R ile ilgili bir Uygulamalı Mekansal Veri Analizi kitabına sahip olmak (ayrıca, R'ye A Başlangıç ​​Kılavuzu olan kitap benim önerilen öğrenme R kitabımdır).

Ücretsiz bir e-kitap olan Jeostatik Haritalamaya İlişkin Pratik Bir Rehber (Hengl 2009), R, GRASS ve Google Earth'te (KML) uygulamalı coğrafi örneklere sahiptir.

Daha iyi örnekler bulursam güncellemeye devam edeceğim (umarım diğer insanlar da iyi örnekler verir!)


Sağol Andy. Kafes örneğini severim. Bivand ve ark. kitap - harika kaynak.
radek

10

Raster analizi için, raster paketi son derece güçlüdür. Standart kılavuzun yanı sıra başlayabileceğiniz birkaç vinyet var.


Raster paketinin RAM ile çalıştığı için işleyemediği her şey için, büyük dosyaları işlemenizi sağlayan gdal kullanmak için sarma işlevi sağlayan gdal_Utlis'i düşünebilirsiniz.
joaoal

7

PostGIS kullanıcısı değilim, ancak en yakın komşu sorusu için Voronoi çokgenleri önerdikten sonra biraz arama yaptım. R ile PostGIS için Voronoi poligonları oluşturabileceğinizi öğrendim . Etkilendim.


Eminim önereceğim şeyden daha kolay yollar vardır, ancak spatstat paketinde Tesselations oluşturabilir ve sonra Adrian Baddeley tarafından sağlanan bu işlevi kullanarak bu nesneyi tessbir spnesneye dönüştürebilirsiniz . İsterseniz bir nesneden bir shapefile verebilirsiniz. sp
Andy W,



4

Bu işlevle, uzamsal birleşmeleri kolayca yapabilirsiniz, ancak yalnızca tüm alanlar çokgenlerle doldurulursa.

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

Nokta deseni analizi örneği:

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

Bir nokta deseni oluşturur ve tasvir eder. Spatstat paket coğrafi verileri analiz etmek için bir dizi fonksiyonu vardır. İşte spatstat dersleri:


1

Bunun bir "numara" olarak nitelendirilip seçilmediğinden emin değilim, ancak acspaketin (ABD Sayım verilerini seçmek için) ve leafletpaketin (çevrimiçi olarak barındırılabilecek etkileşimli javascript haritaları yapmak için ) kombinasyonunun büyük bir hayranıyım .

Bu eğitimde , bu iki paketi birlikte kullanmanın yararını gösteren mükemmel bir iş çıkar.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.