2014-01-28 46 views
4

我有太陽的經度,緯度和位置(方位角,天頂角和仰角)的衛星圖像,但沒有時間戳。從太陽的位置和觀察者的位置開始的時間

使用天文曆書的缺點,有沒有一種方法來計算從太陽的位置和圖像位置的時間?

我已經看到Matlab腳本和ArcGIS工具做了相反的操作,也就是說他們根據觀察者的經度,緯度和時間來計算太陽的位置,但我錯過了「時間」變量這種情況下,並希望找到所有的圖像。

+0

如果你翻動輸入格式,你可能會從Wolfram得到一個答案α。但如果您必須手動輸入大量數據點,那可能沒什麼幫助。 – jerad

+0

你知道日期(或大概的日期?) – nkjt

+0

jerad:的確如此。我應該更具體。 我有500多張圖片,需要15分鐘手動計算並記錄每張圖片的時間戳。 有沒有辦法(有效)一次爲許多圖像計算時間戳? nkjt:我有一天,但沒時間。 – user3245307

回答

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

既然你知道那一天,在一個循環中,你可以猜測當時的情況,獲得太陽位置,使用結果自動作出更好的猜測,直到你足夠接近。你可以做這個二進制搜索。