Menghitung waktu matahari terbit / terbenam dengan mempertimbangkan topografi


11

Saya ingin menghitung waktu matahari terbit dan terbenam selama setahun penuh untuk lokasi tertentu dengan mempertimbangkan topografi. Mungkin matahari terbit / terbenam bukanlah istilah yang tepat, tetapi yang saya inginkan adalah waktu di mana matahari terbit di atas cakrawala, dan waktu di mana ia jatuh di bawah cakrawala, dengan mempertimbangkan bukit apa pun.

Saya menggunakan QGIS atau GRASS. Saya dapat menggunakan r.horizon untuk menghasilkan sudut cakrawala dari titik tertentu, tapi saya tidak yakin bagaimana untuk pergi dari sana ke waktu matahari terbit / terbenam.


Kedengarannya seperti tampilan terbalik ... pada sudut apa pengamat (matahari) dapat melihat lokasi kemudian menggunakannya sebagai offset ke waktu matahari terbit / terbenam standar. Itu pertanyaan yang sangat bagus.
Michael Stimson

Jawaban:


2

Saya menginstal paket python ephem di Sistem Linux GNU / Debian saya dan, saya bisa menggunakannya di Konsol Python QGIS. Saya menciptakan pengamat untuk titik dekat Danau Utah (AS) dan dihitung kenaikan dan matahari terbenam untuk hari '2010/6/21'. Scriptnya adalah:

import ephem

#defining an observer
obs = ephem.Observer()

#defining position
long = '-112.092807'
lat = '40.135114'

obs.long = ephem.degrees(long)
obs.lat = ephem.degrees(lat)

print "long = ", obs.long, "lat = ", obs.lat

#defining date
date = '2010/6/21'

obs.date = ephem.Date(date)

#defining an astronomic object; Sun in this case
sun = ephem.Sun(obs)

r1 = obs.next_rising(sun)
s1 = obs.next_setting(sun)

print "rising sun (UTC time): ", r1
print "setting sun (UTC time): ", s1

r1_lt = ephem.Date(r1 - 6 * ephem.hour) #local time 

(y, mn, d, h, min, s) = r1_lt.tuple()

print "rising sun: (local time): {:.2f}".format( h + min/60. + s/3600. )

s1_lt = ephem.Date(s1 - 6 * ephem.hour) #local time

(y, mn, d, h, min, s) = s1_lt.tuple()

print "setting sun (local time): {:.2f}".format( h + min/60. + s/3600. )

Setelah berjalan di Konsol Python QGIS, hasilnya adalah:

>>>execfile(u'/home/zeito/pyqgis_scripts/ephem.py'.encode('UTF-8'))
long =  -112:05:34.1 lat =  40:08:06.4
rising sun (UTC time):  2010/6/21 11:58:58
setting sun (UTC time):  2010/6/21 03:01:14
rising sun: (local time): 5.98
setting sun (local time): 21.02

Ini jawabannya.

Catatan pengeditan :

Mendefinisikan cakrawala baru (misalnya 5 derajat):

.
.
.
obs.horizon = '5'

sun = ephem.Sun(obs)

r1 = obs.next_rising(sun)
s1 = obs.next_setting(sun)

print "rising sun (UTC time): ", r1
print "setting sun (UTC time): ", s1

r1_lt = ephem.Date(r1 - 6 * ephem.hour) #local time 

(y, mn, d, h, min, s) = r1_lt.tuple()

print "rising sun: (local time): {:.2f}".format( h + min/60. + s/3600. )

s1_lt = ephem.Date(s1 - 6 * ephem.hour) #local time

(y, mn, d, h, min, s) = s1_lt.tuple()

print "setting sun (local time): {:.2f}".format( h + min/60. + s/3600. )

hasilnya adalah:

>>>execfile(u'/home/zeito/pyqgis_scripts/ephem.py'.encode('UTF-8'))
long =  -112:05:34.1 lat =  40:08:06.4
rising sun (UTC time):  2010/6/21 12:31:48
setting sun (UTC time):  2010/6/21 02:28:24
rising sun: (local time): 6.53
setting sun (local time): 20.47

Terima kasih untuk ini, sepertinya ada satu teka-teki. Sepertinya saya bisa menggunakan PyEphem untuk menghitung sudut azimuth dan ketinggian matahari pada waktu tertentu? Bagaimana saya kemudian menggunakannya untuk menemukan waktu ketika matahari terbit di atas / set di bawah cakrawala? (Menghitung topografi, saya berasumsi bahwa waktu matahari terbit / terbenam yang dihasilkan paket ephem mengasumsikan bumi yang sangat halus.)
Stu

2
Mungkin beberapa kombinasi r.horizon dan PyEphem akan bekerja? Adakah pemikiran tentang bagaimana menggunakan keduanya bersama-sama? GRASS memang memiliki modul r.sun, yang dapat saya gunakan untuk menghitung jumlah jam sinar matahari langsung di lokasi tertentu pada hari tertentu, terhitung untuk topografi. Tampaknya hampir melakukan apa yang saya inginkan, tetapi tampaknya tidak menghasilkan waktu aktual sinar matahari langsung mulai / berhenti.
Stu

Menjanjikan dan bermanfaat, tetapi tidak memperhitungkan topografi akun. Cakrawala yang terlihat dari bagian dalam lembah tidak sama dengan cakrawala yang sebenarnya (tidak tersamarkan).
alphabetasoup

@RichardLaw Anda dapat mengatur topografi dengan metode 'horizon'.
xunilk

1
Sepertinya metode cakrawala hanya menetapkan sudut cakrawala tunggal untuk seluruh cakrawala? Jika kita memperhitungkan topografi, cakrawala tidak rata sempurna. Jadi, sudut ke cakrawala akan berbeda untuk setiap azimuth berbeda yang dihitung. Modul r.horizon akan menampilkan sudut ke cakrawala untuk setiap azimuth yang berbeda. Ini tidak akan menjadi angka tunggal (mis. 5 derajat), melainkan kumpulan data dari serangkaian ketinggian untuk semua azimuth (ketinggian 5 derajat pada 180 derajat azimuth, 6 derajat ketinggian pada 185 derajat azimuth, ketinggian 7 derajat pada 190 derajat azimuth, dll.)
Stu

1

Anda dapat menggunakan perpustakaan seperti PyEphem untuk menemukan, untuk lokasi tertentu, ketinggian, hari, waktu (dan planet;) azimut dan sudut ketinggian matahari.


Bisakah Anda menyarankan implementasi ini? Pertanyaan aslinya tidak menyebutkan python secara implisit tetapi OP mungkin dapat mengambilnya jika contohnya cukup sederhana.
Michael Stimson

0

Anda dapat menggunakan sedikit python untuk melakukan ini, tetapi Anda harus terlebih dahulu membuat kamus atau tabel, dari posisi pengamat Anda, dari sudut ke cakrawala dunia nyata. Ini harus pada interval 1 derajat dengan 0 = true utara dan untuk setiap derajat memberikan sudut horizon. Ini bisa datang dari r.horizon Anda.

Anda kemudian dapat, gunakan pyephemuntuk a) membuat observerdi lintang, bujur dan ketinggian pengamat Anda dan untuk setiap menit dari hari tertentu menggunakannya untuk menghitung posisi jelas matahari, ini akan diberikan sebagai empat nilai, ra, des, alt dan az.

Kemudian untuk setiap nilai waktu Anda dapat membandingkan alt dengan nilai dari tabel elevasi di azimuth itu dan ketika alt lebih besar dari nilai dalam tabel Anda akan dapat melihat matahari.

Bahkan mungkin Anda dapat menemukan beberapa titik di mana, pada hari tertentu, matahari terbit di sebuah lembah dan kemudian keluar dari lokasi di belakang gunung kemudian muncul kembali di atas atau di sisi lain gunung.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.