COLOR(red){SIZE(30){RとPostGIS }}
ここでは、[[Open GIS Simple Features Specification for SQL:http://www.opengis.org/docs/99-049.pdf]] に準拠した[[PostGIS:http://postgis.refractions.net/]] を R 内より利用して、GISの空間検索、空間解析および空間分析の方法を説明していくことにする。
#contents
*PostGIS とは [#k93f27ae]
PostgreSQL 用のオープンソースの空間データベースエンジン。カナダの [[Refractions 社:http://www.refractions.net/]]が開発。PostgreSQL 上で大容量の地理空間ベクトルデータの蓄積・検索・解析・地図投影変換が可能。WKT を格納するフィールドのデフォルト名は"the_geom"。
*WKT(Well Known Text) [#mbc7b627]
PostGIS は国際標準の地理情報格納形式であるOpenGIS シンプルフィーチャをベースにしたWKTというテキスト形式で図形情報を格納している((WKB(Well Known Binary)というバイナリ形式もあり、PostGIS はこれもサポートしている))。
*シェープファイルの変換 [#o79b49c8]
PostGISのユーティリティツール shp2pgsql を利用してSQL 文を生成する。
shp2pgsql シェープファイル名 テーブル名 データベース名 > SQLファイル
使用例((例に使用した columbus のシェープファイルは maptools パッケージに含まれている))
createdb columbusdb #データベース作成
createland plpgsql columbusdb #PL/PGSQL の利用を可能にする
psql -d columbusdb -f <PostgreSQLのインストール先のディレクトリ>/share/contrib/postgis.sql #PostGIS の利用を可能にする
shp2pgsql columbus columbus columbusdb > columbus.sql #SQL文生成
psql -d columbusdb -f columbus.sql #テーブル作成
*[[Rとの接続:http://wiki.intamap.org/index.php/PostGIS#Connecting_PostGIS_with_R]] [#e6a55873]
**rgdal [#z49bb5ac]
***読み込み [#x263e5c4]
library(rgdal)
meuse = readOGR("PG:dbname=postgis", "meuse2")
meuse[1:10,] # first ten rows
proj4string(meuse)
**WKT(Well Known Text) [#r944988c]
rgeos の利用
*** 書込み [#s7a9747b]
**RODBC + rgeos --- [[[R-sig-Geo] Connection between R and PostGIS:https://stat.ethz.ch/pipermail/r-sig-geo/2012-March/014694.html]]より引用[#ha256287]
ここではRODBC を利用して、PostgreSQL に接続する。ただし、この方法は
処理できるサイズの小さなものに限られる。
library(rodbc) #パッケージのロード
con <- odbcConnect("gisdb")
## query
sql <- "SELECT ST_AsText(the_geom) from gis_data.gadm2 where name_2='Berlin'"
## execute query
d <- readWKT(sqlQuery(con, sql, stringsAsFactors=F)[1,1])
***関連リンク [#a0d25f54]
-[[feature request: rpostgresql does not support wkb/wkt:http://code.google.com/p/rpostgresql/issues/detail?id=22]]
**RPostgreSQL [#je4973c7]
**Rdbi/RdbiPgSQL [#c2376dad]
[[なかまさんのWin32 バイナリ:http://www.nakama.ne.jp/memo/cran-R/Rdbi.PgSQL/]]があるが、PostgreSQL のバージョンが違うので利用できない?
ビルドも面倒なので今はパス。
**凸包 [#n80109d9]
convexhull
**ユニオン [#q5f38bab]
GeomUnion または memGeomUnion
**ディゾルブ [#r924c6a0]
ユニオンの応用
**オーバーレイ解析 [#x53f71a9]
***ポリゴン [#m801a448]
-intersection
-symdifference
-difference
*オンデマンド・トポロジー [#v9f7f8ce]
α版でサポート予定
*道路ネットワーク解析 [#r8205d38]
*空間ウェイトマトリックス [#s8f2e25e]
オンデマンド・トポロジーを利用
*空間データマイニング [#k7782fa6]
*リンク [#afbfae53]
-[[PL/R & PostGIS:http://www.bostongis.com/PrinterFriendly.aspx?content_name=postgresql_plr_tut02]]
--[[Boston GIS: Tutorial Booklet:http://www.pelagis.net/gis_con/paper/TutBook%20GIS%20open%20source.pdf]] 上記の PDF 版
-[[Open Source Online Geospatial Interfaces to Multiscale Indicators:http://www.oecd.org/dataoecd/6/19/40051707.pdf?contentId=40051708]] WebGIS での利用
-[[Connecting PostGIS with R :http://wiki.intamap.org/index.php/PostGIS#Connecting_PostGIS_with_R]]ODBC と OGR の利用例
-[[An example of using PostGIS from R:http://duncanjg.wordpress.com/2008/04/19/an-example-of-using-postgis-from-r/]] ODBC & QGIS
--countries share a common boundary
-[[PostGIS-R - How to use R functions from PostgreSQL :http://www.geopacific.org/opensourcegis/postgis/postgis-r]]
--[[How to use R functions from PostgreSQL:http://www.geopacific.org/opensourcegis/postgis/postgis-r]] deldir
-[[Quick Intro to R and PL/R - Part 1 - Postgres OnLine Journal:http://www.google.co.jp/url?sa=t&rct=j&q=&esrc=s&source=web&cd=17&cad=rja&ved=0CEwQFjAGOAo&url=http%3A%2F%2Fwww.postgresonline.com%2Fjournal%2Farchives%2F188-plr_part1.html&ei=tZWEUMrmCc7umAWdv4DADQ&usg=AFQjCNF7r2zfubmlVByl3zCDhLFEuLdG8w]]
*参考書 [#l2b08056]
-[[PostGIS in Action:http://www.manning.com/obe/]] PLR が取り上げられる予定。2011年2月発行。//www.amazon.co.jp/Postgis-Action-Regina/dp/1935182269]] でも入手可能。Early Access 版は全章が完了。ソースコードも公開。[[翻訳の話:http://www.geopacific.org/]]もあるような。
--[[Chapter 10:http://www.postgis.us/chapter_10]] rgdal, sp, spatial dataframe への PostGIS データの読み込み、R による作図など。
--[[第2版:http://www.bostongis.com/blog/index.php?/archives/197-What-will-be-in-PostGIS-In-Action-Second-Edition.html]] R 関連は?