Source code for temporal.gui_support

"""
GUI support functions


(C) 2008-2011 by the GRASS Development Team
This program is free software under the GNU General Public
License (>=v2). Read the file COPYING that comes with GRASS
for details.

:authors: Soeren Gebbert
"""
from .core import get_available_temporal_mapsets, init_dbif
from .factory import dataset_factory
import grass.script as gscript

###############################################################################


[docs]def tlist_grouped(type, group_type=False, dbif=None): """List of temporal elements grouped by mapsets. Returns a dictionary where the keys are mapset names and the values are lists of space time datasets in that mapset. Example: .. code-block:: python >>> import grass.temporalas tgis >>> tgis.tlist_grouped('strds')['PERMANENT'] ['precipitation', 'temperature'] :param type: element type (strds, str3ds, stvds) :param group_type: TBD :return: directory of mapsets/elements """ result = {} dbif, connection_state_changed = init_dbif(dbif) mapset = None if type == "stds": types = ["strds", "str3ds", "stvds"] else: types = [type] for type in types: try: tlist_result = tlist(type=type, dbif=dbif) except gscript.ScriptError as e: gscript.warning(e) continue for line in tlist_result: try: name, mapset = line.split("@") except ValueError: gscript.warning(_("Invalid element '%s'") % line) continue if mapset not in result: if group_type: result[mapset] = {} else: result[mapset] = [] if group_type: if type in result[mapset]: result[mapset][type].append(name) else: result[mapset][type] = [ name, ] else: result[mapset].append(name) if connection_state_changed is True: dbif.close() return result
###############################################################################
[docs]def tlist(type, dbif=None): """Return a list of space time datasets of absolute and relative time :param type: element type (strds, str3ds, stvds) :return: a list of space time dataset ids """ id = None sp = dataset_factory(type, id) dbif, connection_state_changed = init_dbif(dbif) mapsets = get_available_temporal_mapsets() output = [] temporal_type = ["absolute", "relative"] for type in temporal_type: # For each available mapset for mapset in mapsets.keys(): # Table name if type == "absolute": table = sp.get_type() + "_view_abs_time" else: table = sp.get_type() + "_view_rel_time" # Create the sql selection statement sql = "SELECT id FROM " + table sql += " WHERE mapset = '%s'" % (mapset) sql += " ORDER BY id" dbif.execute(sql, mapset=mapset) rows = dbif.fetchall(mapset=mapset) # Append the ids of the space time datasets for row in rows: for col in row: output.append(str(col)) if connection_state_changed is True: dbif.close() return output