स्थलाकृति पर विचार करते हुए सूर्योदय / सूर्यास्त के समय की गणना


11

मैं एक पूरे वर्ष के लिए सूर्योदय और सूर्यास्त के समय की गणना करना चाहता हूं जो किसी दिए गए स्थान के लिए स्थलाकृति को ध्यान में रखता है। शायद सूर्योदय / सूर्यास्त सही शब्द नहीं हैं, लेकिन मैं जो चाहता हूं वह वह समय है जब सूरज क्षितिज से ऊपर उठता है, और जिस समय क्षितिज से नीचे गिरता है, किसी भी पहाड़ियों को ध्यान में रखते हुए।

मैं QGIS या GRASS का उपयोग कर रहा हूं। मैं एक विशिष्ट बिंदु से क्षितिज कोण उत्पन्न करने के लिए r.horizon का उपयोग कर सकता हूं, लेकिन मुझे यकीन नहीं है कि वहां से सूर्योदय / सूर्यास्त के समय कैसे प्राप्त किया जाए।


एक रिवर्स व्यूशेड की तरह लगता है ... पर्यवेक्षक (सूर्य) किस कोण पर स्थान देख सकता है तो मानक सूर्योदय / निर्धारित समय के लिए एक ऑफसेट के रूप में उपयोग करें। यह एक बहुत अच्छा सवाल है।
माइकल स्टिमसन

जवाबों:


2

मैंने अपने ग्नू / डेबियन लिनक्स सिस्टम में इफेम पायथन पैकेज स्थापित किया है और, मैं इसका उपयोग क्यूजीआईएस के पायथन कंसोल में कर सकता हूं। मैंने यूटा झील (यूएसए) के पास एक बिंदु के लिए एक पर्यवेक्षक बनाया और इसकी गणना '2010/6/21' दिन के लिए सूरज उगाने और करने के लिए की गई थी। स्क्रिप्ट थी:

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

QGIS के पायथन कंसोल पर चलने के बाद, परिणाम था:

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

यह उत्तर है।

संपादन नोट :

एक नया क्षितिज परिभाषित करना (जैसे 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. )

परिणाम है:

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

इसके लिए धन्यवाद, यह पहेली के एक टुकड़े की तरह लगता है। ऐसा लगता है कि मैं किसी विशेष समय पर सूरज की ऊंचाई और ऊंचाई के कोणों की गणना करने के लिए PyEphem का उपयोग कर सकता हूं? फिर मैं उस समय का उपयोग कैसे करूं, जब सूरज ऊपर उठता है / क्षितिज के नीचे सेट होता है? (स्थलाकृति के लिए लेखांकन, मैं मान रहा हूं कि सूर्यास्त / सूर्योदय के समय जो कि एपेम पैकेज का उत्पादन कर रहा है, एक पूरी तरह से चिकनी पृथ्वी मान रहा है।)
स्ट्यू

2
शायद r.horizon और PyEphem के कुछ संयोजन काम करेंगे? कैसे एक साथ दो का उपयोग करने पर कोई विचार? GRASS में एक मॉड्यूल r.sun है, जिसका उपयोग मैं किसी दिए गए स्थान पर सीधे सूर्य के प्रकाश की घंटे की संख्या की गणना करने के लिए कर सकता हूं, जो स्थलाकृति के लिए लेखांकन है। ऐसा लगता है कि मैं लगभग वही करना चाहता हूं, लेकिन यह उस वास्तविक समय का उत्पादन करने के लिए प्रतीत नहीं होता है जब प्रत्यक्ष सूर्य का प्रकाश शुरू होता है / बंद हो जाता है।
स्टु

होनहार और उपयोगी, लेकिन यह स्थलाकृति को ध्यान में नहीं रखता है। घाटी के अंदर से दिखाई देने वाला क्षितिज वास्तविक क्षितिज (बिना बोले) जैसा नहीं है।
अल्फाबेटासैप

@RichardLaw आप 'क्षितिज' विधि के साथ स्थलाकृति सेट कर सकते हैं।
xunilk

1
ऐसा लगता है जैसे क्षितिज विधि पूरे क्षितिज के लिए सिर्फ एक क्षितिज कोण स्थापित कर रही है? अगर हम स्थलाकृति को ध्यान में रखते हैं, तो क्षितिज पूरी तरह से सपाट नहीं है। तो, क्षितिज के कोण की गणना प्रत्येक अलग-अलग अज़ीमुथ के लिए अलग-अलग होगी। R.horizon मॉड्यूल प्रत्येक अलग azimuth के लिए कोण को आउटपुट देगा। यह एक एकल संख्या नहीं होगी (उदाहरण के लिए। 5 डिग्री), बल्कि सभी अज़ीमुथों के लिए ऊँचाई की एक श्रृंखला का एक डेटा सेट (5 डिग्री ऊंचाई 180 डिग्री अज़ीमुथ, 185 डिग्री अज़ीमुथ पर 6 डिग्री ऊंचाई, 190 पर 7 डिग्री ऊंचाई डिग्री अज़ीमुथ, इत्यादि)
स्ट्यू

1

आप किसी दिए गए स्थान, ऊंचाई, दिन, समय (ओं) (और ग्रह;) सूरज की ऊंचाई और ऊंचाई के कोणों के लिए, खोजने के लिए पाइफेम जैसी लाइब्रेरी का उपयोग कर सकते हैं।


क्या आप इसे लागू करने का सुझाव दे सकते हैं? मूल प्रश्न में स्पष्ट रूप से अजगर के बारे में कोई उल्लेख नहीं किया गया है, लेकिन यदि उदाहरण काफी सरल है तो ओपी इसे उठा सकता है।
माइकल स्टिमसन

0

आप इसे करने के लिए थोड़ा सा अजगर का उपयोग कर सकते हैं, लेकिन आपको सबसे पहले एक शब्दकोश या तालिका तैयार करने की आवश्यकता है, जो आपके पर्यवेक्षकों की स्थिति से, कोण से वास्तविक विश्व क्षितिज पर लगता है। यह 1 = 0 उत्तर के साथ 1 डिग्री के अंतराल पर और उत्तर के क्षितिज के लिए प्रत्येक डिग्री के लिए कहने की आवश्यकता होगी। यह आपके r.horizon से आ सकता है।

तब आप अपने पर्यवेक्षक के अक्षांश, देशांतर और ऊंचाई पर pyephemएक) बनाने के लिए उपयोग कर सकते हैं observerऔर किसी दिए गए दिन के प्रत्येक मिनट के लिए सूर्य के स्पष्ट स्थानों की गणना करने के लिए इसका इस्तेमाल कर सकते हैं, इन्हें चार मान, रा, डिक, अल्ट के रूप में दिया जाएगा। और az।

तब प्रत्येक बार के मूल्य के लिए आप ऊंचाई की तालिका से ऊंचाई की तुलना उस अजीमथ पर कर सकते हैं और जब ऊंचाई तालिका में मूल्य से अधिक होती है तो आप सूर्य को देख पाएंगे।

यह भी संभव है कि आप कुछ बिंदुओं को पा सकते हैं, जहां एक निश्चित दिन पर, सूरज एक घाटी में उगता है और फिर एक पहाड़ के पीछे साइट से बाहर निकलता है, फिर पहाड़ के दूसरी तरफ या फिर से दिखाई देता है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.