Download free for 30 days
Sign in
Upload
Language (EN)
Support
Business
Mobile
Social Media
Marketing
Technology
Art & Photos
Career
Design
Education
Presentations & Public Speaking
Government & Nonprofit
Healthcare
Internet
Law
Leadership & Management
Automotive
Engineering
Software
Recruiting & HR
Retail
Sales
Services
Science
Small Business & Entrepreneurship
Food
Environment
Economy & Finance
Data & Analytics
Investor Relations
Sports
Spiritual
News & Politics
Travel
Self Improvement
Real Estate
Entertainment & Humor
Health & Medicine
Devices & Hardware
Lifestyle
Change Language
Language
English
Español
Português
Français
Deutsche
Cancel
Save
EN
Uploaded by
kobexr
PDF, PPTX
4,341 views
R入門とgoogle map +α
Kobe.R #1 R入門 GoogleMap 巡回セールスマン問題
Technology
◦
Read more
6
Save
Share
Embed
Embed presentation
Download
Download as PDF, PPTX
1
/ 26
2
/ 26
3
/ 26
4
/ 26
5
/ 26
6
/ 26
7
/ 26
8
/ 26
9
/ 26
10
/ 26
11
/ 26
12
/ 26
13
/ 26
14
/ 26
15
/ 26
16
/ 26
17
/ 26
18
/ 26
19
/ 26
20
/ 26
21
/ 26
22
/ 26
23
/ 26
24
/ 26
25
/ 26
26
/ 26
More Related Content
PPTX
Apache Drill で日本語を扱ってみよう + オープンデータ解析
by
MapR Technologies Japan
PDF
Perl for visualization
by
Daichi Morifuji
PDF
D3.js と SVG によるデータビジュアライゼーション
by
Kohei Kadowaki
PPTX
Leaflet初級編 - Web地図サイトを構築してみよう-
by
Yasunori Kirimoto
PDF
RでGIS
by
Hoshida Yukihisa
PDF
RでGISハンズオンセッション
by
arctic_tern265
PDF
Gtug girls-20140828
by
Daichi Morifuji
PDF
FOSS4Gを利用したWebでの地理空間情報公開入門
by
Kosuke Asahi
Apache Drill で日本語を扱ってみよう + オープンデータ解析
by
MapR Technologies Japan
Perl for visualization
by
Daichi Morifuji
D3.js と SVG によるデータビジュアライゼーション
by
Kohei Kadowaki
Leaflet初級編 - Web地図サイトを構築してみよう-
by
Yasunori Kirimoto
RでGIS
by
Hoshida Yukihisa
RでGISハンズオンセッション
by
arctic_tern265
Gtug girls-20140828
by
Daichi Morifuji
FOSS4Gを利用したWebでの地理空間情報公開入門
by
Kosuke Asahi
What's hot
PPTX
FOSS4G 2014 Hokkaidoハンズオン - PostGIS入門
by
Hideo Harada
PPTX
Xamarinで作る「オリジナルタイル地図」アプリ
by
Kohei Otsuka
PDF
FOSS4Gでオープンデータもかんたん
by
Kosuke Asahi
PDF
QuantumGISを使ったPostgreSQL/PostGIS利用方法紹介
by
Yoichi Kayama
PDF
GPUを考慮したMapReduceのタスクスケジューリング
by
Koichi Shirahata
PDF
AngularJSとD3.jsによるインタラクティブデータビジュアライゼーション
by
Yosuke Onoue
PDF
151012 foss4 g_tokyo_grass7_presentation
by
Takayuki Nuimura
PDF
データビジュアライゼーションの作り方
by
清水 正行
PDF
FOSS4Gで地理空間情報もかんたん
by
Kosuke Asahi
KEY
GTC2011 Japan
by
Takuro Iizuka
PDF
非静力学海洋モデルkinacoのGPUによる高速化
by
Takateru Yamagishi
PDF
[9.5新機能]追加されたgroupbyの使い方
by
Kosuke Kida
PDF
Leaflet初級編 - Web地図サイトを構築してみよう-
by
Yasunori Kirimoto
FOSS4G 2014 Hokkaidoハンズオン - PostGIS入門
by
Hideo Harada
Xamarinで作る「オリジナルタイル地図」アプリ
by
Kohei Otsuka
FOSS4Gでオープンデータもかんたん
by
Kosuke Asahi
QuantumGISを使ったPostgreSQL/PostGIS利用方法紹介
by
Yoichi Kayama
GPUを考慮したMapReduceのタスクスケジューリング
by
Koichi Shirahata
AngularJSとD3.jsによるインタラクティブデータビジュアライゼーション
by
Yosuke Onoue
151012 foss4 g_tokyo_grass7_presentation
by
Takayuki Nuimura
データビジュアライゼーションの作り方
by
清水 正行
FOSS4Gで地理空間情報もかんたん
by
Kosuke Asahi
GTC2011 Japan
by
Takuro Iizuka
非静力学海洋モデルkinacoのGPUによる高速化
by
Takateru Yamagishi
[9.5新機能]追加されたgroupbyの使い方
by
Kosuke Kida
Leaflet初級編 - Web地図サイトを構築してみよう-
by
Yasunori Kirimoto
Similar to R入門とgoogle map +α
PPTX
TSP and Geocoding on R
by
sleipnir002
PDF
Rを用いたGIS
by
Mizutani Takayuki
PDF
120620 chred r_presentation1
by
Takayuki Nuimura
PDF
PosGIS/pgRoutingとRの連携による道路ネットワーク分析(埼玉大学・国府田様)
by
OSgeo Japan
PDF
2014年日本生態学会広島大会・自由集会「仕事でつかえる!FOSS4G」発表スライド
by
Mizutani Takayuki
PDF
Rmap
by
springking
PDF
10min r study_tokyor25
by
Nobuaki Oshiro
PDF
10min r study_tokyor25
by
Nobuaki Oshiro
PPT
K010 appstat201201
by
t2tarumi
PDF
空間統計を使って地価分布図を描いてみる
by
Yukihiro NAKAJIMA
PDF
121107 foss4 g_osaka_r_handson_presentation
by
Takayuki Nuimura
PDF
ggplot2をつかってみよう
by
Hiroki Itô
PDF
GeoFuse ライトニングトーク
by
Hal Seki
PDF
Foss4 gマイクロジオデータ解析入門
by
Hiroaki Sengoku
PDF
Rデータ処理入門
by
Hiroki K
PDF
QGIS入門(1)
by
Hiroaki Sengoku
PDF
Yamadai.R チュートリアルセッション
by
考司 小杉
PDF
Rあんなときこんなとき(tokyo r#12)
by
Shintaro Fukushima
PDF
実践で学ぶネットワーク分析
by
Mitsunori Sato
DOCX
Rデモ03_データ分析編2016
by
wada, kazumi
TSP and Geocoding on R
by
sleipnir002
Rを用いたGIS
by
Mizutani Takayuki
120620 chred r_presentation1
by
Takayuki Nuimura
PosGIS/pgRoutingとRの連携による道路ネットワーク分析(埼玉大学・国府田様)
by
OSgeo Japan
2014年日本生態学会広島大会・自由集会「仕事でつかえる!FOSS4G」発表スライド
by
Mizutani Takayuki
Rmap
by
springking
10min r study_tokyor25
by
Nobuaki Oshiro
10min r study_tokyor25
by
Nobuaki Oshiro
K010 appstat201201
by
t2tarumi
空間統計を使って地価分布図を描いてみる
by
Yukihiro NAKAJIMA
121107 foss4 g_osaka_r_handson_presentation
by
Takayuki Nuimura
ggplot2をつかってみよう
by
Hiroki Itô
GeoFuse ライトニングトーク
by
Hal Seki
Foss4 gマイクロジオデータ解析入門
by
Hiroaki Sengoku
Rデータ処理入門
by
Hiroki K
QGIS入門(1)
by
Hiroaki Sengoku
Yamadai.R チュートリアルセッション
by
考司 小杉
Rあんなときこんなとき(tokyo r#12)
by
Shintaro Fukushima
実践で学ぶネットワーク分析
by
Mitsunori Sato
Rデモ03_データ分析編2016
by
wada, kazumi
R入門とgoogle map +α
2.
R とGoogleMap • 鯖江市のデータを取得して Webブラウザ上にマッピングする
3.
R は 便利な解析ツール 統計 分析 •
オープン & フリー • グラフィックス • 充実した解析環境
4.
RStudio で 更に便利に R用のIDE 統計 分析
5.
R の 基本操作
(変数の代入) • a <- 1 #aに1を代入 •b <- c(1:3) #bにベクトル(1,2,3)を代入 •c <- c(‘x’, ‘y’, ‘z’) • d <- data.frame(d1=b, d2=c)
6.
R の 基本操作
(データフレーム) • d <- data.frame(d1=b, d2=c) 要素ラベルで操作できる •要素ラベルは「$」で表す d$d1[2] = d[2, 1] = 2
7.
R の 基本操作
(データの確認・準備) • str(), head(), summary()でデータ確認 str(d$d1) • as.XXXで型を変更 as.integer, as.character… d$d1 <- as.character(d$d1) • names()で要素の名前取得/命名 names(d) names(d) <- c(“名前1”, “名前2”)
8.
R の 基本操作
(パッケージの利用) •Rの機能を拡張するためのパッケージ • install.packages() … インストール • library() or require() … 呼び出し • XML … XMLファイル操作 • googleVis … Google Visualization API
9.
R の 基本操作
(その他便利な機能紹介) • データの取得 txtデータ: read.table csvデータ: read.csv(csvファイル) Excelデータ: xlsxパッケージ、xlsx(xlsファイル) Webデータ: readLines(URL) RCurlパッケージのgetURL •可視化ツール ggplot2: いろいろなプロット ggmap: マッピング
10.
R とGoogleMap • 鯖江市のAED設置場所をマッピング
11.
install.packages('XML'); library(XML) #XML
package install.packages('googleVis'); library(googleVis) #googleVis package int <- "integer"; num <- "numeric"; chr <- "character" #データ型の略記 url <- "http://www3.city.sabae.fukui.jp/xml/aed/aed.xml" #鯖江市URL data <- xmlToDataFrame(url, stringsAsFactors=F, colClasses=c(int, chr, chr, int, num, num, chr)) #型指定でデータ取得 data$latlong <- paste(data$latitude, data$longitude, sep=":") #データ加工 plot(gvisMap(data, locationvar="latlong", tipvar="name")) #表示 R とGoogleMap (コード) • データ取得から可視化まで、これだけ
12.
R とGoogleMap (内容) •
鯖江市HPからデータを取得 •データを確認、加工 • マッピングしてWebブラウザで表示
13.
R とGoogleMap (データを取得) •
XMLデータを取得する #XMLパッケージの導入 #この中の関数xmlToDataFrameを利用する install.packages(‘XML’) library(XML) #関数xmlToDataFrameを使ってXMLデータを取得 #この関数についてのヘルプを見るには、?xmlToDataFrame int <- "integer“; num <- "numeric“; chr <- "character“ url <- "http://www3.city.sabae.fukui.jp/xml/aed/aed.xml" data <- xmlToDataFrame(url, stringsAsFactors=F, colClasses=c(int, chr, chr, int, num, num, chr))
14.
R とGoogleMap (データの確認) •データの中身を(簡単に)確認する #str関数でデータフレームの構造を確認 str(data) 'data.frame':
134 obs. of 7 variables: $ no : int 1 115 116 117 118 119 120 121 122 123 ... $ name : chr "鯖江高等学校 " "鯖江市嚮陽会館" "鯖江市役所" "JAたんなん ふれあいセンター " ... $ address : chr "鯖江市舟津町2丁目5-42 " "鯖江市桜町2丁目7番1号" "鯖江市西山町13番1号"... $ count : int 1 1 1 1 1 1 1 1 1 1 ... $ latitude : num 35.9 35.9 36 36 36 ... $ longitude: num 136 136 136 136 136 ... $ url : chr "http://www3.city.sabae.fukui.jp/xml/aed/#1" "http://www3.city.sabae.fukui.jp/xml/aed/#115” ... latitude … 緯度 longitude … 経度
15.
R とGoogleMap (データを加工) •
データをマッピング用に加工する #googleVisパッケージの導入 #この中の関数gvisMapを利用する Install.packages(‘googleVis’) library(googleVis) #gvisMap関数で座標を指定するには、「緯度:経度」の形式が必要 #dataに緯度:経度を要素とする項目latlongを追加する #「データフレーム$項目名」<- 要素 で割り当て #欲しい要素は「data$latitude:data$longitude」なので #「data$latitude」と「data$longitude」を「:」で結合(paste) data$latlong <- paste(data$latitude, data$longitude, sep=":")
16.
R とGoogleMap (データを表示) •マッピングする #gvisMapを利用してマッピング用データを準備 map
<- gvisMap(data, locationvar=“latlong”, tipvar=“name”) #「option」で条件設定をすることもできる map <- gvisMap(data, locationvar = “latlong”, tipvar = “name”, options = list(showTip = F, enableScrollWheel = T, useMapTypeControl = T)) #作成したデータをブラウザで表示する plot(map)
17.
R とGoogleMap (完成?)
18.
+α: セールスマンの巡回 http://www.bunkyo.ac.jp/~nemoto/lecture/seminar2/ 2000/kimura/ronbun2.htm 巡回セールスマン問題(じゅんか いセールスマンもんだい、 英: traveling
salesman problem、 TSP)は、都市の集合と各2都市 間の移動コスト(たとえば距離) が与えられたとき、全ての都市を ちょうど一度ずつ巡り出発地に 戻る巡回路の総移動コストが最 小のものを求める(セールスマン が所定の複数の都市を1回だけ 巡回する場合の最短経路を求め る)組合せ最適化問題である。 (Wikipedia)
19.
街の公園を巡回し管理している人がいます。 彼らの移動時間を短くできないか考えてみます。 +α: セールスマンの巡回 イメージ図
20.
流山市のオープンデータトライアルHPから、「平和台」の公園データを使います。 http://www.city.nagareyama.chiba.jp/10763/index.html #CSVファイルのURL url.parks <- "http://www.city.nagareyama.chiba.jp/dbps_data/_material _/localhost/shisetsu_kouen.csv" #公園データの取得 parks <-
read.csv(url.parks) #平和台が付く公園の収集 parks.selected <- parks[grep("平和台", parks$名称), 1:7] 公園の位置を取得
21.
取得データの確認 • 公園は全部で10ヶ所 • 今回は名称、緯度、経度を使用
22.
地図上へのプロット MP <- M
+ geom_point(data = parks.selected, aes(x=経度, y=緯度), size=7, colour="red") 公園の中には、実際にHPで紹介されている位 置とは違う位置にプロットされてしまうものもあ ります(下記、平和台1号公園)。左図のプロッ トはとりあえずの目安と考えて下さい。 HPの緯度経度 からのプロット HPで紹介され ている位置
23.
「平和台」の公園データを同じ箇所を通らないように、最短で巡回する経路を考え てみます。まず、各公園間の移動時間を計算します。 1 2 3
4 5 6 7 8 9 10 1 0.0 5.3 5.8 0.0 5.4 3.0 4.9 5.1 2.2 11.2 2 5.3 0.0 6.1 5.7 11.1 4.5 8.9 9.3 4.8 6.5 3 5.8 6.1 0.0 5.2 8.0 5.5 9.2 9.5 3.2 10.4 4 0.0 5.7 5.2 0.0 5.4 3.0 4.9 5.1 2.2 11.2 5 5.4 11.1 8.0 5.4 0.0 7.1 5.2 4.1 6.0 16.0 6 3.0 4.5 5.5 3.0 7.1 0.0 5.1 5.5 2.8 9.5 7 4.9 8.9 9.2 4.9 5.2 5.1 0.0 2.9 6.3 11.5 8 5.1 9.3 9.5 5.1 4.1 5.5 2.9 0.0 6.2 13.4 9 2.2 4.8 3.2 2.2 6.0 2.8 6.3 6.2 0.0 10.6 10 11.2 6.5 10.4 11.2 16.0 9.5 11.5 13.4 10.6 0.0 #徒歩で移動する場合 travelmode = "walking" #nr x nrの時間行列と距離行列の作成 nr <- nrow(parks.selected) time <- matrix(0, nr, nr) distance <- matrix(0, nr, nr) for (i in 1:nr){ parks.selected.i <- parks.selected[i,] loc.i <- c(parks.selected.i$経度, parks.selected.i$緯度) for (j in (i+1):nr){ parks.selected.j <- parks.selected[j,] loc.j <- c(parks.selected.j$経度, parks.selected.j$緯度) route.ij <- route(loc.i, loc.j, mode=travelmode, structure="route") #時間行列と距離行列に代入 time[i, j] = time[j, i] <- sum(route.ij$minutes, na.rm=T) distance[i, j] = distance[j, i] <- sum(route.ij$km, na.rm=T) } } 各公園(1~10)間の移動時間を、 route関数で計算した結果。単位は min。徒歩移動とした。車移動の場合 は、travelmode=“driving” 公園間の距離の計算
24.
最短距離の計算 10ヶ所の公園を1回ずつ経由するルートを、TSPパッケージを使って計算します。 install.packages("TSP"); library(TSP) ans <-
solve_TSP(TSP(time)) • TSP関数で、距離の行列をTSP形式に変換 TSP: symmetric traveling salesperson problem(セールスマン巡回問題) • solve_TSP関数で、最短経路を求める この順で公園をまわっていけばいいということらしい。
25.
公園の巡回順路、所用時間、距離をプロットしていきます。 #経路のプロット。ans[k]番目からans[k+1]番目の公園への移動経路のプロット for (k in
1:(nr-1)){ h1 <- ans[k]; h2 <- ans[k+1] route <- na.omit(route(c(lon[h1], lat[h1]), c(lon[h2], lat[h2]), mode=travelmode, structure="route")) #与えられた座標をそのまま使用すると正しく表示されないことがあるので、 #移動経路の始点(最後にまわる公園については終点)を公園の位置とした。 M <- M + geom_point(data=route[1,], aes(x=lon, y=lat), size=10, colour="red", alpha=0.75) M <- M + geom_text(data=route[1,], aes(x=lon, y=lat), label=k, colour="white") M <- M + geom_text(data=route[1,], aes(x=lon, y=lat+0.0005), label=parks.selected$名称[h1], colour=“red”, size=4) M <- M + geom_path(data=route, aes(x=lon, y=lat), size=1.5, colour="red", alpha=0.75) M <- M + geom_text(data=route, aes(x=mean(lon), y=mean(lat)), label=paste(sprintf("%3.1f", sum(route$min)), "min, ", sprintf("%3.1f", sum(route$km)), "km", sep=""), colour="white", size=4) if (nrow(route)<2){ lonlat <- data.frame(lon=lon[c(h1, h2)], lat=lat[c(h1, h2)]) M <- M + geom_path(data=lonlat, aes(x=lon, y=lat), size=0.75, colour="red", alpha=0.75, type="dotted") } } M <- M + geom_point(data=route[nrow(route),], aes(x=lon, y=lat), size=10, colour="red", alpha=0.75) M <- M + geom_text(data=route[nrow(route),], aes(x=lon, y=lat), label=k+1, colour="white") M <- M + geom_text(data=route[nrow(route),], aes(x=lon, y=lat+0.0015), label=parks.selected$名称[h1], colour="red", size=4) プロット
26.
完成 (ごちゃごちゃ
Download