Jaka jest najbardziej przydatna sztuczka przestrzenna R?


44

R staje się dość silnym narzędziem do obsługi i analizy danych przestrzennych. Dowiedziałem się kilka przydatnych rzeczy poprzez pytania , jak te w SO i że może to być przydatne mieć coś simmilar, ale bardziej „przestrzennie” zorientowanych.

Czy możesz podzielić się przestrzennymi wskazówkami i sztuczkami, które uważasz za przydatne?


5
wiki społeczności?
relet


ack. Dzięki. Myślę, że widziałem to, ale łatwo o tym zapomnieć.
relet

3

Myślę, że powinna to być także wiki społeczności, ponieważ stała się ona listą rodzajów.
RK

Odpowiedzi:


38

To nie tyle sztuczka, co spplot()sprytna wbudowana funkcjonalność. spplot()Możliwość skalowania próbek legendy (w celu dopasowania zakresów podziału klasyfikacji) służy jako przydatne narzędzie pedagogiczne podczas omawiania rozkładu danych atrybutów i typów klasyfikacji. Połączenie skumulowanych wykresów dystrybucji z mapami pomaga w tym przedsięwzięciu.

wprowadź opis zdjęcia tutaj wprowadź opis zdjęcia tutaj

Uczniowie muszą jedynie zmodyfikować kilka parametrów skryptu, aby zbadać typy klasyfikacji i efekty transformacji danych. Zazwyczaj jest to ich pierwsza próba wejścia w R w kursie zorientowanym głównie na ArcGIS.

Oto fragment kodu:

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

Patrz: Stosowana analiza danych przestrzennych za pomocą R (R. Bivand, E Pebesma i V. Gomez-Rubio)


1
bardzo fajny! To wygląda bardzo przydatne.
djq

2
PolyGeo jest do bani jako moderator
Poniżej radaru,

28

EDYCJA: pamiętaj, że to już nie działa z powodu nowych wymagań dla źródeł map Google.

Z przyjemnością znalazłem pakiet dismo z geokodowaniem i pobraniem map 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)

To jest w wersji R 2.12.0 na Windowsie, instalowanie dismo i jego zależności jest banalne, nie jest pewne w innych systemach.

alternatywny tekst


1
Wygląda to bardzo przydatnie - jednak mam problemy z e <- extent(x[4:7] + c(-0.001, 0.001, -0.001, 0.001))reklamą liniową i pojawia się komunikat o błędzie Error: c("x", "y") %in% names(x) is not all TRUE. x[4:7]wydaje się w porządku; jakieś przemyślenia na temat problemu?
djq,

Tak, potrzebujesz powtarzalnego przykładu
mdsumner,

Próbuję odtworzyć przykład w tej odpowiedzi i to nie działa. x <- geocode('110 George Street, Bathurst, NSW, Australia')zwraca ZERO_RESULTSna przykład, a gdy korzystam z przykładu, który zwraca długość / długość, funkcjae <- extent(x[4:7] + c(-0.001, 0.001, -0.001, 0.001)) also fails.
djq

Może to być bardziej elegancki sposób, ale extentwymaga wektora liczb. Więc to działa e <- extent(c(x[,4], x[,5], x[,6], x[,7]) + c(-0.001, 0.001, -0.001, 0.001)).
djq 27.11.11

2
Poniższy również działa:e <- extent(as.numeric(x[4:7]) + c(-0.001, 0.001, -0.001, 0.001))
snth


11

Nie jest to również sztuczka, ale oto niektóre zasoby / przykłady, które zebrałem

Przykład kreślenia małych wielu map danych Areal w R przy użyciu pakietu kratowego.

Na StackOverflow jest kilka pytań dotyczących mapowania i R, a oto jedno z ładnym przykładem. Chciałbym też spojrzeć na inne odpowiedzi i zasoby, które dają (a także poszukać kilku innych przykładów) na SO.

Inny link do tej samej grupy r-sig-geo , którą Brad już podał. Jest bardzo aktywny, a Roger Bivand odpowiada na pytania praktycznie codziennie w grupie. Zarówno związane z programowaniem, jak i analizą statystyczną.

Oprócz sprawdzenia strony przestrzennej Cran poleciłbym również szczegółowe sprawdzenie strony Spatstat prowadzonej przez Adriana Baddeleya. Wiele przykładów, kurs i nadchodzący e-book. (W tej chwili przechodzę kurs spatstat i myślę, że jest to znacznie łagodniejsze wprowadzenie niż książka Bivand).

Nie jest to darmowy zasób, ale dla wszystkich zainteresowanych RI sugerowałbyś, aby sprawdzić Use R! seria Springera. Mają książkę Applied Spatial Data Analysis z R bezpośrednio związaną (również książka A Beginner's Guide to R to moja sugerowana nauka R).

Darmowy e-book, Praktyczny przewodnik po mapowaniu geostatystycznym (Hengl 2009), zawiera przykłady zastosowanych geostatów w R, GRASS i Google Earth (KML).

Jeśli znajdę już dobre przykłady, będę nadal aktualizować (mam nadzieję, że inni również opublikują dobre przykłady!)


Dzięki, Andy. Lubię kratowy przykład. Całkowicie zgadzają się Bivand i in. książka - świetny zasób.
radek

10

Do analizy Zrastruj raster pakiet jest niezwykle silny. Oprócz standardowego podręcznika na początek kilka winiet.


Dla wszystkiego, czego pakiet rastrowy nie może obsłużyć, ponieważ działa z pamięcią RAM, możesz rozważyć gdal_Utlis, który zapewnia funkcję otoki dla używania gdal umożliwiającego przetwarzanie dużych plików.
joaoal

7

Nie jestem użytkownikiem PostGIS, ale po zasugerowaniu wielokątów Voronoi na pytanie najbliższego sąsiada , przeprowadziłem trochę wyszukiwania. Odkryłem, że za pomocą R możesz tworzyć wielokąty Voronoi dla PostGIS . Jestem pod wrażeniem.


Jestem pewien, że istnieją łatwiejsze sposoby niż to, co zamierzam zasugerować, ale możesz utworzyć Tesselacje w pakiecie spatstat, a następnie przekonwertować ten tessobiekt na spobiekt za pomocą tej funkcji dostarczonej przez Adriana Baddeleya. Z spobiektu możesz go wyeksportować do pliku kształtu, jeśli chcesz.
Andy W



4

Za pomocą tej funkcji można łatwo tworzyć połączenia przestrzenne, ale tylko wtedy, gdy wszystkie obszary są wypełnione wielokątami.

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

Przykład analizy wzoru punktowego:

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

Tworzy wzór punktowy i przedstawia go. Spatstat pakiet posiada szereg funkcji do analizy danych geograficznych. Oto kilka samouczków spatstat :


1

Nie jestem pewien, czy kwalifikuje się to jako „sztuczka”, ale jestem wielkim fanem kombinacji acspakietu (do wybierania danych z amerykańskiego spisu powszechnego) i leafletpakietu (do tworzenia interaktywnych map javascript, które można hostować online).

W tym samouczku wykonano doskonałą robotę ilustrującą korzyści wynikające z używania tych dwóch pakietów razem.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.