Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
Loading in …3
×
1 of 27

気象庁XMLのSPARQL APIを利用してデータを俯瞰しよう -SPARQLとRによる可視化-

16

Share

Download to read offline

2014年4月のAITCクラウドテクノロジー活用部会のネタです

Related Books

Free with a 30 day trial from Scribd

See all

Related Audiobooks

Free with a 30 day trial from Scribd

See all

気象庁XMLのSPARQL APIを利用してデータを俯瞰しよう -SPARQLとRによる可視化-

  1. 1. ~AITCクラウドテクノロジー活用部会~ 気象庁XMLのSPARQL APIを 利用してデータを俯瞰しよう - SPARQLとRによる可視化 - 2014/04/22 菅井康之
  2. 2. Copyright © 2014 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved. • 気象庁XMLのデータをAPIで公開しているけ ど、ただ公開するだけじゃなくて、もう少し 特色を出して行きたいと思う今日この頃 • せっかくSPARQLのエンドポイントも公開し ているので、通常のAPIでは簡単に出来な い、統計情報や俯瞰したデータを可視化 し、公開してはどうだろう? というわけで、今回はSPARQLの クエリ発行から可視化までを 行ってみます
  3. 3. 3Copyright © 2014 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved. テーマ1 季節や月によるデータの傾向を見たい 3
  4. 4. Copyright © 2014 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved. テーマ1 季節や月によるデータの傾向を見たい -大体の流れ- •月毎に気象庁XMLの情報を集計する SPARQLクエリを発行 •SPARQLの結果をRで読み込み、若干の補正 •種類が多いので、可視化部分はrChartsを 利用してインタラクティブに ※rChartsについては下記スライドを参照ください http://www.slideshare.net/yasuyukisugai/r-charts
  5. 5. Copyright © 2014 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved. テーマ1 季節や月によるデータの傾向を見たい • SPARQLクエリはこんな感じにしました ※日付として処理したいので、末尾を1日固定にしています PREFIX xsd: <http://www.w3.org/2001/XMLSchema#> PREFIX atom: <http://www.w3.org/2005/Atom#> PREFIX jma: <http://cloud.projectla.jp/jma/> PREFIX area: <http://cloud.projectla.jp/jma/area#> PREFIX link2: <http://cloud.projectla.jp/jma/link2/> SELECT ?title ?mon (COUNT(?id) as ?c) WHERE { ?id atom:title ?title . ?id atom:updated ?updated } GROUP BY ?title (CONCAT(STR(YEAR(xsd:dateTime(?updated))), '/', STR(MONTH(xsd:dateTime(?updated))), '/01') AS ?mon)
  6. 6. Copyright © 2014 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved. テーマ1 季節や月によるデータの傾向を見たい • SPARQLクエリの発行、結果取得をRで行 うには?→RのSPARQLライブラリを利用しま す • Rで以下のコマンドを実行し、ライブラリを インストール&ロードします > install.packages("SPARQL") > library(SPARQL)
  7. 7. Copyright © 2014 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved. テーマ1 季節や月によるデータの傾向を見たい • RでSPARQLクエリを発行し、結果を取得 します • デフォルトのXML形式だと日本語が文字 化けするので、CSV形式で取得しています • →Fusekiと相性が悪い?? • →XMLにUTF-8が付いてないのが原因 > endpoint="http://api.aitc.jp/ds/sparql" > query="前のスライドのクエリを見てね!" > result<-SPARQL(url=endpoint, query=query, extra=list(output="csv"), format="csv")
  8. 8. Copyright © 2014 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved. テーマ1 季節や月によるデータの傾向を見たい • 取得結果はこんな感じ > View(result$result)
  9. 9. Copyright © 2014 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved. テーマ1 季節や月によるデータの傾向を見たい • データをソートしたり、不要なデータを除去 したり・・・ ※2012/12のデータは、気象庁XMLの公開が 開始された月のため、1ヶ月に満たない データしか存在しません  そのため、今回の対象データからは除去  しています > result2<-result$result > result2<-transform(result2, date=as.Date(mon)) > result2<-result2[order(result2$title, result2$date),] > result2<-result2[as.Date("2013/01/01")<=result2$date,]
  10. 10. Copyright © 2014 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved. テーマ1 季節や月によるデータの傾向を見たい • 可視化部分はrChartsを利用します • Rで以下のコマンドを実行し、ライブラリを インストール&ロードします > install.packages("devtools") > library(devtools) > install_github("rCharts", "ramnathv") > library(rCharts)
  11. 11. Copyright © 2014 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved. テーマ1 季節や月によるデータの傾向を見たい • 今回はあまり凝った事をしないので、 HighChartsで単純に可視化します ※rChartsは日付処理がややめんどい > result2 = transform(result2 , date2 = as.numeric(as.POSIXct(date))*1000) > p2<-hPlot(c date2, data=result2, group="title") > p2$xAxis(type = 'datetime', labels = list( format = '{value:%Y-%m}' )) > p2$set(width=1200, height=800) > p2
  12. 12. Copyright © 2014 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved. テーマ1 季節や月によるデータの傾向を見たい • こんな感じで可視化出来ました • これをフィルタリングしていくと・・・
  13. 13. Copyright © 2014 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved. テーマ1 季節や月によるデータの傾向を見たい • 気象警報・注意報は夏場に多かったり
  14. 14. Copyright © 2014 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved. テーマ1 季節や月によるデータの傾向を見たい • 竜巻注意情報も夏場に多い事が分かっ たりします
  15. 15. 15Copyright © 2014 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved. テーマ2 気象台や情報毎の細かいデータの 傾向を見たい 15
  16. 16. Copyright © 2014 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved. テーマ2 気象台や情報毎の細かいデータの傾 向を見たい -大体の流れ- •SPARQLクエリがちょっと違うくらいで、やって る事は同じ ちなみに、再現性が大事と教わったので、この スライドは細かく書くようにしています
  17. 17. Copyright © 2014 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved. • SPARQLクエリはこんな感じで ※authorとname(リテラル)を追加しただけです・・・はい・・・ テーマ2 気象台や情報毎の細かいデータの 傾向を見たい PREFIX xsd: <http://www.w3.org/2001/XMLSchema#> PREFIX atom: <http://www.w3.org/2005/Atom#> PREFIX jma: <http://cloud.projectla.jp/jma/> PREFIX area: <http://cloud.projectla.jp/jma/area#> PREFIX link2: <http://cloud.projectla.jp/jma/link2/> SELECT ?title ?name ?mon (COUNT(?id) as ?c) WHERE { ?id atom:title ?title . ?id atom:updated ?updated . ?id atom:author ?author . ?author link2:name ?name } GROUP BY ?title ?name (CONCAT(STR(YEAR(xsd:dateTime(?updated))), '/', STR(MONTH(xsd:dateTime(?updated))), '/01') AS ?mon)
  18. 18. Copyright © 2014 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved. • 前回同様に、RでSPARQLクエリを発行 し、結果を取得します テーマ2 気象台や情報毎の細かいデータの 傾向を見たい > endpoint="http://api.aitc.jp/ds/sparql" > query="前のスライドのクエリを見てね!" > result<-SPARQL(url=endpoint, query=query, extra=list(output="csv"), format="csv")
  19. 19. Copyright © 2014 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved. • 取得結果はこんな感じ テーマ2 気象台や情報毎の細かいデータの 傾向を見たい > View(result$result)
  20. 20. Copyright © 2014 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved. • データをソートしたり、不要なデータを除去 したり・・・ テーマ2 気象台や情報毎の細かいデータの 傾向を見たい > result2_2<-result$result > result2_2<-transform(result2_2, date=as.Date(mon)) > result2_2<-result2_2[order(result2_2$name, result2_2$title, result2_2$date),] > result2_2<-result2_2[as.Date("2013/01/01")<=result2_2$date,] > result2_2 = transform(result2_2 , date2 = as.numeric(as.POSIXct(date))*1000)
  21. 21. Copyright © 2014 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved. • 試しに山口県の気象台の気象情報を可 視化してみます テーマ2 気象台や情報毎の細かいデータの 傾向を見たい > result2_2_yamaguchi<- result2_2[result2_2$name=="下関地方気象台", ] > p2<-hPlot(c date2, data=result2_2_yamaguchi, group="title") > p2$xAxis(type = 'datetime', labels = list( format = '{value:%Y-%m}' )) > p2$set(width=1200, height=800) > p2
  22. 22. Copyright © 2014 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved. テーマ2 気象台や情報毎の細かいデータの 傾向を見たい • 高温注意情報が出たり、4月にも気象警 報・注意報が夏並みに出てたりなど。。
  23. 23. Copyright © 2014 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved. • 高温注意情報の頻度を気象台毎に見て みます テーマ2 気象台や情報毎の細かいデータの 傾向を見たい > result2_2_kouon<-result2_2[result2_2$title=="府県高温注意情報", ] > p2<-hPlot(c date2, data=result2_2_kouon, group="name", type = "scatter") > p2$xAxis(type = 'datetime', labels = list( format = '{value:%Y-%m-%d}' )) > p2$set(width=1200, height=600) > p2
  24. 24. Copyright © 2014 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved. テーマ2 気象台や情報毎の細かいデータの 傾向を見たい • やはり沖縄が一番多く、また石垣島では 5月から発令されているなど。。
  25. 25. Copyright © 2014 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved. • 記録的短時間大雨情報の頻度を気象 台毎に見てみます テーマ2 気象台や情報毎の細かいデータの 傾向を見たい > result2_2_kiroku<- result2_2[result2_2$title=="記録的短時間大雨情報", ] > p2<-hPlot(c date2, data=result2_2_kiroku, group="name", type = "scatter") > p2$xAxis(type = 'datetime', labels = list( format = '{value:%Y-%m-%d}' )) > p2$set(width=1200, height=600) > p2
  26. 26. Copyright © 2014 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved. テーマ2 気象台や情報毎の細かいデータの 傾向を見たい • 9月の岐阜が最も多く、福島では4月に 一度発令されているなど。。。
  27. 27. Copyright © 2014 Advanced IT Consortium to Evaluate, Apply and Drive All Rights Reserved. •Let’s have Fun!! :)

×