根據經緯度和日期計算日出日落時間 - 程式人生

文章推薦指數: 80 %
投票人數:10人

直接計算日出和日落時間會比較複雜,可以通過計算當地的“正午”時間、當地的“白天”時長,用正午時間平分白天時長,得到當地的日出時間和日落時間。

程式人生>ios教程>根據經緯度和日期計算日出日落時間 根據經緯度和日期計算日出日落時間 •ios教程•發佈:2018-10-04 直接計算日出和日落時間會比較複雜,可以通過計算當地的“正午”時間、當地的“白天”時長,用正午時間平分白天時長,得到當地的日出時間和日落時間。

計算正午時間 一個地方的正午時間,可以通過當地經度與當地所屬時區經度的差計算得到。

全世界有24個時區,每個時區相隔1小時,因此每個時區之間相差的經度是360/24=15°。

已北京為例,北京所屬時區為東8區,東8區的中心經度是15*8=120°(因此東8區的範圍是112.5°-127.5°)。

北京的經度是116.46,與東8區中心相差120-116.46=3.54,又因為1小時相當於15°,可得 時差=3.54*1/15=0.236小時=14.16分鐘 地球是自西向東旋轉,因此經度小於時區中心的位置,正午來得比時區中心要晚,正午時間是12:00+時差 因此北京的正午時間應該是12+0.236=12.236小時(約12:14)計算白天的時長 圖1 一個地方白天的時長,可以由一定角度下的太陽光照射出的晝夜分隔線(上圖經過B點的斜線),切割這個地方的緯線比例得到。

緯線一圈是24小時,根據切割比例就可以得出當地的白天時長。

圖2 用直觀一點的圖2來解釋,太陽以一定角度斜射地球,A地點此刻是正午,白天是B1-A-B2,夜晚是B1-C-B2,因此A點的白天時間為B1-A-B2所佔的角度在24小時中的佔比。

先來看圖2的左邊,假設上圖中陽光入射角為α,A點的緯度為θ,根據三角函式可得: O‘B/O'O=tanα  O'O/AO=sinθ 所以O'O=AO*sinθ ,O'B=O'O*tanα=AO*sinθ*tanα(AO是地球半徑) 再看圖2的右邊,是這個緯度截面的平面圖: 已知O'B=r*sinθ*tanα O'B1是這個緯度截面的圓的半徑r',這個半徑的計算方法在上篇計算經緯度距離的文章中已經給出:r'=r*cosθ 因此O'B1與O'B的夾角cosβ=O'B/O'B1,這樣我們就能計算出β 最終可以得到:A點的白天角度=(360-β*2) A點的白天時間=A點的白天角度/360*24 為了進行上面這些計算,需要知道A點陽光入射角為α計算陽光入射角α 陽光入射角α是太陽光線與地球赤道面的夾角,春分和秋分時α=0,夏至時α=23°27′,冬至時α=-23°27′。

因為1年有365天(暫時忽略閏年的誤差),春分(3月20日)、夏至(6月22日)、秋分(9月20日)、冬至(12月22日)把365天分為4個部分,因此可以根據具體日期,得到這個日期的α。

最後,舉個例子 以北京,5月25日為例,落在春分到夏至的區間內,是春分過後65天。

而春分到夏至一共有92天,這個區間已經過去了65%,因此可以計算得出5月25日的α=23°27′*0.71=16.65 北京的經度:116.46,緯度:39.92,5月25日太陽光與赤道的夾角α=16.65 代入上面的公式: O'B=r*sinθ*tanα=r*sin39.92*tan16.65 O'B1=r'= r*cosθ=r*cos39.92 cosβ=O'B/O'B1;β=arccos(O'B/O'B1)=arccos(r*sin39.92*tan16.65/r*cos39.92) 北京白天在緯度切面所佔的角度=(360-β*2) 北京白天在緯度切面所佔的時間=(360-β*2)/360*24=208.96/360*24=13.93h 又根據上面的計算,北京的實際正午時間是12.236小時 日出時間=12.236+13.93/2=5.27,大約是05:16 日落時間=12.236-13.93/2=19.201,大約是19:12備註 以上方法只能得到一個粗略的日出日落時間,與實際時間有比較大的誤差,僅用於理解日出日落時間的計算方法。

稽核加急原因 «上一篇 iOS開發之-自定義搜尋框-專案必備下一篇» 相關推薦 Pyecharts根據經緯度和量值的大小,畫出散點圖    而今天我們主要介紹的是地圖+散點圖,地圖+熱力圖,應用到的函式是Geo,主要引數說明如下: attr... 根據經緯度求方位角,以北為0,順時針為正方向 1.傳入兩個經緯度座標,計算出兩個座標之間的角度,範圍是0-360。

//計算方位角,正北向為0度,以順時針方向遞增privatedoublecompu... 根據經緯度求距離(演算法) publicfunctionhowLang(Request$request){ $navi_id=$request->... 地裏位置距離排序,根據經緯度 根據位置經緯度pow4.0divroundbspsqrtROUND(6378.138*2*ASIN... 根據經緯度查詢附近企業|SQL cosasifontseljdbc附近sintopblog--第一種 SELECT e... JAVA代碼根據經緯度範圍計算WGS84與谷歌全球墨卡托包含的切片數目與拼接圖像像素尺寸 ava3.4comout-1sizeimg一個經緯度根據項目需求編寫的代碼。

適用場景:在網絡地圖上,比如... 根據經緯度獲取最近的位置 orderroundOSascrayblog獲取prelog $ere[‘lng‘]=array(‘b... 百度地圖根據經緯度獲取地址 DCpoicodercomrescodeictUNCfuncvarpoint=newBMap.P... PHP,Mysql根據經緯度計算距離並排序 sizefloorclassstylesqlpngcomnbspdiv計算公式: mysql: /... 百度地圖api根據經緯度獲取地址的詳細信息 jsonindexofclose詳細信息formatreadESSclasavapackagecom.h... 搜尋 基礎教學 Mysql入門 Sql入門 Android入門 Docker入門 Go語言入門 Ruby程式入門 Python入門 Python進階 Django入門 Python爬蟲入門 最近訪問 根據經緯度和日期計算日出日落時間 Python和Shell簡單對照 android:Activity啟動模式之singleTop Python+建構函式、+Python+解構函式、Python+垃圾回收機制 演算法和資料結構簡單整理 關於java亂碼的一些總結 MySQL+InnoDB+檢視+deadlock+死結記錄 Android使用WIFI進行遠端ADB除錯 利用WebMvcConfigurerAdapter來配置springmvc相關內容 精選37條強大的常用linux+shell命令組合



請為這篇文章評分?