根據經緯度和日期計算日出日落時間 - 程式人生
文章推薦指數: 80 %
直接計算日出和日落時間會比較複雜,可以通過計算當地的“正午”時間、當地的“白天”時長,用正午時間平分白天時長,得到當地的日出時間和日落時間。
程式人生>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命令組合
延伸文章資訊
- 1影響日出日落時間的因素主要有哪些? - GetIt01
另外,更改夏令時和冬令時也會影響人們看到日出和日落的時間。 緯度. 不算赤道,北半球在夏季時(太陽直射),晝長夜短。
- 2日出方程式(Sunrise Equation) – 基本式推導 - 泛科學
某天的週末傍晚天色還很亮,但是社區中庭花園的燈飾已經自動點亮,讓我想計算日出日落時間,重新調整時間控制。找到維基百科列有日出方程式這個條目,雖然大學曾學過 ...
- 3如何计算日出日落时间 - 知乎专栏
上次学会了如何计算太阳赤纬,这次要用太阳赤纬算日出时间啦。 写在前面的话:这一系列纯属自己推着玩,并不是对权威公式的讲解,虽然会对结果进行验证,但是难免会有 ...
- 4日出日落時間查詢- MAPLOGS
關於此網站. 日出和日落時間可以由經度和緯度來計算。其計算公式是非常複雜的,見這裡。 本網站使用谷歌地圖進行搜索或選擇在地球上的位置。然後,位置將被發送到我們 ...
- 5台湾日出日落时刻表2022年06月份