カウンター
2 9 6 2 9
研究ブログ

研究ブログ

デジタル・ヒューマニティーズ入門「歴史地震研究とみんなで翻刻」リンク集

0

情報処理・パソコン タイル地図をGMTの地図に貼り込む

前回,気象庁の地震月報の震源データから,2016年熊本地震の震央の時空間分布図をつくってみました.

GMTの海岸線データを使ったわけですが,地理院地図などのタイル地図に重ねて描くこともできます.タイル地図の画像をダウンロードして貼り込むだけです.なお縮尺を大きくするときは,座標系や震源決定の精度などいろいろご注意ください.

対象とするデータ

使ったツール・環境

描き方

震源データの取得

まず気象庁のホームページの震源データのページから震源データをダウンロードしましょう.今回は2016年熊本地震の震央分布を書きたいので2016年のデータ(h2016)です.解凍しておきます.

地図タイルの取得

地図タイルをダウンロードします.あとで描き体地図の範囲をもとに,必要な地図タイルを取得します.そのためのスクリプトは下のようになります.ここで,座標(緯度・経度)と地図タイル番号の換算はOpenStreetMap Wikiの「Slippy map tilenames」という記事を参考にしました.

シェルスクリプト+awkでの処理方法も書いてあります.環境によってawkの小数点以下の処理が違う(私の環境では切り捨て)部分を修正しています.また,日本周辺だけ扱うときはあまり気にならないと思いますが,マイナスの地図番号にならないように修正しました.

#!/bin/sh

# 地図タイルの操作のための関数
# https://wiki.openstreetmap.org/wiki/Slippy_map_tilenames
# を修正(負の緯度経度,awkの小数点以下の扱い)
xtile2long()
{
xtile=$1
zoom=$2
echo "${xtile} ${zoom}" | awk '{printf("%.9f", $1 / 2.0^$2 * 360.0 - 180)}'
}

long2xtile()
{
long=$1
zoom=$2
echo "${long} ${zoom}" | awk '{ $1+=$1<0?360:0;
xtile = ($1 + 180.0) / 360 * 2.0^$2;
#xtile+=xtile<0?-0.5:0.5;
xtile+=xtile<0?-1.0:0.0;
printf("%d", xtile ) }'
}

ytile2lat()
{
ytile=$1;
zoom=$2;
tms=$3;
if [ ! -z "${tms}" ]
then
# from tms_numbering into osm_numbering
ytile=`echo "${ytile}" ${zoom} | awk '{printf("%d\n",((2.0^$2)-1)-$1)}'`;
fi
lat=`echo "${ytile} ${zoom}" | awk -v PI=3.14159265358979323846 '{
num_tiles = PI - 2.0 * PI * $1 / 2.0^$2;
printf("%.9f", 180.0 / PI * atan2(0.5 * (exp(num_tiles) - exp(-num_tiles)),1)); }'`;
echo "${lat}";
}

lat2ytile()
{
lat=$1;
zoom=$2;
tms=$3;
ytile=`echo "${lat} ${zoom}" | awk -v PI=3.14159265358979323846 '{
tan_x=sin($1 * PI / 180.0)/cos($1 * PI / 180.0);
ytile = (1 - log(tan_x + 1/cos($1 * PI/ 180))/PI)/2 * 2.0^$2;
#ytile+=ytile<0?-0.5:0.5;
ytile+=ytile<0?-1.0:0.0;
printf("%d", ytile ) }'`;
if [ ! -z "${tms}" ]
then
# from oms_numbering into tms_numbering
ytile=`echo "${ytile}" ${zoom} | awk '{printf("%d\n",((2.0^$2)-1)-$1)}'`;
fi
echo "${ytile}";
}

# タイルの取得

## 引数
ZOOM=$1
LONGMIN=$2
LONGMAX=$3
LATMIN=$4
LATMAX=$5

## 取得するタイル番号の上限と下限
XTILEMIN=`long2xtile $LONGMIN $ZOOM`
XTILEMAX=`long2xtile $LONGMAX $ZOOM`
YTILEMIN=`lat2ytile $LATMIN $ZOOM`
YTILEMAX=`lat2ytile $LATMAX $ZOOM`

echo $XTILEMIN $XTILEMAX $YTILEMIN $YTILEMAX

# 地理院タイル(淡色地図)
BASEURL='https://cyberjapandata.gsi.go.jp/xyz/pale'
# OpenStreetMap Japan
#BASEURL='https://tile.openstreetmap.jp'

for I in `seq $XTILEMIN $XTILEMAX`;
do
  for J in `seq $YTILEMAX $YTILEMIN`;
do
## 地理院地図からダウンロード
URL=$BASEURL/$ZOOM/$I/$J.png
echo $URL
curl --silent $URL -o ${ZOOM}_${I}_${J}.png

ULX=`xtile2long $I $ZOOM`
ULY=`ytile2lat $J $ZOOM`
I1=`echo $I | awk '{print $1+1}'`
LRX=`xtile2long $I1 $ZOOM`
J1=`echo $J | awk '{print $1+1}'`
LRY=`ytile2lat $J1 $ZOOM`

  ## 座標をつけてGeoTIFFに変換
gdal_translate -a_ullr $ULX $ULY $LRX $LRY ${ZOOM}_${I}_${J}.png ${ZOOM}_${I}_${J}.tif

  done
done

 引数として,ズームレベル,左端経度,右端経度,下端緯度,上端緯度を与えます.ズームレベルはとりあえず9でどうでしょう.ズームレベル7で九州の4/5くらいが入るので,それより2段階ズームしたもの,という感じです.ズームレベルと描画範囲の関係は,国土地理院の「タイル座標確認ページ」が参考になると思います.

/bin/sh gettiles.sh 9 130 132 32 33.5

地理院タイルはpng画像です.gdal_translateを使ってダウンロードしたタイル画像に座標の情報を入れ,GeoTIFF形式に変換して保存しています.ズームレベル_Xタイル番号_Yタイル番号.tifというファイルができていると思います.画像ビューアでも確認できます.

地図を描く

さてデータが準備できたので,GMTで地図を書きましょう.スクリプトは以下のようになります.前回のスクリプトに地図タイルの座標とタイル番号の変換用の関数と,タイルを貼り込む部分を追加しています.まさにタイルを貼るように,順番に貼りつけています.

#!/bin/sh

# 地図タイルの操作のための関数
# https://wiki.openstreetmap.org/wiki/Slippy_map_tilenames
# を修正(負の緯度経度,awkの小数点以下の扱い)
xtile2long()
{
xtile=$1
zoom=$2
echo "${xtile} ${zoom}" | awk '{printf("%.9f", $1 / 2.0^$2 * 360.0 - 180)}'
}

long2xtile()
{
long=$1
zoom=$2
echo "${long} ${zoom}" | awk '{ $1+=$1<0?360:0;
xtile = ($1 + 180.0) / 360 * 2.0^$2;
#xtile+=xtile<0?-0.5:0.5;
xtile+=xtile<0?-1.0:0.0;
printf("%d", xtile ) }'
}

ytile2lat()
{
ytile=$1;
zoom=$2;
tms=$3;
if [ ! -z "${tms}" ]
then
# from tms_numbering into osm_numbering
ytile=`echo "${ytile}" ${zoom} | awk '{printf("%d\n",((2.0^$2)-1)-$1)}'`;
fi
lat=`echo "${ytile} ${zoom}" | awk -v PI=3.14159265358979323846 '{
num_tiles = PI - 2.0 * PI * $1 / 2.0^$2;
printf("%.9f", 180.0 / PI * atan2(0.5 * (exp(num_tiles) - exp(-num_tiles)),1)); }'`;
echo "${lat}";
}

lat2ytile()
{
lat=$1;
zoom=$2;
tms=$3;
ytile=`echo "${lat} ${zoom}" | awk -v PI=3.14159265358979323846 '{
tan_x=sin($1 * PI / 180.0)/cos($1 * PI / 180.0);
ytile = (1 - log(tan_x + 1/cos($1 * PI/ 180))/PI)/2 * 2.0^$2;
#ytile+=ytile<0?-0.5:0.5;
ytile+=ytile<0?-1.0:0.0;
printf("%d", ytile ) }'`;
if [ ! -z "${tms}" ]
then
# from oms_numbering into tms_numbering
ytile=`echo "${ytile}" ${zoom} | awk '{printf("%d\n",((2.0^$2)-1)-$1)}'`;
fi
echo "${ytile}";
}

# 地震月報の震源ファイルをWIN final形式に変換する関数
jma2final () {
awk '{
printf "%04d %02d %02d %02d %02d %5.2f %7.4f %8.4f %6.2f %3.1f %s\n",\
substr($0,2,4),substr($0,6,2),substr($0,8,2),\
substr($0,10,2),substr($0,12,2),substr($0,14,2)+substr($0,16,2)/100,\
substr($0,22,3)+(substr($0,25,2)+substr($0,27,2)/100)/60,\
substr($0,33,4)+(substr($0,37,2)+substr($0,39,2)/100)/60,
substr($0,45,3)+substr($0,48,2)/100,
substr($0,53,2)/10,
substr($0,69,24);
}'
}

# 図のサイズ
MAPWIDTH=12
TIMEWIDTH=14

# 描画範囲
YMIN=32.0
YMAX=33.5
XMIN=130
XMAX=132

TICK=a1f0.25

DRY=white
WET=grey80

# WIN final形式に変換,必要な範囲のデータだけ抽出,一時ファイルに保存
cat h2016 | \
jma2final | \
awk '$2==4{print $0}' | \
awk '$8>='$XMIN'&&$8<='$XMAX'&&$7>='$YMIN'&&$7<='$YMAX'{print $0}' > tmp.$$

gmt begin kumamoto_tile

gmt set MAP_FRAME_TYPE plain MAP_DEGREE_SYMBOL degree \
FORMAT_DATE_MAP mm/dd PS_MEDIA a4 \
FONT_ANNOT_PRIMARY 12p,Helvetica,black \
FONT_LABEL 16p,GothicBBB-Medium-EUC-H,black

# 震央分布
gmt basemap -JM$MAPWIDTH -R$XMIN/$XMAX/$YMIN/$YMAX -B$TICK -X3 -Y15

## 地図タイルを貼る
ZOOM=9
XTILEMIN=`long2xtile $XMIN $ZOOM`
XTILEMAX=`long2xtile $XMAX $ZOOM`
YTILEMIN=`lat2ytile $YMIN $ZOOM`
YTILEMAX=`lat2ytile $YMAX $ZOOM`

for I in `seq $XTILEMIN $XTILEMAX`;
do
for J in `seq $YTILEMAX $YTILEMIN`;
do
gmt grdimage ${ZOOM}_${I}_${J}.tif
done
done

## 線分A-B(時系列を投影する)
gmt plot <<END -W
131.4 33.4
130.4 32.2
END

## M<5
cat tmp.$$ | \
awk '$10<5{print $0}' | \
awk '$7>='$YMIN'&&$7<='$YMAX'&&$8>='$XMIN'&&$8<='$XMAX'&&$9<=20{print $8,$7,$10/(10-$10)/5}' | \
gmt plot -Sc -Wthinnest,grey50

## M>=5
cat tmp.$$ | \
awk '$10>=5{print $0}' | \
awk '$7>='$YMIN'&&$7<='$YMAX'&&$8>='$XMIN'&&$8<='$XMAX'&&$9<=20{print $8,$7,$10/(10-$10)/5}' | \
gmt plot -Sc -Wthinner,red

## ラベルA-B
gmt text << END -F+f12p,0,black+jLT
131.4 33.4 A
130.4 32.2 B
END

## 凡例
gmt plot <<END -Sc -Wthinner,black -N
132.2 32.7 0.467
132.2 32.5 0.3
132.2 32.3 0.2
END

gmt text << END -F+f12p,0,black+jCM -N
132.2 32.62 M7.0
132.2 32.42 M6.0
132.2 32.22 M5.0
END

# 地理院タイル
gmt text << END -F+f10p,GothicBBB-Medium-EUC-H,black+jLT -N
130.75 31.87 地理院タイルに地震月報による震央分布を追記
END

# OSMタイル
#gmt text << END -F+f10p,0,black+jCT -N
#131 31.87 Base map and data from OpenStreetMap and OpenStreetMap Foundation
#END


# 時系列

## 線分A-Bの長さ
DIST=`gmt mapproject -G131.4/33.4+uk <<END | awk '{print $3}'
130.4 32.2
END
`

gmt basemap -JX$TIMEWIDTH/-8 -R2016-04-14T/2016-05-01T/0/$DIST -Bxafg+l"2016年" -Byafg+l"距離, km" -BWSne \
-X-1 -Y-10

## M<5
cat tmp.$$ | \
awk '$10<5{print $0}' | \
awk '$7>='$YMIN'&&$7<='$YMAX'&&$8>='$XMIN'&&$8<='$XMAX'&&$9<=20{print $8,$7,$10/(10-$10)/5,$1"-"$2"-"$3"T"$4":"$5":"$6}' | \
gmt project -C131.4/33.4 -E130.4/32.2 -W-25/25 -Lw -Q | \
awk '{print $4,$5,$3}' | \
gmt plot -Sc -Wthinnest,grey50

## M>=5
cat tmp.$$ | \
awk '$10>=5{print $0}' | \
awk '$7>='$YMIN'&&$7<='$YMAX'&&$8>='$XMIN'&&$8<='$XMAX'&&$9<=20{print $8,$7,$10/(10-$10)/5,$1"-"$2"-"$3"T"$4":"$5":"$6}' | \
gmt project -C131.4/33.4 -E130.4/32.2 -W-25/25 -Lw -Q | \
awk '{print $4,$5,$3}' | \
gmt plot -Sc -Wthinner,red

## ラベルAとB
gmt text << END -F+f12p,0,black+jLT -N
2016-5-1T12 0 A
2016-5-1T12 $DIST B
END

gmt end

# 一時ファイルを削除
rm tmp.$$

できあがりはこんな感じです.自分で描けば,もっと高解像度の画像が得られます.下の地図は地理院タイル(淡色地図)に気象庁地震月報(カタログ編)の震源データを重ねたものです.

OpenStreetMapのタイルを貼り込む

上記の地図タイルをダウンロードするスクリプトでは,OpenStreetMap Foundation Japanから地図タイルをダウンロードすることもできます.BASEURLという変数のコメントアウトの部分を変えてください.ここを修正すれば,「標準地図」など他の地理院タイルや,同様の形式で提供されている他のタイル地図も使えます.タイル画像の保存名は同じなので,そのまま実行すると,地理院地図のタイル画像のファイルは上書きされます.

以下のようになると思います.下の地図はOpenStreetMap Foundation Japanが提供する地図タイル(© OpenStreetMap contributors)に気象庁地震月報(カタログ編)の震源データを重ねたものです.

0

情報処理・パソコン 地震月報の震源データでお絵かきしてみた

気象庁の「地震月報(カタログ編)」の震源データを使って震央の時空間分布図を作ってみました.

前の記事と同じく,『歴史のなかの地震・噴火――過去がしめす未来』に載せた図の描き方を書いてみよう,というものです.この本のもとになった授業で2016年熊本地震の解説をするにあたり,気象庁の報道発表資料から図を転載していました.本にするにあたっては,余分な情報もあり,また白黒印刷対応のため,作りなおすことにしました.

対象とするデータ

使ったツール・環境

描き方

まずデータをダウンロードします.年ごとのファイル(新しいところは月ごとの場合もあり)になっています.

今回は熊本地震のあった2016年4月の図をつくりますので,2016年のデータ(h2016)をダウンロードしました.適宜解凍すると,震源ファイルフォーマットに従ったテキストファイルです.今後も自分でデータを使ってみようという方は,フォーマットや気象庁の地震カタログの解説もぜひ読んでみてください.

以下のスクリプト中では,気象庁の震源ファイルフォーマットをいったんWINシステムの震源データベースファイルに変換しています.必ずしもこのフォーマットでなくてもいいのですが,慣れているのでそうしています.

時空間の範囲でフィルタして一時ファイルに書き出していますが,このくらいのデータ量であれば,毎回もとのデータを使ってもたいした違いはないと思います.4月14日から31日までの地震を描いています.

震源データへのパスなどは適宜変更してください.ラベルなどを日本語で書くときは,スクリプトの文字コードはEUC-JPにしましょう.震央の◯の大きさはいろんな流儀があると思います.

#!/bin/sh

# 地震月報の震源ファイルをWIN final形式に変換する関数
jma2final () {
awk '{
printf "%04d %02d %02d %02d %02d %5.2f %7.4f %8.4f %6.2f %3.1f %s\n",\
substr($0,2,4),substr($0,6,2),substr($0,8,2),\
substr($0,10,2),substr($0,12,2),substr($0,14,2)+substr($0,16,2)/100,\
substr($0,22,3)+(substr($0,25,2)+substr($0,27,2)/100)/60,\
substr($0,33,4)+(substr($0,37,2)+substr($0,39,2)/100)/60,
substr($0,45,3)+substr($0,48,2)/100,
substr($0,53,2)/10,
substr($0,69,24);
}'
}

# 図のサイズ
MAPWIDTH=12
TIMEWIDTH=14

# 描画範囲
YMIN=32.0
YMAX=33.5
XMIN=130
XMAX=132

TICK=a1f0.25

DRY=white
WET=grey80

# WIN final形式に変換,必要な範囲のデータだけ抽出,一時ファイルに保存
cat h2016 | \
jma2final | \
awk '$2==4{print $0}' | \
awk '$8>='$XMIN'&&$8<='$XMAX'&&$7>='$YMIN'&&$7<='$YMAX'{print $0}' > tmp.$$

gmt begin kumamoto ps,png

gmt set MAP_FRAME_TYPE plain MAP_DEGREE_SYMBOL degree \
FORMAT_DATE_MAP mm/dd PS_MEDIA a4 \
FONT_ANNOT_PRIMARY 12p,Helvetica,black \
FONT_LABEL 16p,GothicBBB-Medium-EUC-H,black

# 震央分布

gmt coast -JM$MAPWIDTH -R$XMIN/$XMAX/$YMIN/$YMAX -Dh -Wblack -B$TICK -G$DRY -S$WET -X3 -Y15

## 線分A-B(時系列を投影する)
gmt plot <<END -W
131.4 33.4
130.4 32.2
END

## M<5
cat tmp.$$ | \
awk '$10<5{print $0}' | \
awk '$7>='$YMIN'&&$7<='$YMAX'&&$8>='$XMIN'&&$8<='$XMAX'&&$9<=20{print $8,$7,$10/(10-$10)/5}' | \
gmt plot -Sc -Wthinnest,grey50

## M>=5
cat tmp.$$ | \
awk '$10>=5{print $0}' | \
awk '$7>='$YMIN'&&$7<='$YMAX'&&$8>='$XMIN'&&$8<='$XMAX'&&$9<=20{print $8,$7,$10/(10-$10)/5}' | \
gmt plot -Sc -Wthinner,black

## ラベルA-B
gmt text << END -F+f12p,0,black+jLT
131.4 33.4 A
130.4 32.2 B
END

## 凡例
gmt plot <<END -Sc -Wthinner,black -N
132.2 32.7 0.467
132.2 32.5 0.3
132.2 32.3 0.2
END

gmt text << END -F+f12p,0,black+jCM -N
132.2 32.62 M7.0
132.2 32.42 M6.0
132.2 32.22 M5.0
END

# 時系列

## 線分A-Bの長さ
DIST=`gmt mapproject -G131.4/33.4+uk <<END | awk '{print $3}'
130.4 32.2
END
`

gmt basemap -JX$TIMEWIDTH/-8 -R2016-04-14T/2016-05-01T/0/$DIST -Bxafg+l"2016年" -Byafg+l"距離, km" -BWSne \
-X-1 -Y-10

## M<5
cat tmp.$$ | \
awk '$10<5{print $0}' | \
awk '$7>='$YMIN'&&$7<='$YMAX'&&$8>='$XMIN'&&$8<='$XMAX'&&$9<=20\
{print $8,$7,$10/(10-$10)/5,$1"-"$2"-"$3"T"$4":"$5":"$6}' | \
gmt project -C131.4/33.4 -E130.4/32.2 -W-25/25 -Lw -Q | \
awk '{print $4,$5,$3}' | \
gmt plot -Sc -Wthinnest,grey50

## M>=5
cat tmp.$$ | \
awk '$10>=5{print $0}' | \
awk '$7>='$YMIN'&&$7<='$YMAX'&&$8>='$XMIN'&&$8<='$XMAX'&&$9<=20\
{print $8,$7,$10/(10-$10)/5,$1"-"$2"-"$3"T"$4":"$5":"$6}' | \
gmt project -C131.4/33.4 -E130.4/32.2 -W-25/25 -Lw -Q | \
awk '{print $4,$5,$3}' | \
gmt plot -Sc -Wthinner,black

## ラベルAとB
gmt text << END -F+f12p,0,black+jLT -N
2016-5-1T12 0 A
2016-5-1T12 $DIST B
END

gmt end

# 一時ファイルを削除
rm tmp.$$

例によって,出来上がりは本のほうで確認してください.

マグニチュード5以上の震央を赤い◯でしめすと下のようになります.

0

情報処理・パソコン 南海トラフの巨大地震モデル検討会の公開データを使ってみた

内閣府の南海トラフの巨大地震モデル検討会において検討されたデータを使ってお絵かきしてみます.

歴史のなかの地震・噴火――過去がしめす未来』に最大クラスの想定の図を掲載したかったのですが,同検討会の報告書の図はカラーで,白黒だとうまく色が出ないと思われたため,グレースケールで作りなおすことにしました.

自分でデータを見てみたいという方のお役に立てば幸いです.さまざまなケースについて,選んだ地域を拡大して作図するなどできると思います.あくまである(いくつかの)シナリオに沿った想定ですが,さまざまにプロットしてみることで,想定への理解が深まると思います.想定に用いられた手法や仮定にも興味を持っていただくとさらによいと思います.

データの詳細に興味はないという方も,行政の判断に使われるようなデータが,このような形で公開されている(オープンデータ・オープンガバメント)ということを知っていただければと思います.

対象とするデータ

使ったツール・環境

もちろん,QGISでなどのGISソフトウェアで描画する,というのもありです.

描き方

震度分布データ

強震断層モデル(1)データセットAを https://www.geospatial.jp/ckan/dataset/1201 からダウンロードします.

地震のケース1から5のそれぞれと,地震のケース1から5までの震度のうち最大となる震度(最大クラス)のデータがあります.まずは最大クラスのデータを使ってみましょう.

必要なデータ列(経度,緯度と震度)を抜きだし,GMTのグリッドファイルに変換します.このデータの緯度,経度はメッシュの南西端と北東端の経度(6-7列目と8-9列目),緯度(日本測地系JGD2000)で表現されていますので,足して2で割ったメッシュの中央を代表点とします.震度(小数点以下第一位まで表示)が4列目です.地域メッシュについては総務省統計局の「地域メッシュ統計について」を参照してください.

合わせてデータを間引きします.強震断層モデル(1)データセットAは250 mメッシュでの計算値で,日本全国を描画するときは,そんなに細かいものは必要ないと思います.とりあえず1 kmメッシュ(緯度、経度方向の間隔がそれぞれ30秒、45秒)にしてみます.もっと間引いてもよいかもしれません.-rオプションでpixel registration(グリッド=メッシュのなかに代表点がある),-Auオプションでグリッド中の最大値を採用することを指定します.

tail +2 Eq_champ.csv | awk -F, '{printf "%.6f %.6f %3.1f\n",($6+$8)/2,($7+$9)/2,$4}' | gmt xyz2grd -GEq_champ_1km.grd -I45s/30s -R128:0/142:0/30:0/38:0 -fg -r -Au -D+tEq_champ+rCAO-Nankai

都道府県境データ

都道府県境のデータを https://nlftp.mlit.go.jp/ksj/gml/datalist/KsjTmplt-N03-v2_4.html#prefecture00 からダウンロードします.SHAPE形式データが含まれています.

SHAPE形式データをGMTで扱えるデータ形式に変換します.GDALを含むようにインストールしたGMTだと,直接読めますが,何度も描きなおす場合は変換しておいたほうが早いと思います.GMTのマニュアルには,さらにバイナリデータに変換してデータファイルを小さくする方法も書かれています.

ogr2ogr -f "GMT" N03-19_190101.gmt N03-19_190101.shp

県境の経度,緯度が並んだテキストデータになります.「>」を区切り文字とするmulti segmentデータです.

描画

データの準備ができたら,GMTで描画します.今回は,震度分布をメッシュの色であらわして,その上に県境を重ねて描いています.凡例はまあお好みで.

日本語でラベルなどを書きたい場合,シェルスクリプトの文字コードはEUC-JPで保存しましょう.

#!/bin/sh

# 描画範囲
YMIN=30
YMAX=38
XMIN=128
XMAX=142

gmt begin nankai_soutei_modern

gmt set MAP_FRAME_TYPE fancy MAP_DEGREE_SYMBOL degree PS_MEDIA a4

# 震度のカラーパレット
cat > intensity.cpt << END
0.0 grey100 3.5 grey100
3.5 grey90 4.5 grey90
4.5 grey80 5.0 grey80
5.0 grey70 5.5 grey70
5.5 grey50 6.0 grey50
6.0 grey30 6.5 grey30
6.5 grey0 9.0 grey0
B 255
F 0
N grey100
END

# 震度分布
gmt grdimage Eq_champ_1km.grd -JM15 -R$XMIN/$XMAX/$YMIN/$YMAX -Cintensity.cpt -Y10 -Vv

# 県境
cat N03-19_190101.gmt | \
gmt plot -Wfaint,black -Vv

# 凡例
gmt text << END -D0/-0.25 -F+f16p,37,black+jML -V
136.5 33.5 震度
136.5 33 7
136.5 32.5 6強
136.5 32 6弱
136.5 31.5 5強
136.5 31 5弱
136.5 30.5 4
END

# 7
gmt plot << END -Ggray0 -L
137.5 33
138.0 33
138.0 32.5
137.5 32.5
END

# 6+
gmt plot << END -Ggray30 -L
137.5 32.5
138.0 32.5
138.0 32
137.5 32
END

# 6-
gmt plot << END -Ggray50 -L
137.5 32
138.0 32
138.0 31.5
137.5 31.5
END

# 5+
gmt plot << END -Ggray70 -L
137.5 31.5
138.0 31.5
138.0 31
137.5 31
END

# 5-
gmt plot << END -Ggray80 -L
137.5 31
138.0 31
138.0 30.5
137.5 30.5
END

# 4
gmt plot << END -Ggray90 -L
137.5 30.5
138.0 30.5
138.0 30
137.5 30
END

gmt end

できあがりは,こちらの書籍で確認してみてください.誤植というかコピペの消し忘れがあります.お恥ずかしい.

カラーの図

カラーパレットのところを以下のように変更すれば,カラーの図が作れます.配色は,気象庁の震度の色にしました.南海トラフの巨大地震モデル検討会の報告書の図とは色が違います.

# 震度のカラーパレット(気象庁カラーコード)
cat > intensity.cpt << END
0.0 0 65 255 3.5 0 65 255
3.5 250 230 150 4.5 250 230 150
4.5 255 230 0 5.0 255 230 0
5.0 255 253 0 5.5 255 153 0
5.5 254 40 0 6.0 254 40 0
6.0 165 0 33 6.5 165 0 33
6.5 180 0 104 9.0 180 0 104
B 255
F 0
N grey100
END

こんな感じです.

 

 

0

会議・研修 とある学会の一般公開セミナーを担当した話

とある学会の一般公開セミナーを担当しました.これまでのオンライン講義・オンライン学会など,参加したあるいは運営に関わった経験を活用しました.同じようなイベントを担当される方の参考になれば幸いです.

とはいえ,かなり準備を進んだ段階で予算があったことが判明して,それなら自前でがんばらなくても,ノウハウをお持ちの事業者さんにお願いすればよかったと思っています.みんなで翻刻サミットの運営はそのようにして,内容に集中できました.

用意したもの

  • Zoomウェビナーライセンス.会場および受け付け.学会でZoomミーティングのライセンスをもっていたので,ウェビナーのオプションを2か月だけ購入しました.受付期間もふくむということで2か月です.
  • Googleドライブ.当日の資料配布に使いました.
  • Googleフォーム.当日のアンケートに使いました.
  • パソコン(Zoomウェビナーのホスト用と司会用).トラブルに備えて2台用意しました.

お願いしたこと

  • 講師.講演,講演タイトル,講演概要,配布用講演資料の作成
  • 正副会長.はじめとおわりのあいさつ
  • Zoom共同ホスト.ホストの通信トラブル等への備え,システムサポート,記念撮影(画面キャプチャ)

テーマの設定・講師の依頼

  • 関係者と相談し,テーマを決め,講師の候補を挙げました.
  • 候補の方に講演でお話していただきたい内容をお伝えして依頼しました.お受けいただけるということで(ほぼ快諾),スケジュール調整にうつりました.
  • このあたりは,対面でもオンラインでも同じだと思いますが,オンラインで開催することは先にお伝えしました.

会場の準備

  • 今回の一般公開セミナーのプラットフォームとして,Zoomウェビナーを使うこととしました.学会の総会で実績があったこと,Zoomミーティングのライセンスを学会がもっていたことが主な理由です.
  • Zoomミーティングには私自身や多くの関係者が慣れてきていると感じていたことも理由です.
  • Zoomはドキュメントを読めば設定方法がわかることも安心感があります.UIの日本語がときどき変ですが.
  • 今回3日間にわたるセミナーでしたが,同じURLで参加できる設定としました(定期開催ウェビナーのスケジュール方法).

申込受付

  • Zoomウェビナーでは,受付と参加用のURLの配布もシステム側でやってくれます.今回は申込があれば自動承認する設定にしました(登録が必要なウェビナーをスケジュールする).登録者名簿もシステム側で生成され,csvでダウンロードできます.メール等で受け付けをし,名簿をつくる作業を自分でやらなくていいのは大きなメリットです.
  • 運営側や講師の方の参考のため,お住まいの都道府県を入力してもらうように設定しました(登録カスタマイズ).
  • 事前登録ページには,学会のロゴや講演内容の紹介も設置しました(ウェビナーのブランディング設定をカスタマイズする).これは設定しなくても問題はありませんが,せっかくなのでそれっぽくしてみました.
  • セミナー自体は受け付けも当日も完全オンラインではありますが,電話やメールでの問い合わせがあるかもしれません.学会事務局におまかせしました.

広報

  • 学会ホームページ内に告知ページをつくりました.こちらの学会は原稿をつくると事務局(と外注先)のほうでWebページにしてもらえるので,ほぼテキストを用意しただけです.
  • 第1報はテーマと日時と講演タイトルだけ.
  • 第2報として,上記のZoomウェビナーの参加登録用のURLを掲載し(約1か月半前),講師の方からいただいた講師略歴と講演概要(数百文字)を掲載しました.
  • 学会の広報委員会がもっているルートを利用して,関係する省庁の記者クラブに資料をお送りしました.また,テーマと関わる県の県庁記者クラブにも資料をお送りしました.資料の内容は,上記の告知ページとほぼ同様です.
  • SNSをもたない学会なので,個人のSNSで発信してみました.オンラインで開催する場合は,参加登録まで直接,ないしは,リンクをたどって誘導できるSNSは広報の有力な手段だと思います.

講演資料作成

  • 講師の方に当日配布用の資料を作成していただきました.以前,同様のセミナーで,一般の方も資料があったほうが講演が聞きやすい,あるいは,おみやげとして持って帰れるものがあると喜ばれる,ということを聞いたことがあったからです.
  • 講師の方の過度の負担にならないよう,講演スライドの抜粋(または全部)ということにしました.
  • 講師の方からいただいた資料に表紙(セミナー名や日時など)をつけて,当日配布資料としました.当日配布資料については,再配布はご遠慮くださいということにしました.セミナー当日だけダンロードできる設定にしました.
  • スライドについては,出典の明記など一般的な著作権のルールや,論文等から引用する場合は引用元のルールなどご注意いただくようにお願いし,私のほうでも可能な限り確認しました.ふたをあけてみると,自由に引用できるルールの雑誌からの引用も多く,オープンアクセスの進展を感じました.

リハーサル

  • 講師の方およびホスト・共同ホストの接続環境や,接続方法(パネリストをウェビナーへ招待)の確認のためリハーサルをしました.本番とは別のZoomウェビナーを設定し,関係者に参加者として参加していただきました.
  • 当日の段取りについて,おおよその進行表を作成しておき,リハーサルの際に分担や動きを確認しました.
  • 質疑応答の受け方(Q&A機能をつかう)についても確認しました.

当日

  • 開始時刻までに,講師と運営関係者をパネリストとして招待しました(パネリストをウェビナーへ招待).
  • 開場前の打ち合わせや画面共有の確認ができるウェビナー演習セッションを設定しました.後日,学会広報紙などでの報告に使うため,講師の方の記念撮影(キャプチャ)をしました.
  • ひととおり確認したあとで「ウェビナーを開始」しました.初日は気づかないうちに「開始」してしまっていたのはご愛嬌.
  • 記録のため録画しました.トラブル防止やトラブル発生時の証拠とするの意味もあります.
  • 開場前には,司会から一般公開セミナーであることや開始時刻のアナウンスをしました.自分が参加者として参加したときに,無言でつながっていると何となく不安に感じたことがあったためです.
  • 開場前から,Zoomのチャットに注意事項,当日配布資料へのリンク(Googleドライブ上),アンケートへのリンク(Googleフォーム)を書き込みました.
  • 注意事項は以下のようなものでした.
    • 録画,録音,スクリーンキャプチャは禁止です
    • 学会側では記録として録画します
    • 質問はQ&A機能でお受けします
    • 終了後アンケートにご協力ください
  • 講師(とあいさつをした正副会長)には,発言中スポットライト(ビデオのレイアウトを変更する)を設定しました.また,参加者のビデオレイアウトについて「ホストビューモードに従う」に設定しました.(ウェビナーの参加者の管理).
  • ホストのビデオに,講演タイトルと注意事項を書いたスライドを映しておきました.OBSのバーチャルカメラを利用しました.Zoomの背景でもよかったかもしれません.
  • 講演後に質疑応答の時間をとりました.Q&A機能で書き込んでいただいたものを,司会のほうで読みあげ,講師の方にご回答いただきました.
  • 2日目からは,回答するまではQ&A機能への書き込み内容が他の参加者に見えない設定にしてみました.
  • Zoomウェビナーでは拍手ができないので(ミーティングとウェビナーの比較),「手をあげる」ボタンで拍手のかわりとしました.チャットに「88888」(パチパチ)などと書き込んでくださる方もおられました.私はニコ生などで慣れていますが,知らない方はびっくりされたかもしれません.

終了後

  • Zoomウェビナーの参加者レポートを取得し(ウェビナーのレポート作成),人数の確認をしました.
  • 参加者は各回100人前後でした.
  • アンケート結果および関係者が作成した文字記録を講師の方と共有しました.
  • アンケートの項目は以下のようなものでした.アンケートは合わせて約130件いただきました.今回のセミナーをどこで知ったかを尋ねるのを忘れました.
    • どちらにお住まいですか?
    • 学会の会員ですか?
    • どの講演を聞かれましたか?(複数回答可)
    • 一般公開セミナーはいかがでしたか?
    • 講演は分かりやすかったですか?
    • 今後一般公開セミナーやシンポジウムなどで聞きたい話題があれば教えてください
    • 今後の一般公開セミナーやシンポジウムなどの開催方式について
    • 一般向けの企画として期待するものがあれば教えてください(例:一般公開セミナー、出版物、情報発信など)
    • ご感想、ご意見など自由にご記入ください

個人的な反省点

  • 広報のためのチラシを作成すればよかったです.SNSで発信する際のアイキャッチや当日配布資料の表紙にもつかえます.
  • もっとはやく準備をはじめたら,もっとたくさん参加してもらえたかもしれません. 広報開始が遅かったと思っています.
  • 開催時期は適当だったか? ほかにも同種のいろいろなイベントがある時期でした.準備が遅かった自分も悪いのですが.
  • アーカイブ配信や配布資料の一般公開について,関係者間で事前にじゅうぶんな議論ができませんでした.今回は権利関係が不安ということで慎重な意見が多かったと思います.個人的には権利関係がクリアできていれば,公開してしまうほうが楽だし(アクセス権限のコントロールが面倒),一般の利益にもなると思います.学会員のメリットが,とか言う人もいるのでややこしい.
0

インフォメーション KogumaNetくずし字認識サービスを使ってみた

ROIS-DS人文学オープンデータ共同利用センターが提供しているKogumaNetくずし字認識サービス(一文字)を使ってみました.私が関わっているみんなで翻刻からも使わせていただいているサービスです.KogumaNetをふくむAIによるくずし字認識については,みんなで翻刻サミットでも開発者のタリンさんから話題提供していただき,みんなでワクワクしました.

サービスのサイトの説明を読めばだいたい分かると思うのですが,はじめて使うという方には画面キャプチャがあったほうが分かりやすいかと思ったので,つけておきます.ここでの説明以上の詳しいことは,開発元のROIS-DS人文学オープンデータ共同利用センターにお問い合わせください.

例として,新日本古典籍データベースより「安政見聞録」(新潟大学附属図書館 国文学研究資料館)を用いました.

まず,記載されているリンクから,KogumaNetくずし字認識ビューアを表示します.CODHで開発されているIIIF Curation ViewerでKogumaNetくずし字認識が使えるようになっているものです.右上の「ログイン」あるいはログイン済の場合はアカウント名の表示がありますが,このサービスはログインしていてもしていなくても使えるようです.

ブラウザの別のタブやウィンドウで,くずし字認識を試したい資料を表示します.IIIFマニフェストのリンクを探してください.たとえば,「安政見聞録」(新潟大学附属図書館 国文学研究資料館)の場合は,画像ビューアのインフォメーションのアイコンをクリックするとマニフェストへのリンクが表示されます.

このマニフェストを先に開いていたKogumaNetくずし字認識ビューアにドラッグアンドドロップしましょう.あるいはhttp://codh.rois.ac.jp/char-shape/app/icv-kuzushiji/?manifest=https://kotenseki.nijl.ac.jp/biblio/100292635/manifestのようにアドレスバーに入力しても同じことです.以下のように,対象の資料がKogumaNetくずし字認識ビューアで表示されれば準備OKです.

次に,目的のコマを表示しましょう.左上に「次」「前」のアイコンがあります.読みたい文字のあるコマに移動しましょう.適宜拡大縮小や画像の移動をしてください.マウス操作で拡大縮小移動したり,左上のズームアイコンで操作したりというのは,地図アプリの操作感と似ていると思います.

右上の「■」のアイコンをクリックすると,領域を囲めるモードになります.クリックしながらマウスを動かして囲みます.

下の図のように,KogumaNetくずし字認識を試したい文字を囲みましょう.新聞や週刊誌の記事を切り抜く感覚ですね.

囲んだ青い部分をクリックすると,KogumaNetくずし字認識が起動されます.

しばらく待つと,はい! 最初に試すときは,モデルの読み込みにしばらく時間がかかります.その旨表示されますので,少しだけ待ちましょう.

KogumaNetくずし字認識が候補を挙げてくれます.必ずしも上位のものが正解とはいえないと思います.どの読みがいいか,あるいは,違う読みもありそうだなどと考えてみてください.

いろいろ試すと,KogumaNetくずし字認識にも得意不得意があることがわかったりします.

AIの助けを借りて,ご自身で読むのも楽しいですが,もしみんなで読んでみたい,ほかの人にも読んでもらいたい,という資料があったら,みんなで翻刻へのプロジェクト登録もご検討いただければと思います.

0

深さ50kmより深い地震で震度6弱以上を観測した地震

2021年2月13日23時13分の福島県沖の地震を踏まえ,気象庁震度データベース検索 https://www.data.jma.go.jp/svd/eqdb/data/shindo/index.html で検索しました.

1919年以降,深さ50kmより深い地震で震度6弱以上を観測した地震は5回でした.

過去に起きた地震とまったく同じことが今回起こるわけではないですが,いま,あるいは,将来の被害を想像するためのヒントになると思います.

地震の直後は被害の大きかったところほど情報が出てきにくい傾向があるので、観測された震度なども参考に,被害の想定をする必要があります.

 

2011年4月7日23時32分の地震では「死者4,負傷296」「金華山沖のスラブ内地震で短周期成分が多く,東日本大震災で傷んだ建造物にさらなる震動被害を与えた」.宇佐美・他(2013)『日本被害地震総覧599-2012』 より.今回の地震と震央は異なりますが,似たような地震ということで,地震本部の評価 → 地震調査研究推進本部地震調査委員会 宮城県沖の地震活動 2011年4月7日、M7.2 [最大震度6強]  https://www.jishin.go.jp/evaluation/seismicity_annual/major_act_2011/#a20110407

2008年7月24日0時26分の地震では「ベッドから転落して5日後に死者1のほか負傷211,住家全壊1,一部破損379棟,火災が2件と8道県で被害が発生した」.宇佐美・他(2013)『日本被害地震総覧599-2012』 より

2003年5月26日18時24分の地震では「負傷者174,住家全壊2棟,半壊21棟,一部破損2404棟」「宮城県北部から岩手県南部にかけて崖崩れなどの土砂災害」.宇佐美・他(2013)『日本被害地震総覧599-2012』 より

1993年1月15日20時6分の地震では「人的被害は死者2名、重傷116名、軽傷850名」「家屋5,618棟に被害が出た」「強い揺れを観測した釧路地方では、地盤の液状化にともなう噴砂現象」.平成5年釧路沖地震 | ほっかいどうの防災教育 http://kyouiku.bousai-hokkaido.jp/wordpress/ndl/126977/ より

1972年12月4日19時16分の地震「八丈島東方沖地震」「八丈島で震度6,断水3169世帯,その他道路損壊4,地割れ4,落石9,土砂崩壊多数」「青ヶ島でも落石4,土砂崩壊3」宇佐美・他(2013)『日本被害地震総覧599-2012』 より

 

 

0

日本地震学会教員ウィンターミーティングでの話題提供のリンク集

日本地震学会教員ウィンターミーティング「コロナ禍での地震の教材を考える」での話題提供に関するリンク集です.

埼玉県高等学校理化研究会地学研究大会で発表(出展)しました.

0

I-URIC フロンティアコロキウム勉強会での発表のリンク集

I-URIC フロンティアコロキウム勉強会にお招きいただき,話題提供しました.そのときのリンク集です.

 

0

情報処理・パソコン JpGUAGU2020 何か作った話

2020年7月に開催されたJpGU - AGU Joint Meeting 2020: Virtual.オンライン開催のため電子データを使うことができ,また,いつもと違うノウハウもあったので,いくつかツールや掲示物のようなものを作りました.さすがに論文にすることは無さそうなので,ここに書いておきます.

DFS のまとめ

DFSというライブセッションのプログラムのまとめを作った話については別記事に書きました.

iPosterのチャットログを整形して表示するWebアプリ

https://www.dheq.org/jpguiposter/

ほぼすべての発表はiPosterというシステムで実施されました(ただし,DFSのみで発表があったものを除きます).このiPoster,発表者と参加者の間で,チャットで質疑や議論ができるようになっていました.チャットのログが保存できるのですが,JSONファイルで,ぱっと見には分かりにくいので,適当に整形して表示したら便利かな,というのが作成の経緯です.

大会3日目(7月13日)くらいにはあったら便利かもという話をしていましたが,そんころはまだiPosterのシステムが不安定で,チャットのログを取るどころではなかったので,すぐには取り組みませんでした.会期が延長され,最終日(7月19日)には高校生ポスターの一部の方がiPosterのチャットを開いていました.そのチャットが盛り上がっているのを目の当たりにして,やっぱりアプリを作っておこうかなという気になりました.

なお,高校生のポスターについては,試験期間と重なって,1割強のポスターした参加できなかったのは残念でした.会期を延長して機会を提供できたとはいえ,これでよかったのかどうか.研究者にとっては,長い研究生活の1日(1週間)でしかありませんが,高校生たちには学年進行があり,年間計画があるので,1週間後にもう1回と言われても対応できないだろうと思います.大人になると学生さん・生徒さんには定期試験がある(しかもけっこう重要なイベント),ということを忘れがちなのかもしれません.それでも11件のポスターで再度チャットの機会があったというのはよかったと思います.私も数件のポスターで議論を楽しみました.(なおなお,チャットで褒めるだけで議論を深めず去っていく人が多かったのはちょっと不思議でした.褒めて伸ばす主義なのでしょうか?)

vue.jsを使って簡単に作りました.自分の研究で似たようなもの(たとえば,「歴史地名辞書の検索」)を作っていた経験がいきました.

パブリックセッションIDの絵解き

JpGUには,パブリックデー(一般の方も参加できる日)を設けていて,それ専用のIDがありました.大会ポータルにログインするためのIDが分かりにくい(というか直感的でない)ようで,"迷子"になっている方がけっこうおられたので,方法を説明するとともに,絵解きをつくりました.うん.これは分からない.絵解きを作りながら,初日のパブリックセッションにログインできなかった方の話を聞きましたが,IDに関する混乱(繰り返しますが,直感的ではない)があったからではないかと思うようになりました.

iPosterの一覧

オンライン予稿集からiPosterに直接リンクがあれば便利だなーと思ったのですが,そのようにはなっていませんでした.そこで,有志の方と一緒に,発表番号,第一著者,タイトル,iPosterのURL,オンライン予稿集のURLの一覧表を作りました.ただ,iPosterのURLを公開することは「発表資料取り扱いポリシー」に抵触するとのことでお蔵入りになり,個人で楽しむ索引となりました.

0