時刻と環境光を反映するためにラスターマップをシェーディングまたはオーバーレイする方法


14
  • 調査地域の昼間のラスターがあります。
  • 調査エリアに20個以上のカウンターがあり、タイムスタンプ付きの「もの」をカウントします。
  • PyEphemを使用して、収集した各データポイントの環境光のタイプを特定しました。

私がやりたいこと:

  • グレー/半透明のオーバーレイを追加して、周囲の光(夕暮れ、日の出、日中、日没、暗闇)を反映します。

  • 最終目標:時刻を強調するデータ収集の時間ベースの視覚化を作成します。または、適切なシェーディングオーバーレイを使用して、特定の時間にスナップショットを作成できます。

  • これをイメージと考えてください:

デイ/ナイトグローブ ソース


2
追加の回答(動作するMathematicaコードを含む)がmathematica.stackexchange.com/questions/3326/…に表示されます。
whuber

回答:


9

概要

太陽の位置を指定すると、緯度経度座標で表面の光強度のグリッドを簡単に作成できます(大気および地形効果を無視)。必要に応じてそのグリッドを再投影し、マップにオーバーレイします。

詳細

式は、球面座標の標準的なものです。球面座標(lon、lat)に対応する単位ベクトルは、

(cos(lon)cos(lat), sin(lon)cos(lat), sin(lat)).

強度は、ユニットの外側の法線(「上」)方向と太陽への方向との間の余弦に依存します。このコサインは、これらの2つの単位ベクトルの内積です。つまり、(x、y、z)を太陽に向けた単位ベクトル(地心座標)とし、各グリッドセルの中心点の測地(lat、lon)を単位ベクトル(xi、eta、zeta)に変換します。 、および計算

(x,y,z) . (xi, eta, zeta) = x*xi + y*eta + z*zeta.

0未満の結果は目に見えない太陽に対応するため、これらをゼロに設定します。

実装ノート

これらの計算は、マップ代数を使用して簡単に実行できます。(lat、lon)値のグリッド(それが私が行った方法)から開始するか、1対のグリッド(1つは緯度、もう1つは経度)で開始しますたとえば、ESRIソフトウェアを使用して実行します)。

(緯度または経度のグリッドを作成するには、地理座標でy座標グリッドまたはx座標グリッドをそれぞれ形成し、それを投影します。)この初期情報から、3つのグリッド[xi]、[eta ]、および[zeta](または単一のベクトル値グリッド[xi、eta、zeta])は、グリッドセルで上方向を表します。任意の太陽の位置について、計算は上記の[xi]、[eta]、[zeta]の単純な線形結合になります。太陽は、係数x、y、およびz(もちろん数字です)を決定します。

このような強度グリッド(216 x 432セル)のPlate Carree投影の世界地図を次に示します。

強度

通常どおり、本初子午線は中央にあり、北は最上部にあります。この計算では、太陽ベクトルを(0.6、-0.8、0.5)に比例して設定し、中部大西洋の正午の夏の日を近似します。(振り返ってみると、0.4のz値はより現実的です。太陽はこれほど北に行くことはありません。)

Asterカラーマップ上のアルファオーバーレイ(明るい領域もわずかに透明になります)は、この画像を生成します。

世界地図

時間の変化に伴い、太陽のベクトル(x、y、z)が再計算され、強度グリッドの再計算が必要になります。これは高速な計算です。高解像度も必要ありません。この図では、元のグリッドの1/10(2160 x 4320セル)の解像度を使用しました。より粗い強度グリッドを表示するために使用される補間は、ギャップを埋めるためにうまく機能します。これにより、必要に応じてディスプレイをほぼ瞬時に変更して、スムーズなアニメーションを作成できるようになります。


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