Example #1
0
def test_polygonizeMask():
    # test a simple box
    boxmask = np.array([[0, 0, 0, 0, 0], [0, 1, 1, 1, 0], [0, 1, 0, 1, 0],
                        [0, 1, 1, 1, 0], [0, 0, 0, 0, 0]],
                       dtype=np.bool)

    g1 = geom.polygonizeMask(boxmask, shrink=None)
    assert np.isclose(g1.Area(), 8.0)  # polygonizeMask: simple area
    assert g1.GetSpatialReference() is None  # polygonizeMask: empty srs

    # test shrink
    g1b = geom.polygonizeMask(boxmask, shrink=0.0001)
    assert np.isclose(g1b.Area(), 7.99984000)  # polygonizeMask: shrunk area

    # test a more complex area
    complexmask = np.array([[0, 1, 0, 0, 0], [1, 1, 0, 1, 0], [0, 0, 0, 1, 1],
                            [1, 1, 0, 1, 0], [0, 1, 0, 0, 0]],
                           dtype=np.bool)

    g2 = geom.polygonizeMask(complexmask, shrink=None, flat=False)
    assert np.isclose(len(g2), 3)  # polygonizeMask: geometry count
    assert np.isclose(sum([g.Area() for g in g2]),
                      10.0)  # polygonizeMask: area

    # flatten the complex area
    g3 = geom.polygonizeMask(complexmask, flat=True, shrink=None)
    assert np.isclose(g3.Area(), 10.0)  # polygonizeMask: flattened area

    # set a boundary and srs context
    g4 = geom.polygonizeMask(complexmask,
                             bounds=(-3, 10, 22, 35),
                             srs=EPSG3035,
                             flat=True,
                             shrink=None)
    assert np.isclose(g4.Area(), 250.0)  # polygonizeMask: contexted area
    assert g4.GetSpatialReference().IsSame(
        EPSG3035)  # error("polygonizeMask: contexted srs
Example #2
0
def test_transform():
    # test a single point
    pt = geom.point(7, 48, srs=EPSG4326)
    t1 = geom.transform(pt, toSRS=EPSG3035)
    assert np.isclose(t1.GetX(), 4097075.016)
    assert np.isclose(t1.GetY(), 2769703.15423898)

    # make a collection of polygons using polygonizeMask
    complexmask = np.array([[0, 1, 0, 0, 0], [1, 1, 0, 1, 0], [0, 0, 0, 1, 1],
                            [1, 1, 0, 1, 0], [0, 1, 0, 0, 0]],
                           dtype=np.bool)

    polygons = geom.polygonizeMask(complexmask,
                                   bounds=(6, 45, 11, 50),
                                   flat=False,
                                   srs=EPSG4326,
                                   shrink=None)

    t2 = geom.transform(polygons, toSRS='europe_m', segment=0.1)
    assert (len(t2) == 3)  # "Transform Count
    assert t2[0].GetSpatialReference().IsSame(EPSG3035)  # "Transform srs
    assert np.isclose(sum([t.Area() for t in t2]),
                      83747886418.48529)  # "Transform Area