Source code for تقدیر.ذرائع.دیسات

import datetime

import pandas as pd
from tradssat import WTHFile, MTHFile
from تقدیر.ذریعہ_نکتہ import ذریعہ_نکتہ


[docs]class دیسات(ذریعہ_نکتہ): """ دیسات کے روزانہ آبو ہوا کوائف کے مسل (``.WTH``) سے کوائف پڑھتا ہیے۔ """ متغیرات = ['بارش', 'شمسی_تابکاری', 'درجہ_حرارت_زیادہ', 'درجہ_حرارت_کم'] def __init__(خود, مسل, خاکے=None): خود.مسل = مسل خود.کوائف_دیسات = WTHFile(خود.مسل) چوڑائی = خود.کوائف_دیسات.get_value('LAT') طول = خود.کوائف_دیسات.get_value('LONG') بلندی = خود.کوائف_دیسات.get_value('ELEV') super().__init__(چوڑائی, طول, بلندی, خاکے) def _کوائف_بنانا(خود, سے, تک, عرض, طول, بلندی, خاکے): return دیسات_سے_پڑھنا(خود.کوائف_دیسات, سال=None)
[docs]class دیسات_ماھانہ(ذریعہ_نکتہ): """ دیسات کے ماہانہ آبو ہوا کوائف کے مسل (``.MTH``) سے کوائف پڑھتا ہیے۔ """ متغیرات = ['بارش', 'شمسی_تابکاری', 'درجہ_حرارت_زیادہ', 'درجہ_حرارت_کم'] def __init__(خود, مسل, عرض, طول, بلندی, خاکے=None): خود.مسل = مسل خود.کوائف_دیسات = MTHFile(خود.مسل) super().__init__(عرض, طول, بلندی, خاکے) def _کوائف_بنانا(خود, سے, تک, عرض, طول, بلندی, خاکے): ستون = { 'بارش': 'ramn', 'شمسی_تابکاری': 'srmn', 'درجہ_حرارت_زیادہ': 'txmn', 'درجہ_حرارت_کم': 'tnmn', } اعداد = {س: خود.کوائف_دیسات.get_value(مت) for س, مت in ستون.items()} سال = خود.کوائف_دیسات.get_value('yr') مہینہ = خود.کوائف_دیسات.get_value('mo') return pd.DataFrame( اعداد, index=pd.PeriodIndex([str(س) + str(م).rjust(2, '0') for س, م in zip(سال, مہینہ)], freq='M') )
def دیسات_سے_پڑھنا(مسل, سال): """ دیسات کے روزانہ آبو ہوا کوائف کے مسل سے پاندس کے کوائف بناتا ہیے۔ Parameters ---------- مسل: WTHFile دیسات کا مسل۔ سال: int | None وہ سال جینکے کوائف اس مسل میں ہیں۔ اگر ``None`` ہیے، تو دیسات مسل کا سال کو ۲۰۰۰ جوڈکے سال بنا جائگا۔ Returns ------- pd.DataFrame: پاندس میں ہمہارے کوائف۔ """ ستون = { 'بارش': 'RAIN', 'شمسی_تابکاری': 'SRAD', 'درجہ_حرارت_زیادہ': 'TMAX', 'درجہ_حرارت_کم': 'TMIN', } اعداد = {س: [] for س in ستون} تاریخیں = [] for ش, تاریخ in enumerate(مسل.get_value('DATE')): سال = سال or 2000 + int(str(تاریخ)[:2]) اسلی_تاریخ = datetime.date(سال, 1, 1) + datetime.timedelta(days=int(str(تاریخ)[-3:]) - 1) تاریخیں.append(اسلی_تاریخ) for مت, مت_دیسات in ستون.items(): اعداد[مت].append(مسل.get_value(مت_دیسات)[ش]) return pd.DataFrame(اعداد, index=pd.PeriodIndex(تاریخیں, freq='D'))