Hanabusaさま
こちらizayoiです。
今回の場合は、各グリッドのRGB値それぞれの平均を取得しております。これは最大を取得や最小を取得、最頻値を取得、中央値を取得などいろいろ変更できます。
今回のテーブルで言いますとBand1が赤色、Band2が緑色、Band3が青色をそれぞれ示しており、今回はグリッド内の各色の平均値が返っています。
各ポリゴンの色塗りは、途中⑦で示した式で、RGB値を与えて色を塗っていることになります。
たとえばですが、赤、緑、青のうち、一番値が大きい色に設定しようとするならば、
フィールド計算機にて
R色塗り
というフィールドを作り
case
when
"Band1" > "Band2" AND "Band1" > "Band3" then "Band1"
else 0
end
を入れます。これは、「Band1meanの値がBand2meanの値より大きく、かつ、Band1meanの値がBand2meanの値より大きな場合はBand1meanの値を返し、違うならゼロを返しなさい」
となります。
G色塗り
には
case
when
"Band2" > "Band1" AND "Band2" > "Band3" then "Band2"
else 0
end
B色塗り
には
case
when
"Band3" > "Band1" AND "Band3" > "Band2" then "Band3"
else 0
end
となります。そうすることで、赤、緑、青の三原色だけにすることができます。
この場合非常に困ってしまうのが、0,0,0となってしまった場合、これが黒なのか、全部データが等しかったから、一番大きい値が分からずゼロを返してきただけなのか分からなくなってしまうという点です。
こんな感じです。
そのため、
そのようになってしまうと困る場合にはですが、
R色塗りを修正するとしたら
case
when
"Band1"= "Band2" and "Band1"="Band3" then "Band1" else
case
when
"Band1" > "Band2" AND "Band1" > "Band3" then "Band1"
else 0
end
end
とします。全部値が同じならBand1meanの値を返してねとなります。
ほかも同じように修正します。
G色塗りならば
case
when
"Band1"= "Band2" and "Band1"="Band3" then "Band2" else
case
when
"Band2" > "Band1" AND "Band2" > "Band3" then "Band2"
else 0
end
end
B色塗りならば
case
when
"Band1"= "Band2" and "Band1"="Band3" then "Band2" else
case
when
"Band3" > "Band1" AND "Band3" > "Band2" then "Band3"
else 0
end
end
とすれば
という風に、白の再現ができます。
手法としての欠点はRGB以外の色が出せません。
ファイルを添付いたしますのでご確認ください。