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
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
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 })
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') })
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
def describe_uservar(self): if dballepresent: varinfo = dballe.varinfo(self.bcode) return varinfo.desc.lower() + " " + self.userunit else: return self.bcode
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 })
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 })
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 })
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})