gdal_viewshed
Added in version 3.1.0.
ユーザー定義の点に対して, [Wang2000] で定義された方法を使用して, 入力ラスター DEM から可視領域ラスターを計算します.
概要
gdal_viewshed [--help] [--help-general] [-b <band>]
[-a_nodata <value>] [-f <formatname>]
[-oz <observer_height>] [-tz <target_height>] [-md <max_distance>]
-ox <observer_x> -oy <observer_y>
[-vv <visibility>] [-iv <invisibility>]
[-ov <out_of_range>] [-cc <curvature_coef>]
[-os <observer_spacing>] [-j <relative job count>]
[-co <NAME>=<VALUE>]...
[-q] [-om <output mode>]
<src_filename> <dst_filename>
説明
デフォルトでは, gdal_viewshed は入力ラスター標高モデル (DEM) の 1 バンドからバイナリ可視性ラスターを生成します.出力ラスターは Byte 型です. -mode フラグを使用すると, Float64 型の最小可視高さラスターも返すことができます.
注釈
現在実装されているアルゴリズムは, プロジェクト座標参照系でジオリファレンスが行われている場合にのみ, 有意な結果を出力します.
- --help
このヘルプメッセージを表示して終了します
- --help-general
一般的な GDAL コマンドラインオプションの使用方法を簡単に表示して終了します.
- -co <NAME>=<VALUE>
多くのフォーマットには,作成されたファイルに関する特定の情報を制御するために使用できる1つ以上のオプションがあります.たとえば,GeoTIFF ドライバは,圧縮を制御する作成オプションやファイルをタイル化するかどうかを制御する作成オプションをサポートしています.
利用可能な作成オプションはフォーマットドライバによって異なり,一部のシンプルなフォーマットには作成オプションが全くありません.フォーマットでサポートされているオプションのリストは,コマンドラインオプション --formats でリストできますが,フォーマットのドキュメントがドライバ作成オプションに関する情報の決定的なソースです.各フォーマットの有効な作成オプションについては, ラスタードライバー フォーマット固有のドキュメントを参照してください.
- -b <band>
DEM データを含む入力バンド band を選択します. バンドは 1 から番号付けされます. 単一のバンドのみ使用できます.観測点の周囲の指定された最大距離内のラスターの部分のみが処理されます.
- -a_nodata <value>
出力ラスター内のセルに設定される値です.
注釈
現在, ノーデータ値の入力セルの特別な処理は行われません (これにより誤った結果が生じる可能性があります).
- -ox <value>
観測者の X 位置 (SRS 単位) です. 座標がラスターの外側にある場合, 観測者とラスターの間のすべての空間は, ラスターの可視性を遮蔽しないと仮定されます.(累積モードではサポートされていません.)
- -oy <value>
観測者の Y 位置 (SRS 単位) です. 座標がラスターの外側にある場合, 観測者とラスターの間のすべての空間は, ラスターの可視性を遮蔽しないと仮定されます.(累積モードではサポートされていません.)
- -oz <value>
DEM の高さ単位での DEM 表面上の観測者の高さです. デフォルト: 2
- -tz <value>
DEM の高さ単位での DEM 表面上のターゲットの高さです. デフォルト: 0
- -md <value>
可視性を計算する観測者からの最大距離です. また, 出力ラスターの範囲を制限するためにも使用されます. (累積モードではサポートされていません)
- -cc <value>
曲率と屈折の効果を考慮するための係数です. 2 つの点間の可視性 (すなわち, 視線または可視領域) を計算する際, この効果の大きさは大気条件によって異なり, 波長に依存します.
可視性を計算するための異なるアプリケーションは, この現象を記述するために異なる交換可能な表記を使用します: 屈折係数, 曲率係数, および球直径係数.gdal_viewshed は, 曲率係数表記を使用します.
\[{CurvCoeff}=1-{RefractionCoeff}\]空気密度の変化により, 光が下方に曲がり, 観測者はより遠くを見ることができ, 地球が実際よりも曲がって見えるようになります.その想像上の球の直径と実際の球の直径との比率は, 次の式で与えられます:
\[{SphereDiameterFactor}=1/{CurvCoeff}=1/(1-{RefractionCoeff})\]可視光の場合, 一般的に使用される標準大気屈折係数は 1/7 です. したがって, gdal_viewshed が使用する CurvCoeff のデフォルト値 (GDAL 3.4 以降) は, 地球 CRS に対して 0.85714 (=~ 1-1/7) です.GDAL 3.6 以降, 非地球 CRS (WGS 84 のものと 5% 以上異なる準長軸を持つもの) の CurvCoeff のデフォルト値は, 屈折なしのユースケースを考慮するために 1.0 です.
DEM の高さは, 次の式に従って補正されます:
\[Height_{Corrected}=Height_{DEM}-{CurvCoeff}\frac{{TargetDistance}^2}{SphereDiameter}\]一般的な係数値は, 以下の表に示されています (cc オプションには曲率係数値を使用してください)
ユースケース
屈折係数
曲率係数
球直径係数
屈折なし
0
1
1
可視光
1/7
6/7 (=~0.85714)
7/6 (=~1.1666)
電波
0.25 ~ 0.325
0.75 ~ 0.675
1.33 ~ 1.48
Flat Earth
1
0
無限
- -iv <value>
不可視領域に設定するピクセル値です. (累積モードではサポートされていません) デフォルト: 0
- -ov <value>
観測者の位置と最大距離で指定された範囲外にあるセルに設定するピクセル値です. (累積モードではサポートされていません) デフォルト: 0
- -vv <value>
可視領域に設定するピクセル値です. (累積モードではサポートされていません) デフォルト: 255
- -om <output mode>
出力に含まれる情報を設定します.
可能な値: NORMAL, DEM, GROUND, ACCUM
NORMAL は, 可視位置を含む Byte 型のラスターを返します.
DEM と GROUND は, それぞれ DEM 表面または地面レベルからターゲットが可視であるための最小ターゲット高さを含む Float64 型のラスターを返します.フラグ -tz, -iv, -vv は無視されます.
累積 (ACCUM) モードでは, 各セルが観測点のグリッドからの相対観測可能性を表す入力ラスターと同じサイズの 8 ビットラスターが作成されます.-os オプションを参照してください.
デフォルト NORMAL
- -os <value>
観測者間のセル間隔 (累積モードでのみサポートされます) デフォルト: 10
- -j <value>
一度に実行するジョブの相対数. (累積モードでのみサポートされます) デフォルト: 3
C API
このユーティリティの機能は, C言語 から GDALViewshedGenerate()
を使用して利用することができます.
例
2 つの組み合わせた視界分析のスクリーンショットです. 黄色のピクセルは, 両方の観測地点 (緑の点) から見える領域を示し, 小さな緑の領域は 1 つの地点からのみ見えます.
位置 (-10147017, 5108065) に立っている人のために, 半径 500 の可視領域ラスターを作成します.
gdal_viewshed -md 500 -ox -10147017 -oy 5108065 source.tif destination.tif
参考
視線を使用せずに視界を生成する. Wang, Jianjun, Robinson, Gary J., および White, Kevin. Photogrammetric Engineering and Remote Sensing. p81. https://www.asprs.org/wp-content/uploads/pers/2000journal/january/2000_jan_87-90.pdf