def main(): # lazy imports import grass.temporal as tgis # Get the options input = options["input"] output = options["output"] where = options["where"] sort = options["sort"] add_time = flags["t"] patch_s = flags["s"] patch_z = flags["z"] # Make sure the temporal database exists tgis.init() sp = tgis.open_old_stds(input, "strds") rows = sp.get_registered_maps("id", where, "start_time", None) if rows: ordered_rasts = [] # newest images are first if sort == 'desc': rows_sorted = rows[::-1] # older images are first elif sort == 'asc': rows_sorted = rows for row in rows_sorted: string = "%s" % (row["id"]) ordered_rasts.append(string) patch_flags = "" if patch_z: patch_flags += "z" if patch_s: patch_flags += "s" try: grass.run_command("r.patch", overwrite=grass.overwrite(), input=(',').join(ordered_rasts), output=output, flags=patch_flags) except CalledModuleError: grass.fatal( _("%s failed. Check above error messages.") % 'r.patch') if not add_time: # We need to set the temporal extent from the subset of selected maps maps = sp.get_registered_maps_as_objects(where=where, order="start_time", dbif=None) first_map = maps[0] last_map = maps[-1] start_a, end_a = first_map.get_temporal_extent_as_tuple() start_b, end_b = last_map.get_temporal_extent_as_tuple() if end_b is None: end_b = start_b if first_map.is_time_absolute(): extent = tgis.AbsoluteTemporalExtent(start_time=start_a, end_time=end_b) else: extent = tgis.RelativeTemporalExtent( start_time=start_a, end_time=end_b, unit=first_map.get_relative_time_unit()) # Create the time range for the output map if output.find("@") >= 0: id = output else: mapset = grass.gisenv()["MAPSET"] id = output + "@" + mapset map = sp.get_new_map_instance(id) map.load() map.set_temporal_extent(extent=extent) # Register the map in the temporal database if map.is_in_db(): map.update_all() else: map.insert()
def main(): # lazy imports import grass.temporal as tgis # Get the options input = options["input"] output = options["output"] method = options["method"] quantile = options["quantile"] order = options["order"] where = options["where"] add_time = flags["t"] nulls = flags["n"] # Make sure the temporal database exists tgis.init() sp = tgis.open_old_stds(input, "strds") rows = sp.get_registered_maps("id", where, order, None) if rows: # Create the r.series input file filename = grass.tempfile(True) file = open(filename, 'w') for row in rows: string = "%s\n" % (row["id"]) file.write(string) file.close() flag = "" if len(rows) > 1000: grass.warning( _("Processing over 1000 maps: activating -z flag of r.series which slows down processing" )) flag += "z" if nulls: flag += "n" try: grass.run_command("r.series", flags=flag, file=filename, output=output, overwrite=grass.overwrite(), method=method, quantile=quantile) except CalledModuleError: grass.fatal( _("%s failed. Check above error messages.") % 'r.series') if not add_time: # Create the time range for the output map if output.find("@") >= 0: id = output else: mapset = grass.gisenv()["MAPSET"] id = output + "@" + mapset map = sp.get_new_map_instance(id) map.load() # We need to set the temporal extent from the subset of selected maps maps = sp.get_registered_maps_as_objects(where=where, order=order, dbif=None) first_map = maps[0] last_map = maps[-1] start_a, end_a = first_map.get_temporal_extent_as_tuple() start_b, end_b = last_map.get_temporal_extent_as_tuple() if end_b is None: end_b = start_b if first_map.is_time_absolute(): extent = tgis.AbsoluteTemporalExtent(start_time=start_a, end_time=end_b) else: extent = tgis.RelativeTemporalExtent( start_time=start_a, end_time=end_b, unit=first_map.get_relative_time_unit()) map.set_temporal_extent(extent=extent) # Register the map in the temporal database if map.is_in_db(): map.update_all() else: map.insert()