最も便利な空間Rトリックは何ですか?


44

Rは、空間データを処理および分析するための非常に強力なツールになりつつあります。私はSOでこれらのような 質問を通していくつかの有用なことを学び、類似しているがより「空間的に」指向の何かを持つことが有用であるかもしれないと思いました。

便利だと感じた空間Rのヒントとコツを共有できますか?


5
コミュニティウィキ?


了解。ありがとう。私はそれを見たと思うが、それは忘れやすい。
再送信


これは一種のリストになっているので、これもコミュニティwikiにすべきだと思います。
RK

回答:


38

これは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)


1
とてもかっこいい!それは非常に便利に見えます。
djq

2
PolyGeoがモデレーターとして不愉快
レーダーの下で

28

編集:Googleマップソースの新しい要件のため、これは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とその依存関係を他のシステムにインストールするのは簡単ではありません。

代替テキスト


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ます。緯度/ 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))ます。
djq

2
以下も動作します:e <- extent(as.numeric(x[4:7]) + c(-0.001, 0.001, -0.001, 0.001))
snth


11

また、トリックではありませんが、ここに私が収集したいくつかのリソース/例があります

ラティスパッケージを使用して、Rの面積データの小さな複数のマップをプロットする例。

StackOverflowには、マッピングとRについて尋ねる質問がいくつかありますが、ここに良い例があります。SOでの他の回答とそれらが提供するリソースを調べます(さらにいくつかの例を検索します)。

同じr-sig-geoグループへの別のリンクがBradから既に与えられています。非常に活発で、ロジャー・ビヴァンドはグループに関する毎日の質問に事実上答えています。両方ともプログラミングと統計分析に関連しています。

cran空間ページをチェックアウトする以外に、Adrian Baddeleyが管理するSpatstatページを具体的にチェックすることもお勧めします。豊富な例、コース、今後の電子書籍。(現時点では、spatstat コースを受講しており、Bivandの本よりもはるかに穏やかな入門だと思います)。

無料のリソースではありませんが、RIに興味がある人はUse R!スプリンガーによるシリーズ。著書ているRと応用空間データ分析に直接関係する(また、本RのA初心者のためのガイドは、私の提案学習R帳です。)

無料の電子書籍「Practical Guide to Geostatistical Mapping(Hengl 2009)」には、R、GRASS、およびGoogle Earth(KML)で適用されたジオスタットの例があります。

良い例が見つかったら、更新し続けます(他の人も良い例を投稿してください!)


ありがとう、アンディ。私は格子の例が好きです。ビバンドらに完全に同意します。本-素晴らしいリソース。
-radek

10

ラスター解析の場合、ラスターパッケージは非常に強力です。標準マニュアルの横に、始めるためのいくつかのビネットがあります。


RAMで動作するためにラスターパッケージで処理できないすべての場合、gdalを使用して大きなファイルを処理するためのラッパー関数を提供するgdal_Utlisを検討できます。
joaoal

7

私はPostGISユーザーではありませんが、最近傍の質問にボロノイポリゴンを提案した後、少し検索しました。Rを使用すると、PostGISのボロノイポリゴンを作成できることがわかりました。私が感銘を受けた。


私は確かに私が提案するつもりです何よりも簡単な方法があるんだけど、あなたはspatstatパッケージにTesselationsを作成し、その変換することができますtessにオブジェクトをspオブジェクトこの機能使用エイドリアン・バッデリーにより提供します。sp必要に応じて、オブジェクトからシェープファイルにエクスポートできます。
アンディW



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パッケージ(オンラインでホストできるインタラクティブなJavaScriptマップの作成用)の組み合わせの大ファンです。

このチュートリアルは、これら2つのパッケージを一緒に使用する利点を示す優れた仕事をします。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.