透明陰影起伏を作成しますか?


34

私は組み合わせを経由して、エレガントな透明の陰影起伏を取得gdalしてconvert。一般的に使用されるグレーベースの陰影起伏と比較し、透明な陰影起伏は、彼らがマップの背景と他の上位層(道路、建物高)との間に配置することができるので、非常に立体感じるどんな背景の種類と色を提供するために冷却されています。

使い方

トリック:によって生成されるグレースケール陰影起伏以降でgdal hillshade、トリックは、グレーチャンネルの値をとる各値を反転し、新しい不透明チャンネルにこの結果を流すことです。黒のピクセル[0,0,0]は[0,0,0,255](不透明度= 255)になり、灰色のピクセル[120,120,120]は低くなり[120,120,120,135](不透明度= 135、別名255-120)、白のピクセル[255,255,255]になりますように[255,255,255,0(不透明度= 0、別名255から255)は、透明となります。ヒルズの色合いは不透明で黒く、平野は徐々に(白)透明になります。概念的には、ピクセルのバンド方程式は次のようなものです。

alpha_value([0])    = 255-0 = 255;   // black pixels get full opacity
alpha_value([Grey]) = 255-Grey;
// grey pixels get 255-GreyValue opacity.
alpha_value([255])  = 255-255 = 0  // white pixels get null opacity !

このアプローチのレイドバック映像の場合は、参照してくださいPhotoshopのデザイナーによって説明Photoshopで陰影図を追加する(16mins)。

質問

入力としてETOPOまたはSRTM派生のグレーベースの陰影起伏(gdaldem hillshade crop_xl.tmp.tif shadedrelief.tmp.tif -s 111120 -z 5 -az 315 -alt 60 -compute_edgesここからダウンロードできるファイル)を取得しています...

... gdalやその他の非GIS破壊的な方法で、上記の.tifファイルで上記のトリックを行う方法は?

私は(geolocalisation)をGISのプロパティを保持したいことに注意してください。

ここに画像の説明を入力してください ここに画像の説明を入力してください


1
参照データがTIFFに保存される方法によっては、TIFFに関連付けられているワールドファイルの名前を変更するのと同じくらい簡単かもしれません。
スティーブ

@Steve:SRTMやETOPOなどのラスターから生成された.tifファイルの場合gdaldem hillshade etopo_crop.tif shadedrelief.tmp.tif -s 111120 -z 5 -az 315 -alt 60 -compute_edges
Hugolpz

私は思うgdal_tranlateの組み合わせで-b バンド-mask バンド-expand RGB | |グレーRGBA一緒になって式witht opacity=-(px_grey_value)+255移動するための方法かもしれませんが、私はバンドに触れたことがないとI'amはまだかなり無知。
Hugolpz


gdal_edit.pyを使って座標、セルサイズ、参照システムを書き換えましたか?
radouxju

回答:


42

一言で言えば

「グレー(バンド)+不透明度(バンド)=透明な結果」など、以下の3つの画像の各セットを読み取る必要があります。これらのプロセスは、関連するgithubがホストするmakefileを使用して数分でテストできます。プロセス#3は、170(強い影を維持)と220(すべての影を維持)の間のしきい値を使用して推奨するものです。プロセス3は最も強い影を提供し、白化効果を回避します。必要に応じて、結果のレイヤーの全体的な不透明度を調整します。の方程式--calc="<equation>"も、必要に応じて、を使用して改善できますgdal_calc

このアプローチのレイドバック映像の場合は、参照してくださいPhotoshopのデザイナーによって説明Photoshopで陰影図を追加する(16mins)。

バックグラウンド

gdaldem hillshadeピクセル値の範囲が[1-255]の1バンドグレースケールファイルを生成します。別名、最も暗い影から最も明るいピクセルまでです。フラットエリアの場合、px = 221(#DDDDDD)。NoDataValueピクセルはデフォルトのnodatavalueを取得します0。また、入力および出力で最も暗い黒はであり、そうでなければなりません1。不透明度バンドが定義されていない場合、不透明度は100%です。

gdaldem hillshade input.tif hillshade.tmp.tif -s 111120 -z 5 -az 315 -alt 60 -compute_edges

hillshade.tmp.tif

2番目の不透明度バンドを定義および制御したい!

目的

我々はしたい1つのグレースケールバンドを -b 1、それは陰影起伏です、。gdalのうち、px = [1-255]のような連続した範囲を持つ灰色のバンドです。無関係な領域を切り抜く(#2)か、px = 1に黒くして不透明度バンドに依存する(#3)ことができます。

通常、陰影起伏の反転またはそれに関連する関数の1つの不透明度バンドが 必要です-b 2。無関係な領域を切り抜くことができます(#2)。px = [1-255]のような不透明度の連続した範囲である必要があります。そうでない場合、エレガンスはありません。

gdal_calc入力ファイルA、B、C ...からのピクセルの計算とA<220、1(true)または0(false)を返すなどのブール値のチェックの両方に使用できます。これにより、条件付き計算が可能になります。条件が偽の場合、方程式の関連部分は無効になります。

1.透明な灰色の陰影起伏

以下は、標準のgdal hillshadeグレーと白の領域がますます透明になる、非常に良い2バンドの結果を提供します。

# hillshade px=A, opacity is its invert: px=255-A
gdal_calc.py -A ./hillshade.tmp.tif  --outfile=./opacity.tif --calc="255-A"
# assigns to relevant bands -b 1 and -b 2
gdalbuildvrt -separate ./final.vrt ./hillshade.tmp.tif ./opacity.tif

hillshade.tmp.tif #1、opacity.tif #1、final.tif

2.擬似作物による最適化(-b 1&-b 2)

-b 1不透明度-b 2が追加されると、2/3のピクセル(グレースケール)が裸眼では見えなくなりますが、これらのピクセルはさまざまな白く-b 1低い不透明度の-b 2値を維持します。すべて白い透明[255,1]ピクセルにすることができ、圧縮率が向上します。

# filter the color band, keep greyness of relevant shadows below limit
gdal_calc.py -A ./hillshade.tmp.tif  --outfile=./color_crop.tmp.tif \
    --calc="255*(A>220) +      A*(A<=220)"
# filter the opacity band, keep opacity of relevant shadows below limit
gdal_calc.py -A ./hillshade.tmp.tif  --outfile=./opacity_crop.tmp.tif \
    --calc="  1*(A>220) +(256-A)*(A<=220)"
# gdalbuildvrt -separate ./final.vrt ./color_crop.tmp.tif ./opacity_crop.tmp.tif
# gdal_translate -co COMPRESS=LZW -co ALPHA=YES ./final.vrt ./final_crop.tif

#2、color.tif(トリミング) #2、opacity.tif(トリミング) #2、final_crop.tif

3.さらに-b 1最適化(作物+黒化)

-b 2依存するプログレッシブ不透明バンドがあるため、-b 1ピクセルを白px = 255 via 255*(A>220)、または黒px = 1 viaのいずれかにすることができ1*(A>220)ます。

gdal_calc.py -A ./hillshade.tmp.tif  --outfile=./color.tmp.tif \
   --calc="255*(A>220) + 1*(A<=220)"
# gdal_calc.py -A ./hillshade.tmp.tif  --outfile=./opacity_crop.tmp.tif \
#  --calc="  1*(A>220) +(256-A)*(A<=220)".
# gdalbuildvrt -separate ./final.vrt ./color.tmp.tif ./opacity_crop.tif
# gdal_translate -co COMPRESS=LZW -co ALPHA=YES ./final.vrt ./final.tif

#3、color.tif #2、opacity.tif(トリミング) #3、final.tif

この結果は、より強い影を示しています

結果

透明な陰影起伏を作成することは、当面の目的のために、プレーンの以前の灰色の領域と、関連する不要だがユビキタスな灰色化フェード効果を削除することです。望みの副産物は、最終的なビジュアル製品に対するコントロールの強化です。説明されているプロセスでは、ほとんどのグレーピクセルとすべてのホワイトピクセルが削除されます。カラフルな背景のプレーンイメージは、透明から黒の陰影がオーバーレイされると、選択された色を維持し、影の部分のみが暗くなります。以下のプロセス#2(左)と#3(右)の比較。

概要:

プロセス#2(左)と#3(右)の比較、一般的なビュー。

ズーム、影に注意してください(前と後):

プロセス#2(左)と#3(右)の比較、詳細ビュー。

さらなる最適化

白い領域:3Dの感触を高めるために、最も明るい領域を維持することもできます。文字通り、この現在のアプローチと対称的で、わずかなしきい値の変更があり、gdal_calcを介した両方の出力のマージです。プレーンは100%透明で、最も暗い影と最も明るい領域は不透明です。

平滑化:より良い最終結果を得るために、入力陰影起伏を事前に平滑化することができます。GRASS を使用したDEMの平滑化を参照してください

複合陰影起伏複合陰影起伏を作成する方法?)。

隆起した陰影起伏も興味深い(説明

ノート

  • 平坦な領域閾値におけるgdal hillshade出力は、平坦領域をマーキング、PX = 221(#DDDDDD = [221221221])です。また、陰影起伏のpx = 221は、影の斜面(A <221)と明かりの斜面(A> 221)ピクセルとの間で画像を分割します。
  • 良好であることが証明されているpx = [170-220] の処理しきい値は、目に見える影の100%近くを保持します。影自体は、レリーフ領域の15-35%をほとんど支えません。
  • ファイルサイズ>圧縮:#1、#2、#3のfinal.tifは圧縮なしで約1.3MB、圧縮後は約0.3-0.16MB、80%節約!
  • ファイルサイズ>切り抜き:#1の.326KBから、切り抜きの色と不透明度(#2)は310kbに、黒く塗りつぶす(#3)は160kbになります。ファイルサイズのトリミング効果は、しきい値がpx = 220で入力が5〜50%削減されます。

2
+1を歓迎します。
Hugolpz

2
チュートリアルが終了しました。私の英語は壊れているかもしれません。気軽に上達してください。
-Hugolpz

3
あなたは自分自身に答えなければならなかったが、このスレッドは陰影起伏に関する多くの質問に触れる素晴らしいチュートリアルです。よくやった!
カーステン

チュートリアルは正常に機能しています。すごい仕事。私の質問に答えてみてください=> ここに?この種のGeoTIFF、アルファバンド付きグレースケールの.ovrを作成することはできますか?
サンザシ

1
こんにちは、@ sandthorn、それに対する私の愛にもかかわらず、私はもうこの分野にはいません。答えを見つけるためのコストは、2018年の私よりも2018年の方が高くなります。私のものがあなたの問題の正しい方向を指し示すことを願っています!
-Hugolpz

7

他のレイヤーとの組み合わせにより適したグレーでないキャンバスの同じ結果を得る別の方法は、gdaldemの「組み合わせ」オプションです。

スロープとヒルシェードを実行し、2つの操作を1つの操作で組み合わせます。スロープ0の領域は白です。スロープシェードでは、90度の傾斜の領域は黒で、陰影起伏レイヤーによっていくらかの照明が追加されます。

gdaldem hillshade -combined -compute_edges infile outfile.tif

次に、マルチレイヤー合成モードを使用して、これを他のレイヤーの上に「ドレープ」します。

標準/複合陰影起伏

標準の陰影起伏

OSMベースレイヤーと組み合わせたシェーディング(不透明度約50%) シェーディングとOSMベースレイヤーの組み合わせ


2

gdal+ convertベースのワークフロー

優れた視覚的結果を提供するgdal+ convertソリューションがあります。このソリューションの問題は、復元する必要convertがある地理情報破壊されることです。実行するアクションの数が増えます。

# Basic crop
gdal_translate -projwin 67 35.92 99 5 ../data/noaa/ETOPO1_Ice_g_geotiff.tif crop_xl.tmp.tif
# Grey-based hillshade
gdaldem hillshade crop_xl.tmp.tif shadedrelief.tmp.tif -s 111120 -z 5 -az 315 -alt 60 -compute_edges
# create a transparent hillshade:
convert shadedrelief.tmp.tif -fuzz 7% -fill "#FFFFFF" -opaque "#DDDDDD"  whited.jpg # makes all grey values white to lighten the filesize
convert whited.jpg -alpha copy -channel alpha -negate +channel trans.png # <=== TRICK HERE.
# Restore georeferencing & reproject            
gdal_translate -a_ullr 67 35.92 99 5 trans.png trans.tmp.gis.tif
gdalwarp -s_srs EPSG:4326 -t_srs ESPG:3857 ./trans.tmp.gis.tif ./trans_reproj.tmp.gis.tif
# Compress from 11MB to 2MB:
gdal_translate -co COMPRESS=LZW -co ALPHA=YES ./trans_reproj.tmp.gis.tif ./trans.gis.tif

コマンド4の説明については、https//stackoverflow.com/a/23018544/1974961を参照してください

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.