120620 chred r_presentation1

695 views

Published on

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
695
On SlideShare
0
From Embeds
0
Number of Embeds
5
Actions
Shares
0
Downloads
3
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

120620 chred r_presentation1

  1. 1. R を使った空間情報の可視化 R を使った空間情報の可視化 縫村崇行 (NUIMURA, Takayuki) 環境学・雪氷研究室 R 勉強会 (CHERD) 2012/06/20 1 / 15
  2. 2. R を使った空間情報の可視化 はじめに 自己紹介 専門:GIS や RS によるヒマラヤの氷河の変動把握 所属:名大・環境学・雪氷圏変動研究室 (理農館) OSGeo1 財団 日本支部 運営委員主な業務内容 氷河の空間分布 DB 作成 ヒマラヤでフィールド調査 (DGPS) 3D モニターを使ってステレオ写真測量 研究室で GIS や R 言語の指導 1 The Open Source Geospatial Foundation 2 / 15
  3. 3. R を使った空間情報の可視化 はじめに 自己紹介 (メイン業務以外の活動) FOSS4G ツール勉強会@名古屋を主催 (第 1 回 2011/12/11、第 2 回 2012/4/14) FOSS4Ga とは:QGIS、GRASS GIS、GMT や R など、 オープンソースの空間解析ソフトウェア URL:https://sites.google.com/site/foss4gnagoya/ a Free and Open Source Software for Geospatial Nagoya.R (東海地方を中心とした R の勉強会) 名大の言語系の研究者の方が主催 (2011/3/26–2012/5/19) URL:http://corpus-study.info/nagoyar/ 世界各地の都市で同様のイベント (ex. Tokyo.R、Tsukuba,R、London.R) 3 / 15
  4. 4. R を使った空間情報の可視化 はじめに 空間情報について 空間情報とは 空間座標 (X,Y,(+Z)) を持ったデータ: 種類:点、線、面で代表されるデータ 例:気象観測地点、震源地、道路の経路、土地利用区分 =⇒ 今回は点データ を R を使って加工し、 Google Earth で可視化する方法について話します。 4 / 15
  5. 5. R を使った空間情報の可視化 データ&手法 USGS [Latest Earthquakes: Feeds & Data] Past 7 Days, M 2.5+ earthquakes (CSV 形式) を使用。 データ内容 Src,Eqid,Version,Datetime,Lat,Lon,Magnitude,Depth,NST,Region us,c0005hua,6,"Monday, August 22, 2011 00:07:09 UTC",42.6731,143.2804,4.7,32.30,95,"Hokkaido, Japan region" =⇒6 行目が X 座標 (Longitude)、5 行目が Y 座標 (Latitude)。 5 / 15
  6. 6. R を使った空間情報の可視化 データ&手法 今回使用する R のパッケージ 1 rgdal:GIS データを取り扱う =⇒XY 座標を元に Google Earth ファイル (KML) を作成するの に使用 2 XML:XML ファイルを取り扱う =⇒Google Earth ファイル (KML) を修正するのに使用 6 / 15
  7. 7. R を使った空間情報の可視化 データ処理の流れ パッケージを使う下準備 #rgdal1 , XML パッケージのインストール (最初だけ) install.packages(“rgdal”) install.packages(“XML”) #rgdal, XML パッケージの読み込み、セッションの最初に毎回 library(rgdal) library(XML) 1 Windows では自動的に依存するパッケージもインストールしてくれる。Ubuntu linux の場合は、事前に OS のパッ ケージマネージャで、”gdal”、”libgdal1-dev”、”libproj-dev” をインストールする必要がある。 7 / 15
  8. 8. R を使った空間情報の可視化 データ処理の流れ Step 1: CSV から KML の作成 CSV 読み込み ⇒sp オブジェクト生成 ⇒KML 出力 #Input csv.filename <- "eqs7day-M2.5.txt" #Output kml.filename <- "eqs7day-M2.5.kml" #CSV ファイル読み込み work.table <- read.csv(csv.filename) #点数をカウント (あとで使用) n.data <- nrow(work.table) #sp オブジェクトの作成 work.obj <- SpatialPointsDataFrame(lonlat, work.table, proj4string=CRS("+proj=longlat")) #KML ファイルの出力 writeOGR(work.obj, dsn=kml.filename, layer="sample", driver="KML") 8 / 15
  9. 9. R を使った空間情報の可視化 データ処理の流れ Step 1: CSV から KML の作成 9 / 15
  10. 10. R を使った空間情報の可視化 データ処理の流れ KML ファイルの構造 出力した KML ファイルは、 以下のように座標情報、属性情報を記述している。 <Placemark> <ExtendedData><SchemaData schemaUrl="sample"> <SimpleData name="Src">ak</SimpleData> <SimpleData name="Eqid">10300708</SimpleData> <SimpleData name="Version">2</SimpleData> <SimpleData name="Datetime">Sunday, August 21, 2011 22:27:02 UTC</SimpleData> <SimpleData name="Lat">52.7168</SimpleData> <SimpleData name="Lon">-169.5406</SimpleData> <SimpleData name="Magnitude">2.5</SimpleData> <SimpleData name="Depth">4.9</SimpleData> <SimpleData name="NST">10</SimpleData> <SimpleData name="Region">Fox Islands, Aleutian Islands, Alaska</SimpleData> </SchemaData></ExtendedData> <Point> <coordinates>-169.540600000000012,52.716799999999999</coordinates> </Point> </Placemark> 10 / 15
  11. 11. R を使った空間情報の可視化 データ処理の流れ KML ファイルの構造 出力した KML ファイルは、 以下のように座標情報、属性情報を記述している。 <Placemark> <ExtendedData><SchemaData schemaUrl="sample"> <SimpleData name="Src">ak</SimpleData> <SimpleData name="Eqid">10300708</SimpleData> <SimpleData name="Version">2</SimpleData> <SimpleData name="Datetime">Sunday, August 21, 2011 22:27:02 UTC</SimpleData> <SimpleData name="Lat">52.7168</SimpleData> <SimpleData name="Lon">-169.5406</SimpleData> <SimpleData name="Magnitude">2.5</SimpleData> <SimpleData name="Depth">4.9</SimpleData> <SimpleData name="NST">10</SimpleData> <SimpleData name="Region">Fox Islands, Aleutian Islands, Alaska</SimpleData> </SchemaData></ExtendedData> <Point> <coordinates>-169.540600000000012,52.716799999999999</coordinates> </Point> <name>hoge</name> <TimeStamp> <when>2011-08-15</when> </TimeStamp> </Placemark> =⇒Step 2 では、KML に時間属性と名前タグを追加 11 / 15
  12. 12. R を使った空間情報の可視化 データ処理の流れ Step 2-1: 時間情報の抽出&整形 USGS の記法: “Monday, August 22, 2011 00:07:09 UTC” KML の記法: 2011-08-22 CSV から時間情報の抽出 n.data <- nrow(work.table) # 時間列を抽出して KML 記法に変換 time.list <- strptime(work.table[,4], format="%A, %B %d, %Y") 12 / 15
  13. 13. R を使った空間情報の可視化 データ処理の流れ Step 2-2: KML ファイルへ情報追加 KML に時間タグ<TimeStamp>と名前タグ<name>を追加 #KML ファイルの読み込み xml.data <- xmlTreeParse(kml.filename) node0 <- xmlRoot(xml.data) node.offset <- 2 for (i in seq(1, n.data)) { cat("Processing", i, "/", n.data, "") j <- i + node.offset # 新ノード (名前、時間) の生成 name.node <- xmlNode("name", work.table[i,2]) time.node <- xmlNode("TimeStamp", xmlNode("when", time.list[i])) # メインの XML に新ノードの挿入 node0[[1]][[1]][[j]] <- addChildren(node0[[1]][[1]][[j]], name.node) node0[[1]][[1]][[j]] <- addChildren(node0[[1]][[1]][[j]], time.node) } #KML ファイルの上書き保存 saveXML(node0, kml.filename) 13 / 15
  14. 14. R を使った空間情報の可視化 データ処理の流れ Step 2-2: KML ファイルへ情報追加 14 / 15
  15. 15. R を使った空間情報の可視化 おわりに おわりに 今回は位置情報 + 時間情報だけを処理しましたが、その他の属性 情報 (ex. マグニチュード) に応じてアイコンの種類や色、大きさ を変えたり、ポップアップ内容を HTML でカスタマイズも可能 です。 このようなカスタマイズした KML ファイル出力は、XY 座標列の ある Excel などのデータがあれば、R スクリプトを少し修正する ことでできます。興味のある方は、ぜひご相談ください。 mail :nuimura@nagoya-u.jp twitter :t_nuimura 15 / 15

×