def _location_to_tile_corner(cls, xs, ys, tile_size=1): """Convert locations to SRTM tile corner. For example, (-120.5, 40.1) becomes (-120, 40). The lower left corner of the tile is used. Decimals are used to preserve precsion for fractional tile sizes. Args: xs, ys: Lists of x and y coordinates. tile_size: Which value to round the tiles to. Int or Decimal. Returns: tile_names: List of (Decimal, Decimal) northing, easting tuples. """ northings = [utils.decimal_base_floor(y, tile_size) for y in ys] eastings = [utils.decimal_base_floor(y, tile_size) for y in xs] return list(zip(northings, eastings))
def test_fractional_base(self): assert utils.decimal_base_floor(5.6, Decimal("0.25")) == Decimal("5.5")
def test_other_base(self): assert utils.decimal_base_floor(290.9, 50) == 250
def test_negative_value(self): assert utils.decimal_base_floor(-5.1, 5) == -10
def test_base_1_default(self): values = [-1, 0, 1, -0.6, -0.4, 0.4, 0.6, 99.91] for x in values: assert np.floor(x) == utils.decimal_base_floor(x) assert np.floor(x) == utils.decimal_base_floor(x, 1)