123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970 |
- """Unit test to register raster maps with absolute and relative
- time using tgis.register_maps_in_space_time_dataset()
- (C) 2013 by the GRASS Development Team
- This program is free software under the GNU General Public
- License (>=v2). Read the file COPYING that comes with GRASS
- for details.
- :authors: Soeren Gebbert
- """
- import grass.temporal as tgis
- from grass.gunittest.case import TestCase
- from grass.gunittest.main import test
- import grass.script as gscript
- import datetime
- import os
- class TestRasterRegisterFunctions(TestCase):
- @classmethod
- def setUpClass(cls):
- """Initiate the temporal GIS and set the region"""
- os.putenv("GRASS_OVERWRITE", "1")
- # Use always the current mapset as temporal database
- cls.runModule("g.gisenv", set="TGIS_USE_CURRENT_MAPSET=1")
- tgis.init()
- cls.use_temp_region()
- cls.runModule("g.region", n=80.0, s=0.0, e=120.0, w=0.0, t=1.0, b=0.0, res=10.0)
- @classmethod
- def tearDownClass(cls):
- """Remove the temporary region"""
- cls.del_temp_region()
- def setUp(self):
- """Create the test maps and the space time raster datasets"""
- self.runModule(
- "r.mapcalc", overwrite=True, quiet=True, expression="register_map_1 = 1"
- )
- self.runModule(
- "r.mapcalc", overwrite=True, quiet=True, expression="register_map_2 = 2"
- )
- self.runModule(
- "r.mapcalc",
- overwrite=True,
- quiet=True,
- expression="register_map_null = null()",
- )
- self.strds_abs = tgis.open_new_stds(
- name="register_test_abs",
- type="strds",
- temporaltype="absolute",
- title="Test strds",
- descr="Test strds",
- semantic="field",
- overwrite=True,
- )
- self.strds_rel = tgis.open_new_stds(
- name="register_test_rel",
- type="strds",
- temporaltype="relative",
- title="Test strds",
- descr="Test strds",
- semantic="field",
- overwrite=True,
- )
- def tearDown(self):
- """Remove maps from temporal database"""
- self.runModule(
- "t.unregister",
- type="raster",
- maps="register_map_1,register_map_2",
- quiet=True,
- )
- self.runModule(
- "g.remove",
- flags="f",
- type="raster",
- name="register_map_1,register_map_2,register_map_null",
- quiet=True,
- )
- self.strds_abs.delete()
- self.strds_rel.delete()
- def test_absolute_time_strds_1(self):
- """Test the registration of maps with absolute time in a
- space time raster dataset
- """
- tgis.register_maps_in_space_time_dataset(
- type="raster",
- name=self.strds_abs.get_name(),
- maps="register_map_1,register_map_2",
- start="2001-01-01",
- increment="1 day",
- interval=True,
- )
- map = tgis.RasterDataset("register_map_1@" + tgis.get_current_mapset())
- map.select()
- start, end = map.get_absolute_time()
- self.assertEqual(start, datetime.datetime(2001, 1, 1))
- self.assertEqual(end, datetime.datetime(2001, 1, 2))
- map = tgis.RasterDataset("register_map_2@" + tgis.get_current_mapset())
- map.select()
- start, end = map.get_absolute_time()
- self.assertEqual(start, datetime.datetime(2001, 1, 2))
- self.assertEqual(end, datetime.datetime(2001, 1, 3))
- self.strds_abs.select()
- start, end = self.strds_abs.get_absolute_time()
- self.assertEqual(start, datetime.datetime(2001, 1, 1))
- self.assertEqual(end, datetime.datetime(2001, 1, 3))
- def test_absolute_time_strds_2(self):
- """Test the registration of maps with absolute time in a
- space time raster dataset.
- The timestamps are set using the C-Interface beforehand, so that the register function needs
- to read the timetsamp from the map metadata.
- """
- ciface = tgis.get_tgis_c_library_interface()
- ciface.write_raster_timestamp(
- "register_map_1", tgis.get_current_mapset(), "1 Jan 2001/2 Jan 2001"
- )
- ciface.write_raster_timestamp(
- "register_map_2", tgis.get_current_mapset(), "2 Jan 2001/3 Jan 2001"
- )
- tgis.register_maps_in_space_time_dataset(
- type="raster",
- name=self.strds_abs.get_name(),
- maps="register_map_1,register_map_2",
- )
- map = tgis.RasterDataset("register_map_1@" + tgis.get_current_mapset())
- map.select()
- start, end = map.get_absolute_time()
- self.assertEqual(start, datetime.datetime(2001, 1, 1))
- self.assertEqual(end, datetime.datetime(2001, 1, 2))
- map = tgis.RasterDataset("register_map_2@" + tgis.get_current_mapset())
- map.select()
- start, end = map.get_absolute_time()
- self.assertEqual(start, datetime.datetime(2001, 1, 2))
- self.assertEqual(end, datetime.datetime(2001, 1, 3))
- self.strds_abs.select()
- start, end = self.strds_abs.get_absolute_time()
- self.assertEqual(start, datetime.datetime(2001, 1, 1))
- self.assertEqual(end, datetime.datetime(2001, 1, 3))
- def test_absolute_time_strds_3(self):
- """Test the registration of maps with absolute time in a
- space time raster dataset. The timestamps are set via method arguments and with the
- c-interface. The timestamps of the method arguments should overwrite the
- time stamps set via the C-interface.
- """
- ciface = tgis.get_tgis_c_library_interface()
- ciface.write_raster_timestamp(
- "register_map_1", tgis.get_current_mapset(), "1 Jan 2001/2 Jan 2001"
- )
- tgis.register_maps_in_space_time_dataset(
- type="raster",
- name=self.strds_abs.get_name(),
- maps="register_map_1",
- start="2001-02-01",
- increment="1 day",
- interval=True,
- )
- map = tgis.RasterDataset("register_map_1@" + tgis.get_current_mapset())
- map.select()
- start, end = map.get_absolute_time()
- self.assertEqual(start, datetime.datetime(2001, 2, 1))
- self.assertEqual(end, datetime.datetime(2001, 2, 2))
- self.strds_abs.select()
- start, end = self.strds_abs.get_absolute_time()
- self.assertEqual(start, datetime.datetime(2001, 2, 1))
- self.assertEqual(end, datetime.datetime(2001, 2, 2))
- def test_absolute_time_strds_4(self):
- """Test the registration of maps with absolute time in a
- space time raster dataset. The timestamps are set via method arguments and with the
- c-interface. The timestamps of the method arguments should overwrite the
- time stamps set via the C-interface. The C-interface sets relative time stamps.
- """
- ciface = tgis.get_tgis_c_library_interface()
- # Set the timestamp as relative time
- ciface.write_raster_timestamp(
- "register_map_1", tgis.get_current_mapset(), "1 day"
- )
- tgis.register_maps_in_space_time_dataset(
- type="raster",
- name=self.strds_abs.get_name(),
- maps="register_map_1",
- start="2001-02-01",
- increment="1 day",
- interval=True,
- )
- map = tgis.RasterDataset("register_map_1@" + tgis.get_current_mapset())
- map.select()
- start, end = map.get_absolute_time()
- self.assertEqual(start, datetime.datetime(2001, 2, 1))
- self.assertEqual(end, datetime.datetime(2001, 2, 2))
- self.strds_abs.select()
- start, end = self.strds_abs.get_absolute_time()
- self.assertEqual(start, datetime.datetime(2001, 2, 1))
- self.assertEqual(end, datetime.datetime(2001, 2, 2))
- def test_absolute_time_1(self):
- """Test the registration of maps with absolute time
- using register_maps_in_space_time_dataset() and register_map_object_list()
- """
- tgis.register_maps_in_space_time_dataset(
- type="raster",
- name=None,
- maps="register_map_1,register_map_2",
- start="2001-01-01",
- increment="1 day",
- interval=True,
- )
- map_1 = tgis.RasterDataset("register_map_1@" + tgis.get_current_mapset())
- map_1.select()
- start, end = map_1.get_absolute_time()
- self.assertEqual(start, datetime.datetime(2001, 1, 1))
- self.assertEqual(end, datetime.datetime(2001, 1, 2))
- map_2 = tgis.RasterDataset("register_map_2@" + tgis.get_current_mapset())
- map_2.select()
- start, end = map_2.get_absolute_time()
- self.assertEqual(start, datetime.datetime(2001, 1, 2))
- self.assertEqual(end, datetime.datetime(2001, 1, 3))
- map_list = [map_1, map_2]
- tgis.register_map_object_list(
- type="raster",
- map_list=map_list,
- output_stds=self.strds_abs,
- delete_empty=False,
- )
- self.strds_abs.select()
- start, end = self.strds_abs.get_absolute_time()
- self.assertEqual(start, datetime.datetime(2001, 1, 1))
- self.assertEqual(end, datetime.datetime(2001, 1, 3))
- def test_absolute_time_2(self):
- """Test the registration of maps with absolute time
- using register_maps_in_space_time_dataset() and register_map_object_list() with empty map deletion
- """
- tgis.register_maps_in_space_time_dataset(
- type="raster",
- name=None,
- maps="register_map_1,register_map_2,register_map_null",
- start="2001-01-01 10:30:01",
- increment="8 hours",
- interval=False,
- )
- map_1 = tgis.RasterDataset("register_map_1@" + tgis.get_current_mapset())
- map_1.select()
- start, end = map_1.get_absolute_time()
- self.assertEqual(start, datetime.datetime(2001, 1, 1, 10, 30, 1))
- map_2 = tgis.RasterDataset("register_map_2@" + tgis.get_current_mapset())
- map_2.select()
- start, end = map_2.get_absolute_time()
- self.assertEqual(start, datetime.datetime(2001, 1, 1, 18, 30, 1))
- map_3 = tgis.RasterDataset("register_map_null@" + tgis.get_current_mapset())
- map_3.select()
- start, end = map_3.get_absolute_time()
- self.assertEqual(start, datetime.datetime(2001, 1, 2, 2, 30, 1))
- map_list = [map_1, map_2, map_3]
- tgis.register_map_object_list(
- type="raster",
- map_list=map_list,
- output_stds=self.strds_abs,
- delete_empty=True,
- )
- self.strds_abs.select()
- start, end = self.strds_abs.get_absolute_time()
- self.assertEqual(start, datetime.datetime(2001, 1, 1, 10, 30, 1))
- self.assertEqual(end, datetime.datetime(2001, 1, 1, 18, 30, 1))
- map_3 = tgis.VectorDataset("register_map_null@" + tgis.get_current_mapset())
- self.assertEqual(map_3.map_exists(), False)
- def test_absolute_time_3(self):
- """Test the registration of maps with absolute time.
- The timestamps are set using the C-Interface beforehand, so that the register function needs
- to read the timetsamp from the map metadata.
- """
- ciface = tgis.get_tgis_c_library_interface()
- ciface.write_raster_timestamp(
- "register_map_1", tgis.get_current_mapset(), "1 Jan 2001 10:30:01"
- )
- ciface.write_raster_timestamp(
- "register_map_2", tgis.get_current_mapset(), "1 Jan 2001 18:30:01"
- )
- tgis.register_maps_in_space_time_dataset(
- type="raster", name=None, maps="register_map_1,register_map_2"
- )
- map = tgis.RasterDataset("register_map_1@" + tgis.get_current_mapset())
- map.select()
- start, end = map.get_absolute_time()
- self.assertEqual(start, datetime.datetime(2001, 1, 1, 10, 30, 1))
- map = tgis.RasterDataset("register_map_2@" + tgis.get_current_mapset())
- map.select()
- start, end = map.get_absolute_time()
- self.assertEqual(start, datetime.datetime(2001, 1, 1, 18, 30, 1))
- def test_relative_time_strds_1(self):
- """Test the registration of maps with relative time in a
- space time raster dataset
- """
- tgis.register_maps_in_space_time_dataset(
- type="raster",
- name=self.strds_rel.get_name(),
- maps="register_map_1,register_map_2",
- start=0,
- increment=1,
- unit="day",
- interval=True,
- )
- map = tgis.RasterDataset("register_map_1@" + tgis.get_current_mapset())
- map.select()
- start, end, unit = map.get_relative_time()
- self.assertEqual(start, 0)
- self.assertEqual(end, 1)
- self.assertEqual(unit, "day")
- map = tgis.RasterDataset("register_map_2@" + tgis.get_current_mapset())
- map.select()
- start, end, unit = map.get_relative_time()
- self.assertEqual(start, 1)
- self.assertEqual(end, 2)
- self.assertEqual(unit, "day")
- self.strds_rel.select()
- start, end, unit = self.strds_rel.get_relative_time()
- self.assertEqual(start, 0)
- self.assertEqual(end, 2)
- self.assertEqual(unit, "day")
- def test_relative_time_strds_2(self):
- """Test the registration of maps with relative time in a
- space time raster dataset. The timetsamps are set for the maps using the
- C-interface before registration.
- """
- ciface = tgis.get_tgis_c_library_interface()
- ciface.write_raster_timestamp(
- "register_map_1",
- tgis.get_current_mapset(),
- "1000000 seconds/1500000 seconds",
- )
- ciface.write_raster_timestamp(
- "register_map_2",
- tgis.get_current_mapset(),
- "1500000 seconds/2000000 seconds",
- )
- tgis.register_maps_in_space_time_dataset(
- type="raster",
- name=self.strds_rel.get_name(),
- maps="register_map_1,register_map_2",
- )
- map = tgis.RasterDataset("register_map_1@" + tgis.get_current_mapset())
- map.select()
- start, end, unit = map.get_relative_time()
- self.assertEqual(start, 1000000)
- self.assertEqual(end, 1500000)
- self.assertEqual(unit, "seconds")
- map = tgis.RasterDataset("register_map_2@" + tgis.get_current_mapset())
- map.select()
- start, end, unit = map.get_relative_time()
- self.assertEqual(start, 1500000)
- self.assertEqual(end, 2000000)
- self.assertEqual(unit, "seconds")
- self.strds_rel.select()
- start, end, unit = self.strds_rel.get_relative_time()
- self.assertEqual(start, 1000000)
- self.assertEqual(end, 2000000)
- self.assertEqual(unit, "seconds")
- def test_relative_time_1(self):
- """Test the registration of maps with relative time"""
- tgis.register_maps_in_space_time_dataset(
- type="raster",
- name=None,
- maps="register_map_1,register_map_2",
- start=0,
- increment=1,
- unit="day",
- interval=True,
- )
- map = tgis.RasterDataset("register_map_1@" + tgis.get_current_mapset())
- map.select()
- start, end, unit = map.get_relative_time()
- self.assertEqual(start, 0)
- self.assertEqual(end, 1)
- self.assertEqual(unit, "day")
- map = tgis.RasterDataset("register_map_2@" + tgis.get_current_mapset())
- map.select()
- start, end, unit = map.get_relative_time()
- self.assertEqual(start, 1)
- self.assertEqual(end, 2)
- self.assertEqual(unit, "day")
- def test_relative_time_2(self):
- """Test the registration of maps with relative time"""
- tgis.register_maps_in_space_time_dataset(
- type="raster",
- name=None,
- maps="register_map_1,register_map_2",
- start=1000000,
- increment=500000,
- unit="seconds",
- interval=True,
- )
- map = tgis.RasterDataset("register_map_1@" + tgis.get_current_mapset())
- map.select()
- start, end, unit = map.get_relative_time()
- self.assertEqual(start, 1000000)
- self.assertEqual(end, 1500000)
- self.assertEqual(unit, "seconds")
- map = tgis.RasterDataset("register_map_2@" + tgis.get_current_mapset())
- map.select()
- start, end, unit = map.get_relative_time()
- self.assertEqual(start, 1500000)
- self.assertEqual(end, 2000000)
- self.assertEqual(unit, "seconds")
- def test_relative_time_3(self):
- """Test the registration of maps with relative time. The timetsamps are set beforehand using
- the C-interface.
- """
- ciface = tgis.get_tgis_c_library_interface()
- ciface.write_raster_timestamp(
- "register_map_1",
- tgis.get_current_mapset(),
- "1000000 seconds/1500000 seconds",
- )
- ciface.write_raster_timestamp(
- "register_map_2",
- tgis.get_current_mapset(),
- "1500000 seconds/2000000 seconds",
- )
- tgis.register_maps_in_space_time_dataset(
- type="raster", name=None, maps="register_map_1,register_map_2"
- )
- map = tgis.RasterDataset("register_map_1@" + tgis.get_current_mapset())
- map.select()
- start, end, unit = map.get_relative_time()
- self.assertEqual(start, 1000000)
- self.assertEqual(end, 1500000)
- self.assertEqual(unit, "seconds")
- map = tgis.RasterDataset("register_map_2@" + tgis.get_current_mapset())
- map.select()
- start, end, unit = map.get_relative_time()
- self.assertEqual(start, 1500000)
- self.assertEqual(end, 2000000)
- self.assertEqual(unit, "seconds")
- class TestVectorRegisterFunctions(TestCase):
- @classmethod
- def setUpClass(cls):
- """Initiate the temporal GIS and set the region"""
- os.putenv("GRASS_OVERWRITE", "1")
- # Use always the current mapset as temporal database
- cls.runModule("g.gisenv", set="TGIS_USE_CURRENT_MAPSET=1")
- tgis.init()
- cls.use_temp_region()
- cls.runModule("g.region", n=80.0, s=0.0, e=120.0, w=0.0, t=1.0, b=0.0, res=10.0)
- @classmethod
- def tearDownClass(cls):
- """Remove the temporary region"""
- cls.del_temp_region()
- def setUp(self):
- """Create the test maps and the space time raster datasets"""
- self.runModule(
- "v.random",
- overwrite=True,
- quiet=True,
- output="register_map_1",
- npoints=5,
- seed=1,
- )
- self.runModule(
- "v.random",
- overwrite=True,
- quiet=True,
- output="register_map_2",
- npoints=5,
- seed=1,
- )
- self.runModule(
- "r.mapcalc",
- overwrite=True,
- quiet=True,
- expression="register_map_null = null()",
- )
- self.runModule(
- "r.to.vect",
- overwrite=True,
- quiet=True,
- input="register_map_null",
- type="point",
- output="register_map_empty",
- )
- self.stvds_abs = tgis.open_new_stds(
- name="register_test_abs",
- type="stvds",
- temporaltype="absolute",
- title="Test stvds",
- descr="Test stvds",
- semantic="field",
- overwrite=True,
- )
- self.stvds_rel = tgis.open_new_stds(
- name="register_test_rel",
- type="stvds",
- temporaltype="relative",
- title="Test stvds",
- descr="Test stvds",
- semantic="field",
- overwrite=True,
- )
- def tearDown(self):
- """Remove maps from temporal database"""
- self.runModule(
- "t.unregister",
- type="vector",
- maps="register_map_1,register_map_2",
- quiet=True,
- )
- self.runModule(
- "g.remove",
- flags="f",
- type="vector",
- name="register_map_1,register_map_2",
- quiet=True,
- )
- self.runModule(
- "g.remove",
- flags="f",
- type="raster",
- name="register_map_null",
- quiet=True,
- )
- self.stvds_abs.delete()
- self.stvds_rel.delete()
- def test_absolute_time_stvds_1(self):
- """Test the registration of maps with absolute time in a
- space time raster dataset
- """
- tgis.register_maps_in_space_time_dataset(
- type="vector",
- name=self.stvds_abs.get_name(),
- maps="register_map_1,register_map_2",
- start="2001-01-01",
- increment="1 day",
- interval=True,
- )
- map = tgis.VectorDataset("register_map_1@" + tgis.get_current_mapset())
- map.select()
- start, end = map.get_absolute_time()
- self.assertEqual(start, datetime.datetime(2001, 1, 1))
- self.assertEqual(end, datetime.datetime(2001, 1, 2))
- map = tgis.VectorDataset("register_map_2@" + tgis.get_current_mapset())
- map.select()
- start, end = map.get_absolute_time()
- self.assertEqual(start, datetime.datetime(2001, 1, 2))
- self.assertEqual(end, datetime.datetime(2001, 1, 3))
- self.stvds_abs.select()
- start, end = self.stvds_abs.get_absolute_time()
- self.assertEqual(start, datetime.datetime(2001, 1, 1))
- self.assertEqual(end, datetime.datetime(2001, 1, 3))
- def test_absolute_time_stvds_2(self):
- """Test the registration of maps with absolute time in a
- space time raster dataset.
- The timestamps are set using the C-Interface beforehand, so that the register function needs
- to read the timetsamp from the map metadata.
- """
- ciface = tgis.get_tgis_c_library_interface()
- ciface.write_vector_timestamp(
- "register_map_1", tgis.get_current_mapset(), "1 Jan 2001/2 Jan 2001"
- )
- ciface.write_vector_timestamp(
- "register_map_2", tgis.get_current_mapset(), "2 Jan 2001/3 Jan 2001"
- )
- tgis.register_maps_in_space_time_dataset(
- type="vector",
- name=self.stvds_abs.get_name(),
- maps="register_map_1,register_map_2",
- )
- map = tgis.VectorDataset("register_map_1@" + tgis.get_current_mapset())
- map.select()
- start, end = map.get_absolute_time()
- self.assertEqual(start, datetime.datetime(2001, 1, 1))
- self.assertEqual(end, datetime.datetime(2001, 1, 2))
- map = tgis.VectorDataset("register_map_2@" + tgis.get_current_mapset())
- map.select()
- start, end = map.get_absolute_time()
- self.assertEqual(start, datetime.datetime(2001, 1, 2))
- self.assertEqual(end, datetime.datetime(2001, 1, 3))
- self.stvds_abs.select()
- start, end = self.stvds_abs.get_absolute_time()
- self.assertEqual(start, datetime.datetime(2001, 1, 1))
- self.assertEqual(end, datetime.datetime(2001, 1, 3))
- def test_absolute_time_stvds_3(self):
- """Test the registration of maps with absolute time in a
- space time raster dataset. The timestamps are set via method arguments and with the
- c-interface. The timestamps of the method arguments should overwrite the
- time stamps set via the C-interface.
- """
- ciface = tgis.get_tgis_c_library_interface()
- ciface.write_vector_timestamp(
- "register_map_1", tgis.get_current_mapset(), "1 Jan 2001/2 Jan 2001"
- )
- tgis.register_maps_in_space_time_dataset(
- type="vector",
- name=self.stvds_abs.get_name(),
- maps="register_map_1",
- start="2001-02-01",
- increment="1 day",
- interval=True,
- )
- map = tgis.VectorDataset("register_map_1@" + tgis.get_current_mapset())
- map.select()
- start, end = map.get_absolute_time()
- self.assertEqual(start, datetime.datetime(2001, 2, 1))
- self.assertEqual(end, datetime.datetime(2001, 2, 2))
- self.stvds_abs.select()
- start, end = self.stvds_abs.get_absolute_time()
- self.assertEqual(start, datetime.datetime(2001, 2, 1))
- self.assertEqual(end, datetime.datetime(2001, 2, 2))
- def test_absolute_time_1(self):
- """Register vector maps in the temporal database and in addition in a stvds using the object method
- :return:
- """
- tgis.register_maps_in_space_time_dataset(
- type="vector",
- name=None,
- maps="register_map_1,register_map_2",
- start="2001-01-01",
- increment="1 day",
- interval=True,
- )
- map_1 = tgis.VectorDataset("register_map_1@" + tgis.get_current_mapset())
- map_1.select()
- start, end = map_1.get_absolute_time()
- self.assertEqual(start, datetime.datetime(2001, 1, 1))
- self.assertEqual(end, datetime.datetime(2001, 1, 2))
- map_2 = tgis.VectorDataset("register_map_2@" + tgis.get_current_mapset())
- map_2.select()
- start, end = map_2.get_absolute_time()
- self.assertEqual(start, datetime.datetime(2001, 1, 2))
- self.assertEqual(end, datetime.datetime(2001, 1, 3))
- map_list = [map_1, map_2]
- tgis.register_map_object_list(
- type="vector",
- map_list=map_list,
- output_stds=self.stvds_abs,
- delete_empty=False,
- )
- self.stvds_abs.select()
- start, end = self.stvds_abs.get_absolute_time()
- self.assertEqual(start, datetime.datetime(2001, 1, 1))
- self.assertEqual(end, datetime.datetime(2001, 1, 3))
- def test_absolute_time_2(self):
- """Register vector maps in the temporal database and in addition
- in a stvds using the object method deleting empty maps
- :return:
- """
- tgis.register_maps_in_space_time_dataset(
- type="vector",
- name=None,
- maps="register_map_1,register_map_2,register_map_empty",
- start="2001-01-01",
- increment="1 day",
- interval=True,
- )
- map_1 = tgis.VectorDataset("register_map_1@" + tgis.get_current_mapset())
- map_1.select()
- start, end = map_1.get_absolute_time()
- self.assertEqual(start, datetime.datetime(2001, 1, 1))
- self.assertEqual(end, datetime.datetime(2001, 1, 2))
- map_2 = tgis.VectorDataset("register_map_2@" + tgis.get_current_mapset())
- map_2.select()
- start, end = map_2.get_absolute_time()
- self.assertEqual(start, datetime.datetime(2001, 1, 2))
- self.assertEqual(end, datetime.datetime(2001, 1, 3))
- map_3 = tgis.VectorDataset("register_map_empty@" + tgis.get_current_mapset())
- map_3.select()
- start, end = map_3.get_absolute_time()
- self.assertEqual(start, datetime.datetime(2001, 1, 3))
- self.assertEqual(end, datetime.datetime(2001, 1, 4))
- map_list = [map_1, map_2, map_3]
- tgis.register_map_object_list(
- type="vector",
- map_list=map_list,
- output_stds=self.stvds_abs,
- delete_empty=True,
- )
- self.stvds_abs.select()
- start, end = self.stvds_abs.get_absolute_time()
- self.assertEqual(start, datetime.datetime(2001, 1, 1))
- self.assertEqual(end, datetime.datetime(2001, 1, 3))
- map_3 = tgis.VectorDataset("register_map_empty@" + tgis.get_current_mapset())
- self.assertEqual(map_3.map_exists(), False)
- class TestRegisterFails(TestCase):
- def test_error_handling_1(self):
- # start option is missing
- self.assertModuleFail(
- "t.register", input="test", end="2001-01-01", maps=("a", "b")
- )
- def test_error_handling_2(self):
- # No input definition
- self.assertModuleFail("t.register", input="test", start="2001-01-01")
- def test_error_handling_3(self):
- # File and maps are mutually exclusive
- self.assertModuleFail(
- "t.register",
- input="test",
- start="2001-01-01",
- maps=("a", "b"),
- file="maps.txt",
- )
- def test_error_handling_4(self):
- # Increment needs start
- self.assertModuleFail(
- "t.register", input="test", increment="1 day", maps=("a", "b")
- )
- def test_error_handling_5(self):
- # Interval needs start
- self.assertModuleFail("t.register", flags="i", input="test", maps=("a", "b"))
- def test_error_handling_6(self):
- # Increment and end are mutually exclusive
- self.assertModuleFail(
- "t.register",
- input="test",
- start="2001-01-01",
- end="2001-01-01",
- increment="1 day",
- maps=("a", "b"),
- )
- def test_error_handling_7(self):
- # Interval and end are mutually exclusive
- self.assertModuleFail(
- "t.register",
- flags="i",
- input="test",
- start="2001-01-01",
- end="2001-01-01",
- maps=("a", "b"),
- )
- class TestRegisterMapsetAccess(TestCase):
- @classmethod
- def setUpClass(cls):
- """Initiate the temporal GIS and set the region"""
- os.putenv("GRASS_OVERWRITE", "1")
- tgis.init()
- cls.use_temp_region()
- cls.runModule("g.region", n=80.0, s=0.0, e=120.0, w=0.0, t=1.0, b=0.0, res=10.0)
- # Create the test maps
- cls.runModule(
- "r.mapcalc",
- expression="register_map_1 = 1",
- overwrite=True,
- quiet=True,
- )
- cls.runModule(
- "r.mapcalc",
- expression="register_map_2 = 2",
- overwrite=True,
- quiet=True,
- )
- cls.del_temp_region()
- def setUp(self):
- """Create the space time raster dataset"""
- self.strds_abs = tgis.open_new_stds(
- name="register_test_abs",
- type="strds",
- temporaltype="absolute",
- title="Test strds",
- descr="Test strds",
- semantic="field",
- overwrite=True,
- )
- tgis.register_maps_in_space_time_dataset(
- type="raster",
- name=self.strds_abs.get_name(),
- maps="register_map_1,register_map_2",
- start="2001-01-01",
- increment="1 day",
- interval=True,
- )
- self.currmapset = tgis.get_current_mapset()
- self.newmapset = "test_temporal_register_mapset_access"
- # create and switch to new mapset
- self.runModule(
- "g.mapset",
- mapset=self.newmapset,
- flags="c",
- quiet=True,
- )
- # add old mapset to search path
- self.runModule(
- "g.mapsets",
- mapset=self.currmapset,
- operation="add",
- quiet=True,
- )
- self.runModule(
- "g.mapsets",
- flags="p",
- verbose=True,
- )
- tgis.stop_subprocesses()
- tgis.init()
- self.assertNotEqual(self.currmapset, tgis.get_current_mapset())
- def tearDown(self):
- """Remove raster maps from current mapset"""
- # switch to old mapset
- self.runModule(
- "g.mapset",
- mapset=self.currmapset,
- quiet=True,
- )
- tgis.stop_subprocesses()
- tgis.init()
- self.strds_abs.delete()
- self.runModule(
- "g.remove",
- flags="f",
- type="raster",
- name="register_map_1,register_map_2",
- quiet=True,
- )
- grassenv = gscript.gisenv()
- mapset_path = os.path.join(
- grassenv["GISDBASE"], grassenv["LOCATION_NAME"], self.newmapset
- )
- gscript.try_rmdir(mapset_path)
- def test_mapset_access_1(self):
- """Test the registration of maps from a different mapset."""
- self.strds_abs_2 = tgis.open_new_stds(
- name="register_test_abs",
- type="strds",
- temporaltype="absolute",
- title="Test strds",
- descr="Test strds",
- semantic="field",
- overwrite=True,
- )
- # register maps from another mapset
- # names are not fully qualified, maps are in a different mapset
- strdsname = self.strds_abs_2.get_name() + "@" + self.newmapset
- maps = "register_map_1,register_map_2"
- tgis.register_maps_in_space_time_dataset(
- type="raster",
- name=strdsname,
- maps=maps,
- start="2001-01-01",
- increment="1 day",
- interval=True,
- )
- self.assertModule(
- "t.remove",
- type="strds",
- inputs=strdsname,
- flags="rf",
- quiet=True,
- )
- if __name__ == "__main__":
- test()
|