とらりもん - ジオイド Diff
- Added parts are displayed like this.
- Deleted parts are displayed
like this.
[[ここ|https://fgd.gsi.go.jp/download/geoid.php]]から日本のジオイドのデータ(gsigeoid_ver5_asc.zip)をダウンロードできる。ジオイド2011|http://www.gsi.go.jp/common/000135065.zip]]
[[ここ|https://fgd.gsi.go.jp/download/geoid.php]]から日本のジオイド2011|https://www.gsi.go.jp/buturisokuchi/grageo_geoidseika.html]] ジオイドのデータ(gsigeo2011_ver2_1_asc.zip)をダウンロードできる。
その中の説明書(asc取扱説明書.pdf)によると,
「ジオイド・モデルは、北緯20度から50度、東経120度から150度の範囲について、緯度間隔1分、経度間隔1.5分の格子位置におけるジオイド高として与えられています。
テキスト(ASCII)形式のジオイド・モデル‘gsigeome_ver5.asc’は、1行目がヘッダ行であり、2行目以降に格子点でのジオイド高が格納されています。」
# ジオイド高(楕円体を基準にしたジオイドの高さ)の, GRASSへのインポート
$ grass # start GRASS in latlon projection
$ unzip gsigeoid_ver5_asc.zip
$ cd gsigeoid_ver5_asc/program
$ cat <<EOF > dummy
north: 50.0083333
south: 19.9916667
east: 150.0125
west: 119.9875
rows: 1801
cols: 1201
null: 999.0000
EOF
$ cat gsigeome_ver5.asc | \
awk 'NR>1{for (i=1; i<=NF; i++)print $i}' | awk '$1>-999{print $1}' | \
awk '{printf"%s ",$1}NR%1201==0{printf"\n"}' | \
awk '{a[NR]=$0}END{for (i=0;i<NR;i++)print a[NR-i]}' >> dummy
$ g.region w=119 e=151 s=19 n=51 nsres=0.0166666667 ewres=0.025
$ r.in.ascii input=dummy output=t --o
# このファイルは, 南から北に向けてデータが入っている。
# しかも1行は28データ(1ラインの一部)なので,
# 単純に行順をひっくり返せば良いというものではない。
# いったん1ライン1データにして, ゴミ(改行だけの行)
# を消し, あらためて1ライン1行にまとめなおしてから行をひっくり返す。
その中の説明書(asc取扱説明書.pdf)によると,
「ジオイド・モデルは、北緯20度から50度、東経120度から150度の範囲について、緯度間隔1分、経度間隔1.5分の格子位置におけるジオイド高として与えられています。
テキスト(ASCII)形式のジオイド・モデル‘gsigeome_ver5.asc’は、1行目がヘッダ行であり、2行目以降に格子点でのジオイド高が格納されています。」
# ジオイド高(楕円体を基準にしたジオイドの高さ)の, GRASSへのインポート
$ grass # start GRASS in latlon projection
$ unzip gsigeoid_ver5_asc.zip
$ cd gsigeoid_ver5_asc/program
$ cat <<EOF > dummy
north: 50.0083333
south: 19.9916667
east: 150.0125
west: 119.9875
rows: 1801
cols: 1201
null: 999.0000
EOF
$ cat gsigeome_ver5.asc | \
awk 'NR>1{for (i=1; i<=NF; i++)print $i}' | awk '$1>-999{print $1}' | \
awk '{printf"%s ",$1}NR%1201==0{printf"\n"}' | \
awk '{a[NR]=$0}END{for (i=0;i<NR;i++)print a[NR-i]}' >> dummy
$ g.region w=119 e=151 s=19 n=51 nsres=0.0166666667 ewres=0.025
$ r.in.ascii input=dummy output=t --o
# このファイルは, 南から北に向けてデータが入っている。
# しかも1行は28データ(1ラインの一部)なので,
# 単純に行順をひっくり返せば良いというものではない。
# いったん1ライン1データにして, ゴミ(改行だけの行)
# を消し, あらためて1ライン1行にまとめなおしてから行をひっくり返す。