SlideShare a Scribd company logo
はじめに 時系列データの前準備 時系列データの可視化 おわりに
GRASS GIS 7 で気候データの処理と可視化
縫村崇行 1,2
(NUIMURA, Takayuki)
1
千葉科学大学 2
OSGeo 財団日本支部
2015/10/12
1 / 20
はじめに 時系列データの前準備 時系列データの可視化 おわりに
GIS と時間軸
もともと GIS では X、Y、値 (Z など) を扱うことを得意としてお
り、時間軸のデータ処理機能の実装は遅れぎみ。
気候データの可視化・処理ツールとしては grads が一般的
それ以外にも各種プログラミングでの処理が通常で GIS はあまり
使われて来なかった
2 / 20
はじめに 時系列データの前準備 時系列データの可視化 おわりに
時系列データ
気象・気候データの多くは空間分布情報に時間の情報が付加され
たデータとして配布されている
気象・気候データでよくあるファイル形式
NetCDF
HDF
GRIB
etc · · ·
3 / 20
はじめに 時系列データの前準備 時系列データの可視化 おわりに
GRASS GIS 7
強力な解析機能を持った、オープンソースのデスクトップ GIS
今年で 32 歳!
現在の最新版は 7.0.1-1
強力な解析機能 (ラスタ、ベクタ、画像)
オープンソース (GPL)
4 / 20
はじめに 時系列データの前準備 時系列データの可視化 おわりに
時系列モジュールの追加
画像表示モジュール (d.)=⇒ いくつかは GUI に統合
データベースモジュール (db.)
一般モジュール (g.)=⇒ いくつかは GUI に統合
画像処理モジュール (i.)
その他のモジュール (m.)
ポストスクリプトモジュール (ps.)
ラスター処理モジュール (r.)
ボクセル処理モジュール (r3.)
ベクター処理モジュール (v.)
時系列処理モジュール (t.)(new!)
5 / 20
はじめに 時系列データの前準備 時系列データの可視化 おわりに
GRASS GIS 7 での時系列データの扱い
strds: Spatial time raster data set
stvds: Spatial time vector data set
str3ds: Spatial time 3D raster data set
6 / 20
はじめに 時系列データの前準備 時系列データの可視化 おわりに
時系列データ処理のための前準備
元の気象・気候データ
(NetCDFなど)
GRASS GISに
インポート可能なデータ
(GeoTIFFなど)
GDAL
r.in.gdal
GRASSラスター形式
(GeoTIFFなど)
Space time DB
(実態はデータへのリンク)
t.create
t.regist
7 / 20
はじめに 時系列データの前準備 時系列データの可視化 おわりに
時系列データ処理のための前準備
t.create: 空の Space time DB を用意
type: strds/stvds/str3ds
temporaltype:absolute/relative
output: Space time DB 名
title: データのタイトル
description: データの説明
*title や description も入力が必須
8 / 20
はじめに 時系列データの前準備 時系列データの可視化 おわりに
時系列データ処理のための前準備
t.register: GRASS のデータと結びつける
input: t.create で作成した Space time DB 名
maps/file: GRASS データ名のリスト (記述/外部テキスト)
start: 最初の日時 (yyyy-mm-dd [HH:MM:SS])
increment: タイムステップ (何日おきとか何時間おき)
*外部テキストファイルでデータ名リストを作成しておくのが便
利、外部ファイルで個別に時間も指定可能
9 / 20
はじめに 時系列データの前準備 時系列データの可視化 おわりに
時系列データ処理のための前準備
Python で ERA-interim (by ECMWF) を読み込む場合
1 #!/usr/bin/env python
2
3 import os
4 import time
5 import subprocess
6 from osgeo import gdal
7
8 nc_filename = ’netcdf-atls13-
a562cefde8a29a7288fa0b8b7f9413f7-Ml1YX2.nc’
9 xmin = 0
10 ymax = 90
11 resx = 0.75
12 resy = 0.75
10 / 20
はじめに 時系列データの前準備 時系列データの可視化 おわりに
時系列データ処理のための前準備
GDAL で NetCDF と各種情報を読み込み、GRASS で領域設定
1 ds = gdal.Open(nc_filename)
2 if ds is None:
3 print ’Could not open ’ + nc_filename
4 sys.exit(1)
5
6 nbands = ds.RasterCount
7 width = ds.RasterXSize
8 height = ds.RasterYSize
9
10 grass.run_command(’g.region’, n=90, s=-90, e=360, w=0)
11 / 20
はじめに 時系列データの前準備 時系列データの可視化 おわりに
時系列データ処理のための前準備
for ループで各タイムステップごとに処理
属性情報読み込み(オフセット、ゲイン、nodata 値)
1 for i in range(1, nbands):
2 print(str(i) + ’ / ’ + str(nbands))
3 band = ds.GetRasterBand(i)
4 data = band.ReadAsArray()
5 offset = band.GetOffset()
6 gain = band.GetScale()
7 nodata = band.GetNoDataValue()
12 / 20
はじめに 時系列データの前準備 時系列データの可視化 おわりに
時系列データ処理のための前準備
for ループで各タイムステップごとに処理
時間の表記形式の変換
1 timehrs1 = int(band.GetMetadataItem(’NETCDF_DIM_time
’)) # Hours since 1900/1/1
2 timehrs2 = timehrs1 - 613608 # Hours since 1970/1/1
(Epoc time)
3 timesec = timehrs2 * 60 * 60 # Seconds since
1970/1/1
4 date1 = time.strftime(’%Y%m%d_%H%M’, time.gmtime(
timesec))
5 date2 = time.strftime(’%m %b %Y’, time.gmtime(
timesec))
13 / 20
はじめに 時系列データの前準備 時系列データの可視化 おわりに
時系列データ処理のための前準備
for ループで各タイムステップごとに処理
GeoTIFF に書き出し
1 driver = gdal.GetDriverByName(’GTiff’)
2 dst_ds = driver.Create(’b_’ + str(i) + ’.tif’, width
, height, 1, gdal.GDT_Float32)
3 dst_ds.SetProjection (’EPSG:4326’)
4 dst_ds.SetGeoTransform([xmin, resx, 0, ymax, 0, -
resy])
5 dst_ds.GetRasterBand(1).WriteArray(data)
6 dst_ds.GetRasterBand(1).SetNoDataValue(nodata)
7 dst_ds = None
14 / 20
はじめに 時系列データの前準備 時系列データの可視化 おわりに
時系列データ処理のための前準備
for ループで各タイムステップごとに処理
GRASS にインポート、DN を物理値に変換
1 grass.run_command(’r.in.gdal’, input=’b_’ + str(i) +
’.tif’, output=date1 + ’_ecmwf_’, overwrite =
True, flags=’o’)
2
3 ## Convert from DN to physical value
4 grass.mapcalc(’${DATE1}_ecmwf = 1.0 * (${DATE1}
_ecmwf_ * ${GAIN}) + ${OFFSET}’,
5 DATE1 = date1,
6 GAIN = gain,
7 OFFSET = offset,
8 overwrite = True)
15 / 20
はじめに 時系列データの前準備 時系列データの可視化 おわりに
時系列データ処理のための前準備
for ループで各タイムステップごとに処理
タイムスタンプ付与、一時データ消去
1 grass.run_command(’r.timestamp’, map=date1 + ’_ecmwf
’, date=date2)
2 grass.run_command(’g.remove’, type=’rast’, name=
date1 + ’_ecmwf_’, flags=’f’)
3 os.remove(’b_’ + str(i) + ’.tif’)
16 / 20
はじめに 時系列データの前準備 時系列データの可視化 おわりに
時系列データ処理のための前準備
Space time DB の作成とデータ登録
1 grass.run_command(’t.create’, output=’T_6hourly_ecmwf’,
type=’strds’,
2 temporaltype=’absolute’, title=’hoge’,
3 description=’hoge’)
4 subprocess.call(’g.list type=rast pattern=*_ecmwf >>
5 filenames_ecmwf_6hourly.txt’, shell=True)
6 grass.run_command(’t.register’, flags=’i’, input=’
T_6hourly_ecmwf’, type=’rast’, file=’
filenames_ecmwf_6hourly.txt’, start=’2015-06-01 00:00
’, increment=’6 hours’, overwrite = True)
17 / 20
はじめに 時系列データの前準備 時系列データの可視化 おわりに
時系列データの可視化: g.gui.timeline
18 / 20
はじめに 時系列データの前準備 時系列データの可視化 おわりに
時系列データの可視化: g.gui.animation
=⇒ デモ
19 / 20
はじめに 時系列データの前準備 時系列データの可視化 おわりに
おわりに
従来プログラミングが使えなければできない気候データ処理
が GRASS GIS 7 では GUI ベースで利用可能
それぞれの GUI ツールのスクリプト例を参考に GUI からプロ
グラミングに以降がしやすい
20 / 20

More Related Content

What's hot

QGIS2.18 GNSS編
QGIS2.18 GNSS編QGIS2.18 GNSS編
QGIS2.18 GNSS編
Jyun Tanaka
 
GDALとmod_python、mod_rewriteでタイルマップサービスを作ってみた
GDALとmod_python、mod_rewriteでタイルマップサービスを作ってみたGDALとmod_python、mod_rewriteでタイルマップサービスを作ってみた
GDALとmod_python、mod_rewriteでタイルマップサービスを作ってみた
Keisuke Nakao
 
Rを用いたGIS
Rを用いたGISRを用いたGIS
Rを用いたGIS
Mizutani Takayuki
 
R入門とgoogle map +α
R入門とgoogle map +αR入門とgoogle map +α
R入門とgoogle map +α
kobexr
 
QuantumGISを使ったPostgreSQL/PostGIS利用方法紹介
QuantumGISを使ったPostgreSQL/PostGIS利用方法紹介QuantumGISを使ったPostgreSQL/PostGIS利用方法紹介
QuantumGISを使ったPostgreSQL/PostGIS利用方法紹介
Yoichi Kayama
 
Iugonet 20120810-nipr-sato
Iugonet 20120810-nipr-satoIugonet 20120810-nipr-sato
Iugonet 20120810-nipr-satoIugo Net
 
xtsパッケージで時系列解析
xtsパッケージで時系列解析xtsパッケージで時系列解析
xtsパッケージで時系列解析
Nagi Teramo
 
タイル地図がおもしろい
タイル地図がおもしろいタイル地図がおもしろい
タイル地図がおもしろい
Kohei Otsuka
 
FOSS4G 2014 Hokkaidoハンズオン - PostGIS入門
FOSS4G 2014 Hokkaidoハンズオン - PostGIS入門FOSS4G 2014 Hokkaidoハンズオン - PostGIS入門
FOSS4G 2014 Hokkaidoハンズオン - PostGIS入門Hideo Harada
 
FOSS4Gでオープンデータもかんたん
FOSS4GでオープンデータもかんたんFOSS4Gでオープンデータもかんたん
FOSS4Gでオープンデータもかんたん
Kosuke Asahi
 
地球地図を利用した地図タイルの作成 - FOSS4G TOKYO 2014 全体セッション2
地球地図を利用した地図タイルの作成 - FOSS4G TOKYO 2014 全体セッション2地球地図を利用した地図タイルの作成 - FOSS4G TOKYO 2014 全体セッション2
地球地図を利用した地図タイルの作成 - FOSS4G TOKYO 2014 全体セッション2
Taro Matsuzawa
 

What's hot (11)

QGIS2.18 GNSS編
QGIS2.18 GNSS編QGIS2.18 GNSS編
QGIS2.18 GNSS編
 
GDALとmod_python、mod_rewriteでタイルマップサービスを作ってみた
GDALとmod_python、mod_rewriteでタイルマップサービスを作ってみたGDALとmod_python、mod_rewriteでタイルマップサービスを作ってみた
GDALとmod_python、mod_rewriteでタイルマップサービスを作ってみた
 
Rを用いたGIS
Rを用いたGISRを用いたGIS
Rを用いたGIS
 
R入門とgoogle map +α
R入門とgoogle map +αR入門とgoogle map +α
R入門とgoogle map +α
 
QuantumGISを使ったPostgreSQL/PostGIS利用方法紹介
QuantumGISを使ったPostgreSQL/PostGIS利用方法紹介QuantumGISを使ったPostgreSQL/PostGIS利用方法紹介
QuantumGISを使ったPostgreSQL/PostGIS利用方法紹介
 
Iugonet 20120810-nipr-sato
Iugonet 20120810-nipr-satoIugonet 20120810-nipr-sato
Iugonet 20120810-nipr-sato
 
xtsパッケージで時系列解析
xtsパッケージで時系列解析xtsパッケージで時系列解析
xtsパッケージで時系列解析
 
タイル地図がおもしろい
タイル地図がおもしろいタイル地図がおもしろい
タイル地図がおもしろい
 
FOSS4G 2014 Hokkaidoハンズオン - PostGIS入門
FOSS4G 2014 Hokkaidoハンズオン - PostGIS入門FOSS4G 2014 Hokkaidoハンズオン - PostGIS入門
FOSS4G 2014 Hokkaidoハンズオン - PostGIS入門
 
FOSS4Gでオープンデータもかんたん
FOSS4GでオープンデータもかんたんFOSS4Gでオープンデータもかんたん
FOSS4Gでオープンデータもかんたん
 
地球地図を利用した地図タイルの作成 - FOSS4G TOKYO 2014 全体セッション2
地球地図を利用した地図タイルの作成 - FOSS4G TOKYO 2014 全体セッション2地球地図を利用した地図タイルの作成 - FOSS4G TOKYO 2014 全体セッション2
地球地図を利用した地図タイルの作成 - FOSS4G TOKYO 2014 全体セッション2
 

Viewers also liked

第5章 時系列データのモデリング, 補助情報を考慮したモデリング
第5章 時系列データのモデリング, 補助情報を考慮したモデリング第5章 時系列データのモデリング, 補助情報を考慮したモデリング
第5章 時系列データのモデリング, 補助情報を考慮したモデリング
ksmzn
 
第3回メドレー読書会後半
第3回メドレー読書会後半第3回メドレー読書会後半
第3回メドレー読書会後半
Kazuhiro Himoto
 
Complication
ComplicationComplication
Complication
Motoki Narita
 
Prometheus
PrometheusPrometheus
Prometheus
Seiya Mizuno
 
Deep Leaningと超解像
Deep Leaningと超解像Deep Leaningと超解像
Deep Leaningと超解像
Takuya Matsunaga
 
Shojinmeat Project 2016年 広報活動の記録
Shojinmeat Project 2016年 広報活動の記録Shojinmeat Project 2016年 広報活動の記録
Shojinmeat Project 2016年 広報活動の記録
啓大 田中
 
時系列パーソナル・データの プライバシー
時系列パーソナル・データのプライバシー時系列パーソナル・データのプライバシー
時系列パーソナル・データの プライバシー
Hiroshi Nakagawa
 
Rによるデータサイエンス:12章「時系列」
Rによるデータサイエンス:12章「時系列」Rによるデータサイエンス:12章「時系列」
Rによるデータサイエンス:12章「時系列」
Nagi Teramo
 
Granger因果による 時系列データの因果推定(因果フェス2015)
Granger因果による時系列データの因果推定(因果フェス2015)Granger因果による時系列データの因果推定(因果フェス2015)
Granger因果による 時系列データの因果推定(因果フェス2015)
Takashi J OZAKI
 
とある金融屋の統計技師が時系列解析してみた
とある金融屋の統計技師が時系列解析してみたとある金融屋の統計技師が時系列解析してみた
とある金融屋の統計技師が時系列解析してみた
Nagi Teramo
 
Apache Sparkを用いたスケーラブルな時系列データの異常検知モデル学習ソフトウェアの開発
Apache Sparkを用いたスケーラブルな時系列データの異常検知モデル学習ソフトウェアの開発Apache Sparkを用いたスケーラブルな時系列データの異常検知モデル学習ソフトウェアの開発
Apache Sparkを用いたスケーラブルな時系列データの異常検知モデル学習ソフトウェアの開発
Ryo 亮 Kawahara 河原
 
はじめての「R」
はじめての「R」はじめての「R」
はじめての「R」
Masahiro Hayashi
 
マルコフモデル,隠れマルコフモデルとコネクショニスト時系列分類法
マルコフモデル,隠れマルコフモデルとコネクショニスト時系列分類法マルコフモデル,隠れマルコフモデルとコネクショニスト時系列分類法
マルコフモデル,隠れマルコフモデルとコネクショニスト時系列分類法
Shuhei Sowa
 
Lstm shannonlab
Lstm shannonlab Lstm shannonlab
Lstm shannonlab
Shannon Lab
 
24時間でiOSアプリ-Twitterクライアント-の作成にチャレンジ
24時間でiOSアプリ-Twitterクライアント-の作成にチャレンジ24時間でiOSアプリ-Twitterクライアント-の作成にチャレンジ
24時間でiOSアプリ-Twitterクライアント-の作成にチャレンジ
聡 中川
 
How to Make Awesome SlideShares: Tips & Tricks
How to Make Awesome SlideShares: Tips & TricksHow to Make Awesome SlideShares: Tips & Tricks
How to Make Awesome SlideShares: Tips & Tricks
SlideShare
 
Getting Started With SlideShare
Getting Started With SlideShareGetting Started With SlideShare
Getting Started With SlideShare
SlideShare
 

Viewers also liked (17)

第5章 時系列データのモデリング, 補助情報を考慮したモデリング
第5章 時系列データのモデリング, 補助情報を考慮したモデリング第5章 時系列データのモデリング, 補助情報を考慮したモデリング
第5章 時系列データのモデリング, 補助情報を考慮したモデリング
 
第3回メドレー読書会後半
第3回メドレー読書会後半第3回メドレー読書会後半
第3回メドレー読書会後半
 
Complication
ComplicationComplication
Complication
 
Prometheus
PrometheusPrometheus
Prometheus
 
Deep Leaningと超解像
Deep Leaningと超解像Deep Leaningと超解像
Deep Leaningと超解像
 
Shojinmeat Project 2016年 広報活動の記録
Shojinmeat Project 2016年 広報活動の記録Shojinmeat Project 2016年 広報活動の記録
Shojinmeat Project 2016年 広報活動の記録
 
時系列パーソナル・データの プライバシー
時系列パーソナル・データのプライバシー時系列パーソナル・データのプライバシー
時系列パーソナル・データの プライバシー
 
Rによるデータサイエンス:12章「時系列」
Rによるデータサイエンス:12章「時系列」Rによるデータサイエンス:12章「時系列」
Rによるデータサイエンス:12章「時系列」
 
Granger因果による 時系列データの因果推定(因果フェス2015)
Granger因果による時系列データの因果推定(因果フェス2015)Granger因果による時系列データの因果推定(因果フェス2015)
Granger因果による 時系列データの因果推定(因果フェス2015)
 
とある金融屋の統計技師が時系列解析してみた
とある金融屋の統計技師が時系列解析してみたとある金融屋の統計技師が時系列解析してみた
とある金融屋の統計技師が時系列解析してみた
 
Apache Sparkを用いたスケーラブルな時系列データの異常検知モデル学習ソフトウェアの開発
Apache Sparkを用いたスケーラブルな時系列データの異常検知モデル学習ソフトウェアの開発Apache Sparkを用いたスケーラブルな時系列データの異常検知モデル学習ソフトウェアの開発
Apache Sparkを用いたスケーラブルな時系列データの異常検知モデル学習ソフトウェアの開発
 
はじめての「R」
はじめての「R」はじめての「R」
はじめての「R」
 
マルコフモデル,隠れマルコフモデルとコネクショニスト時系列分類法
マルコフモデル,隠れマルコフモデルとコネクショニスト時系列分類法マルコフモデル,隠れマルコフモデルとコネクショニスト時系列分類法
マルコフモデル,隠れマルコフモデルとコネクショニスト時系列分類法
 
Lstm shannonlab
Lstm shannonlab Lstm shannonlab
Lstm shannonlab
 
24時間でiOSアプリ-Twitterクライアント-の作成にチャレンジ
24時間でiOSアプリ-Twitterクライアント-の作成にチャレンジ24時間でiOSアプリ-Twitterクライアント-の作成にチャレンジ
24時間でiOSアプリ-Twitterクライアント-の作成にチャレンジ
 
How to Make Awesome SlideShares: Tips & Tricks
How to Make Awesome SlideShares: Tips & TricksHow to Make Awesome SlideShares: Tips & Tricks
How to Make Awesome SlideShares: Tips & Tricks
 
Getting Started With SlideShare
Getting Started With SlideShareGetting Started With SlideShare
Getting Started With SlideShare
 

More from Takayuki Nuimura

161104 foss4 g_tokyo_qgis_handson_presentation
161104 foss4 g_tokyo_qgis_handson_presentation161104 foss4 g_tokyo_qgis_handson_presentation
161104 foss4 g_tokyo_qgis_handson_presentation
Takayuki Nuimura
 
オープンサイエンスの雪氷学への応用と展望 雪氷研究大会2016 特別セッションの紹介
オープンサイエンスの雪氷学への応用と展望 雪氷研究大会2016 特別セッションの紹介オープンサイエンスの雪氷学への応用と展望 雪氷研究大会2016 特別セッションの紹介
オープンサイエンスの雪氷学への応用と展望 雪氷研究大会2016 特別セッションの紹介
Takayuki Nuimura
 
151009 foss4 g_tokyo_grass7_handson_presentation
151009 foss4 g_tokyo_grass7_handson_presentation151009 foss4 g_tokyo_grass7_handson_presentation
151009 foss4 g_tokyo_grass7_handson_presentation
Takayuki Nuimura
 
150828 rihn gis_workshop_handson_presentation
150828 rihn gis_workshop_handson_presentation150828 rihn gis_workshop_handson_presentation
150828 rihn gis_workshop_handson_presentation
Takayuki Nuimura
 
150810 ilts workshop_handson_presentation
150810 ilts workshop_handson_presentation150810 ilts workshop_handson_presentation
150810 ilts workshop_handson_presentation
Takayuki Nuimura
 
141031 qgisr handson_presentation
141031 qgisr handson_presentation141031 qgisr handson_presentation
141031 qgisr handson_presentation
Takayuki Nuimura
 
131107 foss4 g_osaka_grass7_presentation
131107 foss4 g_osaka_grass7_presentation131107 foss4 g_osaka_grass7_presentation
131107 foss4 g_osaka_grass7_presentation
Takayuki Nuimura
 
131101 foss4 g_tokyo_grass_shell_presentation
131101 foss4 g_tokyo_grass_shell_presentation131101 foss4 g_tokyo_grass_shell_presentation
131101 foss4 g_tokyo_grass_shell_presentationTakayuki Nuimura
 
131101 foss4 g_tokyo_r_presentation
131101 foss4 g_tokyo_r_presentation131101 foss4 g_tokyo_r_presentation
131101 foss4 g_tokyo_r_presentationTakayuki Nuimura
 
131031 foss4 g_tokyo_grass_handson_presentation
131031 foss4 g_tokyo_grass_handson_presentation131031 foss4 g_tokyo_grass_handson_presentation
131031 foss4 g_tokyo_grass_handson_presentationTakayuki Nuimura
 
130622 osc nagoya_presentation
130622 osc nagoya_presentation130622 osc nagoya_presentation
130622 osc nagoya_presentation
Takayuki Nuimura
 
130612 ocu lecture_presentation
130612 ocu lecture_presentation130612 ocu lecture_presentation
130612 ocu lecture_presentation
Takayuki Nuimura
 
130521 jp gu2013_handson2_presentation
130521 jp gu2013_handson2_presentation130521 jp gu2013_handson2_presentation
130521 jp gu2013_handson2_presentation
Takayuki Nuimura
 
130521 jp gu2013_handson1_presentation
130521 jp gu2013_handson1_presentation130521 jp gu2013_handson1_presentation
130521 jp gu2013_handson1_presentation
Takayuki Nuimura
 
130113 os mworkshop_presentation
130113 os mworkshop_presentation130113 os mworkshop_presentation
130113 os mworkshop_presentationTakayuki Nuimura
 
121215 foss4 g_nagoya_qgis_handson
121215 foss4 g_nagoya_qgis_handson121215 foss4 g_nagoya_qgis_handson
121215 foss4 g_nagoya_qgis_handson
Takayuki Nuimura
 
121105 foss4 g_tokyo_qgis_handson
121105 foss4 g_tokyo_qgis_handson121105 foss4 g_tokyo_qgis_handson
121105 foss4 g_tokyo_qgis_handson
Takayuki Nuimura
 
121107 foss4 g_osaka_r_handson_presentation
121107 foss4 g_osaka_r_handson_presentation121107 foss4 g_osaka_r_handson_presentation
121107 foss4 g_osaka_r_handson_presentation
Takayuki Nuimura
 
2012 nov foss4g_presentation
2012 nov foss4g_presentation2012 nov foss4g_presentation
2012 nov foss4g_presentation
Takayuki Nuimura
 
121012 gisa qgis_handson
121012 gisa qgis_handson121012 gisa qgis_handson
121012 gisa qgis_handson
Takayuki Nuimura
 

More from Takayuki Nuimura (20)

161104 foss4 g_tokyo_qgis_handson_presentation
161104 foss4 g_tokyo_qgis_handson_presentation161104 foss4 g_tokyo_qgis_handson_presentation
161104 foss4 g_tokyo_qgis_handson_presentation
 
オープンサイエンスの雪氷学への応用と展望 雪氷研究大会2016 特別セッションの紹介
オープンサイエンスの雪氷学への応用と展望 雪氷研究大会2016 特別セッションの紹介オープンサイエンスの雪氷学への応用と展望 雪氷研究大会2016 特別セッションの紹介
オープンサイエンスの雪氷学への応用と展望 雪氷研究大会2016 特別セッションの紹介
 
151009 foss4 g_tokyo_grass7_handson_presentation
151009 foss4 g_tokyo_grass7_handson_presentation151009 foss4 g_tokyo_grass7_handson_presentation
151009 foss4 g_tokyo_grass7_handson_presentation
 
150828 rihn gis_workshop_handson_presentation
150828 rihn gis_workshop_handson_presentation150828 rihn gis_workshop_handson_presentation
150828 rihn gis_workshop_handson_presentation
 
150810 ilts workshop_handson_presentation
150810 ilts workshop_handson_presentation150810 ilts workshop_handson_presentation
150810 ilts workshop_handson_presentation
 
141031 qgisr handson_presentation
141031 qgisr handson_presentation141031 qgisr handson_presentation
141031 qgisr handson_presentation
 
131107 foss4 g_osaka_grass7_presentation
131107 foss4 g_osaka_grass7_presentation131107 foss4 g_osaka_grass7_presentation
131107 foss4 g_osaka_grass7_presentation
 
131101 foss4 g_tokyo_grass_shell_presentation
131101 foss4 g_tokyo_grass_shell_presentation131101 foss4 g_tokyo_grass_shell_presentation
131101 foss4 g_tokyo_grass_shell_presentation
 
131101 foss4 g_tokyo_r_presentation
131101 foss4 g_tokyo_r_presentation131101 foss4 g_tokyo_r_presentation
131101 foss4 g_tokyo_r_presentation
 
131031 foss4 g_tokyo_grass_handson_presentation
131031 foss4 g_tokyo_grass_handson_presentation131031 foss4 g_tokyo_grass_handson_presentation
131031 foss4 g_tokyo_grass_handson_presentation
 
130622 osc nagoya_presentation
130622 osc nagoya_presentation130622 osc nagoya_presentation
130622 osc nagoya_presentation
 
130612 ocu lecture_presentation
130612 ocu lecture_presentation130612 ocu lecture_presentation
130612 ocu lecture_presentation
 
130521 jp gu2013_handson2_presentation
130521 jp gu2013_handson2_presentation130521 jp gu2013_handson2_presentation
130521 jp gu2013_handson2_presentation
 
130521 jp gu2013_handson1_presentation
130521 jp gu2013_handson1_presentation130521 jp gu2013_handson1_presentation
130521 jp gu2013_handson1_presentation
 
130113 os mworkshop_presentation
130113 os mworkshop_presentation130113 os mworkshop_presentation
130113 os mworkshop_presentation
 
121215 foss4 g_nagoya_qgis_handson
121215 foss4 g_nagoya_qgis_handson121215 foss4 g_nagoya_qgis_handson
121215 foss4 g_nagoya_qgis_handson
 
121105 foss4 g_tokyo_qgis_handson
121105 foss4 g_tokyo_qgis_handson121105 foss4 g_tokyo_qgis_handson
121105 foss4 g_tokyo_qgis_handson
 
121107 foss4 g_osaka_r_handson_presentation
121107 foss4 g_osaka_r_handson_presentation121107 foss4 g_osaka_r_handson_presentation
121107 foss4 g_osaka_r_handson_presentation
 
2012 nov foss4g_presentation
2012 nov foss4g_presentation2012 nov foss4g_presentation
2012 nov foss4g_presentation
 
121012 gisa qgis_handson
121012 gisa qgis_handson121012 gisa qgis_handson
121012 gisa qgis_handson
 

Recently uploaded

iMacwoSu_Gong_de_barabaranishitaHua_.pptx
iMacwoSu_Gong_de_barabaranishitaHua_.pptxiMacwoSu_Gong_de_barabaranishitaHua_.pptx
iMacwoSu_Gong_de_barabaranishitaHua_.pptx
kitamisetagayaxxx
 
生成AIがもたらすコンテンツ経済圏の新時代  The New Era of Content Economy Brought by Generative AI
生成AIがもたらすコンテンツ経済圏の新時代  The New Era of Content Economy Brought by Generative AI生成AIがもたらすコンテンツ経済圏の新時代  The New Era of Content Economy Brought by Generative AI
生成AIがもたらすコンテンツ経済圏の新時代  The New Era of Content Economy Brought by Generative AI
Osaka University
 
ロジックから状態を分離する技術/設計ナイト2024 by わいとん @ytnobody
ロジックから状態を分離する技術/設計ナイト2024 by わいとん @ytnobodyロジックから状態を分離する技術/設計ナイト2024 by わいとん @ytnobody
ロジックから状態を分離する技術/設計ナイト2024 by わいとん @ytnobody
azuma satoshi
 
ハイブリッドクラウド研究会_Hyper-VとSystem Center Virtual Machine Manager セッションMM
ハイブリッドクラウド研究会_Hyper-VとSystem Center Virtual Machine Manager セッションMMハイブリッドクラウド研究会_Hyper-VとSystem Center Virtual Machine Manager セッションMM
ハイブリッドクラウド研究会_Hyper-VとSystem Center Virtual Machine Manager セッションMM
osamut
 
ヒアラブルへの入力を想定したユーザ定義型ジェスチャ調査と IMUセンサによる耳タッチジェスチャの認識
ヒアラブルへの入力を想定したユーザ定義型ジェスチャ調査と IMUセンサによる耳タッチジェスチャの認識ヒアラブルへの入力を想定したユーザ定義型ジェスチャ調査と IMUセンサによる耳タッチジェスチャの認識
ヒアラブルへの入力を想定したユーザ定義型ジェスチャ調査と IMUセンサによる耳タッチジェスチャの認識
sugiuralab
 
Humanoid Virtual Athletics Challenge2024 技術講習会 スライド
Humanoid Virtual Athletics Challenge2024 技術講習会 スライドHumanoid Virtual Athletics Challenge2024 技術講習会 スライド
Humanoid Virtual Athletics Challenge2024 技術講習会 スライド
tazaki1
 
協働AIがもたらす業務効率革命 -日本企業が押さえるべきポイント-Collaborative AI Revolutionizing Busines...
協働AIがもたらす業務効率革命 -日本企業が押さえるべきポイント-Collaborative AI Revolutionizing Busines...協働AIがもたらす業務効率革命 -日本企業が押さえるべきポイント-Collaborative AI Revolutionizing Busines...
協働AIがもたらす業務効率革命 -日本企業が押さえるべきポイント-Collaborative AI Revolutionizing Busines...
Osaka University
 
【JSAI2024】LLMエージェントの人間との対話における反芻的返答の親近感向上効果_v1.1.pdf
【JSAI2024】LLMエージェントの人間との対話における反芻的返答の親近感向上効果_v1.1.pdf【JSAI2024】LLMエージェントの人間との対話における反芻的返答の親近感向上効果_v1.1.pdf
【JSAI2024】LLMエージェントの人間との対話における反芻的返答の親近感向上効果_v1.1.pdf
ARISE analytics
 
無形価値を守り育てる社会における「デー タ」の責務について - Atlas, Inc.
無形価値を守り育てる社会における「デー タ」の責務について - Atlas, Inc.無形価値を守り育てる社会における「デー タ」の責務について - Atlas, Inc.
無形価値を守り育てる社会における「デー タ」の責務について - Atlas, Inc.
Yuki Miyazaki
 
「進化するアプリ イマ×ミライ ~生成AIアプリへ続く道と新時代のアプリとは~」Interop24Tokyo APPS JAPAN B1-01講演
「進化するアプリ イマ×ミライ ~生成AIアプリへ続く道と新時代のアプリとは~」Interop24Tokyo APPS JAPAN B1-01講演「進化するアプリ イマ×ミライ ~生成AIアプリへ続く道と新時代のアプリとは~」Interop24Tokyo APPS JAPAN B1-01講演
「進化するアプリ イマ×ミライ ~生成AIアプリへ続く道と新時代のアプリとは~」Interop24Tokyo APPS JAPAN B1-01講演
嶋 是一 (Yoshikazu SHIMA)
 

Recently uploaded (10)

iMacwoSu_Gong_de_barabaranishitaHua_.pptx
iMacwoSu_Gong_de_barabaranishitaHua_.pptxiMacwoSu_Gong_de_barabaranishitaHua_.pptx
iMacwoSu_Gong_de_barabaranishitaHua_.pptx
 
生成AIがもたらすコンテンツ経済圏の新時代  The New Era of Content Economy Brought by Generative AI
生成AIがもたらすコンテンツ経済圏の新時代  The New Era of Content Economy Brought by Generative AI生成AIがもたらすコンテンツ経済圏の新時代  The New Era of Content Economy Brought by Generative AI
生成AIがもたらすコンテンツ経済圏の新時代  The New Era of Content Economy Brought by Generative AI
 
ロジックから状態を分離する技術/設計ナイト2024 by わいとん @ytnobody
ロジックから状態を分離する技術/設計ナイト2024 by わいとん @ytnobodyロジックから状態を分離する技術/設計ナイト2024 by わいとん @ytnobody
ロジックから状態を分離する技術/設計ナイト2024 by わいとん @ytnobody
 
ハイブリッドクラウド研究会_Hyper-VとSystem Center Virtual Machine Manager セッションMM
ハイブリッドクラウド研究会_Hyper-VとSystem Center Virtual Machine Manager セッションMMハイブリッドクラウド研究会_Hyper-VとSystem Center Virtual Machine Manager セッションMM
ハイブリッドクラウド研究会_Hyper-VとSystem Center Virtual Machine Manager セッションMM
 
ヒアラブルへの入力を想定したユーザ定義型ジェスチャ調査と IMUセンサによる耳タッチジェスチャの認識
ヒアラブルへの入力を想定したユーザ定義型ジェスチャ調査と IMUセンサによる耳タッチジェスチャの認識ヒアラブルへの入力を想定したユーザ定義型ジェスチャ調査と IMUセンサによる耳タッチジェスチャの認識
ヒアラブルへの入力を想定したユーザ定義型ジェスチャ調査と IMUセンサによる耳タッチジェスチャの認識
 
Humanoid Virtual Athletics Challenge2024 技術講習会 スライド
Humanoid Virtual Athletics Challenge2024 技術講習会 スライドHumanoid Virtual Athletics Challenge2024 技術講習会 スライド
Humanoid Virtual Athletics Challenge2024 技術講習会 スライド
 
協働AIがもたらす業務効率革命 -日本企業が押さえるべきポイント-Collaborative AI Revolutionizing Busines...
協働AIがもたらす業務効率革命 -日本企業が押さえるべきポイント-Collaborative AI Revolutionizing Busines...協働AIがもたらす業務効率革命 -日本企業が押さえるべきポイント-Collaborative AI Revolutionizing Busines...
協働AIがもたらす業務効率革命 -日本企業が押さえるべきポイント-Collaborative AI Revolutionizing Busines...
 
【JSAI2024】LLMエージェントの人間との対話における反芻的返答の親近感向上効果_v1.1.pdf
【JSAI2024】LLMエージェントの人間との対話における反芻的返答の親近感向上効果_v1.1.pdf【JSAI2024】LLMエージェントの人間との対話における反芻的返答の親近感向上効果_v1.1.pdf
【JSAI2024】LLMエージェントの人間との対話における反芻的返答の親近感向上効果_v1.1.pdf
 
無形価値を守り育てる社会における「デー タ」の責務について - Atlas, Inc.
無形価値を守り育てる社会における「デー タ」の責務について - Atlas, Inc.無形価値を守り育てる社会における「デー タ」の責務について - Atlas, Inc.
無形価値を守り育てる社会における「デー タ」の責務について - Atlas, Inc.
 
「進化するアプリ イマ×ミライ ~生成AIアプリへ続く道と新時代のアプリとは~」Interop24Tokyo APPS JAPAN B1-01講演
「進化するアプリ イマ×ミライ ~生成AIアプリへ続く道と新時代のアプリとは~」Interop24Tokyo APPS JAPAN B1-01講演「進化するアプリ イマ×ミライ ~生成AIアプリへ続く道と新時代のアプリとは~」Interop24Tokyo APPS JAPAN B1-01講演
「進化するアプリ イマ×ミライ ~生成AIアプリへ続く道と新時代のアプリとは~」Interop24Tokyo APPS JAPAN B1-01講演
 

151012 foss4 g_tokyo_grass7_presentation

  • 1. はじめに 時系列データの前準備 時系列データの可視化 おわりに GRASS GIS 7 で気候データの処理と可視化 縫村崇行 1,2 (NUIMURA, Takayuki) 1 千葉科学大学 2 OSGeo 財団日本支部 2015/10/12 1 / 20
  • 2. はじめに 時系列データの前準備 時系列データの可視化 おわりに GIS と時間軸 もともと GIS では X、Y、値 (Z など) を扱うことを得意としてお り、時間軸のデータ処理機能の実装は遅れぎみ。 気候データの可視化・処理ツールとしては grads が一般的 それ以外にも各種プログラミングでの処理が通常で GIS はあまり 使われて来なかった 2 / 20
  • 3. はじめに 時系列データの前準備 時系列データの可視化 おわりに 時系列データ 気象・気候データの多くは空間分布情報に時間の情報が付加され たデータとして配布されている 気象・気候データでよくあるファイル形式 NetCDF HDF GRIB etc · · · 3 / 20
  • 4. はじめに 時系列データの前準備 時系列データの可視化 おわりに GRASS GIS 7 強力な解析機能を持った、オープンソースのデスクトップ GIS 今年で 32 歳! 現在の最新版は 7.0.1-1 強力な解析機能 (ラスタ、ベクタ、画像) オープンソース (GPL) 4 / 20
  • 5. はじめに 時系列データの前準備 時系列データの可視化 おわりに 時系列モジュールの追加 画像表示モジュール (d.)=⇒ いくつかは GUI に統合 データベースモジュール (db.) 一般モジュール (g.)=⇒ いくつかは GUI に統合 画像処理モジュール (i.) その他のモジュール (m.) ポストスクリプトモジュール (ps.) ラスター処理モジュール (r.) ボクセル処理モジュール (r3.) ベクター処理モジュール (v.) 時系列処理モジュール (t.)(new!) 5 / 20
  • 6. はじめに 時系列データの前準備 時系列データの可視化 おわりに GRASS GIS 7 での時系列データの扱い strds: Spatial time raster data set stvds: Spatial time vector data set str3ds: Spatial time 3D raster data set 6 / 20
  • 7. はじめに 時系列データの前準備 時系列データの可視化 おわりに 時系列データ処理のための前準備 元の気象・気候データ (NetCDFなど) GRASS GISに インポート可能なデータ (GeoTIFFなど) GDAL r.in.gdal GRASSラスター形式 (GeoTIFFなど) Space time DB (実態はデータへのリンク) t.create t.regist 7 / 20
  • 8. はじめに 時系列データの前準備 時系列データの可視化 おわりに 時系列データ処理のための前準備 t.create: 空の Space time DB を用意 type: strds/stvds/str3ds temporaltype:absolute/relative output: Space time DB 名 title: データのタイトル description: データの説明 *title や description も入力が必須 8 / 20
  • 9. はじめに 時系列データの前準備 時系列データの可視化 おわりに 時系列データ処理のための前準備 t.register: GRASS のデータと結びつける input: t.create で作成した Space time DB 名 maps/file: GRASS データ名のリスト (記述/外部テキスト) start: 最初の日時 (yyyy-mm-dd [HH:MM:SS]) increment: タイムステップ (何日おきとか何時間おき) *外部テキストファイルでデータ名リストを作成しておくのが便 利、外部ファイルで個別に時間も指定可能 9 / 20
  • 10. はじめに 時系列データの前準備 時系列データの可視化 おわりに 時系列データ処理のための前準備 Python で ERA-interim (by ECMWF) を読み込む場合 1 #!/usr/bin/env python 2 3 import os 4 import time 5 import subprocess 6 from osgeo import gdal 7 8 nc_filename = ’netcdf-atls13- a562cefde8a29a7288fa0b8b7f9413f7-Ml1YX2.nc’ 9 xmin = 0 10 ymax = 90 11 resx = 0.75 12 resy = 0.75 10 / 20
  • 11. はじめに 時系列データの前準備 時系列データの可視化 おわりに 時系列データ処理のための前準備 GDAL で NetCDF と各種情報を読み込み、GRASS で領域設定 1 ds = gdal.Open(nc_filename) 2 if ds is None: 3 print ’Could not open ’ + nc_filename 4 sys.exit(1) 5 6 nbands = ds.RasterCount 7 width = ds.RasterXSize 8 height = ds.RasterYSize 9 10 grass.run_command(’g.region’, n=90, s=-90, e=360, w=0) 11 / 20
  • 12. はじめに 時系列データの前準備 時系列データの可視化 おわりに 時系列データ処理のための前準備 for ループで各タイムステップごとに処理 属性情報読み込み(オフセット、ゲイン、nodata 値) 1 for i in range(1, nbands): 2 print(str(i) + ’ / ’ + str(nbands)) 3 band = ds.GetRasterBand(i) 4 data = band.ReadAsArray() 5 offset = band.GetOffset() 6 gain = band.GetScale() 7 nodata = band.GetNoDataValue() 12 / 20
  • 13. はじめに 時系列データの前準備 時系列データの可視化 おわりに 時系列データ処理のための前準備 for ループで各タイムステップごとに処理 時間の表記形式の変換 1 timehrs1 = int(band.GetMetadataItem(’NETCDF_DIM_time ’)) # Hours since 1900/1/1 2 timehrs2 = timehrs1 - 613608 # Hours since 1970/1/1 (Epoc time) 3 timesec = timehrs2 * 60 * 60 # Seconds since 1970/1/1 4 date1 = time.strftime(’%Y%m%d_%H%M’, time.gmtime( timesec)) 5 date2 = time.strftime(’%m %b %Y’, time.gmtime( timesec)) 13 / 20
  • 14. はじめに 時系列データの前準備 時系列データの可視化 おわりに 時系列データ処理のための前準備 for ループで各タイムステップごとに処理 GeoTIFF に書き出し 1 driver = gdal.GetDriverByName(’GTiff’) 2 dst_ds = driver.Create(’b_’ + str(i) + ’.tif’, width , height, 1, gdal.GDT_Float32) 3 dst_ds.SetProjection (’EPSG:4326’) 4 dst_ds.SetGeoTransform([xmin, resx, 0, ymax, 0, - resy]) 5 dst_ds.GetRasterBand(1).WriteArray(data) 6 dst_ds.GetRasterBand(1).SetNoDataValue(nodata) 7 dst_ds = None 14 / 20
  • 15. はじめに 時系列データの前準備 時系列データの可視化 おわりに 時系列データ処理のための前準備 for ループで各タイムステップごとに処理 GRASS にインポート、DN を物理値に変換 1 grass.run_command(’r.in.gdal’, input=’b_’ + str(i) + ’.tif’, output=date1 + ’_ecmwf_’, overwrite = True, flags=’o’) 2 3 ## Convert from DN to physical value 4 grass.mapcalc(’${DATE1}_ecmwf = 1.0 * (${DATE1} _ecmwf_ * ${GAIN}) + ${OFFSET}’, 5 DATE1 = date1, 6 GAIN = gain, 7 OFFSET = offset, 8 overwrite = True) 15 / 20
  • 16. はじめに 時系列データの前準備 時系列データの可視化 おわりに 時系列データ処理のための前準備 for ループで各タイムステップごとに処理 タイムスタンプ付与、一時データ消去 1 grass.run_command(’r.timestamp’, map=date1 + ’_ecmwf ’, date=date2) 2 grass.run_command(’g.remove’, type=’rast’, name= date1 + ’_ecmwf_’, flags=’f’) 3 os.remove(’b_’ + str(i) + ’.tif’) 16 / 20
  • 17. はじめに 時系列データの前準備 時系列データの可視化 おわりに 時系列データ処理のための前準備 Space time DB の作成とデータ登録 1 grass.run_command(’t.create’, output=’T_6hourly_ecmwf’, type=’strds’, 2 temporaltype=’absolute’, title=’hoge’, 3 description=’hoge’) 4 subprocess.call(’g.list type=rast pattern=*_ecmwf >> 5 filenames_ecmwf_6hourly.txt’, shell=True) 6 grass.run_command(’t.register’, flags=’i’, input=’ T_6hourly_ecmwf’, type=’rast’, file=’ filenames_ecmwf_6hourly.txt’, start=’2015-06-01 00:00 ’, increment=’6 hours’, overwrite = True) 17 / 20
  • 18. はじめに 時系列データの前準備 時系列データの可視化 おわりに 時系列データの可視化: g.gui.timeline 18 / 20
  • 19. はじめに 時系列データの前準備 時系列データの可視化 おわりに 時系列データの可視化: g.gui.animation =⇒ デモ 19 / 20
  • 20. はじめに 時系列データの前準備 時系列データの可視化 おわりに おわりに 従来プログラミングが使えなければできない気候データ処理 が GRASS GIS 7 では GUI ベースで利用可能 それぞれの GUI ツールのスクリプト例を参考に GUI からプロ グラミングに以降がしやすい 20 / 20