我有卫星图像,包括纬度,经度和太阳位置(方位角,天顶和高程),但没有时间戳.
如果没有使用天文年历,有没有办法从太阳的位置和图像位置计算时间?
我已经看过Matlab脚本和ArcGIS工具,与此相反,即他们根据观察者的纬度,经度和时间计算太阳的位置,但在这种情况下,我错过了“时间”变量,并且喜欢为所有图像找到它.
最佳答案 这是一种(稍微粗略)的方法,因为我看到的位置计算器对于“给定已知日期的时间”进行逆向工程似乎并不容易.
我从文件交换中取出了现有的太阳位置计算器,Sun Position.然后我为这个函数编写了两个包装器函数,以稍微更有用的格式输出信息进行搜索:
sun_hour→计算给定日期的每小时(零分钟)位置.
sun_min→给定一个日期和小时,计算每日/小时两侧一小时的微小位置.
由于原始功能很快,即使在我不是特别好的计算机上,这两者都需要几分之一秒.
然后,我沿着以下几行编写了一个快速定位功能,仅使用测量的方位角(以及时间/位置输入,以sun_position所需的格式给出日期和位置).
time.min = 0;
% find list of azimuths, find closest match
[azlist, zlist, hours] = sun_hour(time, location);
n = find(abs(azlist-azimuth)==min(abs(azlist-azimuth)));
time.hour = hours(n);
% ditto, but around the time found at previous step
[azlist, zlist, hours, minutes] = sun_min(time, location);
n = find(abs(azlist-azimuth)==min(abs(azlist-azimuth)));
% output time
time.hour = hours(n);
time.min = minutes(n);
我还没有对它进行彻底的测试,但它似乎可以很好地进行粗略估计(当然,假设原始位置计算器的准确性很好).我假设你不需要比精确度更高的准确性(除非你设法非常准确地测量位置).您需要注意最终使用的计算器如何处理时区,输出是否为本地时间等.