Tính thời gian mặt trời mọc / mặt trời lặn trong khi xem xét địa hình


11

Tôi muốn tính thời gian mặt trời mọc và mặt trời lặn trong cả năm cho một vị trí nhất định có tính đến địa hình. Có lẽ bình minh / hoàng hôn không phải là điều khoản đúng, nhưng điều tôi muốn là thời gian mặt trời mọc phía trên đường chân trời và thời điểm mà nó rơi xuống dưới đường chân trời, có tính đến bất kỳ ngọn đồi nào.

Tôi đang sử dụng QGIS hoặc GRASS. Tôi có thể sử dụng r.horizon để tạo góc chân trời từ một điểm cụ thể, nhưng tôi không chắc chắn làm thế nào để đi từ đó đến thời điểm mặt trời mọc / mặt trời lặn.


Âm thanh như một góc nhìn ngược ... ở góc độ nào mà người quan sát (mặt trời) có thể nhìn thấy vị trí sau đó sử dụng nó như một phần bù cho thời gian mặt trời mọc / mặt trời chuẩn. Đó là một câu hỏi rất hay.
Michael Promotionson

Câu trả lời:


2

Tôi đã cài đặt gói python ephem trong Hệ thống Linux GNU / Debian của tôi và, tôi có thể sử dụng nó tại Bảng điều khiển Python của QGIS. Tôi đã tạo ra một người quan sát cho một điểm gần Hồ Utah (Hoa Kỳ) và nó đã được tính toán việc tăng và lặn mặt trời trong ngày '2010/6/21'. Kịch bản là:

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. )

Sau khi chạy tại Bảng điều khiển Python của QGIS, kết quả là:

>>>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

Đây là câu trả lời.

Chỉnh sửa ghi chú :

Xác định một chân trời mới (ví dụ 5 độ):

.
.
.
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. )

kết quả là:

>>>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

Cảm ơn bạn vì điều này, nó có vẻ như là một mảnh của câu đố. Có vẻ như tôi có thể sử dụng PyEphem để tính góc phương vị và độ cao của mặt trời tại một thời điểm cụ thể? Làm thế nào để tôi sử dụng nó để tìm thời gian khi mặt trời mọc phía trên / bộ bên dưới đường chân trời? (Kế toán địa hình, tôi giả sử rằng thời gian hoàng hôn / bình minh mà gói phù du xuất hiện đang cho rằng một trái đất hoàn toàn mịn màng.)
Stu

2
Có lẽ một số sự kết hợp của r.horizon và PyEphem sẽ hoạt động? Bất kỳ suy nghĩ về cách sử dụng hai cùng nhau? GRASS có một mô-đun r.sun, mà tôi có thể sử dụng để tính số giờ ánh sáng mặt trời trực tiếp tại một địa điểm nhất định vào một ngày nhất định, chiếm địa hình. Điều đó dường như gần như làm những gì tôi muốn, nhưng dường như nó không tạo ra thời gian thực sự bắt đầu / dừng ánh sáng mặt trời trực tiếp.
Stu

Hứa hẹn và hữu ích, nhưng nó không tính đến địa hình. Đường chân trời có thể nhìn thấy từ bên trong thung lũng không giống với đường chân trời thực sự (không bị che khuất).
alphabetasoup

@RichardLaw Bạn có thể đặt địa hình bằng phương pháp 'đường chân trời'.
xunilk

1
Có vẻ như phương pháp đường chân trời chỉ là thiết lập một góc chân trời duy nhất cho toàn bộ đường chân trời? Nếu chúng ta tính đến địa hình, đường chân trời không hoàn toàn bằng phẳng. Vì vậy, góc tới đường chân trời sẽ khác nhau cho mỗi góc phương vị khác nhau được tính toán. Mô-đun r.horizon sẽ xuất góc tới đường chân trời cho mỗi góc phương vị khác nhau. Nó sẽ không phải là một số duy nhất (ví dụ 5 độ), mà là tập hợp dữ liệu của một loạt các độ cao cho tất cả các góc phương vị (độ cao 5 độ ở 180 độ góc, độ cao 6 độ ở 185 độ góc, độ cao 7 độ ở 190 độ góc phương vị, v.v.)
Stu

1

Bạn có thể sử dụng một thư viện như PyEphem để tìm, cho một vị trí nhất định, độ cao, ngày, thời gian (và hành tinh;) góc phương vị và độ cao của mặt trời.


Bạn có thể đề nghị thực hiện điều này? Câu hỏi ban đầu không đề cập đến con trăn ngầm nhưng OP có thể chọn nó nếu ví dụ này đủ đơn giản.
Michael Stimson

0

Bạn có thể sử dụng một ít trăn để làm điều này nhưng trước tiên bạn cần tạo một từ điển hoặc bảng, từ vị trí quan sát viên của bạn, về góc tới chân trời thế giới thực. Điều này sẽ cần ở các khoảng 1 độ với 0 = phía bắc thực và với mỗi độ cho góc của đường chân trời. Điều này có thể đến từ r.horizon của bạn.

Sau đó, bạn có thể sử dụng pyephemđể a) tạo ra một observervĩ độ, kinh độ và độ cao của người quan sát của bạn và trong mỗi phút của một ngày nhất định, hãy sử dụng nó để tính toán các vị trí mặt trời rõ ràng, chúng sẽ được đưa ra dưới dạng bốn giá trị, ra, dec, alt và az.

Sau đó, với mỗi giá trị thời gian, bạn có thể so sánh alt với giá trị từ bảng độ cao ở góc phương vị đó và khi alt lớn hơn giá trị trong bảng bạn sẽ có thể nhìn thấy mặt trời.

Thậm chí có khả năng bạn có thể tìm thấy một số điểm, vào một ngày nhất định, mặt trời mọc trong một thung lũng và sau đó đi ra khỏi vị trí phía sau một ngọn núi sau đó xuất hiện trở lại hoặc phía bên kia của ngọn núi.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.