SlideShare une entreprise Scribd logo
1  sur  20
Télécharger pour lire hors ligne
はじめに 時系列データの前準備 時系列データの可視化 おわりに
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

Contenu connexe

Tendances

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入門と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 全体セッション2Taro Matsuzawa
 

Tendances (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
 

En vedette

第5章 時系列データのモデリング, 補助情報を考慮したモデリング
第5章 時系列データのモデリング, 補助情報を考慮したモデリング第5章 時系列データのモデリング, 補助情報を考慮したモデリング
第5章 時系列データのモデリング, 補助情報を考慮したモデリングksmzn
 
第3回メドレー読書会後半
第3回メドレー読書会後半第3回メドレー読書会後半
第3回メドレー読書会後半Kazuhiro Himoto
 
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 河原
 
マルコフモデル,隠れマルコフモデルとコネクショニスト時系列分類法
マルコフモデル,隠れマルコフモデルとコネクショニスト時系列分類法マルコフモデル,隠れマルコフモデルとコネクショニスト時系列分類法
マルコフモデル,隠れマルコフモデルとコネクショニスト時系列分類法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 & TricksSlideShare
 
Getting Started With SlideShare
Getting Started With SlideShareGetting Started With SlideShare
Getting Started With SlideShareSlideShare
 

En vedette (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
 

Plus de 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_presentationTakayuki 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_presentationTakayuki Nuimura
 
150828 rihn gis_workshop_handson_presentation
150828 rihn gis_workshop_handson_presentation150828 rihn gis_workshop_handson_presentation
150828 rihn gis_workshop_handson_presentationTakayuki Nuimura
 
150810 ilts workshop_handson_presentation
150810 ilts workshop_handson_presentation150810 ilts workshop_handson_presentation
150810 ilts workshop_handson_presentationTakayuki Nuimura
 
141031 qgisr handson_presentation
141031 qgisr handson_presentation141031 qgisr handson_presentation
141031 qgisr handson_presentationTakayuki Nuimura
 
131107 foss4 g_osaka_grass7_presentation
131107 foss4 g_osaka_grass7_presentation131107 foss4 g_osaka_grass7_presentation
131107 foss4 g_osaka_grass7_presentationTakayuki 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_presentationTakayuki Nuimura
 
130612 ocu lecture_presentation
130612 ocu lecture_presentation130612 ocu lecture_presentation
130612 ocu lecture_presentationTakayuki Nuimura
 
130521 jp gu2013_handson2_presentation
130521 jp gu2013_handson2_presentation130521 jp gu2013_handson2_presentation
130521 jp gu2013_handson2_presentationTakayuki Nuimura
 
130521 jp gu2013_handson1_presentation
130521 jp gu2013_handson1_presentation130521 jp gu2013_handson1_presentation
130521 jp gu2013_handson1_presentationTakayuki 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_handsonTakayuki Nuimura
 
121105 foss4 g_tokyo_qgis_handson
121105 foss4 g_tokyo_qgis_handson121105 foss4 g_tokyo_qgis_handson
121105 foss4 g_tokyo_qgis_handsonTakayuki 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_presentationTakayuki Nuimura
 
2012 nov foss4g_presentation
2012 nov foss4g_presentation2012 nov foss4g_presentation
2012 nov foss4g_presentationTakayuki Nuimura
 

Plus de 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
 

Dernier

Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。iPride Co., Ltd.
 
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイスCRI Japan, Inc.
 
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NTT DATA Technology & Innovation
 
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。iPride Co., Ltd.
 
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。iPride Co., Ltd.
 
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルCRI Japan, Inc.
 
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)Hiroshi Tomioka
 

Dernier (7)

Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
 
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
 
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
 
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
 
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
 
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
 
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
 

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