नये स्रोतें

अगर आपको इसी रूप के आँकड़ों का प्रयोग करना है जो तकदीर में उपलब्ध नहीँ हैं, तो आप उसके लिये एक नये स्रोत के वर्ग बना सकते हैं।

तकदीर में २ प्रकार के स्रोत है, सामान्य स्रोत (ذریعہ) और बिंदु के स्रोत (ذریعہ_نکتہ)।

बिंदु के स्रोतें वह स्रोतें हैं जिनको बनाते पर ही बता हो जाता है के उनके आँकड़े नक्षा पर किस बिंदु से आए हैं। बिंदु के स्रोत का एक नमूना है दीस्सात के संचिका का स्रोत, क्योंके संचिका में एक ही जगह के आँकड़े रहते हैं। सामान्य स्रोतों में विभिन्न जगह के आँकड़े उपलब्ध हैं, जैसे के मार्कसिम का स्रोत, जिससे पूरी दुनिया के आँकड़े मिले जा सकते हैं।

नये वर्ग के लिये, सामान्य स्रोत हो या बिंदु का भी, आपको _کوائف_بنانا()۔ नाम का एक नया कार्य लिखना पड़ेगा।

सामान्य स्रोतें

नमूना के तौर पर, नासा के स्रोत का _کوائف_بنانا() नाम का कार्य का कार्यान्वयन नीचे दीया गया है।

class ناسا(ذریعہ):
    """
    یہ ذریعہ ناسا کے `صفحہ <https://power.larc.nasa.gov/cgi-bin/v1/DataAccess.py>`_ سے آوہوا مشاہدات کے کوائف پاتا ہیے۔
    """
    متغیرات = ['بارش', 'شمسی_تابکاری', 'درجہ_حرارت_زیادہ', 'درجہ_حرارت_کم', 'درجہ_حرارت_اوسط']

    def _کوائف_بنانا(خود, سے, تک, عرض, طول, بلندی, خاکے):
        try:
            ذریعہ_ناسا = NASAPowerWeatherDataProvider(latitude=عرض, longitude=طول, force_update=False)
        except (requests.exceptions.ConnectionError, KeyError, JSONDecodeError):
            return

        سے = max(ذریعہ_ناسا.first_date, سے)
        تک = min(ذریعہ_ناسا.last_date, تک)

        اعداد_پاندس = pd.DataFrame(columns=list(متغیرات), index=pd.period_range(سے, تک), dtype=float)

        ستون = {
            'بارش': 'RAIN',
            'شمسی_تابکاری': 'IRRAD',
            'درجہ_حرارت_زیادہ': 'TMAX',
            'درجہ_حرارت_کم': 'TMIN',
            'درجہ_حرارت_اوسط': 'TEMP'
        }

        for تاریخ in اعداد_پاندس.index:
            try:
                ناسا_دن = ذریعہ_ناسا(تاریخ.start_time)
            except WeatherDataProviderError:
                continue
            for س, س_ناسا in ستون.items():
                اعداد_پاندس.loc[تاریخ, س] = getattr(ناسا_دن, س_ناسا)

        اعداد_پاندس.شمسی_تابکاری *= 1e-6

        return اعداد_پاندس

बिंदू के स्रोतें

बिंदु का स्रोत बनाते पर ही बताने पड़ता है के कहाँ का है और किस परिदृश्य से। इसी लिये आपका _کوائف_بنانا() नाम का कार्य में तारीख़, अक्षाँश, देशाँतर उंचाई या परिदृश्य के बारे में फिकर करने की ज़रूरत नहीं, सिर्फ़ उपलब्ध आँकड़ों पांडस में वापस देना। तकदीर आपके लिये तारीख, जगह और परिदृश्य का परिक्षण करेगा।

नमूने के तौर पर जेसान नाम के स्रोत का _کوائف_بنانا() नाम का कार्य नीचे दीया गया है।

class جےسن(ذریعہ_نکتہ):
    """
    جےسن (``.json``) مسل سے کوائف پڑھتا ہیے۔
    """

    def __init__(خود, مسل, عرض, طول, بلندی=None, خاکے=None, تبديل_عمودی_ستون=None):
        super().__init__(عرض, طول, بلندی, خاکے, تبديل_عمودی_ستون)

        if isinstance(مسل, str):
            ضابطہ = _ضابطہ_بندی(مسل)
            with open(مسل, 'r', encoding=ضابطہ) as م:
                خود.جےسن = json.load(م)
        else:
            خود.جےسن = مسل

    @property
    def متغیرات(خود):
        return [ب for ب in [خود._نام_عمودی_ستون(س) for س in خود.جےسن] if ب != 'تاریخ']

    def _کوائف_بنانا(خود, سے, تک, عرض, طول, بلندی, خاکے):

        کو = {خود._نام_عمودی_ستون(س): قیمت for س, قیمت in خود.جےسن.items()}
        اعداد_جےسن = pd.DataFrame(
            data={م: ق for م, ق in کو.items() if م != 'تاریخ'},
            index=خود._اشاریہ_پانڈا_بنانا(کو['تاریخ'])
        )
        return اعداد_جےسن