RでGIS
ここでは、Rによって実現できるGIS(地理情報システム)というよりはGISc(i)(地理空間情報科学)またはGeoComputation(新計量地理学)の各手法をメモっていく。単なる地図表示は別のページを見てください。
地図パッケージ†
ベクトル型†
ベクトル/ラスター型†
空間データ†
シェープファイル & KML & E00†
- フランス
- フランス国土地理院・・・フリーのフランスおよび海外県のシェープファイル(GeoFLAR Departements)およびDEM( BD ALTIR 1000m France continentale)を提供
- パリ市
- オーストラリア
- GeoScience Australia 各種スケール(1:100,000 - 1:5,000,000)。シェープファイル、ESRIパーソナルデータベース、MapInfo, PDF
行政界、DEM、地形、環境、地質、地球物理、地球化学、地質年代学、表土、経緯線網(グリッド)、ハザード(Geohazards)、測地、原住民生活権保護局(National Native Title Tribunal)
- ニュージーランド
ニュージーランドは公的な空間データがフリーになる模様
変換ツール†
- 数値地図のデータ形式がXML(JPGIS)形式に変更されたためか、数値地図を直接シェープファイルを変換する無料ツールはない模様。
- 国土地理院から基盤地図情報とそれをシェープファイルに変換するコンバートソフトをダウンロードできます(2009/3/27現在).
ラスター†
- 地形・行政界
- ウエブサービスによるもの
- リモセン画像
- 主題図(派生データ)
DEM(数値標高モデル)†
NOAAの夜間照明(画像)TIFF 形式†
LANDSAT†
属性データ†
GISで利用可能なRパッケージ内データ
lattice パッケージを使った地図表示†
http://dsarkar.fhcrc.org/lattice/book/figures.html に多数の例あり(chp.6 fig.6.5,6.11, chp 13など)
latticeExtra パッケージを使った地図表示†
GPS†
シェープファイルの新規作成†
地図投影変換†
rgdal†
投影法のパラメータが検索できるサイト
等値線図†
ContourLines2SLDF(maptools) 関数で変換して、writeOGR(rgdal ) 関数か、writeSpatialShape()関数でシェープに出力
幾何図形の簡略化†
ラインの簡略化(単純化)†
ラベル配置†
住所照合†
- gooJSON の gooadd & goomap 関数
#位置(地理座標(緯度)を求める)
uci.add <- gooadd(address=list("千代田区内幸町"))
goomap(uci.add, key="Google Key")
goomap(paste(140,40,sep=","), key="Google Key")
#住所(地理座標(緯度)より求める)
空間検索†
rgeos†
GEOS パッケージを利用しているので、主要機能をカバーしている
ポリゴンの面積†
- splancs パッケージ areapl 関数
- gpclib パッケージ area.poly 関数(hole のあるポリゴン対応)
- PBSMappingパッケージの calcArea 関数
最近接点†
K-NN†
任意のポイントに近接するラインとの距離と交点†
- dist2Line@geosphere ラインの特定は要プログラミング
近接するポリゴン情報取得・・・Dorling のカルトグラムやポリゴンの単純化に有用†
ポイント・イン・ポリゴン†
- sp パッケージ point.in.polygon 関数
- splancsパッケージ inpip , inout 関数
- splancsパッケージ point.in.polygon 関数
任意のポリゴンに隣接するポリゴン数†
空間インデックス†
- gstat パッケージの predict.gstat 関数が内部で4分木(quad tree)を利用している
空間解析†
ポリゴン・オーバーレイ解析†
- rgeos
gpclib の代替として、GEOS パッケージを利用して、ジオメトリのトポロジーを扱う
Maptools の一部の関数でも利用できる。
libray(stringr) と、"stringr"パッケージを明示的にインストールする必要がある?
- PBSMappingパッケージの joinPolys 関数
ポリゴンの三角形分割†
- CRAN の tripack パッケージ
- PBSMappingパッケージの calcConvexHull 関数
TIN†
CRAN の tripack パッケージを利用(tripack(不規則な間隔の空間データの三角形網の生成)パッケージ中のオブジェクト一覧, deldir(ドロネイ三角形網およびディリクレ(ボロノイ)分割)パッケージ中のオブジェクト一覧)。delaunay@spatstat(deldir を利用)。geometry パッケージ は最遠ボロノイおよび最遠ドロネイもサポート
ボロノイ†
- PBSMappingパッケージの calcVoronoi 関数
空間サンプリング(標本化)†
空間内挿・サーフェス(平滑化)†
ローパスフィルター†
スプライン†
カーネル密度推定法†
属性なし†
- MASS パッケージの kde2d 関数
- kde3d 3次元カーネル密度推定計算 in misc3d パッケージ
- density 関数
- sm パッケージ
属性あり†
- fields パッケージの smooth.2d 関数
- GeoXp パッケージの densitymap 関数。ESDA対応。
- Laurent, T., A. Ruiz-Gazen, and C. Thomas-Agnan, "GeoXp: An R Package for Exploratory Spatial Data Analysis", Journal of Statistical Software, vol. 47, no. 2, pp. 1?23, 4, 2012.
- sm パッケージ
Kriging†
シェープファイルへの変換方法†
Unexpected parameter problem using rsaga.geoprocessor()
クリギング†
傾向面†
グローバル†
ローカル†
- stats パッケージ loess 関数
- ヴェナブルズ他『S-PLUS による統計解析』、シュプリンガー・フェアラーク, 517-519 に使用例あり。
Pycnophylactic Interpolation(密度保持?内挿)†
カルトグラム†
連続型面カルトグラム†
library(spdep)
library(cart)
example(columbus)
cartc<-cartogram(columbus["CRIME"])
cartcj <- SpatialPolygonsDataFrame(cartc, columbus@data, match.ID = TRUE)
plot(cartcj)
非連続型面カルトグラム†
Dorling の円カルトグラム†
隣接するポリゴンが共有する辺の長さを求める必要があり、rgeos を使って工夫すればできるかもしれない。[[OpenJump:http://www.openjump.org]]のプラナーグラフを使えば、この辺の長さが求められる。
または、他のサイトに例のある Forced Based Direction Algorithm を使うと、実現が容易かもしれない。
MDS(多次元尺度構成法)による距離行列(時間距離(時間地図)、費用距離など)のカルトグラム†
- stats パッケージの cmdscale(古典的 (計量) 多次元尺度構成法)
利用例
data(eurodist) #ヨーロッパの主要都市間の距離行列
loc<-cmdscale(eurodist) #MDS の計算
plot(loc) #座標のプロット
text(loc,names(eurodist),col="red") #都市名の表示
図 ヨーロッパの主要都市間の距離行列からの各都市の位置の復元
SOM を使ったカルトグラム†
tree map の利用(実際の位置の表示ではない)†
フローデータ分析†
人口移動分析†
アクセシビリティ(近接性) [#icde6ace]
フードチェーン†
ネットワーク解析†
最短経路探索†
指定ノード†
- RGBL@BioConductorの関数
Dijkstra
全ノードの最短経路探索†
- RGBL@BioConductorの関数
Floydのアルゴリズム
- CRAN の e1071 パッケージ内の allShortestPaths および extractPath 両関数
ただし、数千ノードまで。Dijkstraではなく、Floydのアルゴリズムを利用。
位相構造をもたないシェープファイルでも、OpenJUMP*3やこれの旧バージョンベースのフィールドワークGISステーションで、ノードやエッジを生成できる。†
関連リンク†
立地配分問題†
巡回セールスマン問題†
スタイナー木†
ポイント・パターン分析†
Point pattern analysis packages on CRAN
2次元†
- 方格法
- 最近隣法
- K関数法
- ユークリッド二次元回帰
- マーク付き点過程
- ads: 空間ポイントパターン分析 パッケージ
1次元(道路上の点分布(インターチェンジ)など)†
セントログラフィ†
Spatial Scan Statistics†
CRAN で入手できるDClusterでサポート。プレリリース版が公開。ここに紹介あり。DCluster(疾病の空間クラスター検出用関数)パッケージ中のオブジェクト一覧。
GAM(Geograpgical Analysis Machine)†
DCluster の opgam 関数でサポート。GAM/K は GAM 結果にカーネル密度推定をおこなう。
地球統計(Geostatistics)†
Geostatistics packages on CRAN
GUIベースの地球統計を使った分析をおこなえる Web サイト(FLASH + PHP を利用)。コマンド入力も可。空間データ(画像を含む)の読込みができる。
地形解析†
Map Algebra or Cartographic Model†
自動地形分類†
地形シミュレーション†
費用距離†
Google Earth†
Natural Hazard†
空間的自己相関†
CRAN の spdep パッケージを利用。spdep(空間従属性)パッケージ中のオブジェクト一覧
空間ウェイト・マトリックス†
cshapes: CShapes データセット及びユーティリティー†
cshapes(CShapes データセット及びユーティリティー)パッケージ中のオブジェクト一覧
グローバル空間的自己相関†
Moran のI統計量†
- spdepの moran(統計量のみ) および moran.test(検定付き)
- autocorrelation@raster
式
ここで
Geary のc統計量†
- spdep の geary(統計量のみ) および geary.test(検定付き)
- autocorrelation@raster
グローバル G統計量†
spdep の globalG.test
Join 統計量†
spdepのjoincount(統計量のみ) および joincount.test(検定付き)
ローカル†
Local Moran 統計量†
- spdep の localmoran
- autocorrelation@raster
Local Geary 統計量†
G and G* 統計量†
spdep のlocalG
空間自己回帰†
SAR(同時自己回帰)†
spdep のerrorsarlm
CAR(条件付自己回帰)†
SNA パッケージの自己相関分析関数†
社会ネットワーク分析への応用
利用例†
空間コレログラム†
spdep の sp.correlogram
空間主成分分析†
Hot Spot†
空間スキャン統計量†
空間的相互作用モデル†
集計型の主な手法はGLM(一般化線形モデル)で処理可能。他にはニューラルネットを用いるものや遺伝的アルゴリズムを用いるものがある。
非集約型は?
古典的重力モデル†
対数線形†
lm
エントロピー最大化モデル†
GLMを利用
無制約型(ポアソン型)†
発地制約型†
着地制約型†
二重制約型†
競合着地型†
ニューラルネット†
nnet
ライリー・コンバース・モデル†
ハフ・モデル†
GWR(Geographically Weighted Regression, 地理的加重回帰)†
spgwr at CRAN†
spgwr(地理的加重回帰)パッケージ中のオブジェクト一覧
gwrr Geographically weighted regression with penalties and diagnostic tools†
- もう一つの R 用 GWR Geographically weighted regression with penalties and diagnostic tools
MGWR 混合地理的加重回帰†
BayesX: R Utilities Accompanying the Software Package BayesX†
地理的加重判別分析†
multinom in nnet パッケージ
gwrr: Fits geographically weighted regression models with diagnostic tools†
GWR 関連リンク†
WSAF(加重空間適応フィルタ)†
ベイズ†
空間フィルタリング†
空間的拡散†
空間データマイニング†
空間データベースとの接続†
RODBC 経由
PostgreSQL/PostGIS†
RとPostGIS
MySQLの空間エクステンション†
RMySQLパッケージ。
MySQLは4.x より空間データをサポートしているが、現状では空間データの格納のみで空間検索や空間解析のあるPostGISとの機能の差は大きい
SQLITE の空間DBエンジン†
WebGIS†
ESDA(探索的空間分析)†
- rgr: The GSC Applied Geochemistry EDA Package
SMALL AREA ESTIMATION†
時間地理学†
時空間分析†
空間的マイクロシミュレーション†
リモセン†
GISソフトウェアとの接続・統合†
R(D)COM や RServe およびその他のソフトを利用したものを以下に挙げる。
ArcGISのVBAよりR(D)COM経由でRの各空間分析パッケージを使用する†
VBAによるArcGISプログラミングガイドなどを参考にして、S+ArcViewのようなものができるかも?
ArcGIS で R
Grass GIS†
RPyGeo: Python 経由で、R で、ArcGIS のジオプロセッシング†
GeoComputaion用。R(D)COM と JCOMを使ってGeoTools(Java 用GISエンジン)と統合。テレビ東京の情報番組で使われた(ただしRを利用していないカルトグラムの機能だが)。
現在新バージョンを開発中。
Ajax + PHP + R
QGIS は Python をサポートしているので、この機能を使って R(Rpy を利用) とリンケージを図っている。
最近活動が活発になっているようだ。
Eclipse のRCPを利用したオープンソース GIS、uDig のプラグイン。空間分析に R を利用している
地理空間情報ウェブサービスとの連携†
地図画像†
- WMS(Web Mapping Service)
rogr, RCURL
空間データ取得†
- WFS
rogr, RCURL
- Web Maps 点、線、面を HTML に表示
分散型ジオプロセッシング†
空間パネルモデル†
空間分析のための並列計算†
Mapping Tips†
Open Data Hack†
Google Earth/KML による可視化†
順位・規模の法則、ランク・サイズルール†
アニメーション†
フィールドワーク†
- [[Displaying spatial sensor data from Arduino with R on Google Maps:Displaying spatial sensor data from Arduino with R on Google Maps]]
書籍(オンラインも含む)†
- Springer より、R を使った空間統計の本(Bivand, R. S.(sp, spdep, maptools, spgwr), Pebesma, E.J.(gstat) and Gomez-Rubio, V.(2008):Applied Spatial Data Analysis with R サポートサイト((IE7 or Firefox. IE6 では正しく表示されない。))
)が2008/09出版。
- Crawley, M. J. :The R Book--The R Book の24章が空間統計(Spatial Statistics)で、点過程、クリギング等が扱われている。
- Spatial Statistical Data Analysis for GIS Users, ESRI PRESS, 2011. DVD(本文+スクリプト+データ)のみの販売。R+SPDEP+SPLANCS も利用.
- 古谷知之著『Rによる空間データの統計分析』,朝倉書店,2011.
- Displaying time series, spatial and space-time data with R: stories of space and time
- Introduction to visualising spatial data in R
- Brunsdon, C. , Comber, L.(2015):An Introduction to R for Spatial Analysis and Mapping, Sage
関連情報†
- rgis
以下のパッケージを開発中。
- gdistance:GIS
- raster:ラスター型データ処理
- remotesensing:リモセン
- cropsim および dismo:生物多様性。
- R Spatial Cheatsheet ----This cheatsheet is an attempt to supply you with the key functions and manipulations of spatial vector and raster data. It does not have examples for you to cut and paste, its intention is to provoke the "Oh yes, that's how you do it" thought when stuck.