123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154 |
- #!/usr/bin/env python
- # -*- coding: utf-8 -*-
- ############################################################################
- #
- # MODULE: t.topology
- # AUTHOR(S): Soeren Gebbert
- #
- # PURPOSE: List temporal topology of a space time dataset
- # COPYRIGHT: (C) 2011 by the GRASS Development Team
- #
- # This program is free software under the GNU General Public
- # License (version 2). Read the file COPYING that comes with GRASS
- # for details.
- #
- #############################################################################
- #%module
- #% description: Lists temporal topology of a space time dataset.
- #% keywords: temporal
- #% keywords: topology
- #%end
- #%option G_OPT_STDS_INPUT
- #%end
- #%option G_OPT_STDS_TYPE
- #% guidependency: input
- #% guisection: Required
- #%end
- #%option G_OPT_T_WHERE
- #%end
- #%flag
- #% key: m
- #% description: Print temporal relationships and exit
- #%end
- #%flag
- #% key: s
- #% description: Print spatio-temporal relationships and exit
- #%end
- import grass.script as grass
- import grass.temporal as tgis
- ############################################################################
- def main():
- # Get the options
- name = options["input"]
- type = options["type"]
- where = options["where"]
- temporal_relations = flags['m']
- spatio_temporal_relations = flags['s']
- # Make sure the temporal database exists
- tgis.init()
- sp = tgis.open_old_space_time_dataset(name, type)
- # Get ordered map list
- maps = sp.get_registered_maps_as_objects(
- where=where, order="start_time", dbif=None)
- spatial = None
- if spatio_temporal_relations:
- if sp.get_type() == "strds":
- spatial = "2D"
- else:
- spatial = "3D"
- if temporal_relations or spatio_temporal_relations:
- sp.print_spatio_temporal_relationships(maps=maps, spatial=spatial)
- return
- sp.base.print_info()
- # 0123456789012345678901234567890
- print " +-------------------- Temporal topology -------------------------------------+"
- if where:
- print " | Is subset of dataset: ...... True"
- else:
- print " | Is subset of dataset: ...... False"
- check = sp.check_temporal_topology(maps)
- if check:
- # 0123456789012345678901234567890
- print " | Temporal topology is: ...... valid"
- else:
- # 0123456789012345678901234567890
- print " | Temporal topology is: ...... invalid"
- dict_ = sp.count_temporal_types(maps)
- for key in dict_.keys():
- if key == "interval":
- # 0123456789012345678901234567890
- print " | Number of intervals: ....... %s" % (dict_[key])
- if key == "point":
- print " | Number of points: .......... %s" % (dict_[key])
- if key == "invalid":
- print " | Invalid time stamps: ....... %s" % (dict_[key])
- # 0123456789012345678901234567890
- print " | Number of gaps: ............ %i" % sp.count_gaps(maps)
- if sp.is_time_absolute():
- gran = tgis.compute_absolute_time_granularity(maps)
- else:
- gran = tgis.compute_relative_time_granularity(maps)
- print " | Granularity: ............... %s" % str(gran)
- print " +-------------------- Topological relations ---------------------------------+"
- dict_ = sp.count_temporal_relations(maps)
- if dict_:
- for key in dict_.keys():
- if key == "equal":
- # 0123456789012345678901234567890
- print " | Equal:...................... %s" % (dict_[key])
- if key == "during":
- print " | During: .................... %s" % (dict_[key])
- if key == "contains":
- print " | Contains: .................. %s" % (dict_[key])
- if key == "overlaps":
- print " | Overlaps: .................. %s" % (dict_[key])
- if key == "overlapped":
- print " | Overlapped: ................ %s" % (dict_[key])
- if key == "after":
- print " | After: ..................... %s" % (dict_[key])
- if key == "before":
- print " | Before: .................... %s" % (dict_[key])
- if key == "starts":
- print " | Starts: .................... %s" % (dict_[key])
- if key == "finishes":
- print " | Finishes: .................. %s" % (dict_[key])
- if key == "started":
- print " | Started: ................... %s" % (dict_[key])
- if key == "finished":
- print " | Finished: .................. %s" % (dict_[key])
- if key == "follows":
- print " | Follows: ................... %s" % (dict_[key])
- if key == "precedes":
- print " | Precedes: .................. %s" % (dict_[key])
- print " +----------------------------------------------------------------------------+"
- if __name__ == "__main__":
- options, flags = grass.parser()
- main()
|