汪昱列 周宇 徐佳笛



摘 要:太陽影子定位技術(shù)就是通過分析物體影子變化,確定物體所在經(jīng)緯度的技術(shù)。本文根據(jù)幾何關(guān)系,結(jié)合窮舉算法和相似度算法對給定大致經(jīng)緯度范圍內(nèi)的物體進(jìn)行精確經(jīng)緯度定位的研究。我們首先通過太陽高度角與各個參數(shù)之間的關(guān)系,確立了影子長度與經(jīng)緯度、日期、時間以及桿高之間的函數(shù)關(guān)系。接著,我們探討建立了日期已知的經(jīng)緯度定位模型,優(yōu)化了之前的影長變化模型,將其結(jié)合了遍歷算法。先通過影子頂點變化曲線特性分析縮小遍歷范圍,再遍歷了不同桿長所有可能的經(jīng)緯度。利用歐式距離算法衡量影長與遍歷計算出的影長之間的相似度,歐氏距離最小的地點為最可能的直桿所處地點。最后,我們探討了日期未知下的經(jīng)緯度定位模型。對之前的模型進(jìn)行了進(jìn)一步的優(yōu)化:引入影子方位角變化量作為描述影子方位隨時間變化特性的參數(shù),與影長結(jié)合共同描述影子變化特性。以影長相似度最高作為目標(biāo)進(jìn)行一次遍歷,接著以影子方位角變化量相似度最高作為目標(biāo),對一次遍歷結(jié)果進(jìn)行二次遍歷,以求得與其相似度最高的地點的經(jīng)緯度和對應(yīng)的日期,并用歐式距離檢驗。
關(guān)鍵詞:經(jīng)緯度、遍歷算法、歐氏距離
DOI:10.16640/j.cnki.37-1222/t.2016.09.218
1 影長變化模型的建立
我們設(shè)直桿影子長度為l,直桿長度為z。
太陽高度角是太陽射到地面的平行光線與地面的夾角,設(shè)其為h,范圍為(0°,90°)。
因為太陽光射到地面為平行光,又假設(shè)地面平整,固定直桿垂直于地面,則有影長與直桿長度z和不同時刻的太陽高度角h的三角關(guān)系。
其中,h是太陽高度角,為當(dāng)?shù)鼐暥龋?guī)定北緯度數(shù)為正,南緯度數(shù)為負(fù),所以范圍為(-90°,90°),δ為太陽赤緯角,即太陽直射點所在的緯度,范圍為(-23°26,23°26),Ω為太陽時角。
由圖1可以看出,太陽赤緯角就是太陽直射點所在的緯度。太陽在地球上的直射點的緯度變化以年為周期,直射點在北緯23°26到南緯23°26的范圍內(nèi)移動,太陽赤緯由日期確定,夏至?xí)r太陽照射在北回歸線,即北緯23°26,冬至?xí)r太陽照射在南回歸線,即南緯23°26。一天之中赤緯角的變化可忽略不計。因此固定日期的赤緯角δ可以當(dāng)做常數(shù)。
赤緯角的計算公式可以查閱資料(資料名稱見參考文獻(xiàn)[2])得到,如下:
δ=0.006918-0.399912×cos(β)+0.0070257×sin(β)-0.006758×cos(2β)+0.000907×sin(2β)-0.002697×cos(3β)+0.00148×sin(3β) (1-3)
其中,β為日角,,n為日數(shù),從1月1日開始起n=1,比如1月3日n=3。
因此只要已知日期(年月日),就可以算出具體的赤緯角值。
由圖2可看出,太陽時角Ω是指從地球上的觀測點天球子午圈沿天赤道量至太陽所在時圈的角距離。子午圈和天赤道量屬于地理學(xué)中赤道坐標(biāo)系的概念,在本文中不過多展開。解釋一下太陽時角就是任一時刻太陽與直桿的連線在赤道面上的投影與觀測點正南方向的夾角。
設(shè)該地方的經(jīng)度為α,西經(jīng)為負(fù)值,東經(jīng)為正值,α范圍為(-180°,180°)。設(shè)該地方的北京時間為t(當(dāng)前時刻,單位為小時,例:12點36分即12.6小時),對于觀測點來說,不同時刻太陽相對于自己的方位也不一樣。這導(dǎo)致太陽時角的具體值也不同。所以太陽時角Ω與北京時間t和當(dāng)?shù)亟?jīng)度α有關(guān)。
查閱文獻(xiàn)[2]可知太陽時角Ω的計算公式:
其中S表示當(dāng)?shù)氐恼嫣枙r,即當(dāng)?shù)靥栁挥谡舷虻乃矔r,即當(dāng)?shù)氐恼纭?/p>
綜上公式1-1、1-2、1-3,如果已知某地經(jīng)度α和北京時間t,就可以求出此時刻的太陽時角Ω;如果已知該地的日期,就可以求出該地的太陽赤位角δ,如果再知道該地緯度,就可以求出太陽高度角h,結(jié)合桿高z可以求出影長l。
通過公式1-1、1-2、1-3可得建立影長變化模型:
2 有日期下經(jīng)緯度定位模型的建立
由于只要給出任意桿長就可以遍歷所有經(jīng)緯度得到最有可能的地點,為了計算便捷,我們只給出桿長為2米和3米兩種情況下,最有可能的經(jīng)緯度。
2.1 影長的計算
若已知條件中直接給出了影長則可以直接進(jìn)行step2,若影長給出的是坐標(biāo)(x,y),則可以算出影長,然后將經(jīng)緯度范圍內(nèi)的每個經(jīng)緯點這個時刻的影長也算出來與之對比即可。
2.2 遍歷范圍的縮小
由于遍歷算法計算量巨大,所以我們考慮結(jié)合題目給出的北京時間數(shù)據(jù)和影子頂點變化曲線的特性來縮小遍歷的經(jīng)緯度范圍。
(1)估算大致經(jīng)度范圍。根據(jù)日夜?fàn)顟B(tài)與一定的背景信息先行縮小經(jīng)度范圍。
(2)估算大致緯度范圍。查閱地理學(xué)文獻(xiàn)[3]可以知道對于處在不同緯度的直桿,一天當(dāng)中的影長軌跡可能有兩種情況。以北半球的夏季為例,北半球的夏季太陽直射點在北半球(赤道與北回歸線之間),那么位于直射點以南的地區(qū)(包括南半球),影子軌跡就如左圖;位于直射點以北的地區(qū),一天的影子軌跡就如右圖。
2.3 將經(jīng)緯度范圍代入遍歷程序
我們考慮先在較大經(jīng)緯度范圍內(nèi)進(jìn)行粗遍歷,先找出最可能點所在的大致范圍,再縮小經(jīng)緯度范圍,縮小步長,進(jìn)行精確定位。
(1)縮小可能的經(jīng)緯度范圍:由于初始遍歷的經(jīng)緯范圍比較大,為防止程序計算量過大導(dǎo)致計算時間過長,我們可以先選取較大的經(jīng)緯度變化步長,。
(2)精確確定經(jīng)緯度:在得到粗略的經(jīng)緯度之后可以縮小步長為0.01°,求出較為精確的地理坐標(biāo)。
3 無日期下經(jīng)緯度定位模型的建立
上一個模型已經(jīng)分析,只有已知某地的日期、緯度、經(jīng)度α、北京時間t和桿高z可以求出影長l,在無日期下,如果沿用之前的模型,則需要遍歷確定日期和桿長兩個量。
3.1 沿用之前模型計算不同日期下的經(jīng)緯度坐標(biāo)
我們在之前的遍歷模型外加上一層遍歷365天的循環(huán),然后重新遍歷。
在進(jìn)過試驗后可以看出來,沿用之前的模型仍能求出一年365天每天的最有可能的經(jīng)緯度位置。但是無法確定附件給出的具體日期。因此我們加入地理學(xué)中太陽方位角的概念來確定日期。一天中物體影子的變化由影長變化和影子方位(和正南方向的夾角)變化共同確定,通過上述遍歷法求得的結(jié)果很多且相似度很高是由于只考慮了影長隨時間的變化的相似度,沒有考慮影子方位隨時間變化的相似度。上述模型中缺少描述影子方位變化參數(shù)。由此,我們引入極坐標(biāo)系,來討論影子方位角的變化值,以此確定影子方位變化,對模型進(jìn)行優(yōu)化。
3.2 日期的確定
(1)極坐標(biāo)系的建立。我們考慮將給出影長坐標(biāo)的平面直角坐標(biāo)系轉(zhuǎn)化為極坐標(biāo)系。以直桿底端為原點,平面直角坐標(biāo)系的x軸正方向為極軸正方向,取逆時針方向為角度的正方向,建立極坐標(biāo)系:
與原平面直角坐標(biāo)系轉(zhuǎn)化關(guān)系如下:
(3-2)
其中ρ=l(影長),θ為影子方向與極軸正方向所成的夾角。我們考慮利用上述極坐標(biāo)系求出附件2中各個時刻的θ。
(2)太陽方位角A的引入。固定直桿底端為極坐標(biāo)系的原點,變化極軸的方向,特別地,若以正南方向為極軸正方向,建立極坐標(biāo)系。
此時,有θ=A,A為太陽方位角(直桿影子與正南方向的夾角),太陽方位角A與太陽高度角h間關(guān)系如下:
(3-2)
上式中,δ為太陽赤緯,Ω為太陽時角,計算方法之前已經(jīng)給出。
所以,通過求解得到的每一天相似度最高地點的經(jīng)緯度、桿高、日期和觀測時間,即可算出每一天相似度最高的地點,任意觀測時刻的太陽方位角。
但是,由于建立極坐標(biāo)系時極軸方向的不同,通過計算得到太陽方位角A與利用附件原始平面直角坐標(biāo)系轉(zhuǎn)化得到的極坐標(biāo)系中的θ是不同的(當(dāng)且僅當(dāng)極軸方向為正南方向時θ=A)。
因此,我們考慮引入影子與極軸正方向夾角θ關(guān)于時間的變化量Δθ作為描述影子方位隨時間變化特性的參數(shù),定義Δθ為影子方位角變化量。
我們定義Δθ為影長坐標(biāo)給出的觀測后一時刻的θ與前一時刻θ的差值,由上述分析,太陽方位角A即為極軸方向為直桿正南方向時的θ,所以應(yīng)當(dāng)有Δθ=ΔA。
實際計算時,由于Δθ與ΔA不可能嚴(yán)格相等,我們考慮沿用歐式距離算法作為判定Δθ與ΔA相似度的算法,對求出來的一年365天每天的最有可能的經(jīng)緯度進(jìn)行二次窮舉,算出這365個經(jīng)緯地點方位角的變化量ΔA與附件所給的影子與極軸正方向夾角Δθ的歐氏距離,篩選出最小的歐氏距離,得到經(jīng)緯度。此時的經(jīng)緯度即最有可能的經(jīng)緯度地點,這個經(jīng)緯度對應(yīng)的日數(shù)即可推算出當(dāng)天日期。第二次歐氏距離計算公式如下:
(3-2)
遍歷365個日期對應(yīng)的經(jīng)緯度,求取Δθ與ΔA相似度最高的地點作為最優(yōu)解。
參考文獻(xiàn):
[1]王國安,米鴻濤,鄧天宏,李亞男,李蘭霞.太陽高度角和日出日落時刻太陽方位角一年變化范圍的計算[J].氣象與環(huán)境科學(xué),2007(S1):161-164.
[2]賀曉雷,于賀軍,李建英,丁蕾.太陽方位角的公式求解及其應(yīng)用[J].太陽能學(xué)報,2008(01):69-73.
[3]武琳.基于太陽陰影軌跡的經(jīng)緯度估計技術(shù)研究[D].天津大學(xué),2010.