Пример #1
0
def test_lvl_error():
    # lvl 0 is whole world -> lng/lat error is half of max lng/lat
    assert (180, 90) == hilbert._lvl_error(0)

    # every level halves the error
    lng_err, lat_err = 180, 90
    for lvl in range(1, 30):
        lng_err /= 2
        lat_err /= 2
        assert (lng_err, lat_err) == hilbert._lvl_error(lvl)
Пример #2
0
def test_coord2int2coord():
    for lvl in range(1, 30):
        lng_err, lat_err = hilbert._lvl_error(lvl)
        dim = 1 << lvl

        for _i in range(1000):
            lng, lat = rand_lng(), rand_lat()

            x, y = hilbert._coord2int(lng, lat, dim)

            lng_x, lat_y = hilbert._int2coord(x, y, dim)

            # we always get lower left corner of coding cell
            # hence add error and then we have +- error
            assert lng == pytest.approx(lng_x + lng_err, abs=lng_err)
            assert lat == pytest.approx(lat_y + lat_err, abs=lat_err)