WebODMでオルソフォトやDSM(デジタルサーフェイスモデルの構築

1.LINUXパソコンの構築

WindowsパソコンをLinuxと兼用して動作させることができますが、セキュリティー上の問題がありそうなのでUNIX専用のパソコンを構築しました。
新たな資金の投資は敬遠したいので、導入したパソコンはWindows7時代のものです。スペックは下記のとおりです。
LINUXはubuntu-OSを採用した。Ubuntuのインストールは下記を参照してください。
https://sicklylife.jp/ubuntu/2004/settings.html

2.WebODMのインストール

※WebODMのインストールはカルさんの「俺の知恵袋」を参考にさせていただきました。ありがとうございました。

はじめにいつものリポジトリの更新です。

-/デスクトップ$ sudo apt-get update
-/デスクトップ$ sudo apt-get upgrade

次にDockerとDocker-compose、Pipをインストールします。

-/デスクトップ$ sudo apt install docker.io
-/デスクトップ$ sudo apt install docker-compose
-/デスクトップ$ sudo apt install python-pip

GitからWebODMをパソコンにコピーします。

-/デスクトップ$ git clone https://github.com/OpenDroneMap/WebODM --config core.autocrlf=input --depth 1
※オプションの設定方法が変わっていますので、一度「git⏎」で確認してみましょう。

参考にさせて頂いたカルさんのページではgitのオプションにハイフンひとつで指定していますが、下記のとおり最近では多くがダブルハイフンでオプション指定するようになっています。

usage: git clone [<options>] [--] <repo> [<dir>]  
  -v, --verbose be more verbose
  -q, --quiet be more quiet
  --progress force progress reporting
  -n, --no-checkout don't create a checkout
  --bare create a bare repository
  --mirror create a mirror repository (implies bare)
  -l, --local to clone from a local repository
  --no-hardlinks don't use local hardlinks, always copy
   -s, --shared setup as shared repository
   --recursive ... alias of --recurse-submodules
   --recurse-submodules[=<pathspec>]  initialize submodules in the clone
   -j, --jobs <n> number of submodules cloned in parallel
   --template <template-directory>  directory from which templates will be use
  --reference <リポジトリ>  reference repository
  --reference-if-able <リポジトリ>  reference repository
  --dissociate use --reference only while cloning
  -o, --origin <name> use <name> instead of 'origin' to track upstream
  -b, --branch <ブランチ>   checkout <branch> instead of the remote's HEAD
  -u, --upload-pack <path> path to git-upload-pack on the remote
  --depth <depth> create a shallow clone of that depth
  --shallow-since <time> create a shallow clone since a specific time
  --shallow-exclude <revision> deepen history of shallow clone, excluding rev
  --single-branch clone only one branch, HEAD or --branch
  --no-tags don't clone any tags, and make later fetches not to follow them
  --shallow-submodules any cloned submodules will be shallow
  --separate-git-dir <gitdir> separate git dir from working tree
  -c, --config <key=value> set config inside the new repositor
  --server-option <server-specific> option to transmit
  -4, --ipv4 use IPv4 addresses onl
  -6, --ipv6 use IPv6 addresses onl
  --filter <args> object filtering
  --remote-submodules any cloned submodules will use their remote-tracking branch
  --sparse initialize sparse-checkout file to include only files at root

gitが上手くいったらホルダーを移動します。

-/デスクトップ$$ cd WebODM

ログインユーザーを docker グループに追加し、dockerデーモンを常時起動にします。

-/デスクトップ$ sudo usermod -aG docker $USER
-/デスクトップ$ sudo systemctl start docker.service
-/デスクトップ$ sudo systemctl enable docker.service

パソコンを再起動した後、WebODMフォルダにあるスタートシェルスクリプトを開きます。

-/デスクトップ$ cd WebODM
-/デスクトップ$ ./webodm.sh start

※色々と起動するのに20分くらいの時間がかかります。

端末の動きが止まったらブラウザで下記を指定して起動します。

http://localhost:8000/

WebODMを終了するときは、端末をもう一つ開いてから下記を入力します。

-/デスクトップ$ cd WebODM
-/デスクトップ$./webodm.sh stop

WebODMを更新するときは下記のようにWebODMホルダーに移動した後にupdateを行います。

-/デスクトップ$ .cd WebODM
-/デスクトップ$ ./webodm.sh update

パソコンを再起動した後再度WebODMを起動するときは下記から始めます。

-/デスクトップ$ cd WebODM
-/デスクトップ$ ./webodm.sh start

※以後は5分くらいで起動できます。

ブラウザから下記を指定して起動します。

http://localhost:8000/

3.WebODMによる3D解析

ドローンで撮影した画像(水上八幡神社の賀愛は91枚)を読み込みます。GCPは設定しません。
全てデフォルト設定で解析をスタートします。画面ハードコピーにあるように完成するまで46分かかりました。

4.オルソフォトと3D画像、DSM

WebODMの画面でオルソフォト、3D画像そしてDSMを表示できます。下図はオルソフォトで背景のGooglemapとぴったり一致しています。

下図は3Dモデルです。マウスで動かすことができます。

下図はDSMです。樹冠の表面の高さの違いが解ります。ただし、樹高を表現ているわけではなく地上高を含めた樹頂点の高さを表現したものです。

ドローン写真のメタ情報を130mに修正して解析しましたが、実態と大きく異なっています。GCP設定でも効果はありませんでした。
実際には高度130mで撮影しており、DSMの値は25m~75mの範囲示すはずですが上の解析例にあるように-65m~-9mの範囲になっています。
DSMが負の値だとRによる樹頂点抽出ができません。この原因はドローン画像のメタデータが不正確なためですが解決策が解りません。
DSMの高さ値の修正はQGIS上のラスター計算機で行うことにしました。

5.解析データの出力

WebODMによる解析結果は「-2021-4-26-all.zip」のようなファイル名でユーザーのダウンロードホルダーに格納されます。
これをUSBメモリーにコピペしてWindowsPCに移動します。