コード例 #1
0
ファイル: volnd.py プロジェクト: ARPA-SIMC/dballe
    def __init__(self, name, dims, checkConflicts=True):
        """
        name = name of the variable (eg. "B12001")
        dims = list of Index objects one for every dimension
        if checkConflicts is True, then an exception is raised if two
            output values would end up filling the same matrix element
        """
        # Variable name, as a B table entry (e.g. "B12001")
        self.name = name

        # Tuple with all the dimension Index objects
        self.dims = dims

        # After finalise() has been called, it is the masked array with
        # all the values.  Before calling finalise(), it is the list of
        # collected data.
        self.vals = []

        # Maps attribute names to Data objects with the attribute
        # values.  The dimensions of the Data objects are fully
        # synchronised with this one.
        self.attrs = {}

        # Information about the variable
        self.info = dballe.varinfo(name)

        self._checkConflicts = checkConflicts

        self._lastPos = None
コード例 #2
0
    def __init__(self, name, dims, checkConflicts=True):
        """
        name = name of the variable (eg. "B12001")
        dims = list of Index objects one for every dimension
        if checkConflicts is True, then an exception is raised if two
            output values would end up filling the same matrix element
        """
        # Variable name, as a B table entry (e.g. "B12001")
        self.name = name

        # Tuple with all the dimension Index objects
        self.dims = dims

        # After finalise() has been called, it is the masked array with
        # all the values.  Before calling finalise(), it is the list of
        # collected data.
        self.vals = []

        # Maps attribute names to Data objects with the attribute
        # values.  The dimensions of the Data objects are fully
        # synchronised with this one.
        self.attrs = {}

        # Information about the variable
        self.info = dballe.varinfo(name)

        self._checkConflicts = checkConflicts

        self._lastPos = None
コード例 #3
0
ファイル: session.py プロジェクト: ARPA-SIMC/dballe-web
def describe_var(code: str) -> str:
    """
    Return a human-readable description for a varcode
    """
    try:
        info = dballe.varinfo(code)
        return f"{code}: {info.desc}"
    except KeyError:
        return code
コード例 #4
0
def menu(request, **kwargs):

    now = datetime.utcnow()
    showdate = (now - timedelta(minutes=30))
    year = '{:04d}'.format(showdate.year)
    month = '{:02d}'.format(showdate.month)
    day = '{:02d}'.format(showdate.day)
    hour = '{:02d}'.format(showdate.hour)

    ####   define what to put on menu #############

    metadata = []

    for mymeta in report_measurements:

        meta = {}

        if mymeta["level"] == "*":
            meta["leveltxt"] = "All levels"
        else:
            meta["leveltxt"] = dballe.describe_level(*mymeta["level"])

        if mymeta["trange"] == "*":
            meta["trangetxt"] = "All timeranges"
        else:
            meta["trangetxt"] = dballe.describe_trange(*mymeta["trange"])

        if mymeta["var"] == "*":
            meta["vartxt"] = "All vars"
        else:
            varinfo = dballe.varinfo(mymeta["var"])
            #meta["vartxt"]=varinfo.desc+" "+varinfo.unit
            meta["vartxt"] = varinfo.desc

        meta["var"] = mymeta["var"]
        meta["level"] = "%s,%s,%s,%s" % tuple(
            ("-" if v is None else str(v) for v in mymeta["level"]))
        meta["trange"] = "%s,%s,%s" % tuple(
            ("-" if v is None else str(v) for v in mymeta["trange"]))

        metadata.append(meta)

    return render(
        request,
        'showdata/menu.html',
        {
            "ident": "*",
            "coords": "*",
            "network": "*",
            #"trange":trange, "level":level, "var":var,
            "metadata": metadata,
            "year": year,
            "month": month,
            "day": day,
            "hour": hour
        })
コード例 #5
0
def stationdata(request, **kwargs):

    if kwargs.get("var") == "*":
        bcode = Bcode(bcode="B00001",
                      description="Undefined",
                      unit="Undefined",
                      userunit="",
                      scale=1.0,
                      offset=0.0)
    else:
        varinfo = dballe.varinfo(kwargs.get("var"))
        try:
            bcode = Bcode.objects.get(bcode=kwargs.get("var"))
        except:
            bcode = Bcode(bcode=kwargs.get("var"),
                          description=varinfo.desc,
                          unit=varinfo.unit,
                          userunit=varinfo.unit,
                          scale=1.0,
                          offset=0.0)

    spatialbox = {}
    for k in ('lonmin', 'latmin', 'lonmax', 'latmax'):
        if not request.GET.get(k, None) is None:
            spatialbox[k] = request.GET.get(k)

    timebox = {}
    for k in ('yearmin', 'monthmin', 'daymin', 'hourmin', 'minumin', 'secmin',
              'yearmax', 'monthmax', 'daymax', 'hourmax', 'minumax', 'secmax'):
        if not request.GET.get(k, None) is None:
            timebox[k] = request.GET.get(k)

    return render(
        request, 'showdata/stationdata.html', {
            "ident": kwargs.get("ident"),
            "coords": kwargs.get("coords"),
            "network": kwargs.get("network"),
            "trange": kwargs.get("trange"),
            "level": kwargs.get("level"),
            "var": kwargs.get("var"),
            "dsn": request.GET.get('dsn', defaultdsn),
            "bcode": bcode,
            "spatialbox": spatialbox,
            "timebox": timebox,
            "type": request.GET.get('type')
        })
コード例 #6
0
def tree_json(nodes, base_path, wildcards=False):
    results = []

    branchNode = {
        'allowChildren': 1,
        'expandable': 1,
        'leaf': 0,
    }
    leafNode = {
        'allowChildren': 0,
        'expandable': 0,
        'leaf': 1,
    }

    #Add a wildcard node if appropriate
    if len(nodes) > 1 and wildcards:
        wildcardNode = {'text': '*', 'id': base_path + '*'}

        if any(not n.is_leaf for n in nodes):
            wildcardNode.update(branchNode)

        else:
            wildcardNode.update(leafNode)

        results.append(wildcardNode)

    found = set()
    results_leaf = []
    results_branch = []
    for node in nodes:  #Now let's add the matching children
        if node.name in found:
            continue

        found.add(node.name)

        if dballepresent:
            position = (base_path + str(node.name)).count(".")
            if position == 0:
                text = "Data Level: " + node.name.split(
                    "_")[0] + " Station Type: " + node.name.split("_")[1]
            elif position == 1:
                text = "Ident: " + node.name
            elif position == 2:
                if node.name == "*":
                    text = node.name
                else:
                    text = "Lon: " + str(
                        int(node.name.split("_")[0]) /
                        100000.) + " Lat: " + str(
                            int(node.name.split("_")[1]) / 100000.)
            elif position == 3:
                text = "Network: " + node.name
            elif position == 4:
                if node.name == "*":
                    text = node.name
                else:
                    text = dballe.describe_trange(*toint(node.name))
            elif position == 5:
                if node.name == "*":
                    text = node.name
                else:
                    text = dballe.describe_level(*toint(node.name))
            elif position == 6:
                if node.name == "*":
                    text = node.name
                else:
                    varinfo = dballe.varinfo(node.name)
                    text = varinfo.desc.lower() + " " + varinfo.unit
            else:
                text = urllib.unquote_plus(str(node.name))

        else:
            text = urllib.unquote_plus(str(node.name))

        resultNode = {
            'text': text,
            'id': base_path + str(node.name),
        }

        if node.is_leaf:
            resultNode.update(leafNode)
            results_leaf.append(resultNode)
        else:
            resultNode.update(branchNode)
            results_branch.append(resultNode)

    results.extend(results_branch)
    results.extend(results_leaf)
    return results
コード例 #7
0
ファイル: models.py プロジェクト: alberanid/rmap
 def describe_uservar(self):
     if dballepresent:
         varinfo = dballe.varinfo(self.bcode)
         return varinfo.desc.lower() + " " + self.userunit
     else:
         return self.bcode
コード例 #8
0
def spatialseries(request,
                  html_template="showdata/spatialseries.html",
                  **kwargs):

    if kwargs.get("year"):
        if kwargs.get("month"):
            if kwargs.get("day"):
                if kwargs.get("hour"):
                    #HOURLY
                    timerequested = datetime(year=int(kwargs.get("year")),
                                             month=int(kwargs.get("month")),
                                             day=int(kwargs.get("day")),
                                             hour=int(kwargs.get("hour")))
                    delta = timedelta(hours=1)
                    dtprevious = timerequested - delta
                    dtnext = timerequested + delta
                    previous = reverse(
                        'showdata:spatialserieshourly',
                        kwargs={
                            "ident": kwargs.get("ident"),
                            "coords": kwargs.get("coords"),
                            "network": kwargs.get("network"),
                            "trange": kwargs.get("trange"),
                            "level": kwargs.get("level"),
                            "var": kwargs.get("var"),
                            "year": "{:04d}".format(dtprevious.year),
                            "month": "{:02d}".format(dtprevious.month),
                            "day": "{:02d}".format(dtprevious.day),
                            "hour": "{:02d}".format(dtprevious.hour)
                        }) + "?dsn=" + request.GET.get('dsn', defaultdsn)
                    next = reverse('showdata:spatialserieshourly',
                                   kwargs={
                                       "ident": kwargs.get("ident"),
                                       "coords": kwargs.get("coords"),
                                       "network": kwargs.get("network"),
                                       "trange": kwargs.get("trange"),
                                       "level": kwargs.get("level"),
                                       "var": kwargs.get("var"),
                                       "year": "{:04d}".format(dtnext.year),
                                       "month": "{:02d}".format(dtnext.month),
                                       "day": "{:02d}".format(dtnext.day),
                                       "hour": "{:02d}".format(dtnext.hour)
                                   }) + "?dsn=" + request.GET.get(
                                       'dsn', defaultdsn)
                    more = reverse('showdata:spatialseriesdaily',
                                   kwargs={
                                       "ident": kwargs.get("ident"),
                                       "coords": kwargs.get("coords"),
                                       "network": kwargs.get("network"),
                                       "trange": kwargs.get("trange"),
                                       "level": kwargs.get("level"),
                                       "var": kwargs.get("var"),
                                       "year": kwargs.get("year"),
                                       "month": kwargs.get("month"),
                                       "day": kwargs.get("day")
                                   }) + "?dsn=" + request.GET.get(
                                       'dsn', defaultdsn)
                    less = None
                    datefrom = kwargs.get("hour") + ":00_" + kwargs.get(
                        "year") + kwargs.get("month") + kwargs.get("day")
                    dateuntil = kwargs.get("hour") + ":59_" + kwargs.get(
                        "year") + kwargs.get("month") + kwargs.get("day")
                elif not request.GET.get('type') is None:
                    #DAILY RAINBO FILTER
                    timerequested = datetime(year=int(kwargs.get("year")),
                                             month=int(kwargs.get("month")),
                                             day=int(kwargs.get("day")))
                    delta = timedelta(days=1)
                    dtprevious = timerequested - delta
                    dtnext = timerequested + delta
                    previous = reverse('spatialseriesdaily',kwargs={
                        "ident":kwargs.get("ident"),
                        "coords":kwargs.get("coords"),
                        "network":kwargs.get("network"),
                        "trange":kwargs.get("trange"),
                        "level":kwargs.get("level"),
                        "var":kwargs.get("var"),
                        "year" :"{:04d}".format(dtprevious.year),
                        "month":"{:02d}".format(dtprevious.month),
                        "day"  :"{:02d}".format(dtprevious.day)})\
                        +"?dsn="+request.GET.get('dsn', defaultdsn)+"&type="+request.GET.get('type')
                    next= reverse('spatialseriesdaily', kwargs={
                        "ident":kwargs.get("ident"),
                        "coords":kwargs.get("coords"),
                        "network":kwargs.get("network"),
                        "trange":kwargs.get("trange"),
                        "level":kwargs.get("level"),
                        "var":kwargs.get("var"),
                        "year" :"{:04d}".format(dtnext.year),
                        "month":"{:02d}".format(dtnext.month),
                        "day"  :"{:02d}".format(dtnext.day)})\
                        +"?dsn="+request.GET.get('dsn', defaultdsn)+"&type="+request.GET.get('type')
                    datefrom = "00:00_" + kwargs.get("year") + kwargs.get(
                        "month") + kwargs.get("day")
                    dateuntil = "23:59_" + kwargs.get("year") + kwargs.get(
                        "month") + kwargs.get("day")
                    less = None
                    more = None
                else:
                    #DAILY
                    timerequested = datetime(year=int(kwargs.get("year")),
                                             month=int(kwargs.get("month")),
                                             day=int(kwargs.get("day")))
                    delta = timedelta(days=1)
                    dtprevious = timerequested - delta
                    dtnext = timerequested + delta
                    previous = reverse(
                        'showdata:spatialseriesdaily',
                        kwargs={
                            "ident": kwargs.get("ident"),
                            "coords": kwargs.get("coords"),
                            "network": kwargs.get("network"),
                            "trange": kwargs.get("trange"),
                            "level": kwargs.get("level"),
                            "var": kwargs.get("var"),
                            "year": "{:04d}".format(dtprevious.year),
                            "month": "{:02d}".format(dtprevious.month),
                            "day": "{:02d}".format(dtprevious.day)
                        }) + "?dsn=" + request.GET.get('dsn', defaultdsn)
                    next = reverse('showdata:spatialseriesdaily',
                                   kwargs={
                                       "ident": kwargs.get("ident"),
                                       "coords": kwargs.get("coords"),
                                       "network": kwargs.get("network"),
                                       "trange": kwargs.get("trange"),
                                       "level": kwargs.get("level"),
                                       "var": kwargs.get("var"),
                                       "year": "{:04d}".format(dtnext.year),
                                       "month": "{:02d}".format(dtnext.month),
                                       "day": "{:02d}".format(dtnext.day)
                                   }) + "?dsn=" + request.GET.get(
                                       'dsn', defaultdsn)
                    more = None
                    less = reverse('showdata:spatialserieshourly',
                                   kwargs={
                                       "ident": kwargs.get("ident"),
                                       "coords": kwargs.get("coords"),
                                       "network": kwargs.get("network"),
                                       "trange": kwargs.get("trange"),
                                       "level": kwargs.get("level"),
                                       "var": kwargs.get("var"),
                                       "year": kwargs.get("year"),
                                       "month": kwargs.get("month"),
                                       "day": kwargs.get("day"),
                                       "hour": "12"
                                   }) + "?dsn=" + request.GET.get(
                                       'dsn', defaultdsn)
                    datefrom = "00:00_" + kwargs.get("year") + kwargs.get(
                        "month") + kwargs.get("day")
                    dateuntil = "23:59_" + kwargs.get("year") + kwargs.get(
                        "month") + kwargs.get("day")
            else:
                #MONTHLY
                #WRONG
                previous = None
                next = None
                less = None
                more = None
                datefrom = ""
                dateuntil = ""
        else:
            #YEARLY
            #WRONG
            previous = None
            next = None
            less = None
            more = None
            datefrom = ""
            dateuntil = ""
    else:
        #WRONG
        previous = None
        next = None
        less = None
        more = None
        datefrom = ""
        dateuntil = ""

    if kwargs.get("level") == "*":
        leveltxt = "All levels"
    else:
        leveltxt = dballe.describe_level(*[
            None if v == "-" else int(v)
            for v in kwargs.get("level").split(",")
        ])

    if kwargs.get("trange") == "*":
        trangetxt = "All timeranges"
    else:
        trangetxt = dballe.describe_trange(*[
            None if v == "-" else int(v)
            for v in kwargs.get("trange").split(",")
        ])

    if kwargs.get("var") == "*":
        vartxt = "All vars"
        bcode = Bcode(bcode="B00001",
                      description="Undefined",
                      unit="Undefined",
                      userunit="",
                      scale=1.0,
                      offset=0.0)
    else:
        varinfo = dballe.varinfo(kwargs.get("var"))
        #vartxt=varinfo.desc+" "+varinfo.unit
        vartxt = varinfo.desc
        bcode = Bcode.objects.get(bcode=kwargs.get("var"))

    spatialbox = {}
    for k in ('lonmin', 'latmin', 'lonmax', 'latmax'):
        if not request.GET.get(k, None) is None:
            spatialbox[k] = request.GET.get(k)

    timebox = {}
    for k in ('yearmin', 'monthmin', 'daymin', 'hourmin', 'minumin', 'secmin',
              'yearmax', 'monthmax', 'daymax', 'hourmax', 'minumax', 'secmax'):
        if not request.GET.get(k, None) is None:
            timebox[k] = request.GET.get(k)

    return render(
        request, html_template, {
            "ident": kwargs.get("ident"),
            "coords": kwargs.get("coords"),
            "network": kwargs.get("network"),
            "trange": kwargs.get("trange"),
            "level": kwargs.get("level"),
            "var": kwargs.get("var"),
            "year": kwargs.get("year"),
            "month": kwargs.get("month"),
            "day": kwargs.get("day"),
            "hour": kwargs.get("hour"),
            "vartxt": vartxt,
            "trangetxt": trangetxt,
            "leveltxt": leveltxt,
            "datefrom": datefrom,
            "dateuntil": dateuntil,
            "previous": previous,
            "next": next,
            "less": less,
            "more": more,
            "dsn": request.GET.get('dsn', defaultdsn),
            "bcode": bcode,
            "spatialbox": spatialbox,
            "timebox": timebox
        })
コード例 #9
0
def timeseries(request, **kwargs):

    if kwargs.get("year"):
        if kwargs.get("month"):
            if kwargs.get("day"):
                if kwargs.get("hour"):
                    #HOURLY
                    timerequested = datetime(year=int(kwargs.get("year")),
                                             month=int(kwargs.get("month")),
                                             day=int(kwargs.get("day")),
                                             hour=int(kwargs.get("hour")))
                    delta = timedelta(hours=1)
                    dtprevious = timerequested - delta
                    dtnext = timerequested + delta
                    previous = reverse('showdata:timeserieshourly',
                                       kwargs={
                                           "ident":
                                           kwargs.get("ident"),
                                           "coords":
                                           kwargs.get("coords"),
                                           "network":
                                           kwargs.get("network"),
                                           "trange":
                                           kwargs.get("trange"),
                                           "level":
                                           kwargs.get("level"),
                                           "var":
                                           kwargs.get("var"),
                                           "year":
                                           "{:04d}".format(dtprevious.year),
                                           "month":
                                           "{:02d}".format(dtprevious.month),
                                           "day":
                                           "{:02d}".format(dtprevious.day),
                                           "hour":
                                           "{:02d}".format(dtprevious.hour)
                                       })
                    next = reverse('showdata:timeserieshourly',
                                   kwargs={
                                       "ident": kwargs.get("ident"),
                                       "coords": kwargs.get("coords"),
                                       "network": kwargs.get("network"),
                                       "trange": kwargs.get("trange"),
                                       "level": kwargs.get("level"),
                                       "var": kwargs.get("var"),
                                       "year": "{:04d}".format(dtnext.year),
                                       "month": "{:02d}".format(dtnext.month),
                                       "day": "{:02d}".format(dtnext.day),
                                       "hour": "{:02d}".format(dtnext.hour)
                                   })
                    more = reverse('showdata:timeseriesdaily',
                                   kwargs={
                                       "ident": kwargs.get("ident"),
                                       "coords": kwargs.get("coords"),
                                       "network": kwargs.get("network"),
                                       "trange": kwargs.get("trange"),
                                       "level": kwargs.get("level"),
                                       "var": kwargs.get("var"),
                                       "year": kwargs.get("year"),
                                       "month": kwargs.get("month"),
                                       "day": kwargs.get("day")
                                   })
                    less = None
                    datefrom = kwargs.get("hour") + ":00_" + kwargs.get(
                        "year") + kwargs.get("month") + kwargs.get("day")
                    dateuntil = kwargs.get("hour") + ":59_" + kwargs.get(
                        "year") + kwargs.get("month") + kwargs.get("day")
                else:
                    #DAILY
                    timerequested = datetime(year=int(kwargs.get("year")),
                                             month=int(kwargs.get("month")),
                                             day=int(kwargs.get("day")))
                    delta = timedelta(days=1)
                    dtprevious = timerequested - delta
                    dtnext = timerequested + delta
                    previous = reverse('showdata:timeseriesdaily',
                                       kwargs={
                                           "ident":
                                           kwargs.get("ident"),
                                           "coords":
                                           kwargs.get("coords"),
                                           "network":
                                           kwargs.get("network"),
                                           "trange":
                                           kwargs.get("trange"),
                                           "level":
                                           kwargs.get("level"),
                                           "var":
                                           kwargs.get("var"),
                                           "year":
                                           "{:04d}".format(dtprevious.year),
                                           "month":
                                           "{:02d}".format(dtprevious.month),
                                           "day":
                                           "{:02d}".format(dtprevious.day)
                                       })
                    next = reverse('showdata:timeseriesdaily',
                                   kwargs={
                                       "ident": kwargs.get("ident"),
                                       "coords": kwargs.get("coords"),
                                       "network": kwargs.get("network"),
                                       "trange": kwargs.get("trange"),
                                       "level": kwargs.get("level"),
                                       "var": kwargs.get("var"),
                                       "year": "{:04d}".format(dtnext.year),
                                       "month": "{:02d}".format(dtnext.month),
                                       "day": "{:02d}".format(dtnext.day)
                                   })
                    more = reverse('showdata:timeseriesmonthly',
                                   kwargs={
                                       "ident": kwargs.get("ident"),
                                       "coords": kwargs.get("coords"),
                                       "network": kwargs.get("network"),
                                       "trange": kwargs.get("trange"),
                                       "level": kwargs.get("level"),
                                       "var": kwargs.get("var"),
                                       "year": kwargs.get("year"),
                                       "month": kwargs.get("month")
                                   })
                    less = reverse('showdata:timeserieshourly',
                                   kwargs={
                                       "ident": kwargs.get("ident"),
                                       "coords": kwargs.get("coords"),
                                       "network": kwargs.get("network"),
                                       "trange": kwargs.get("trange"),
                                       "level": kwargs.get("level"),
                                       "var": kwargs.get("var"),
                                       "year": kwargs.get("year"),
                                       "month": kwargs.get("month"),
                                       "day": kwargs.get("day"),
                                       "hour": "12"
                                   })
                    datefrom = "00:00_" + kwargs.get("year") + kwargs.get(
                        "month") + kwargs.get("day")
                    dateuntil = "23:59_" + kwargs.get("year") + kwargs.get(
                        "month") + kwargs.get("day")
            else:
                #MONTHLY
                timerequested = datetime(year=int(kwargs.get("year")),
                                         month=int(kwargs.get("month")),
                                         day=15)
                delta = timedelta(days=30)
                dtprevious = timerequested - delta
                dtnext = timerequested + delta
                previous = reverse('showdata:timeseriesmonthly',
                                   kwargs={
                                       "ident": kwargs.get("ident"),
                                       "coords": kwargs.get("coords"),
                                       "network": kwargs.get("network"),
                                       "trange": kwargs.get("trange"),
                                       "level": kwargs.get("level"),
                                       "var": kwargs.get("var"),
                                       "year":
                                       "{:04d}".format(dtprevious.year),
                                       "month":
                                       "{:02d}".format(dtprevious.month)
                                   })
                next = reverse('showdata:timeseriesmonthly',
                               kwargs={
                                   "ident": kwargs.get("ident"),
                                   "coords": kwargs.get("coords"),
                                   "network": kwargs.get("network"),
                                   "trange": kwargs.get("trange"),
                                   "level": kwargs.get("level"),
                                   "var": kwargs.get("var"),
                                   "year": "{:04d}".format(dtnext.year),
                                   "month": "{:02d}".format(dtnext.month)
                               })
                more = reverse('showdata:timeseriesyearly',
                               kwargs={
                                   "ident": kwargs.get("ident"),
                                   "coords": kwargs.get("coords"),
                                   "network": kwargs.get("network"),
                                   "trange": kwargs.get("trange"),
                                   "level": kwargs.get("level"),
                                   "var": kwargs.get("var"),
                                   "year": kwargs.get("year")
                               })
                less = reverse('showdata:timeseriesdaily',
                               kwargs={
                                   "ident": kwargs.get("ident"),
                                   "coords": kwargs.get("coords"),
                                   "network": kwargs.get("network"),
                                   "trange": kwargs.get("trange"),
                                   "level": kwargs.get("level"),
                                   "var": kwargs.get("var"),
                                   "year": kwargs.get("year"),
                                   "month": kwargs.get("month"),
                                   "day": "15"
                               })
                datefrom = "00:00_" + kwargs.get("year") + kwargs.get(
                    "month") + "01"
                lastdayinmonth = "{:02d}".format(
                    (dtnext.replace(day=1) - timedelta(days=1)).day)
                dateuntil = "23:59_" + kwargs.get("year") + kwargs.get(
                    "month") + lastdayinmonth
        else:
            #YEARLY
            timerequested = datetime(year=int(kwargs.get("year")),
                                     month=6,
                                     day=15)
            delta = timedelta(days=30 * 12)
            dtprevious = timerequested - delta
            dtnext = timerequested + delta
            previous = reverse('showdata:timeseriesyearly',
                               kwargs={
                                   "ident": kwargs.get("ident"),
                                   "coords": kwargs.get("coords"),
                                   "network": kwargs.get("network"),
                                   "trange": kwargs.get("trange"),
                                   "level": kwargs.get("level"),
                                   "var": kwargs.get("var"),
                                   "year": "{:04d}".format(dtprevious.year)
                               })
            next = reverse('showdata:timeseriesyearly',
                           kwargs={
                               "ident": kwargs.get("ident"),
                               "coords": kwargs.get("coords"),
                               "network": kwargs.get("network"),
                               "trange": kwargs.get("trange"),
                               "level": kwargs.get("level"),
                               "var": kwargs.get("var"),
                               "year": "{:04d}".format(dtnext.year)
                           })
            more = None
            less = reverse('showdata:timeseriesmonthly',
                           kwargs={
                               "ident": kwargs.get("ident"),
                               "coords": kwargs.get("coords"),
                               "network": kwargs.get("network"),
                               "trange": kwargs.get("trange"),
                               "level": kwargs.get("level"),
                               "var": kwargs.get("var"),
                               "year": kwargs.get("year"),
                               "month": "06"
                           })
            datefrom = "00:00_" + kwargs.get("year") + "0101"
            dateuntil = "23:59_" + kwargs.get("year") + "1231"
    else:
        #WRONG
        previous = None
        next = None
        less = None
        more = None
        datefrom = ""
        dateuntil = ""

    if kwargs.get("level") == "*":
        leveltxt = "All levels"
    else:
        leveltxt = dballe.describe_level(*[
            None if v == "-" else int(v)
            for v in kwargs.get("level").split(",")
        ])

    if kwargs.get("trange") == "*":
        trangetxt = "All timeranges"
    else:
        trangetxt = dballe.describe_trange(*[
            None if v == "-" else int(v)
            for v in kwargs.get("trange").split(",")
        ])

    if kwargs.get("var") == "*":
        vartxt = "All vars"
        bcode = Bcode(bcode="B00001",
                      description="Undefined",
                      unit="Undefined",
                      userunit="",
                      scale=1.0,
                      offset=0.0)
    else:
        varinfo = dballe.varinfo(kwargs.get("var"))
        #vartxt=varinfo.desc+" "+varinfo.unit
        vartxt = varinfo.desc
        bcode = Bcode.objects.get(bcode=kwargs.get("var"))

    return render(
        request, 'showdata/timeseries.html', {
            "ident": kwargs.get("ident"),
            "coords": kwargs.get("coords"),
            "undescored_coords": kwargs.get("coords").replace(",", "_"),
            "network": kwargs.get("network"),
            "trange": kwargs.get("trange"),
            "undescored_trange": kwargs.get("trange").replace(",", "_"),
            "level": kwargs.get("level"),
            "undescored_level": kwargs.get("level").replace(",", "_"),
            "var": kwargs.get("var"),
            "year": kwargs.get("year"),
            "month": kwargs.get("month"),
            "day": kwargs.get("day"),
            "datefrom": datefrom,
            "dateuntil": dateuntil,
            "vartxt": vartxt,
            "trangetxt": trangetxt,
            "leveltxt": leveltxt,
            "previous": previous,
            "next": next,
            "less": less,
            "more": more,
            "type": request.GET.get('type', 'report_fixed'),
            "bcode": bcode
        })
コード例 #10
0
def timeseries(request, html_template="showdata/timeseries.html", **kwargs):

    dsn = request.GET.get('dsn', defaulttimedsn)
    if (dsn == "report" or dsn == "sample"):
        dsn += "_fixed"  # default to fixed dsn

    if kwargs.get("year"):
        if kwargs.get("month"):
            if kwargs.get("day"):
                if kwargs.get("hour"):
                    #HOURLY
                    timerequested = datetime(year=int(kwargs.get("year")),
                                             month=int(kwargs.get("month")),
                                             day=int(kwargs.get("day")),
                                             hour=int(kwargs.get("hour")))
                    delta = timedelta(hours=1)
                    dtprevious = timerequested - delta
                    dtnext = timerequested + delta
                    previous = reverse(
                        'showdata:timeserieshourly',
                        kwargs={
                            "ident": kwargs.get("ident"),
                            "coords": kwargs.get("coords"),
                            "network": kwargs.get("network"),
                            "trange": kwargs.get("trange"),
                            "level": kwargs.get("level"),
                            "var": kwargs.get("var"),
                            "year": "{:04d}".format(dtprevious.year),
                            "month": "{:02d}".format(dtprevious.month),
                            "day": "{:02d}".format(dtprevious.day),
                            "hour": "{:02d}".format(dtprevious.hour)
                        }) + "?dsn=" + dsn
                    next = reverse('showdata:timeserieshourly',
                                   kwargs={
                                       "ident": kwargs.get("ident"),
                                       "coords": kwargs.get("coords"),
                                       "network": kwargs.get("network"),
                                       "trange": kwargs.get("trange"),
                                       "level": kwargs.get("level"),
                                       "var": kwargs.get("var"),
                                       "year": "{:04d}".format(dtnext.year),
                                       "month": "{:02d}".format(dtnext.month),
                                       "day": "{:02d}".format(dtnext.day),
                                       "hour": "{:02d}".format(dtnext.hour)
                                   }) + "?dsn=" + dsn
                    more = reverse('showdata:timeseriesdaily',
                                   kwargs={
                                       "ident": kwargs.get("ident"),
                                       "coords": kwargs.get("coords"),
                                       "network": kwargs.get("network"),
                                       "trange": kwargs.get("trange"),
                                       "level": kwargs.get("level"),
                                       "var": kwargs.get("var"),
                                       "year": kwargs.get("year"),
                                       "month": kwargs.get("month"),
                                       "day": kwargs.get("day")
                                   }) + "?dsn=" + dsn
                    less = None
                    datefrom = kwargs.get("hour") + ":00_" + kwargs.get(
                        "year") + kwargs.get("month") + kwargs.get("day")
                    dateuntil = kwargs.get("hour") + ":59_" + kwargs.get(
                        "year") + kwargs.get("month") + kwargs.get("day")
                else:
                    #DAILY
                    timerequested = datetime(year=int(kwargs.get("year")),
                                             month=int(kwargs.get("month")),
                                             day=int(kwargs.get("day")))
                    delta = timedelta(days=1)
                    dtprevious = timerequested - delta
                    dtnext = timerequested + delta
                    previous = reverse(
                        'showdata:timeseriesdaily',
                        kwargs={
                            "ident": kwargs.get("ident"),
                            "coords": kwargs.get("coords"),
                            "network": kwargs.get("network"),
                            "trange": kwargs.get("trange"),
                            "level": kwargs.get("level"),
                            "var": kwargs.get("var"),
                            "year": "{:04d}".format(dtprevious.year),
                            "month": "{:02d}".format(dtprevious.month),
                            "day": "{:02d}".format(dtprevious.day)
                        }) + "?dsn=" + dsn
                    next = reverse('showdata:timeseriesdaily',
                                   kwargs={
                                       "ident": kwargs.get("ident"),
                                       "coords": kwargs.get("coords"),
                                       "network": kwargs.get("network"),
                                       "trange": kwargs.get("trange"),
                                       "level": kwargs.get("level"),
                                       "var": kwargs.get("var"),
                                       "year": "{:04d}".format(dtnext.year),
                                       "month": "{:02d}".format(dtnext.month),
                                       "day": "{:02d}".format(dtnext.day)
                                   }) + "?dsn=" + dsn
                    more = reverse('showdata:timeseriesmonthly',
                                   kwargs={
                                       "ident": kwargs.get("ident"),
                                       "coords": kwargs.get("coords"),
                                       "network": kwargs.get("network"),
                                       "trange": kwargs.get("trange"),
                                       "level": kwargs.get("level"),
                                       "var": kwargs.get("var"),
                                       "year": kwargs.get("year"),
                                       "month": kwargs.get("month")
                                   }) + "?dsn=" + dsn
                    less = reverse('showdata:timeserieshourly',
                                   kwargs={
                                       "ident": kwargs.get("ident"),
                                       "coords": kwargs.get("coords"),
                                       "network": kwargs.get("network"),
                                       "trange": kwargs.get("trange"),
                                       "level": kwargs.get("level"),
                                       "var": kwargs.get("var"),
                                       "year": kwargs.get("year"),
                                       "month": kwargs.get("month"),
                                       "day": kwargs.get("day"),
                                       "hour": "12"
                                   }) + "?dsn=" + dsn
                    datefrom = "00:00_" + kwargs.get("year") + kwargs.get(
                        "month") + kwargs.get("day")
                    dateuntil = "23:59_" + kwargs.get("year") + kwargs.get(
                        "month") + kwargs.get("day")
            else:
                #MONTHLY
                timerequested = datetime(year=int(kwargs.get("year")),
                                         month=int(kwargs.get("month")),
                                         day=15)
                delta = timedelta(days=30)
                dtprevious = timerequested - delta
                dtnext = timerequested + delta
                previous = reverse(
                    'showdata:timeseriesmonthly',
                    kwargs={
                        "ident": kwargs.get("ident"),
                        "coords": kwargs.get("coords"),
                        "network": kwargs.get("network"),
                        "trange": kwargs.get("trange"),
                        "level": kwargs.get("level"),
                        "var": kwargs.get("var"),
                        "year": "{:04d}".format(dtprevious.year),
                        "month": "{:02d}".format(dtprevious.month)
                    }) + "?dsn=" + dsn
                next = reverse('showdata:timeseriesmonthly',
                               kwargs={
                                   "ident": kwargs.get("ident"),
                                   "coords": kwargs.get("coords"),
                                   "network": kwargs.get("network"),
                                   "trange": kwargs.get("trange"),
                                   "level": kwargs.get("level"),
                                   "var": kwargs.get("var"),
                                   "year": "{:04d}".format(dtnext.year),
                                   "month": "{:02d}".format(dtnext.month)
                               }) + "?dsn=" + dsn
                more = reverse('showdata:timeseriesyearly',
                               kwargs={
                                   "ident": kwargs.get("ident"),
                                   "coords": kwargs.get("coords"),
                                   "network": kwargs.get("network"),
                                   "trange": kwargs.get("trange"),
                                   "level": kwargs.get("level"),
                                   "var": kwargs.get("var"),
                                   "year": kwargs.get("year")
                               }) + "?dsn=" + dsn
                less = reverse('showdata:timeseriesdaily',
                               kwargs={
                                   "ident": kwargs.get("ident"),
                                   "coords": kwargs.get("coords"),
                                   "network": kwargs.get("network"),
                                   "trange": kwargs.get("trange"),
                                   "level": kwargs.get("level"),
                                   "var": kwargs.get("var"),
                                   "year": kwargs.get("year"),
                                   "month": kwargs.get("month"),
                                   "day": "15"
                               }) + "?dsn=" + dsn
                datefrom = "00:00_" + kwargs.get("year") + kwargs.get(
                    "month") + "01"
                lastdayinmonth = "{:02d}".format(
                    (dtnext.replace(day=1) - timedelta(days=1)).day)
                dateuntil = "23:59_" + kwargs.get("year") + kwargs.get(
                    "month") + lastdayinmonth
        else:
            #YEARLY
            timerequested = datetime(year=int(kwargs.get("year")),
                                     month=6,
                                     day=15)
            delta = timedelta(days=30 * 12)
            dtprevious = timerequested - delta
            dtnext = timerequested + delta
            previous = reverse('showdata:timeseriesyearly',
                               kwargs={
                                   "ident": kwargs.get("ident"),
                                   "coords": kwargs.get("coords"),
                                   "network": kwargs.get("network"),
                                   "trange": kwargs.get("trange"),
                                   "level": kwargs.get("level"),
                                   "var": kwargs.get("var"),
                                   "year": "{:04d}".format(dtprevious.year)
                               }) + "?dsn=" + dsn
            next = reverse('showdata:timeseriesyearly',
                           kwargs={
                               "ident": kwargs.get("ident"),
                               "coords": kwargs.get("coords"),
                               "network": kwargs.get("network"),
                               "trange": kwargs.get("trange"),
                               "level": kwargs.get("level"),
                               "var": kwargs.get("var"),
                               "year": "{:04d}".format(dtnext.year)
                           }) + "?dsn=" + dsn
            more = None
            less = reverse('showdata:timeseriesmonthly',
                           kwargs={
                               "ident": kwargs.get("ident"),
                               "coords": kwargs.get("coords"),
                               "network": kwargs.get("network"),
                               "trange": kwargs.get("trange"),
                               "level": kwargs.get("level"),
                               "var": kwargs.get("var"),
                               "year": kwargs.get("year"),
                               "month": "06"
                           }) + "?dsn=" + dsn
            datefrom = "00:00_" + kwargs.get("year") + "0101"
            dateuntil = "23:59_" + kwargs.get("year") + "1231"
    else:
        #WRONG
        previous = None
        next = None
        less = None
        more = None
        datefrom = ""
        dateuntil = ""

    if kwargs.get("level") == "*":
        leveltxt = "All levels"
    else:
        leveltxt = dballe.describe_level(*[
            None if v == "-" else int(v)
            for v in kwargs.get("level").split(",")
        ])

    if kwargs.get("trange") == "*":
        trangetxt = "All timeranges"
    else:
        trangetxt = dballe.describe_trange(*[
            None if v == "-" else int(v)
            for v in kwargs.get("trange").split(",")
        ])

    if kwargs.get("var") == "*":
        bcode = Bcode(bcode="B00001",
                      description="Undefined",
                      unit="Undefined",
                      userunit="",
                      scale=1.0,
                      offset=0.0)
    else:
        varinfo = dballe.varinfo(kwargs.get("var"))
        #vartxt=varinfo.desc+" "+varinfo.unit
        try:
            bcode = Bcode.objects.get(bcode=kwargs.get("var"))
        except:
            bcode = Bcode(bcode=kwargs.get("var"),
                          description=varinfo.desc,
                          unit=varinfo.unit,
                          userunit=varinfo.unit,
                          scale=1.0,
                          offset=0.0)

    spatialbox = {}
    for k in ('lonmin', 'latmin', 'lonmax', 'latmax'):
        if not request.GET.get(k, None) is None:
            spatialbox[k] = request.GET.get(k)

    timebox = {}
    for k in ('yearmin', 'monthmin', 'daymin', 'hourmin', 'minumin', 'secmin',
              'yearmax', 'monthmax', 'daymax', 'hourmax', 'minumax', 'secmax'):
        if not request.GET.get(k, None) is None:
            timebox[k] = request.GET.get(k)

    return render(
        request, html_template, {
            "ident": kwargs.get("ident"),
            "coords": kwargs.get("coords"),
            "undescored_coords": kwargs.get("coords").replace(",", "_"),
            "network": kwargs.get("network"),
            "trange": kwargs.get("trange"),
            "undescored_trange": kwargs.get("trange").replace(",", "_"),
            "level": kwargs.get("level"),
            "undescored_level": kwargs.get("level").replace(",", "_"),
            "var": kwargs.get("var"),
            "year": kwargs.get("year"),
            "month": kwargs.get("month"),
            "day": kwargs.get("day"),
            "hour": kwargs.get("hour"),
            "datefrom": datefrom,
            "dateuntil": dateuntil,
            "trangetxt": trangetxt,
            "leveltxt": leveltxt,
            "previous": previous,
            "next": next,
            "less": less,
            "more": more,
            "dsn": dsn,
            "bcode": bcode,
            "spatialbox": spatialbox,
            "timebox": timebox
        })
コード例 #11
0
def spatialseries(request, **kwargs):

    if kwargs.get("year"):
        if kwargs.get("month"):
            if kwargs.get("day"):
                if kwargs.get("hour"):
                    #HOURLY
                    timerequested=datetime(year=int(kwargs.get("year")), month=int(kwargs.get("month")), day=int(kwargs.get("day")), hour=int(kwargs.get("hour")))
                    delta=timedelta(hours=1)
                    dtprevious = timerequested - delta
                    dtnext     = timerequested + delta
                    previous = reverse('showdata:spatialserieshourly', kwargs={
                        "ident":kwargs.get("ident"),
                        "coords":kwargs.get("coords"), 
                        "network":kwargs.get("network"), 
                        "trange":kwargs.get("trange"),
                        "level":kwargs.get("level"),
                        "var":kwargs.get("var"),
                        "year" :"{:04d}".format(dtprevious.year),
                        "month":"{:02d}".format(dtprevious.month),
                        "day"  :"{:02d}".format(dtprevious.day),
                        "hour" :"{:02d}".format(dtprevious.hour)})
                    next= reverse('showdata:spatialserieshourly', kwargs={
                        "ident":kwargs.get("ident"),
                        "coords":kwargs.get("coords"), 
                        "network":kwargs.get("network"), 
                        "trange":kwargs.get("trange"),
                        "level":kwargs.get("level"),
                        "var":kwargs.get("var"),
                        "year" :"{:04d}".format(dtnext.year),
                        "month":"{:02d}".format(dtnext.month),
                        "day"  :"{:02d}".format(dtnext.day),
                        "hour" :"{:02d}".format(dtnext.hour)})
                    more=reverse('showdata:spatialseriesdaily', kwargs={
                        "ident":kwargs.get("ident"),
                        "coords":kwargs.get("coords"), 
                        "network":kwargs.get("network"), 
                        "trange":kwargs.get("trange"),
                        "level":kwargs.get("level"),
                        "var":kwargs.get("var"),
                        "year":kwargs.get("year"),
                        "month":kwargs.get("month"),
                        "day":kwargs.get("day")})
                    less=None
                    datefrom=kwargs.get("hour")+":00_"+kwargs.get("year")+kwargs.get("month")+kwargs.get("day")
                    dateuntil=kwargs.get("hour")+":59_"+kwargs.get("year")+kwargs.get("month")+kwargs.get("day")
                else:
                    #DAILY
                    timerequested=datetime(year=int(kwargs.get("year")), month=int(kwargs.get("month")), day=int(kwargs.get("day")))
                    delta=timedelta(days=1)
                    dtprevious = timerequested - delta
                    dtnext     = timerequested + delta
                    previous = reverse('showdata:spatialseriesdaily', kwargs={
                        "ident":kwargs.get("ident"),
                        "coords":kwargs.get("coords"), 
                        "network":kwargs.get("network"), 
                        "trange":kwargs.get("trange"),
                        "level":kwargs.get("level"),
                        "var":kwargs.get("var"),
                        "year" :"{:04d}".format(dtprevious.year),
                        "month":"{:02d}".format(dtprevious.month),
                        "day"  :"{:02d}".format(dtprevious.day)})
                    next= reverse('showdata:spatialseriesdaily', kwargs={
                        "ident":kwargs.get("ident"),
                        "coords":kwargs.get("coords"), 
                        "network":kwargs.get("network"), 
                        "trange":kwargs.get("trange"),
                        "level":kwargs.get("level"),
                        "var":kwargs.get("var"),
                        "year" :"{:04d}".format(dtnext.year),
                        "month":"{:02d}".format(dtnext.month),
                        "day"  :"{:02d}".format(dtnext.day)})
                    more=None
                    less=reverse('showdata:spatialserieshourly', kwargs={
                        "ident":kwargs.get("ident"),
                        "coords":kwargs.get("coords"), 
                        "network":kwargs.get("network"), 
                        "trange":kwargs.get("trange"),
                        "level":kwargs.get("level"),
                        "var":kwargs.get("var"),
                        "year":kwargs.get("year"),
                        "month":kwargs.get("month"),
                        "day":kwargs.get("day"),
                        "hour":"12"})
                    datefrom="00:00_"+kwargs.get("year")+kwargs.get("month")+kwargs.get("day")
                    dateuntil="23:59_"+kwargs.get("year")+kwargs.get("month")+kwargs.get("day")
            else:
                #MONTHLY
                #WRONG
                previous=None
                next=None
                less=None
                more=None
                datefrom=""
                dateuntil=""
        else:
            #YEARLY
            #WRONG
            previous=None
            next=None
            less=None
            more=None
            datefrom=""
            dateuntil=""
    else:
        #WRONG
        previous=None
        next=None
        less=None
        more=None
        datefrom=""
        dateuntil=""

    if kwargs.get("level")== "*":
        leveltxt="All levels"
    else:
        leveltxt=dballe.describe_level(*[None if v == "-" else int(v) for v in kwargs.get("level").split(",")])

    if kwargs.get("trange")== "*":
        trangetxt="All timeranges"
    else:
        trangetxt=dballe.describe_trange(*[None if v == "-" else int(v) for v in kwargs.get("trange").split(",")])

    if kwargs.get("var")== "*":
        vartxt="All vars"
    else:
        varinfo=dballe.varinfo(kwargs.get("var"))
        vartxt=varinfo.desc+" "+varinfo.unit
    
    return render(request, 'showdata/spatialseries.html',{
        "ident":kwargs.get("ident"), "coords":kwargs.get("coords"), 
        "network":kwargs.get("network"), "trange":kwargs.get("trange"), 
        "level":kwargs.get("level"), "var":kwargs.get("var"), 
        "year":kwargs.get("year"), "month":kwargs.get("month"), "day":kwargs.get("day"), 
        "hour":kwargs.get("hour"), 
        "vartxt":vartxt, "trangetxt":trangetxt, "leveltxt":leveltxt,
        "datefrom":datefrom,"dateuntil":dateuntil,
        "previous":previous,"next":next,"less":less,"more":more})