太阳位置和观测者位置确定的时间

4

我有带有纬度、经度和太阳位置信息(方位角、天顶角和高度角)的卫星图像,但没有时间戳。

除了使用天文年历外,是否有一种方法可以根据太阳的位置和图像位置计算时间?

我看到过使用Matlab脚本和ArcGIS工具来完成相反的操作,即基于观察者的纬度、经度和时间计算太阳的位置,但在这种情况下我缺少“时间”变量,并想找出所有图像的时间。


如果你调整输入格式,可能可以从Wolfram Alpha得到答案。但是如果你必须手动输入大量数据点,那可能帮助不大。 - jerad
你知道日期(或大致日期)吗? - nkjt
jerad: 没错,我应该更具体一些。我有500多张图片,手动计算和记录每张图片的时间戳需要大约15分钟。有没有一种方法可以(高效地)同时计算许多许多图像的时间戳?nkjt: 我有日期,但没有时间。 - user3245307
@user3245307 这绝对会让事情变得更加容易。 - nkjt
2个回答

1
这里有一种(稍微粗糙的)方法,因为我看到的位置计算器似乎不太容易逆向工程“已知日期给定时间”。我使用了现有的太阳位置计算器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);

我还没有进行彻底的测试,但它似乎可以用于粗略估算(当然,假设原始位置计算器的准确性良好)。我假设您不需要比分钟更高的精度(除非您能够非常准确地测量位置)。您需要注意使用任何计算器时如何处理时区,输出是否为本地时间等。

1

既然你知道日期,那么你可以循环猜测时间,获取太阳位置,并使用结果自动进行更好的猜测,直到足够接近。你可以将此作为二分查找。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接