Skip to content

Commit

Permalink
v.what.strds: add capabilities to use names also for temporal dataset…
Browse files Browse the repository at this point in the history
… with minutes and seconds granularity

git-svn-id: https://svn.osgeo.org/grass/grass/trunk@69331 15284696-431f-4ddb-bdfa-cd5b030d7da7
  • Loading branch information
lucadelu committed Sep 1, 2016
1 parent d9fd47f commit d47ec42
Showing 1 changed file with 16 additions and 7 deletions.
23 changes: 16 additions & 7 deletions scripts/v.what.strds/v.what.strds.py
Original file line number Diff line number Diff line change
Expand Up @@ -62,28 +62,34 @@
class Sample(object):

def __init__(self, start=None, end=None, raster_names=None,
strds_name=None):
strds_name=None, granularity=None):
self.start = start
self.end = end
if raster_names is not None:
self.raster_names = raster_names
else:
self.raster_names = []
self.strds_name = strds_name
self.granu = granularity

def __str__(self):
return "Start: %s\nEnd: %s\nNames: %s\n" % (str(self.start),
str(self.end),
str(self.raster_names))

def printDay(self, date='start'):
output = ''
if date == 'start':
return str(self.start).split(' ')[0].replace('-', '_')
output = str(self.start).split(' ')[0].replace('-', '_')
elif date == 'end':
return str(self.end).split(' ')[0].replace('-', '_')
output = str(self.end).split(' ')[0].replace('-', '_')
else:
grass.fatal("The values accepted by printDay in Sample are:"
" 'start', 'end'")
if self.granu:
if self.granu.find('minute') != -1 or self.granu.find('second') != -1:
output += '_' + str(self.start).split(' ')[1].replace(':', '_')
return output

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

Expand Down Expand Up @@ -127,6 +133,7 @@ def main():
first_strds = tgis.open_old_stds(strds_names[0], "strds", dbif)
# Single space time raster dataset
if len(strds_names) == 1:
granu = first_strds.get_granularity()
rows = first_strds.get_registered_maps("name,mapset,start_time,end_time",
tempwhere, "start_time",
dbif)
Expand All @@ -135,13 +142,12 @@ def main():
dbif.close()
grass.fatal(_("Space time raster dataset <%s> is empty") %
first_strds.get_id())

for row in rows:
start = row["start_time"]
end = row["end_time"]
raster_maps = [row["name"] + "@" + row["mapset"], ]

s = Sample(start, end, raster_maps, first_strds.get_name())
s = Sample(start, end, raster_maps, first_strds.get_name(), granu)
samples.append(s)
else:
# Multiple space time raster datasets
Expand All @@ -162,7 +168,7 @@ def main():
False, None,
"equal", False,
False)

#TODO check granularity for multiple STRDS
for i in range(len(mapmatrizes[0])):
isvalid = True
mapname_list = []
Expand Down Expand Up @@ -205,11 +211,14 @@ def main():

if len(pymap.dblinks) == 0:
try:
pymap.close()
grass.run_command("v.db.addtable", map=output)
except CalledModuleError:
dbif.close()
grass.fatal(_("Unable to add table <%s> to vector map <%s>" % output))
pymap.close()
if pymap.is_open():
pymap.close()

for sample in samples:
raster_names = sample.raster_names
# Call v.what.rast for each raster map
Expand Down

0 comments on commit d47ec42

Please sign in to comment.