GISっ子/Linuxで基盤地図情報標高DEMデータ変換したい
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
* はじめに [#ga13929e]
みんなが大好きな [[基盤地図情報 標高DEMデータ変換ツール |...
このデータ変換ツールは、
: 変換結合.vbs, convert_and_merge.vbs | 後述する3つのexe...
: dem.exe | 基盤地図情報 数値標高データをgeotiffに変換
: gdalbuildvrt.exe | vrtファイル(後述のgdalwarp.exeが参...
: gdalwarp.exe | dem.exeが生成したgeotiffファイルを結合
という作りになっているようです
vbsファイルはCLI化する際は不要、gdalbuildvrtとgdalwarpはG...
* 案1:ソース修正&ビルド [#i3462c95]
容易に使えるよう、コンテナ化してみました
#prism(bash){{{
# コンテナのビルド(10分くらいかかります)
podman build https://gist.github.com/kemasoft-gist/c5a837...
# コンテナでbashを起動する(カレントディレクトリを /mnt ...
podman run --rm -it -v .:/mnt kemasoft/gdal bash
# コンテナ内:dem -> geotiff 変換
# dem <dem-xml> <0|1> <output.tif>
# 第1、第2引数はオリジナルと一緒
# 第3引数に出力先tifファイル名を指定
dem ls FG*.xml | sed 's/.xml$//' | xargs -I@ -P4 dem @.xm...
# コンテナ内:vrtファイル作成
gdalbuildvrt -overwrite mergeLL.vrt *.tif
# コンテナ内:geotiffファイル結合
gdalwarp -r bilinear -srcnodata -9999 -dstnodata -9999 -t...
}}}
ソース変更箇所
- 冒頭にコピーライト入れた
- win32apiの_splitpathが使えないので、思い切って第3引数で...
#pre{{{
$ diff -u dem.cpp{.orig,}
--- dem.cpp.orig 2020-08-02 08:01:11.360533403 +0900
+++ dem.cpp 2020-08-02 08:11:00.022764072 +0900
@@ -1,3 +1,12 @@
+/*
+ Copyright (c) 2020 Nobuhiro OKI
+ Released under the MIT license
+ https://opensource.org/licenses/mit-license.php
+
+ Original:
+ https://github.com/tmizu23/demtool/blob/master/dem.cpp
+*/
+
#include "gdal_priv.h"
#include "ogr_spatialref.h"
#include "gdalwarper.h"
@@ -189,11 +198,14 @@
char fname[256];
char ext[256];
char outpath[1024] = "";
+ /* kemasoft
_splitpath(argv[1], drive, dir, fname, ext);
strcat(outpath, drive);
strcat(outpath, dir);
strcat(outpath, d0.mesh);
strcat(outpath, ".tif");
+ */
+ strcat(outpath, argv[3]); // kemasoft
makeGeotiff(&d0, outpath, nodata);
free(d0.alti);
return d0.jgd;
}}}
これでGDAL導入済み環境で g++ dem.cpp -odem -lgdal が出来...
- 修正版ソース:[[dem.cpp>https://gist.github.com/kemasof...
- ビルド(Dockerfile):[[Dockerfile.kemasoft-gdal>https://...
* 案2:wineを使う [#je5832b7]
面倒な割に利便性が全く上がらないのでお勧めしませんw
ポイントだけ書いておきます
- win32でwineを初期化
- winetricksでMDACをインストール
-- 失敗したら手動でMDAC_TYP.EXEを解凍しsetup.exeを起動
- dem.exeを起動
#prism(bash){{{
# コンテナのビルド
# オリジナル scottyhardy/docker-wine との差分
# /mnt のパーミッション変更、sudo, vim, build-essenti...
curl -L https://gist.github.com/kemasoft-gist/b4d101eaa92...
# コンテナ起動
podman run -it \
--rm \
--name wine \
-d \
-v .:/mnt \
--hostname="$(hostname)" \
--env="RDP_SERVER=yes" \
--publish="13389:3389/tcp" \
kemasoft/docker-wine tail -f /dev/null
# MDACインストールまではGUIを使うのが無難
# リモートデスクトップで母艦のIP:13389に接続し、その中の...
# 一旦dem.exeが動いてしまえばそれ以降はCLIでOK
# wineを32bitモードで初期化
WINEARCH=win32 winecfg
# mdac導入
winetricks mdac28
cd /home/wineuser/.cache/winetricks/mdac28
# エラーになった場合の追加手順
cabextract MDAC_TYP.EXE
wine $(winepath -w $(pwd))\\dasetup
# コマンドプロンプト起動
WINEDEBUG=-msvcrt wine cmd
# dem.exe にパスを通し、環境変数 GDAL_DATA を設定
set PATH="%PATH%;Z:\path\to\dem-exe-directory"
set GDAL_DATA="Z:\path\to\dem-exe-directory\data"
# dem.exe を実行
dem FG-GML-6741-71-07-DEM5C-20190221.xml 0
}}}
#ref(./dem01.jpg,50%)
* 別解 [#x05dda2f]
先人の知恵にあやかります(というか最初からこれ見つけてい...
- [[Pythonを用いた基盤地図情報 数値標高データのgeotiff変...
先述の「案1」で出てきたコンテナに仕込んであります
#prism(bash){{{
# コンテナのビルド(10分くらいかかります)
podman build https://gist.github.com/kemasoft-gist/c5a837...
# コンテナでbashを起動する(カレントディレクトリを /mnt ...
podman run --rm -it -v .:/mnt kemasoft/gdal bash
# ここまで「案1」と同じ
# コンテナ内:zipファイルのままgeotiffを生成する例
cd /path/to/dem-file-dir
zdem2tif FG*.zip
# コンテナ内で作業:dem -> geotiff 変換
# dem <dem-xml> <0|1> <output.tif>
# 第1、第2引数はオリジナルと一緒
# 第3引数に出力先tifファイル名を指定
ls FG*.xml | sed 's/.xml$//' | xargs -I@ -P4 dem @.xml 1 ...
# コンテナ内で作業:vrtファイル作成(案1と同じ)
gdalbuildvrt -overwrite mergeLL.vrt *.tif
# コンテナ内で作業:geotiffファイル結合
# ★ srcnodata = -1 を指定するのがおすすめです
gdalwarp -r bilinear -srcnodata -1 -dstnodata -9999 -t_sr...
}}}
#ref(./dem02.jpg,50%)
* 別解その2 [#a1b43b2b]
[[fgddem.py/fgddem.py at master · minorua/fgddem.py>...
- ワイルドカード展開を(system.osが起動する) sh に任せます
-- ただし空白などエスケープが必要な文字を含む入力ファイル...
#prism(bash){{{
root@d9395998343a:/usr/local/bin# diff -u fgddem{.py,}
--- fgddem.py 2020-08-02 03:29:45.800481748 +0000
+++ fgddem 2020-08-02 03:21:35.000000000 +0000
@@ -194,7 +194,7 @@
# TODO: testing in Linux
# Wildcards cannot be used for arguments now. See ...
else:
- merge_command = 'gdalwarp%s "%s" "%s"' % (gdalwarp...
+ merge_command = 'gdalwarp%s %s "%s"' % (gdalwarp_o...
os.path....
dst_file)
}}}
こちらも先述の「案1」で出てきたコンテナに仕込んでありま...
fgddem path/to/xml-or-zip-file で起動できます
** memo [#h733350b]
: vrd | gdalbuildvrt -overwrite mergeLL.vrt *.tif
: JGD2011 緯度経度 | gdalwarp -r bilinear -srcnodata None...
: 平面座標系12 | gdalwarp -r bilinear -srcnodata None -t_...
: -9999 | gdalwarp -r bilinear -srcnodata -9999 -dstnodat...
: zdem2tif | gdalwarp -r bilinear -srcnodata -1 -dstno...
終了行:
* はじめに [#ga13929e]
みんなが大好きな [[基盤地図情報 標高DEMデータ変換ツール |...
このデータ変換ツールは、
: 変換結合.vbs, convert_and_merge.vbs | 後述する3つのexe...
: dem.exe | 基盤地図情報 数値標高データをgeotiffに変換
: gdalbuildvrt.exe | vrtファイル(後述のgdalwarp.exeが参...
: gdalwarp.exe | dem.exeが生成したgeotiffファイルを結合
という作りになっているようです
vbsファイルはCLI化する際は不要、gdalbuildvrtとgdalwarpはG...
* 案1:ソース修正&ビルド [#i3462c95]
容易に使えるよう、コンテナ化してみました
#prism(bash){{{
# コンテナのビルド(10分くらいかかります)
podman build https://gist.github.com/kemasoft-gist/c5a837...
# コンテナでbashを起動する(カレントディレクトリを /mnt ...
podman run --rm -it -v .:/mnt kemasoft/gdal bash
# コンテナ内:dem -> geotiff 変換
# dem <dem-xml> <0|1> <output.tif>
# 第1、第2引数はオリジナルと一緒
# 第3引数に出力先tifファイル名を指定
dem ls FG*.xml | sed 's/.xml$//' | xargs -I@ -P4 dem @.xm...
# コンテナ内:vrtファイル作成
gdalbuildvrt -overwrite mergeLL.vrt *.tif
# コンテナ内:geotiffファイル結合
gdalwarp -r bilinear -srcnodata -9999 -dstnodata -9999 -t...
}}}
ソース変更箇所
- 冒頭にコピーライト入れた
- win32apiの_splitpathが使えないので、思い切って第3引数で...
#pre{{{
$ diff -u dem.cpp{.orig,}
--- dem.cpp.orig 2020-08-02 08:01:11.360533403 +0900
+++ dem.cpp 2020-08-02 08:11:00.022764072 +0900
@@ -1,3 +1,12 @@
+/*
+ Copyright (c) 2020 Nobuhiro OKI
+ Released under the MIT license
+ https://opensource.org/licenses/mit-license.php
+
+ Original:
+ https://github.com/tmizu23/demtool/blob/master/dem.cpp
+*/
+
#include "gdal_priv.h"
#include "ogr_spatialref.h"
#include "gdalwarper.h"
@@ -189,11 +198,14 @@
char fname[256];
char ext[256];
char outpath[1024] = "";
+ /* kemasoft
_splitpath(argv[1], drive, dir, fname, ext);
strcat(outpath, drive);
strcat(outpath, dir);
strcat(outpath, d0.mesh);
strcat(outpath, ".tif");
+ */
+ strcat(outpath, argv[3]); // kemasoft
makeGeotiff(&d0, outpath, nodata);
free(d0.alti);
return d0.jgd;
}}}
これでGDAL導入済み環境で g++ dem.cpp -odem -lgdal が出来...
- 修正版ソース:[[dem.cpp>https://gist.github.com/kemasof...
- ビルド(Dockerfile):[[Dockerfile.kemasoft-gdal>https://...
* 案2:wineを使う [#je5832b7]
面倒な割に利便性が全く上がらないのでお勧めしませんw
ポイントだけ書いておきます
- win32でwineを初期化
- winetricksでMDACをインストール
-- 失敗したら手動でMDAC_TYP.EXEを解凍しsetup.exeを起動
- dem.exeを起動
#prism(bash){{{
# コンテナのビルド
# オリジナル scottyhardy/docker-wine との差分
# /mnt のパーミッション変更、sudo, vim, build-essenti...
curl -L https://gist.github.com/kemasoft-gist/b4d101eaa92...
# コンテナ起動
podman run -it \
--rm \
--name wine \
-d \
-v .:/mnt \
--hostname="$(hostname)" \
--env="RDP_SERVER=yes" \
--publish="13389:3389/tcp" \
kemasoft/docker-wine tail -f /dev/null
# MDACインストールまではGUIを使うのが無難
# リモートデスクトップで母艦のIP:13389に接続し、その中の...
# 一旦dem.exeが動いてしまえばそれ以降はCLIでOK
# wineを32bitモードで初期化
WINEARCH=win32 winecfg
# mdac導入
winetricks mdac28
cd /home/wineuser/.cache/winetricks/mdac28
# エラーになった場合の追加手順
cabextract MDAC_TYP.EXE
wine $(winepath -w $(pwd))\\dasetup
# コマンドプロンプト起動
WINEDEBUG=-msvcrt wine cmd
# dem.exe にパスを通し、環境変数 GDAL_DATA を設定
set PATH="%PATH%;Z:\path\to\dem-exe-directory"
set GDAL_DATA="Z:\path\to\dem-exe-directory\data"
# dem.exe を実行
dem FG-GML-6741-71-07-DEM5C-20190221.xml 0
}}}
#ref(./dem01.jpg,50%)
* 別解 [#x05dda2f]
先人の知恵にあやかります(というか最初からこれ見つけてい...
- [[Pythonを用いた基盤地図情報 数値標高データのgeotiff変...
先述の「案1」で出てきたコンテナに仕込んであります
#prism(bash){{{
# コンテナのビルド(10分くらいかかります)
podman build https://gist.github.com/kemasoft-gist/c5a837...
# コンテナでbashを起動する(カレントディレクトリを /mnt ...
podman run --rm -it -v .:/mnt kemasoft/gdal bash
# ここまで「案1」と同じ
# コンテナ内:zipファイルのままgeotiffを生成する例
cd /path/to/dem-file-dir
zdem2tif FG*.zip
# コンテナ内で作業:dem -> geotiff 変換
# dem <dem-xml> <0|1> <output.tif>
# 第1、第2引数はオリジナルと一緒
# 第3引数に出力先tifファイル名を指定
ls FG*.xml | sed 's/.xml$//' | xargs -I@ -P4 dem @.xml 1 ...
# コンテナ内で作業:vrtファイル作成(案1と同じ)
gdalbuildvrt -overwrite mergeLL.vrt *.tif
# コンテナ内で作業:geotiffファイル結合
# ★ srcnodata = -1 を指定するのがおすすめです
gdalwarp -r bilinear -srcnodata -1 -dstnodata -9999 -t_sr...
}}}
#ref(./dem02.jpg,50%)
* 別解その2 [#a1b43b2b]
[[fgddem.py/fgddem.py at master · minorua/fgddem.py>...
- ワイルドカード展開を(system.osが起動する) sh に任せます
-- ただし空白などエスケープが必要な文字を含む入力ファイル...
#prism(bash){{{
root@d9395998343a:/usr/local/bin# diff -u fgddem{.py,}
--- fgddem.py 2020-08-02 03:29:45.800481748 +0000
+++ fgddem 2020-08-02 03:21:35.000000000 +0000
@@ -194,7 +194,7 @@
# TODO: testing in Linux
# Wildcards cannot be used for arguments now. See ...
else:
- merge_command = 'gdalwarp%s "%s" "%s"' % (gdalwarp...
+ merge_command = 'gdalwarp%s %s "%s"' % (gdalwarp_o...
os.path....
dst_file)
}}}
こちらも先述の「案1」で出てきたコンテナに仕込んでありま...
fgddem path/to/xml-or-zip-file で起動できます
** memo [#h733350b]
: vrd | gdalbuildvrt -overwrite mergeLL.vrt *.tif
: JGD2011 緯度経度 | gdalwarp -r bilinear -srcnodata None...
: 平面座標系12 | gdalwarp -r bilinear -srcnodata None -t_...
: -9999 | gdalwarp -r bilinear -srcnodata -9999 -dstnodat...
: zdem2tif | gdalwarp -r bilinear -srcnodata -1 -dstno...
ページ名: