遮蔽或覆盖栅格地图以反映一天中的时间和环境光的方法


14
  • 我的学习区域有白天的栅格。
  • 我在研究区域中有20多个计数器,这些计数器用时间戳计数“填充”。
  • 我使用PyEphem确定了每个收集的数据点的环境光的类型。

我想做的是:

  • 添加灰色/半透明的覆盖层以反射环境光(黄昏,日出,白天,日落和黑暗)。

  • 最终目标:对数据收集进行基于时间的可视化,突出显示一天中的时间。或者能够在适当的阴影覆盖下在特定时间生成快照。

  • 将此视为此图像:

日/夜地球仪 资源


2
其他答案(带有有效的Mathematica代码)出现在mathematica.stackexchange.com/questions/3326/…上
ub

Answers:


9

摘要

给定太阳的位置,您可以轻松地创建纬度坐标中的表面光强度网格(忽略大气和地形影响)。根据需要重新投影该网格并将其覆盖在地图上。

细节

公式是球形坐标的标准公式:对应于球形坐标(lon,lat)的单位向量为

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

强度取决于单位向外法线(“向上”)方向与太阳方向之间的余弦值。这个余弦只是这两个单位向量的点积。也就是说,令(x,y,z)为指向太阳的单位向量(在地心坐标中),将每个网格单元中心点的大地坐标(lat,lon)转换为单位向量(xi,eta,zeta)和计算

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

小于0的任何结果都对应于不可见的太阳,因此请将其设置为零。

实施说明

这些计算很容易通过地图代数执行,可以从(纬度,经度)值的网格开始(这就是我的工作方式),也可以从一对网格开始,一个用于纬度,另一个用于经度(这就是您的本意)例如使用ESRI软件)。

(要创建纬度或经度网格,请分别在地理坐标中形成y坐标或x坐标网格,然后对其进行投影。)根据此初始信息,一劳永逸地计算出三个网格[xi],[eta] ]和ze(或单个矢量值的网格[xi,eta,zeta])代表网格单元上的向上方向。对于任何给定的太阳位置,计算成为上面给出的xi,η和ze的简单线性组合;太阳确定系数x,y和z(当然,它们只是数字)。

这是在这样的强度网格(216 x 432个细胞)的Plate Carree投影中的世界地图。

强度

像本初一样,本初子午线位于中心,而北经则位于顶部。为了进行此计算,我将太阳矢量设置为与(0.6,-0.8,0.5)成正比,近似于大西洋中部正午的夏日。(回想起来,z值为0.4会更现实;太阳永远不会向北偏远。)

Aster彩色地图上的Alpha叠加层(也使较亮的区域也更加透明)会生成此图像。

世界地图

随着时间的变化,太阳的向量(x,y,z)得到重新计算,需要重新计算强度网格。这是一个快速的计算。您也不需要高分辨率:在此插图中,我仅使用原始网格的分辨率(2160 x 4320像素)的十分之一。用于显示较粗的强度网格的插值可以很好地填补空白。这样,您可以根据需要几乎立即修改显示内容,从而创建平滑的动画。


2
非常非常好
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.