@@ -37,6 +37,9 @@ def setUp(self):
3737 self .filename2 = os .path .join (
3838 os .path .dirname (os .path .abspath (__file__ )), "test_file2.nc"
3939 )
40+ self .cell_measures = os .path .join (
41+ os .path .dirname (os .path .abspath (__file__ )), "cell_measures.nc"
42+ )
4043
4144 def test_Field_collapse_CLIMATOLOGICAL_TIME (self ):
4245 verbose = False
@@ -853,6 +856,31 @@ def test_Field_collapse_HEALPix(self):
853856 g1 .coordinate_reference ("grid_mapping_name:latitude_longitude" )
854857 )
855858
859+ def test_Field_cell_measures (self ):
860+ """Test collapse weights by area and volume cell measures."""
861+ f = cf .read (self .cell_measures )[0 ]
862+ self .assertEqual (f .shape , (1 , 5 , 5 , 5 ))
863+ self .assertEqual (f .cell_measure ("measure:area" ).shape , (5 , 5 ))
864+ self .assertEqual (f .cell_measure ("measure:volume" ).shape , (1 , 5 , 5 , 5 ))
865+
866+ f .collapse ("area: mean" , weights = "area" )
867+ f .collapse ("volume: mean" , weights = "volume" )
868+
869+ self .assertEqual (f .weights ("area" ).shape , (5 , 5 ))
870+ self .assertEqual (f .weights ("volume" ).shape , (5 , 5 , 5 ))
871+
872+ g = f [..., 0 ]
873+
874+ self .assertEqual (g .shape , (1 , 5 , 5 , 1 ))
875+ self .assertEqual (g .cell_measure ("measure:area" ).shape , (5 , 1 ))
876+ self .assertEqual (g .cell_measure ("measure:volume" ).shape , (1 , 5 , 5 , 1 ))
877+
878+ g .collapse ("area: mean" , weights = "area" )
879+ g .collapse ("volume: mean" , weights = "volume" )
880+
881+ self .assertEqual (g .weights ("area" ).shape , (5 ,))
882+ self .assertEqual (g .weights ("volume" ).shape , (5 , 5 ))
883+
856884
857885if __name__ == "__main__" :
858886 print ("Run date:" , datetime .datetime .now ())
0 commit comments