(O+P)ut

アウトプット



(O+P)ut

エンジニアのアウトプット

【R言語】山岳データを取得して等高線プロットを行う

スポンサーリンク

山頂立体地図データ

以下の国土地理院のサイトにて日本の山岳データが取得できます。
立体地図(日本の主な山岳)

*山名をクリックすると、「地理院地図」で、山頂付近が表示されます。
【3D表示】をクリックすると、山頂付近が立体地図表示されます。

例えば富士山を選択して3D表示すると以下のようにブラウザに表示されます。
f:id:mtiit:20190420085432p:plain
マウスで任意の角度にぐりぐりと動かすことも可能です。

このデータが素晴らしいのは、元データをダウンロード可能な点にあります。

フォーマットとしては3種類、STL*1VRML*2WebGLです。

STLファイル 色を付けられない3Dプリンタ用のデータ .stl
VRMLファイル フルカラーの3Dプリンタ用のデータ .wrl / .png / .pgw
WebGL用ファイル ブラウザでぐるぐる回す用のファイル .html / .csv / .png / .pgw

今回は下記記事同様でWebGL用のファイルを利用し、標高データを二次元配列に格納して等高線としてプロットを行います。


標高データを等高線に

今回も富士山のデータを利用します。

標高データが格納されているdem.csvファイルを用います。

$ cat dem.csv | awk 'BEGIN{RS=",";ORS="\n"}{print $0}' | wc
  66049   66049 1220776

縦横257行のデータを配列に落とし込みます。

> mt_fj <- matrix(scan("C:\\Users\\XXXX\\Downloads\\dem.csv",sep=","),nrow=257)
Read 66049 items

contour関数を用いて等高線プロットが行えます。

> contour(mt_fj)

f:id:mtiit:20190806220244p:plain
問題なく可視化できました。

また本データをimage関数に入力するとカラーの等高線のようにも扱えます。
f:id:mtiit:20190806220408p:plain

plotlyパッケージを利用

Plotlyというオープンソースのグラフィック用ライブラリがあり、PythonやMATLAB、そしてR言語用に提供されています。.
R言語で利用するためには以下でインストール、読み込みを行います。

> install.packages("plotly")
...
> library(plotly)
...

以下のような引数で実行すると

> plot_ly(z=mt_fj,type = "contour")

以下に一時ファイルが作成され

file:///C:/Users/XXX/AppData/Local/Temp/RtmpM3mTlA/viewhtml3f302ddf88f/index.html

ブラウザで以下のようにインタラクティブなプロット結果を確認できます。
f:id:mtiit:20190806221144p:plain

終わりに

本記事ではオープンデータである山岳データを配列データとして格納して等高線として可視化しましたが、二次元データであれば同じように可視化できます。

このような可視化が行えることを頭の片隅に入れておくと、どこかで役立つと思います。

以上、ご参考になれば幸いです。

*1:STL : Standard Triangulated Languageの略

*2:VRML : Virtual Reality Modeling Languageの略