Selaa lähdekoodia

Added sampling methods to aggregation modules

git-svn-id: https://svn.osgeo.org/grass/grass/trunk@49865 15284696-431f-4ddb-bdfa-cd5b030d7da7
Soeren Gebbert 13 vuotta sitten
vanhempi
commit
f18d2bbf6c

+ 1 - 1
temporal/t.create/t.create.py

@@ -103,7 +103,7 @@ def main():
 
     if sp.is_in_db(dbif) and grass.overwrite() == False:
         dbif.close()
-        grass.fatal(_("Space time %s dataset <%s> is already in the database. Use the overwrite flag.") % name)
+        grass.fatal(_("Space time %s dataset <%s> is already in the database. Use the overwrite flag.") % (sp.get_new_map_instance(None).get_type(), name))
 
     if sp.is_in_db(dbif) and grass.overwrite() == True:
         grass.info(_("Overwrite space time %s dataset <%s> and unregister all maps.") % (sp.get_new_map_instance(None).get_type(), name))

+ 72 - 0
temporal/t.info/test.t.info.sh

@@ -0,0 +1,72 @@
+# Test the info output
+
+# We need to set a specific region in the
+# @preprocess step of this test. 
+g.region s=0 n=80 w=0 e=120 b=0 t=50 res=10 res3=10 -p3
+
+r.mapcalc --o expr="prec_1 = rand(0, 550)"
+r.mapcalc --o expr="prec_2 = rand(0, 450)"
+
+r3.mapcalc --o expr="prec_1 = rand(0, 120)"
+r3.mapcalc --o expr="prec_2 = rand(0, 320)"
+
+v.random --o -z output=lidar_abs_1 n=20 zmin=0 zmax=100 column=height
+v.random --o -z output=lidar_abs_2 n=20 zmin=0 zmax=100 column=height
+
+# The first @test
+
+t.create --o type=strds temporaltype=absolute output=precip_abs1 title="A test" descr="A test"
+t.create --o type=strds temporaltype=absolute output=precip_abs2 title="A test" descr="A test"
+
+t.create --o type=str3ds temporaltype=absolute output=precip_abs1 title="A test" descr="A test"
+t.create --o type=str3ds temporaltype=absolute output=precip_abs2 title="A test" descr="A test"
+
+t.create --o type=stvds temporaltype=absolute output=lidar_abs_ds1 title="A test" descr="A test"
+t.create --o type=stvds temporaltype=absolute output=lidar_abs_ds2 title="A test" descr="A test"
+
+tr.register -i input=precip_abs1 maps=prec_1,prec_2 start="2001-01-01" increment="20 years"
+t.info type=strds input=precip_abs1
+t.info -g type=strds input=precip_abs1
+
+tr.register -i input=precip_abs2 maps=prec_1,prec_2 start="2001-01-01" increment="20 years"
+t.info type=strds input=precip_abs2
+t.info -g type=strds input=precip_abs2
+t.info type=rast input=prec_1
+t.info -g type=rast input=prec_1
+t.info type=rast input=prec_2
+t.info -g type=rast input=prec_2
+
+
+tr3.register -i input=precip_abs1 maps=prec_1,prec_2 start="2001-01-01" increment="20 years"
+t.info type=str3ds input=precip_abs1
+t.info -g type=str3ds input=precip_abs1
+
+tr3.register -i input=precip_abs2 maps=prec_1,prec_2 start="2001-01-01" increment="20 years"
+t.info type=str3ds input=precip_abs2
+t.info -g type=str3ds input=precip_abs2
+t.info type=rast3 input=prec_1
+t.info -g type=rast3 input=prec_1
+t.info type=rast3 input=prec_2
+t.info -g type=rast3 input=prec_2
+
+tv.register --v -i input=lidar_abs_ds1 maps=lidar_abs_1,lidar_abs_2 start="2001-01-01" increment="20 years"
+t.info type=stvds input=lidar_abs_ds1
+t.info -g type=stvds input=lidar_abs_ds1
+
+tv.register --v -i input=lidar_abs_ds2 maps=lidar_abs_1,lidar_abs_2 start="2001-01-01" increment="20 years"
+t.info type=stvds input=lidar_abs_ds2
+t.info -g type=stvds input=lidar_abs_ds2
+t.info type=vect input=lidar_abs_1
+t.info -g type=vect input=lidar_abs_1
+t.info type=vect input=lidar_abs_2
+t.info -g type=vect input=lidar_abs_2
+
+t.remove type=vect input=lidar_abs_1,lidar_abs_2
+t.remove type=stvds input=lidar_abs_ds1,lidar_abs_ds2
+
+t.remove type=rast input=prec_1,prec_2
+t.remove type=strds input=precip_abs1,precip_abs2
+
+t.remove type=rast3 input=prec_1,prec_2
+t.remove type=str3ds input=precip_abs1,precip_abs2
+

+ 8 - 4
temporal/t.sample/test.t.sample.sh

@@ -55,9 +55,12 @@ t.create --o type=strds temporaltype=absolute output=precip_abs0 title="A test w
 t.create --o type=stvds temporaltype=absolute output=pnts_abs0 title="A test with vector input files" descr="A test with vector input files"
 t.create --o type=stvds temporaltype=absolute output=pnts_abs1 title="A test with vector input files" descr="A test with vector input files"
 
-tr.register -i input=precip_abs0 file=$n1 start="2001-01-01" increment="1 months"
-tv.register    input=pnts_abs0 file=$n2 start=file end=file
-tv.register    input=pnts_abs1 file=$n3 start=file end=file
+tr.register -i input=precip_abs0 file="$n1" start="2001-01-01" increment="1 months"
+tr.list precip_abs0 -h
+tv.register    input=pnts_abs0 file="$n2" start=file end=file
+tv.list pnts_abs0 -h
+tv.register    input=pnts_abs1 file="$n3" start=file end=file
+tv.list pnts_abs1 -h
 
 # The @test
 t.sample method=equal   input=precip_abs0 samtype=stvds sample=pnts_abs0 -h
@@ -68,7 +71,8 @@ t.sample input=precip_abs0 samtype=strds sample=precip_abs0 -h
 
 
 # Test with temporal point data
-tr.register    input=precip_abs0 file=$n1 start="2001-01-01" increment="1 months"
+tr.register    input=precip_abs0 file="$n1" start="2001-01-01" increment="1 months"
+tr.list precip_abs0 -h
 t.sample input=precip_abs0 samtype=stvds sample=pnts_abs0 -h
 t.sample input=precip_abs0 samtype=stvds sample=pnts_abs1 -h
 

+ 2 - 2
temporal/tr.aggregate.ds/test.tr.aggregate.ds.sh

@@ -27,14 +27,14 @@ soil_3|2001-08-01|2001-12-01
 EOF
 
 t.create --o type=stvds temporaltype=absolute output=soil_abs1 title="A test" descr="A test"
-tv.register input=soil_abs1 file=$n1 start=file end=file
+tv.register input=soil_abs1 file="$n1" start=file end=file
 
 t.create --o type=strds temporaltype=absolute output=precip_abs1 title="A test" descr="A test"
 tr.register -i input=precip_abs1 maps=prec_1,prec_2,prec_3,prec_4,prec_5,prec_6 start="2001-03-01 00:00:00" increment="1 months"
 
 # The @test
 
-tr.aggregate.ds --o input=precip_abs1 output=precip_abs2 base=prec_sum type=stvds dataset=soil_abs1 method=sum
+tr.aggregate.ds --o --v input=precip_abs1 output=precip_abs2 base=prec_sum type=stvds sample=soil_abs1 method=sum sampling=start,during
 t.info type=strds input=precip_abs2
 tr.list input=precip_abs2 method=deltagap
 

+ 14 - 3
temporal/tr.aggregate.ds/tr.aggregate.ds.py

@@ -30,7 +30,7 @@
 #%end
 
 #%option
-#% key: dataset
+#% key: sample
 #% type: string
 #% description: The time intervals from this space time dataset (raster, vector or raster3d) are used for aggregation computation. 
 #% required: yes
@@ -65,6 +65,16 @@
 #%end
 
 #%option
+#% key: sampling
+#% type: string
+#% description: The method to be used for sampling the input dataset
+#% required: no
+#% multiple: yes
+#% options: start,during,overlap,contain,equal
+#% answer: start
+#%end
+
+#%option
 #% key: base
 #% type: string
 #% description: Base name of the new created raster maps
@@ -87,11 +97,12 @@ def main():
     # Get the options
     input = options["input"]
     output = options["output"]
-    sampler = options["dataset"]
+    sampler = options["sample"]
     base = options["base"]
     register_null = flags["n"]
     method = options["method"]
     type = options["type"]
+    sampling = options["sampling"]
 
     # Make sure the temporal database exists
     tgis.create_temporal_database()
@@ -172,7 +183,7 @@ def main():
         start = row["start_time"]
         end = row["end_time"]
 
-        input_map_names = tgis.collect_map_names(sp, dbif, start, end)
+        input_map_names = tgis.collect_map_names(sp, dbif, start, end, sampling)
 
         if input_map_names:
             tgis.aggregate_raster_maps(new_sp, mapset, input_map_names, base, start, end, count, method, register_null, dbif)

+ 5 - 9
temporal/tr.aggregate/test.tr.aggregate.sh

@@ -15,22 +15,18 @@ r.mapcalc --o expr="prec_5 = rand(0, 300)"
 r.mapcalc --o expr="prec_6 = rand(0, 650)"
 
 t.create --o type=strds temporaltype=absolute output=precip_abs1 title="A test" descr="A test"
-tr.register --v -i input=precip_abs1 maps=prec_1,prec_2,prec_3,prec_4,prec_5,prec_6 start="2001-01-15 12:05:45" increment="14 days"
+tr.register -i input=precip_abs1 maps=prec_1,prec_2,prec_3,prec_4,prec_5,prec_6 start="2001-01-15 12:05:45" increment="14 days"
 
 # The first @test
-# We create the space time raster inputs and register the raster maps with absolute time interval
 
-t.info type=strds input=precip_abs1
-
-tr.aggregate --o --v input=precip_abs1 output=precip_abs2 base=prec_sum granularity="2 days" method=average
+tr.aggregate --o --v input=precip_abs1 output=precip_abs2 base=prec_sum granularity="2 days" method=average sampling=start,during
 t.info type=strds input=precip_abs2
-tr.aggregate --o --v input=precip_abs1 output=precip_abs2 base=prec_sum granularity="1 months" method=maximum
+tr.aggregate --o --v input=precip_abs1 output=precip_abs2 base=prec_sum granularity="1 months" method=maximum sampling=start,during
 t.info type=strds input=precip_abs2
-tr.aggregate --o --v input=precip_abs1 output=precip_abs2 base=prec_sum granularity="2 months" method=minimum
+tr.aggregate --o --v input=precip_abs1 output=precip_abs2 base=prec_sum granularity="2 months" method=minimum sampling=start,during
 t.info type=strds input=precip_abs2
-tr.aggregate --o --v input=precip_abs1 output=precip_abs2 base=prec_sum granularity="3 months" method=sum
+tr.aggregate --o --v input=precip_abs1 output=precip_abs2 base=prec_sum granularity="3 months" method=sum sampling=start,during
 t.info type=strds input=precip_abs2
 
-
 t.remove type=rast input=prec_1,prec_2,prec_3,prec_4,prec_5,prec_6
 t.remove type=strds input=precip_abs1,precip_abs2

+ 12 - 1
temporal/tr.aggregate/tr.aggregate.py

@@ -59,6 +59,16 @@
 #%end
 
 #%option
+#% key: sampling
+#% type: string
+#% description: The method to be used for sampling the input dataset
+#% required: no
+#% multiple: yes
+#% options: start,during,overlap,contain,equal
+#% answer: start
+#%end
+
+#%option
 #% key: base
 #% type: string
 #% description: Base name of the new created raster maps
@@ -86,6 +96,7 @@ def main():
     base = options["base"]
     register_null = flags["n"]
     method = options["method"]
+    sampling = options["sampling"]
 
     # Make sure the temporal database exists
     tgis.create_temporal_database()
@@ -147,7 +158,7 @@ def main():
             end = next_start_time + gran
         next_start_time = end
 
-        input_map_names = tgis.collect_map_names(sp, dbif, start, end)
+        input_map_names = tgis.collect_map_names(sp, dbif, start, end, sampling)
 
         if input_map_names:
             tgis.aggregate_raster_maps(new_sp, mapset, input_map_names, base, start, end, count, method, register_null, dbif)

+ 1 - 1
temporal/tr.export/tr.export.py

@@ -55,7 +55,7 @@
 #% required: no
 #% multiple: no
 #% options: no,gzip,bzip2
-#% answer: bzip
+#% answer: bzip2
 #%end
 
 #%option

+ 9 - 6
temporal/tr.import/test.tr.import.sh

@@ -29,14 +29,17 @@ EOF
 t.create --o type=strds temporaltype=absolute output=precip_abs1 title="A test with input files" descr="A test with input files"
 
 # The first @test
-tr.register -i input=precip_abs1 file=$n1 start="2001-01-01" increment="1 months"
+tr.register -i input=precip_abs1 file="$n1" start="2001-01-01" increment="1 months"
 tr.export input=precip_abs1 output=strds_export.tar.bz2 compression=bzip2 workdir=test
 
-tr.import --o input=strds_export.tar.bz2 output=precip_abs1 extrdir=test -oe
-tr.import --o input=strds_export.tar.bz2 output=precip_abs1 extrdir=test -loe
-
-tr.import --o input=strds_export.tar.bz2 output=precip_abs1 extrdir=test 
-tr.import --o input=strds_export.tar.bz2 output=precip_abs1 extrdir=test -l
+tr.import --o input=strds_export.tar.bz2 output=precip_abs1 extrdir=test\
+          -oe title="A test" description="Description of a test"
+tr.import --o input=strds_export.tar.bz2 output=precip_abs1 extrdir=test\
+          -loe title="A test" description="Description of a test"
+tr.import --o input=strds_export.tar.bz2 output=precip_abs1 extrdir=test\
+              title="A test" description="Description of a test"
+tr.import --o input=strds_export.tar.bz2 output=precip_abs1 extrdir=test\
+          -l  title="A test" description="Description of a test"
 
 t.remove type=rast input=prec_1,prec_2,prec_3,prec_4,prec_5,prec_6
 t.remove type=strds input=precip_abs1

+ 22 - 20
temporal/tr.register/test.tr.register.sh

@@ -30,54 +30,56 @@ t.create --o type=strds temporaltype=absolute output=precip_abs7 title="A test"
 
 tr.register -i input=precip_abs1 maps=prec_1,prec_2,prec_3,prec_4,prec_5,prec_6 start="2001-01-01" increment="1 seconds"
 t.info type=strds input=precip_abs1
+t.info -g type=strds input=precip_abs1
 tr.list input=precip_abs1
-t.topology -t input=precip_abs1
+t.topology input=precip_abs1
 
 tr.register -i input=precip_abs2 maps=prec_1,prec_2,prec_3,prec_4,prec_5,prec_6 start="2001-01-01" increment="20 seconds, 5 minutes"
 t.info type=strds input=precip_abs2
+t.info -g type=strds input=precip_abs2
 tr.list input=precip_abs2
-t.topology -t input=precip_abs2
+t.topology input=precip_abs2
 
 tr.register -i input=precip_abs3 maps=prec_1,prec_2,prec_3,prec_4,prec_5,prec_6 start="2001-01-01" increment="8 hours"
-t.info type=strds input=precip_abs3
+t.info -g type=strds input=precip_abs3
 tr.list input=precip_abs3
-t.topology -t input=precip_abs3
+t.topology input=precip_abs3
 
 tr.register input=precip_abs4 maps=prec_1,prec_2,prec_3,prec_4,prec_5,prec_6 start="2001-01-01" increment="3 days"
-t.info type=strds input=precip_abs4
+t.info -g type=strds input=precip_abs4
 tr.list input=precip_abs4
-t.topology -t input=precip_abs4
+t.topology input=precip_abs4
 
 tr.register input=precip_abs5 maps=prec_1,prec_2,prec_3,prec_4,prec_5,prec_6 start="2001-01-01" increment="4 weeks"
-t.info type=strds input=precip_abs5
+t.info -g type=strds input=precip_abs5
 tr.list input=precip_abs5
-t.topology -t input=precip_abs5
+t.topology input=precip_abs5
 
 tr.register input=precip_abs6 maps=prec_1,prec_2,prec_3,prec_4,prec_5,prec_6 start="2001-08-01" increment="2 months"
-t.info type=strds input=precip_abs6
+t.info -g type=strds input=precip_abs6
 tr.list input=precip_abs6
-t.topology -t input=precip_abs6
+t.topology input=precip_abs6
 
 tr.register input=precip_abs7 maps=prec_1,prec_2,prec_3,prec_4,prec_5,prec_6 start="2001-01-01" increment="20 years, 3 months, 1 days, 4 hours"
-t.info type=strds input=precip_abs7
+t.info -g type=strds input=precip_abs7
 tr.list input=precip_abs7
-t.topology -t input=precip_abs7
+t.topology input=precip_abs7
 # Register with different valid time again
 tr.register input=precip_abs7 maps=prec_1,prec_2,prec_3,prec_4,prec_5,prec_6 start="2001-01-01" increment="99 years, 9 months, 9 days, 9 hours"
-t.info type=strds input=precip_abs7
+t.info -g type=strds input=precip_abs7
 tr.list input=precip_abs7
-t.topology -t input=precip_abs7
+t.topology input=precip_abs7
 # Register with different valid time again creating an interval
 tr.register -i input=precip_abs7 maps=prec_1,prec_2,prec_3,prec_4,prec_5,prec_6 start="2001-01-01" increment="99 years, 9 months, 9 days, 9 hours"
-t.info type=strds input=precip_abs7
+t.info -g type=strds input=precip_abs7
 tr.list input=precip_abs7
-t.topology -t input=precip_abs7
+t.topology input=precip_abs7
 
 tr.register input=precip_abs7 maps=prec_1,prec_2,prec_3,prec_4,prec_5,prec_6 start="2001-01-01" end="2002-01-01"
-t.info type=strds input=precip_abs7
+t.info -g type=strds input=precip_abs7
 tr.list input=precip_abs7
 t.topology -t input=precip_abs7
 
-t.remove --v type=rast input=prec_1,prec_2,prec_3
-t.remove --v type=strds input=precip_abs1,precip_abs2,precip_abs3,precip_abs4,precip_abs5,precip_abs6,precip_abs7
-t.remove --v type=rast input=prec_4,prec_5,prec_6
+t.remove type=rast input=prec_1,prec_2,prec_3
+t.remove type=strds input=precip_abs1,precip_abs2,precip_abs3,precip_abs4,precip_abs5,precip_abs6,precip_abs7
+t.remove type=rast input=prec_4,prec_5,prec_6

+ 1 - 1
temporal/tr.to.rast3/test.tr.to.rast3.sh

@@ -24,7 +24,7 @@ t.create --o type=strds temporaltype=absolute output=precip_abs title="A test" d
 
 tr.register -i input=precip_abs maps=prec_1,prec_2,prec_3,prec_4,prec_5,prec_6 start="2001-01-01" increment="1 months"
 
-tr.to.rast3 --o input=precip_abs output=prec_sum
+tr.to.rast3 --o input=precip_abs output=preciptiation
 
 t.remove type=rast input=prec_1,prec_2,prec_3,prec_4,prec_5,prec_6
 t.remove type=strds input=precip_abs