def test_temporal_select_operators2(self):
        """Testing the temporal select operator. Including temporal relations. """
        ta = tgis.TemporalAlgebraParser(run=True, debug=True)
        ta.parse(expression="R = A {:,equal|during} stvds(C)",
                 stdstype='str3ds', basename="r", overwrite=True)

        D = tgis.open_old_stds("R", type="str3ds")
        D.select()
        self.assertEqual(D.metadata.get_number_of_maps(), 2)
        self.assertEqual(D.metadata.get_min_min(), 2) 
        self.assertEqual(D.metadata.get_max_max(), 3) 
        start, end = D.get_absolute_time()
        self.assertEqual(start, datetime.datetime(2001, 1, 2))
        self.assertEqual(end, datetime.datetime(2001, 1, 4))
        self.assertEqual( D.check_temporal_topology(),  True)
        self.assertEqual(D.get_granularity(),  u'1 day')

        ta = tgis.TemporalAlgebraParser(run=True, debug=True,
                                        dry_run=True)
        pc = ta.parse(expression="R = A {:,equal|during} stvds(C)",
                      stdstype='str3ds', basename="r", overwrite=True)

        print(pc)

        self.assertEqual(len(pc["register"]), 2)
        self.assertEqual(pc["STDS"]["name"], "R")
        self.assertEqual(pc["STDS"]["stdstype"], "str3ds")
    def test_temporal_extent3(self):
        """Testing the temporal extent operators."""
        ta = tgis.TemporalAlgebraParser(run=True, debug=True)
        ta.parse(
            expression="R = A {:,during,u} C",
            stdstype="strds",
            basename="r",
            overwrite=True,
        )

        D = tgis.open_old_stds("R", type="strds")
        self.assertTrue(D.is_in_db())
        D.select()
        maplist = D.get_registered_maps_as_objects()
        for map_i in maplist:
            start_map, end_map = map_i.get_absolute_time()
            self.assertEqual(start_map, datetime.datetime(2001, 1, 2))
            self.assertEqual(end_map, datetime.datetime(2001, 1, 4))
        self.assertEqual(D.metadata.get_number_of_maps(), 2)
        self.assertEqual(D.metadata.get_min_min(), 2)
        self.assertEqual(D.metadata.get_max_max(), 3)
        start, end = D.get_absolute_time()
        self.assertEqual(start, datetime.datetime(2001, 1, 2))
        self.assertEqual(end, datetime.datetime(2001, 1, 4))
        self.assertEqual(D.check_temporal_topology(), False)
        self.assertEqual(D.get_granularity(), "2 days")
示例#3
0
    def test_common_granularity_1(self):
        """Testing the common granularity function."""
        ta = tgis.TemporalAlgebraParser(run=True, debug=True)
        expr = "R = A : B"
        ret = ta.setup_common_granularity(expression=expr)

        self.assertEqual(ret, True)
        self.assertEqual(ta.granularity, "1 month")

        ta.count = 0
        ta.stdstype = "strds"
        ta.maptype = "raster"
        ta.mapclass = tgis.RasterDataset

        maplist = ta.check_stds("A")
        self.assertEqual(len(maplist), 6)
        maplist = ta.check_stds("B")
        self.assertEqual(len(maplist), 6)

        ta.parse(expression=expr, basename="r", overwrite=True)

        D = tgis.open_old_stds("R", type="strds")

        self.assertEqual(D.metadata.get_number_of_maps(), 6)
        self.assertEqual(D.metadata.get_min_min(), 1)
        self.assertEqual(D.metadata.get_max_max(), 6)
        start, end = D.get_absolute_time()
        self.assertEqual(start, datetime.datetime(2001, 1, 1))
        self.assertEqual(end, datetime.datetime(2001, 7, 1))
        self.assertEqual(D.check_temporal_topology(), True)
        self.assertEqual(D.get_granularity(), "1 month")
    def test_temporal_select_operators5(self):
        """Testing the temporal select operator. Including temporal relations and
            temporal operators. """
        ta = tgis.TemporalAlgebraParser(run=True, debug=True)
        ta.parse(expression="R = C {:,contains} A",
                 stdstype='strds',
                 basename="r",
                 overwrite=True)

        D = tgis.open_old_stds("R", type="strds")
        self.assertTrue(D.is_in_db())
        D.select()
        maplist = D.get_registered_maps_as_objects()
        for map_i in maplist:
            start_map, end_map = map_i.get_absolute_time()
            self.assertEqual(start_map, datetime.datetime(2001, 1, 2))
            self.assertEqual(end_map, datetime.datetime(2001, 1, 4))
        self.assertEqual(D.metadata.get_number_of_maps(), 1)
        self.assertEqual(D.metadata.get_min_min(), 7)
        self.assertEqual(D.metadata.get_max_max(), 7)
        start, end = D.get_absolute_time()
        self.assertEqual(start, datetime.datetime(2001, 1, 2))
        self.assertEqual(end, datetime.datetime(2001, 1, 4))
        self.assertEqual(D.check_temporal_topology(), True)
        self.assertEqual(D.get_granularity(), u'2 days')
示例#5
0
文件: t.select.py 项目: hellik/grass
def main():
    # lazy imports
    import grass.temporal as tgis

    expression = options["expression"]
    spatial = flags["s"]
    dry_run = flags["d"]
    stdstype = options["type"]

    # Check for PLY istallation
    try:
        # Intentionally unused imports
        import ply.lex as lex  # noqa: F401
        import ply.yacc as yacc  # noqa: F401
    except ImportError:
        grass.fatal(
            _("Please install PLY (Lex and Yacc Python implementation) to use the temporal algebra modules."
              ))

    tgis.init(True)
    p = tgis.TemporalAlgebraParser(run=True,
                                   debug=False,
                                   spatial=spatial,
                                   dry_run=dry_run)
    pc = p.parse(expression, stdstype, overwrite=grass.overwrite())

    if dry_run is True:
        import pprint

        pprint.pprint(pc)
    def test_merge_function3(self):
        """Testing the merge function. """
        ta = tgis.TemporalAlgebraParser(run=True, debug=False, dry_run=True)
        pc = ta.parse(expression='R = merge(A, D {!:,equal} A)',
                      stdstype = 'strds', basename="r",
                      overwrite=True)

        self.assertEqual(len(pc["register"]), 5)
        self.assertEqual(pc["STDS"]["name"], "R")
        self.assertEqual(pc["STDS"]["stdstype"], "strds")
 def test_buff2(self):
     """Testing the shift function. """
     ta = tgis.TemporalAlgebraParser(run=True, debug=False, dry_run=True)
     pc = ta.parse(expression='R = buff_t(A, "1 day") {:,contains,l} C',
                   stdstype = 'strds', basename="r",
                   overwrite=True)
     print(pc["register"])
     self.assertEqual(len(pc["register"]), 2)
     self.assertEqual(pc["STDS"]["name"], "R")
     self.assertEqual(pc["STDS"]["stdstype"], "strds")
    def test_different_stds_handling2(self):
        """Testing the handling of different stds types as output. """
        ta = tgis.TemporalAlgebraParser(run=True, debug=True,
                                        dry_run=True)
        pc = ta.parse(expression="R = if({during}, (stvds(C) {#,contains} str3ds(A)) == 2, str3ds(A))",
                      stdstype='strds', basename="r", overwrite=True)

        self.assertEqual(len(pc["register"]), 2)
        self.assertEqual(pc["STDS"]["name"], "R")
        self.assertEqual(pc["STDS"]["stdstype"], "strds")
 def test_shift2(self):
     """Testing the shift function."""
     ta = tgis.TemporalAlgebraParser(run=True, debug=False, dry_run=True)
     pc = ta.parse(
         expression='R = tshift(A, "2 days") {:,during,l} C',
         stdstype="strds",
         basename="r",
         overwrite=True,
     )
     print(pc["register"])
     self.assertEqual(len(pc["register"]), 1)
     self.assertEqual(pc["STDS"]["name"], "R")
     self.assertEqual(pc["STDS"]["stdstype"], "strds")
    def test_merge_function2(self):
        """Testing the merge function."""
        ta = tgis.TemporalAlgebraParser(run=True, debug=False, dry_run=True)
        pc = ta.parse(
            expression="R = merge(A, B {!:,contains} A)",
            stdstype="strds",
            basename="r",
            overwrite=True,
        )

        self.assertEqual(len(pc["register"]), 4)
        self.assertEqual(pc["STDS"]["name"], "R")
        self.assertEqual(pc["STDS"]["stdstype"], "strds")
    def test_temporal_select_operators4(self):
        """Testing the temporal select operator. Including temporal relations and 
            temporal operators. """
        ta = tgis.TemporalAlgebraParser(run=True, debug=True)
        ta.parse(expression="V = C {:,contains} str3ds(A)",  
                 stdstype='stvds', basename="r", overwrite=True)

        D = tgis.open_old_stds("V", type="stvds")
        D.select()
        self.assertEqual(D.metadata.get_number_of_maps(), 1)
        start, end = D.get_absolute_time()
        self.assertEqual(start, datetime.datetime(2001, 1, 2))
        self.assertEqual(end, datetime.datetime(2001, 1, 4))
        self.assertEqual( D.check_temporal_topology(),  True)
        self.assertEqual(D.get_granularity(),  u'2 days')
    def test_temporal_select2(self):
        """Testing the temporal select operator with equal relations. """
        ta = tgis.TemporalAlgebraParser(run=True, debug=True)
        ta.parse(expression="R = A : D",  stdstype = 'strds', basename="r", overwrite=True)

        D = tgis.open_old_stds("R", type="strds")
        D.select()
        self.assertEqual(D.metadata.get_number_of_maps(), 2)
        self.assertEqual(D.metadata.get_min_min(), 3)
        self.assertEqual(D.metadata.get_max_max(), 4)
        start, end = D.get_absolute_time()
        self.assertEqual(start, datetime.datetime(2001, 1, 3))
        self.assertEqual(end, datetime.datetime(2001, 1, 5))
        self.assertEqual( D.check_temporal_topology(),  True)
        self.assertEqual(D.get_granularity(),  u'1 day')
    def test_different_stds_handling1(self):
        """Testing the handling of different stds types as output. """
        ta = tgis.TemporalAlgebraParser(run=True, debug=True)
        ta.parse(expression="R = if({during}, stvds(C) {#,contains} str3ds(A) == 2, str3ds(A))",  
                 stdstype='strds', basename="r", overwrite=True)

        D = tgis.open_old_stds("R", type="str3ds")
        D.select()
        self.assertEqual(D.metadata.get_number_of_maps(), 2)
        self.assertEqual(D.metadata.get_min_min(), 2) 
        self.assertEqual(D.metadata.get_max_max(), 3) 
        start, end = D.get_absolute_time()
        self.assertEqual(start, datetime.datetime(2001, 1, 2))
        self.assertEqual(end, datetime.datetime(2001, 1, 4))
        self.assertEqual(D.check_temporal_topology(),  True)
        self.assertEqual(D.get_granularity(),  u'1 day')
    def test_temporal_condition_else_3(self):
        """Testing the temporal select operator with equal relations. """
        ta = tgis.TemporalAlgebraParser(run=True, debug=True)
        ta.parse(expression='R = if({during},td(B) == 2 {&&,contains} start_date(D) >= "2001-01-04", A, D)',
                 basename="r", overwrite=True)

        D = tgis.open_old_stds("R", type="strds")
        D.select()
        self.assertEqual(D.metadata.get_number_of_maps(), 2)
        self.assertEqual(D.metadata.get_min_min(), 8)
        self.assertEqual(D.metadata.get_max_max(), 9)
        start, end = D.get_absolute_time()
        self.assertEqual(start, datetime.datetime(2001, 1, 3))
        self.assertEqual(end, datetime.datetime(2001, 1, 5))
        self.assertEqual(D.check_temporal_topology(), True)
        self.assertEqual(D.get_granularity(), u'1 day')
    def test_temporal_condition_12(self):
        """Testing the temporal select operator with equal relations. """
        ta = tgis.TemporalAlgebraParser(run=True, debug=True)
        ta.parse(expression='R = if(start_date(B) <= "2001-01-01" {&&,over,|,r} td(E) == 2, E)',
                 basename="r", overwrite=True)

        D = tgis.open_old_stds("R", type="strds")
        D.select()
        self.assertEqual(D.metadata.get_number_of_maps(), 1)
        self.assertEqual(D.metadata.get_min_min(), 11)
        self.assertEqual(D.metadata.get_max_max(), 11)
        start, end = D.get_absolute_time()
        self.assertEqual(start, datetime.datetime(2000, 12, 31))
        self.assertEqual(end, datetime.datetime(2001, 1, 2))
        self.assertEqual(D.check_temporal_topology(), True)
        self.assertEqual(D.get_granularity(), u'2 days')
    def test_temporal_hash_operator2(self):
        """Testing the hash operator function in conditional statement. """
        ta = tgis.TemporalAlgebraParser(run=True, debug=True)
        ta.parse(expression="R = if({during}, stvds(C) {#,contains} A == 2, A)",  
                 stdstype='str3ds', basename="r", overwrite=True)

        D = tgis.open_old_stds("R", type="str3ds")
        D.select()
        self.assertEqual(D.metadata.get_number_of_maps(), 2)
        self.assertEqual(D.metadata.get_min_min(), 2) 
        self.assertEqual(D.metadata.get_max_max(), 3) 
        start, end = D.get_absolute_time()
        self.assertEqual(start, datetime.datetime(2001, 1, 2))
        self.assertEqual(end, datetime.datetime(2001, 1, 4))
        self.assertEqual(D.check_temporal_topology(),  True)
        self.assertEqual(D.get_granularity(),  u'1 day')
    def test_merge_function2(self):
        """Testing the merge function. """
        ta = tgis.TemporalAlgebraParser(run=True, debug=True)
        ta.parse(expression='R = merge(A, B {!:,contains} A)',  stdstype = 'strds', basename="r", overwrite=True)

        D = tgis.open_old_stds("R", type="strds")
        D.select()
        maplist = D.get_registered_maps_as_objects()
        self.assertEqual(D.metadata.get_number_of_maps(), 4)
        self.assertEqual(D.metadata.get_min_min(), 1)
        self.assertEqual(D.metadata.get_max_max(), 4)
        start, end = D.get_absolute_time()
        self.assertEqual(start, datetime.datetime(2001, 1, 1))
        self.assertEqual(end, datetime.datetime(2001, 1, 5))
        self.assertEqual( D.check_temporal_topology(),  True)
        self.assertEqual(D.get_granularity(),  u'1 day')
    def test_temporal_hash1(self):
        """Testing the hash function in conditional statement. """
        ta = tgis.TemporalAlgebraParser(run=True, debug=True)
        ta.parse(expression="R = if(A # D == 1, A)",  stdstype = 'strds', basename="r", overwrite=True)

        D = tgis.open_old_stds("R", type="strds")
        D.select()
        maplist = D.get_registered_maps_as_objects()
        self.assertEqual(D.metadata.get_number_of_maps(), 2)
        self.assertEqual(D.metadata.get_min_min(), 3)
        self.assertEqual(D.metadata.get_max_max(), 4)
        start, end = D.get_absolute_time()
        self.assertEqual(start, datetime.datetime(2001, 1, 3))
        self.assertEqual(end, datetime.datetime(2001, 1, 5))
        self.assertEqual( D.check_temporal_topology(),  True)
        self.assertEqual(D.get_granularity(),  u'1 day')
    def test_temporal_conditional_13(self):
        """Testing the hash operator function in conditional statement. """
        ta = tgis.TemporalAlgebraParser(run=True, debug=True)
        ta.parse(expression='R = if({equal|during},td(B) == 2 {&&,contains} td(A) == 1, A)',
                 basename="r", overwrite=True)

        D = tgis.open_old_stds("R", type="strds")
        D.select()
        maplist = D.get_registered_maps_as_objects()
        self.assertEqual(D.metadata.get_number_of_maps(), 4)
        self.assertEqual(D.metadata.get_min_min(), 1)
        self.assertEqual(D.metadata.get_max_max(), 4)
        start, end = D.get_absolute_time()
        self.assertEqual(start, datetime.datetime(2001, 1, 1))
        self.assertEqual(end, datetime.datetime(2001, 1, 5))
        self.assertEqual(D.check_temporal_topology(), True)
        self.assertEqual(D.get_granularity(), u'1 day')
示例#20
0
    def test_common_granularity_6(self):
        """Testing the common granularity function year to month with gaps."""
        ta = tgis.TemporalAlgebraParser(run=True, debug=True)
        expr = "R = if(start_month(A) > 2, A : C : D)"
        ret = ta.setup_common_granularity(expression=expr)

        ta.parse(expression=expr, basename="r", overwrite=True)

        D = tgis.open_old_stds("R", type="strds")

        self.assertEqual(D.metadata.get_number_of_maps(), 2)
        self.assertEqual(D.metadata.get_min_min(), 3)
        self.assertEqual(D.metadata.get_max_max(), 5)
        start, end = D.get_absolute_time()
        self.assertEqual(start, datetime.datetime(2001, 3, 1))
        self.assertEqual(end, datetime.datetime(2001, 6, 1))
        self.assertEqual(D.check_temporal_topology(), True)
        self.assertEqual(D.get_granularity(), "1 month")
示例#21
0
    def test_common_granularity_2(self):
        """Testing the common granularity function year to month samping. """
        ta = tgis.TemporalAlgebraParser(run=True, debug=True)
        expr = 'R = A : C'
        ret = ta.setup_common_granularity(expression=expr)

        ta.parse(expression=expr, basename="r", overwrite=True)

        D = tgis.open_old_stds("R", type="strds")

        self.assertEqual(D.metadata.get_number_of_maps(), 6)
        self.assertEqual(D.metadata.get_min_min(), 1)
        self.assertEqual(D.metadata.get_max_max(), 6)
        start, end = D.get_absolute_time()
        self.assertEqual(start, datetime.datetime(2001, 1, 1))
        self.assertEqual(end, datetime.datetime(2001, 7, 1))
        self.assertEqual(D.check_temporal_topology(), True)
        self.assertEqual(D.get_granularity(), u'1 month')
示例#22
0
def main():

    expression = options['expression']
    spatial = flags["s"]
    stdstype = options["type"]

    # Check for PLY istallation
    try:
        import ply.lex as lex
        import ply.yacc as yacc
    except:
        grass.fatal(
            _("Please install PLY (Lex and Yacc Python implementation) to use the temporal algebra modules."
              ))

    tgis.init(True)
    p = tgis.TemporalAlgebraParser(run=True, debug=False, spatial=spatial)
    p.parse(expression, stdstype, overwrite=grass.overwrite)
示例#23
0
    def test_temporal_select_operators5(self):
        """Testing the temporal select operator. Including temporal relations and
        temporal operators."""
        ta = tgis.TemporalAlgebraParser(run=True, debug=True)
        ta.parse(
            expression="R = A {:,during} strds(B)",
            stdstype="str3ds",
            basename="r",
            overwrite=True,
        )

        D = tgis.open_old_stds("R", type="str3ds")
        D.select()
        self.assertEqual(D.metadata.get_number_of_maps(), 4)
        start, end = D.get_absolute_time()
        self.assertEqual(start, datetime.datetime(2001, 1, 1))
        self.assertEqual(end, datetime.datetime(2001, 1, 5))
        self.assertEqual(D.check_temporal_topology(), True)
        self.assertEqual(D.get_granularity(), "1 day")
    def test_temporal_condition_3(self):
        """Testing the temporal select operator with equal relations."""
        ta = tgis.TemporalAlgebraParser(run=True, debug=True)
        ta.parse(
            expression='R = if(td(A) == 1 || start_date(A) >= "2001-01-03", A)',
            basename="r",
            overwrite=True,
        )

        D = tgis.open_old_stds("R", type="strds")
        D.select()
        self.assertEqual(D.metadata.get_number_of_maps(), 4)
        self.assertEqual(D.metadata.get_min_min(), 1)
        self.assertEqual(D.metadata.get_max_max(), 4)
        start, end = D.get_absolute_time()
        self.assertEqual(start, datetime.datetime(2001, 1, 1))
        self.assertEqual(end, datetime.datetime(2001, 1, 5))
        self.assertEqual(D.check_temporal_topology(), True)
        self.assertEqual(D.get_granularity(), "1 day")
    def test_merge_function1(self):
        """Testing the merge function."""
        ta = tgis.TemporalAlgebraParser(run=True, debug=True)
        ta.parse(expression="R = merge(A,D)",
                 stdstype="strds",
                 basename="r",
                 overwrite=True)

        D = tgis.open_old_stds("R", type="strds")
        self.assertTrue(D.is_in_db())
        D.select()
        maplist = D.get_registered_maps_as_objects()
        self.assertEqual(D.metadata.get_number_of_maps(), 7)
        self.assertEqual(D.metadata.get_min_min(), 1)
        self.assertEqual(D.metadata.get_max_max(), 10)
        start, end = D.get_absolute_time()
        self.assertEqual(start, datetime.datetime(2001, 1, 1))
        self.assertEqual(end, datetime.datetime(2001, 1, 6))
        self.assertEqual(D.check_temporal_topology(), False)
        self.assertEqual(D.get_granularity(), "1 day")
    def test_tmap_function1(self):
        """Testing the tmap function. """
        ta = tgis.TemporalAlgebraParser(run=True, debug=True)
        ta.parse(expression='R = tmap(singletmap)',
                 stdstype='strds',
                 basename="r",
                 overwrite=True)

        D = tgis.open_old_stds("R", type="strds")
        self.assertTrue(D.is_in_db())
        D.select()
        maplist = D.get_registered_maps_as_objects()
        self.assertEqual(D.metadata.get_number_of_maps(), 1)
        self.assertEqual(D.metadata.get_min_min(), 99)
        self.assertEqual(D.metadata.get_max_max(), 99)
        start, end = D.get_absolute_time()
        self.assertEqual(start, datetime.datetime(2001, 1, 3))
        self.assertEqual(end, datetime.datetime(2001, 1, 4))
        self.assertEqual(D.check_temporal_topology(), True)
        self.assertEqual(D.get_granularity(), u'1 day')
    def test_temporal_condition_else_4(self):
        """Testing the temporal select operator with equal relations."""
        ta = tgis.TemporalAlgebraParser(run=True, debug=True)
        ta.parse(
            expression=
            'R = if({equal|over},start_date(B) <= "2001-01-01" {&&,over,|,r} td(E) == 2, E, B)',
            basename="r",
            overwrite=True,
        )

        D = tgis.open_old_stds("R", type="strds")
        D.select()
        for map in D.get_registered_maps_as_objects():
            print(map.get_map_id())
        self.assertEqual(D.metadata.get_number_of_maps(), 3)
        self.assertEqual(D.metadata.get_min_min(), 5)
        self.assertEqual(D.metadata.get_max_max(), 11)
        start, end = D.get_absolute_time()
        self.assertEqual(start, datetime.datetime(2000, 12, 31))
        self.assertEqual(end, datetime.datetime(2001, 1, 5))
        self.assertEqual(D.check_temporal_topology(), False)
        self.assertEqual(D.get_granularity(), "2 days")