Beispiel #1
0
 def testDetermineRiverDirectionsTwo(self):
     nlat = 8
     nlon = 8
     orography = np.array(
         [[10.0, 10.0, 10.0, 10.0, 10.0, 10.0, 10.0, 10.0],
          [10.0, 10.0, 9.8, 10.0, -1.0, 3.0, 10.0, 10.0],
          [10.0, 9.0, 10.0, 10.0, 10.0, 10.0, 4.0, 10.0],
          [10.0, 8.3, 10.0, 10.0, 10.0, 10.0, 4.1, 10.0],
          [10.0, 7.3, 10.0, 10.0, 10.0, 10.0, 4.8, 10.0],
          [10.0, 10.0, 7.1, 6.0, 5.0, 4.9, 10.0, 10.0],
          [10.0, 10.0, 10.0, 10.0, 10.0, 10.0, 10.0, 10.0],
          [10.0, 10.0, 10.0, 10.0, 10.0, 10.0, 10.0, 10.0]],
         dtype=np.float64)
     lsmask = np.array(
         [[False, False, False, False, False, False, False, False],
          [False, False, False, False, False, False, False, False],
          [False, False, False, False, False, False, False, False],
          [False, False, False, False, False, False, False, False],
          [False, False, False, False, False, False, False, False],
          [False, False, False, False, False, False, False, False],
          [False, False, False, False, False, False, False, False],
          [False, False, False, False, False, False, False, False]],
         dtype=np.int32)
     truesinks = np.array(
         [[False, False, False, False, False, False, False, False],
          [False, False, False, False, True, False, False, False],
          [False, False, False, False, False, False, False, False],
          [False, False, False, False, False, False, False, False],
          [False, False, False, False, False, False, False, False],
          [False, False, False, False, False, False, False, False],
          [False, False, False, False, False, False, False, False],
          [False, False, False, False, False, False, False, False]],
         dtype=np.int32)
     expected_rdirs_out = np.array(
         [[6, 3, 2, 3, 2, 1, 1, 6], [3, 2, 1, 6, 5, 4, 4, 1],
          [3, 2, 1, 9, 8, 7, 7, 4], [3, 2, 1, 6, 9, 9, 8, 7],
          [6, 3, 3, 3, 3, 9, 8, 7], [9, 6, 6, 6, 6, 9, 8, 7],
          [6, 9, 9, 9, 9, 8, 7, 6], [9, 8, 7, 4, 4, 6, 9, 9]],
         dtype=np.float64)
     rdirs = np.zeros((8, 8), dtype=np.float64)
     always_flow_to_sea_in = True
     use_diagonal_nbrs_in = True
     mark_pits_as_true_sinks_in = False
     determine_river_directions_wrapper.determine_river_directions(
         rdirs, orography, lsmask, truesinks, always_flow_to_sea_in,
         use_diagonal_nbrs_in, mark_pits_as_true_sinks_in)
     np.testing.assert_array_equal(rdirs, expected_rdirs_out)
def determine_river_directions(orography,lsmask,truesinks=None,
                               always_flow_to_sea=True,
                               use_diagonal_nbrs=True,
                               mark_pits_as_true_sinks=True):
    rdirs = field.makeEmptyField('RiverDirections',np.float64,orography.get_grid())
    if truesinks is None:
        truesinks = field.makeEmptyField('Generic',np.float64,orography.get_grid())
    determine_river_directions_wrapper.determine_river_directions(rdirs.get_data(),
                                                                  orography.get_data(),
                                                                  lsmask.get_data().astype(dtype=np.int32,
                                                                                           order='C',
                                                                                           copy=False),
                                                                  truesinks.get_data().astype(dtype=np.int32,
                                                                                           order='C',
                                                                                           copy=False),
                                                                  always_flow_to_sea,
                                                                  use_diagonal_nbrs,
                                                                  mark_pits_as_true_sinks)
    return rdirs