source: grass/trunk/lib/python/temporal/gui_support.py

Last change on this file was 74307, checked in by neteler, 5 years ago

i18N: cleanup gettext usage for Python code (fixes #3790) (contributed by pmav99)

  • Property svn:eol-style set to native
  • Property svn:mime-type set to text/x-python
File size: 3.3 KB
Line 
1"""
2GUI support functions
3
4
5(C) 2008-2011 by the GRASS Development Team
6This program is free software under the GNU General Public
7License (>=v2). Read the file COPYING that comes with GRASS
8for details.
9
10:authors: Soeren Gebbert
11"""
12from .core import get_available_temporal_mapsets, init_dbif
13from .factory import dataset_factory
14import grass.script as gscript
15
16###############################################################################
17
18
19def tlist_grouped(type, group_type=False, dbif=None):
20 """List of temporal elements grouped by mapsets.
21
22 Returns a dictionary where the keys are mapset
23 names and the values are lists of space time datasets in that
24 mapset. Example:
25
26 .. code-block:: python
27
28 >>> import grass.temporalas tgis
29 >>> tgis.tlist_grouped('strds')['PERMANENT']
30 ['precipitation', 'temperature']
31
32 :param type: element type (strds, str3ds, stvds)
33 :param group_type: TBD
34
35 :return: directory of mapsets/elements
36 """
37 result = {}
38 dbif, connected = init_dbif(dbif)
39
40 mapset = None
41 if type == 'stds':
42 types = ['strds', 'str3ds', 'stvds']
43 else:
44 types = [type]
45 for type in types:
46 try:
47 tlist_result = tlist(type=type, dbif=dbif)
48 except gscript.ScriptError as e:
49 warning(e)
50 continue
51
52 for line in tlist_result:
53 try:
54 name, mapset = line.split('@')
55 except ValueError:
56 warning(_("Invalid element '%s'") % line)
57 continue
58
59 if mapset not in result:
60 if group_type:
61 result[mapset] = {}
62 else:
63 result[mapset] = []
64
65 if group_type:
66 if type in result[mapset]:
67 result[mapset][type].append(name)
68 else:
69 result[mapset][type] = [name, ]
70 else:
71 result[mapset].append(name)
72
73 if connected is True:
74 dbif.close()
75
76 return result
77
78###############################################################################
79
80
81def tlist(type, dbif=None):
82 """Return a list of space time datasets of absolute and relative time
83
84 :param type: element type (strds, str3ds, stvds)
85
86 :return: a list of space time dataset ids
87 """
88 id = None
89 sp = dataset_factory(type, id)
90 dbif, connected = init_dbif(dbif)
91
92 mapsets = get_available_temporal_mapsets()
93
94 output = []
95 temporal_type = ["absolute", 'relative']
96 for type in temporal_type:
97 # For each available mapset
98 for mapset in mapsets.keys():
99 # Table name
100 if type == "absolute":
101 table = sp.get_type() + "_view_abs_time"
102 else:
103 table = sp.get_type() + "_view_rel_time"
104
105 # Create the sql selection statement
106 sql = "SELECT id FROM " + table
107 sql += " WHERE mapset = '%s'" % (mapset)
108 sql += " ORDER BY id"
109
110 dbif.execute(sql, mapset=mapset)
111 rows = dbif.fetchall(mapset=mapset)
112
113 # Append the ids of the space time datasets
114 for row in rows:
115 for col in row:
116 output.append(str(col))
117
118 if connected is True:
119 dbif.close()
120
121 return output
Note: See TracBrowser for help on using the repository browser.