假设有张照片,有太阳照射下的影子,知道房屋墙基的角度,知道照片拍摄的时间。求拍照的地点经纬度。
1. 题目
就是这张照片。
橙色线,即墙基的角度,为东偏北25.4度。
(原本拍照想题目的时候,以为房屋是正南正北的,即墙基是正东正西走向。在百度地图上看了一下,并非如此。截图放在geogabra里量了一下角度,即上图。)
拍摄时间为 2023年6月30日15:22。
2. 分析
2.1 概念
本篇标题中的“太阳的角度”并非单一变量,而是包含两个数据。其中之一是 高度角 Elevation,另一个是 方位角 Azimuth。
高度角,指 在纵剖面上,太阳的投影-观测者-地平线 之间的夹角。
方位角,指 在水平面上,正北-观测者-太阳的投影 之间的夹角。
上图来自 https://gml.noaa.gov/grad/solcalc/glossary.html#azimuthelevation.
图中,h为高度角,A为方位角。
2.2 原理
太阳的高度角 与 时间、纬度 有函数关系。由高度角、时间求得的纬度不唯一,分别在太阳在地点上的直射点两侧,距离太阳在地点上的直射点有相等的纬度差。
太阳的方位角 与 时间、经度 有函数关系。
例如下面的示例,由经度、时间 求得 太阳的方位角,由纬度、时间求得 太阳的方位角。我们需要的是两个反函数,由 太阳的高度角、时间 求得 经度,由 太阳的方位角、时间 求得 纬度。
https://www.osgeo.cn/app/s1904
我们需要找公式或找到可查的表。
2.3 自变量
函数值是 经度和纬度,我们需要的自变量 为 太阳的高度角、太阳的方位角、时间。
时间已知。
太阳的高度角可以由建筑的影子和建筑的比值得到;太阳的方位角可以由墙基的角度得到正北,由建筑的影子在大地上的旋转角度得到。
影子长度的测量和影子角度的测量,细节在下文中。
3. 测量
在照片上做出辅助线,得到下图。
图中的角β是高度角。
图中的角 α与方位角有关。把百度地图与照片叠置,旋转照片得到下图。
其中绿线为正东正西走向,红线为太阳影子的方位角。因此太阳方位角与东西方向的夹角为
25.4度-∠GFH。
3.1 太阳的高度角
根据带辅助线的照片,用geogabra可测得太阳高度角41.82度。
或者 根据房角高CD的像素个数 与 房角的影子长DE的像素个数,二者比值构成太阳的高度角β的正切。根据反正切可求得β角大小。
用 画图 测量像素的坐标,在excel中用勾股定理算得距离。用反正切求得角度为40.5度。
注意到此处有误差,由于视角并非水平,因此求得的角度略小于真实值。考虑到影子的本体是建筑物而不是较短的钉子,因此测量误差较小;并且视角高度不大,所以认为误差可以接受。
3.2 太阳的方位角
视角高度不大,因此对水平面角度(和长度)的测量误差较大,需要做透视矫正。
选了个容易使用的工具。用华为手机拍照功能中的 智慧视觉(左上角)| 扫描 功能,校正照片。
其中左上角是房角在水平面上的投影。左上角-右上角和左上角-左下角 之间等距,由假设栏杆的每根立柱间隔无论左右方向和前后方向都是相等的推得。右下角是做平行线得到的。
测得太阳影子与房基间夹角23.02度。
因此从正北顺时针的方位角为 270-(25.4-23.02)=267.62度。
4. 代入公式
所需公式在网上可以查到,未重新推导。
4.1 高度角
4.1.1 高度角公式
高度角公式
https://www.zhihu.com/question/51315574
sin hs =sinφ·sinδ+cosφcosδ·cosΩ
其中
hs 为高度角
φ 为地理纬度
δ-赤纬
Ω-时角,deg
4.1.2 赤纬公式
赤纬公式
https://zhuanlan.zhihu.com/p/265303609
其中t为由3月21日到所求日期6月30日的差,用excel求得值为101,如下图。
把101代入赤纬公式得到23.15度。旁证检验,6月30日刚过夏至不久,太阳由北回归线23.5度向南,求得赤纬的结果与此符合。
4.1.3 时角
在高度角公式的贴子中,孔sysu说
求得15:22对应的时角为 (15.37-12)*15=50.55度。
4.1.4 反函数
不必求反函数,可以根据高度角公式在excel中制表,局部如下。
上图中,由纬度、赤纬、时角三个变量求得高度角。其中赤纬和时角在本题中是固定值,已求出。以1度为间隔穷举所有北纬纬度。
观察表格可以发现,在高度角40度左右对应的纬度范围相当大。如果考虑到测量的误差,北纬10度至北纬60度都有可能。
画XY散点图如下。
由上图可以看出,根据高度角求纬度,由于高度角范围较小,所以计算得到的高度角误差较大。(纬度分辨率相当低。)
4.2 方位角
不需要引入方位角公式。
时差,经度差与时间差对应,每360度对应24小时。因此 360/24=15,即每小时对应15度,或每度0.067小时。
拍照时间使用东八区时间-北京时间。同一时刻,东八区中央经线东经120度的太阳方位角为259.56度。根据 https://gml.noaa.gov/grad/solcalc/azel.html 查得。
此前已算得太阳的方位角267.62度。与东八区间的方位角相差267.62-259.56=8.06度。照片所在地比东经120度的太阳更偏西,所以地点更东,120+8.06=东经128.06度。或者按每度111km,拍照地点为由北京向东8.06*111=894.66km。
5. 验算
剧透得知,照片拍摄地点为 吉林省长春市东北师范大学净月校区。
根据 Stellarium 得到 经纬度。
在 https://gml.noaa.gov/grad/solcalc/azel.html
查得高度角41度左右,方位角264度左右。
或者 用 https://scienceasdf.github.io/site/solarAngle.html 在PC机获得大致的经纬度。
得到高度角为41度左右,方位角264度左右。
似乎看起来不错,由经纬度算得的高度角和方位角 与 测量值相差不大。
测量值 | 根据经纬度的计算值 | 误差 | |
高度角 | 40 | 41 | -1 |
方位角 | 268 | 264 | 4 |
然而误差相当大。
因为纬度分辨率差,所以高度角即使测量非常精确,求得纬度的范围也非常大。按我的测量,纬度从北纬10度到北纬60度,跨度5550,大致相当于从漠河到曾母暗沙。
方位角差4度合地面4*111=444km,从长春到珲春,再远一点就是日本海。