0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

bablon.jsで地形データを表示したい1

Last updated at Posted at 2020-09-21

はじめに

babylon.jsを使って、地形データを表示します。
仕事の都合で、学習中。

データ

フリーデータ

まずは何を表示する?ということで、フリーのデータを探して、こちらを見つけました。

静岡県ポイントクラウドデータベース
https://pointcloud.pref.shizuoka.jp/

スクリーンショット 2020-09-21 13.38.22.png

静岡県の施工現場の地形データをlas形式で公開しているサイト。「閲覧・DL」からlas形式のファイルをダウンロードできます。las形式は、バイナリ形式の地形データで、3Dビューワではそのまま表示できるものもあるようですが、babylon.jsで表示したいので、読める形式に変換できないか調べます。

las2txt

http://www.cs.unc.edu/~isenburg/lastools/
las形式のファイルをテキスト形式に変換するツール。

スクリーンショット 2020-09-21 13.43.21.png

ダウンロードすると、windows用のバイナリファイルがありますが、centosで実行したいので、コンパイルします。Makefileもついている。centos6では、gccのバージョンが古く、コンパイル失敗。こちらを参考に解決。

動かざることバグの如し - CentOS6のgccをアップデートする
https://thr3a.hatenablog.com/entry/20180308/1520506543

コマンドを実行すると、入力ファイルと出力ファイルを求められるので、入力するだけです。

$ las2txt
las2txt is better run in the command line
enter input file: 31S2212011301-1.las
enter output file: 31S2212011301-1.txt
<press ENTER>

スペース区切りのx, y, z形式になります。値はセンサーからの距離でしょうか。

$ head 31S2212011301-1.txt
-20715.16 -89999.21 636.720
-20714.88 -89999.70 637.140
-20714.67 -89998.82 636.980
-20714.66 -89997.34 635.280
-20714.64 -89999.29 637.120
-20714.50 -89998.43 636.830
-20714.45 -89996.97 635.180
-20714.43 -89998.00 636.670
-20714.33 -89999.73 637.670
-20714.31 -89996.47 635.270

点群データ表示

babylon.jsで点群データを表示するには、Points Cloud Particle Systemを使います。
https://doc.babylonjs.com/how_to/point_cloud_particles

    // 点群データの表示
    var pcs = new BABYLON.PointsCloudSystem("pcs", 1, scene);

    var myfunc = function(particle, ii) {
      particle.position = new BABYLON.Vector3(data[ii][0] - x_mid, data[ii][1] - y_mid, data[ii][2] - z_mid);
    }

    pcs.addPoints(data.length, myfunc);
    pcs.buildMeshAsync();

dataにlas2txtで変換したデータを設定。そのままの値を利用すると値がデカいので、x_mid, y_mid, z_midにそれぞれの軸の中心点を設定して、引きました。中心点からの距離になっているはず。

できました。
令和元年度[第31-S2212-01号]口坂本No.2事業間連携砂防等事業(地すべり)に伴う測量業務委託(航空レーザ測量)
スクリーンショット 2020-09-21 14.25.52.png

地図上ではココ。
スクリーンショット 2020-09-21 14.30.14.png

プログラムはこちら。ぐりぐり動きますが、表示に時間がかかります。
http://141-lab.com/babylon/qiita/pcs/

気になったこと

lasデータをそのまま使うと容量がデカくなるので、点データを減らしてみました。

1/10サイズ

awkで10行に1行を出力するコマンド

cat ./31S2212011301-1.txt | awk '(NR%10==0){print}' > ./31S2212011301-10.txt

結果
点は薄く、表示は早い。
スクリーンショット 2020-09-21 14.27.20.png
http://141-lab.com/babylon/qiita/pcs/1_10.html

1/100サイズ

awkで100行に1行を出力するコマンド

cat ./31S2212011301-1.txt | awk '(NR%100==0){print}' > ./31S2212011301-100.txt

結果
点はさらに薄く、表示はさらに早い。
スクリーンショット 2020-09-21 14.11.55.png
http://141-lab.com/babylon/qiita/pcs/1_100.html

まとめ

データ データサイズ 点の数 表示時間
オリジナル 105M 3875933 36.1秒
1/10サイズ 11M 387593 1.2秒
1/100サイズ 1.1M 38759 0.2秒

データを減らしても雰囲気は出ているので、データを減らすのはありかなと思いました。

今後

次は面で地形を表示したい。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?