コード例 #1
0
ファイル: test_07_locations.py プロジェクト: Zaubeerer/geokit
def test_LocationSet___init__():
    # From xy list
    ls = LocationSet(pointsInAachen4326)

    # From numpy array
    ls2 = LocationSet(np.array(pointsInAachen4326))
    assert ls[1] == ls2[1]

    # From numpy array with srs change
    ls2 = LocationSet(np.array(pointsInAachen3035), srs=3035)
    assert ls[1] == ls2[1]

    # From single pt
    ls3 = LocationSet(xy)
    assert ls3.count == 1

    # From single geom
    pt = geom.point(*xy, srs=4326)
    ls4 = LocationSet(pt)
    assert ls4.count == 1
    assert ls3[0] == ls4[0]

    # From many geoms
    pts = [geom.point(x, y, srs=4326)
           for x, y in np.random.random(size=(10, 2))]
    ls5 = LocationSet(pts)
    assert ls5.count == 10
コード例 #2
0
def test_RegionMask_warp():
    # setup
    rm_3035 = RegionMask.fromGeom(geom.point(6.20, 50.75).Buffer(0.05))
    rm = RegionMask.fromGeom(geom.point(6.20, 50.75).Buffer(0.05),
                             srs=EPSG4326,
                             pixelRes=0.0005)

    # basic warp Raster
    warped_1 = rm_3035.warp(CLC_RASTER_PATH)

    assert warped_1.dtype == np.uint8
    assert warped_1.shape == rm_3035.mask.shape
    assert np.isclose(warped_1.sum(), 88128)
    assert np.isclose(warped_1.std(), 9.52214123991)
    #rm_3035.createRaster(data=warped_1, output=result("regionMask_warp_1.tif"), overwrite=True)

    # basic warp Raster (FLIP CHECK!)
    warped_1f = rm_3035.warp(CLC_FLIPCHECK_PATH)

    assert warped_1f.dtype == np.uint8
    assert warped_1f.shape == rm_3035.mask.shape
    assert np.isclose(warped_1f.sum(), 88128)
    assert np.isclose(warped_1f.std(), 9.52214123991)
    #rm_3035.createRaster(data=warped_1f, output=result("regionMask_warp_1f.tif"), overwrite=True)

    assert (warped_1 == warped_1f).all()

    # basic warp Raster with srs change
    warped_2 = rm.warp(CLC_RASTER_PATH)
    assert warped_2.dtype == np.uint8
    assert warped_2.shape == rm.mask.shape
    assert np.isclose(warped_2.sum(), 449627)
    assert np.isclose(warped_2.std(), 9.07520801659)
    #rm.createRaster(data=warped_2, output=result("regionMask_warp_2.tif"), overwrite=True)

    # Define resample alg and output type
    warped_3 = rm.warp(CLC_RASTER_PATH, dtype="float", resampleAlg='near')

    assert warped_3.dtype == np.float64
    assert warped_3.shape == rm.mask.shape
    assert np.isclose(warped_3.sum(), 449317.0)
    assert np.isclose(warped_3.std(), 9.37570375729)
    #rm.createRaster(data=warped_3, output=result("regionMask_warp_3.tif"), overwrite=True)

    # define a resolution div
    warped_4 = rm.warp(CLC_RASTER_PATH,
                       resolutionDiv=5,
                       resampleAlg='near',
                       noData=0)

    assert warped_4.dtype == np.uint8
    assert warped_4.shape == (rm.mask.shape[0] * 5, rm.mask.shape[1] * 5)
    assert np.isclose(warped_4.sum(), 11240881)
    assert np.isclose(warped_4.std(), 9.37633272361)
コード例 #3
0
ファイル: test_03_geom.py プロジェクト: sevberg/geokit
def test_point():
    x, y = pointInAachen3035

    # test separate input
    p1 = geom.point(x, y, srs=EPSG3035)
    assert np.isclose(p1.GetX(), x)
    assert np.isclose(p1.GetY(), y)
    assert p1.GetSpatialReference().IsSame(EPSG3035)

    # test tuple input
    p2 = geom.point((x, y), srs=EPSG3035)
    assert np.isclose(p2.GetX(), x)
    assert np.isclose(p2.GetY(), y)
    assert p2.GetSpatialReference().IsSame(EPSG3035)
コード例 #4
0
ファイル: test_07_locations.py プロジェクト: Zaubeerer/geokit
def test_Location_fromPointGeom():
    l1 = Location(*xy)

    pt = geom.point(*xy, srs=4326)
    pt.TransformTo(EPSG3035)
    l2 = Location.fromPointGeom(pt)
    assert l1 == l2
コード例 #5
0
ファイル: test_07_locations.py プロジェクト: Zaubeerer/geokit
def test_Location_asXY():
    l1 = Location(*xy)
    assert np.isclose(l1.asXY(srs=EPSG4326), xy).all()

    pt = geom.point(*xy)
    pt.TransformTo(EPSG3035)
    assert np.isclose(l1.asXY(srs=EPSG3035), (pt.GetX(), pt.GetY())).all()
コード例 #6
0
ファイル: test_07_locations.py プロジェクト: Zaubeerer/geokit
def test_Location_fromXY():
    l1 = Location(*xy)

    pt = geom.point(*xy, srs=4326)
    pt.TransformTo(EPSG3035)

    l2 = Location.fromXY(pt.GetX(), pt.GetY(), srs=EPSG3035)
    assert l1 == l2
コード例 #7
0
ファイル: test_07_locations.py プロジェクト: Zaubeerer/geokit
def test_Location_asGeom():
    l1 = Location(*xy)

    g = l1.asGeom()
    assert g.GetSpatialReference().IsSame(EPSG4326)
    assert np.isclose(g.GetX(), xy[0])
    assert np.isclose(g.GetY(), xy[1])

    pt = geom.point(*xy, srs=4326)
    pt.TransformTo(EPSG3035)
    g = l1.asGeom(srs=EPSG3035)
    assert g.GetSpatialReference().IsSame(EPSG3035)
    assert np.isclose(g.GetX(), pt.GetX())
    assert np.isclose(g.GetY(), pt.GetY())
コード例 #8
0
def test_RegionMask_applyMask():
    # setup
    rm = RegionMask.fromGeom(geom.point(6.20, 50.75).Buffer(
        0.05), srs=EPSG4326, pixelRes=0.001)

    data1 = np.arange(rm.mask.size).reshape(rm.mask.shape)
    data2 = np.arange(rm.mask.shape[0] * 3 * rm.mask.shape[1]
                      * 3).reshape((rm.mask.shape[0] * 3, rm.mask.shape[1] * 3))

    # test applying
    data1 = rm.applyMask(data1)
    assert data1.sum() == 39296070
    assert np.isclose(data1.std(), 3020.0893432)

    data2 = rm.applyMask(data2.astype('int64'))
    assert data2.sum() == 3183264630
    assert np.isclose(data2.std(), 27182.1342973)
コード例 #9
0
ファイル: test_07_locations.py プロジェクト: Zaubeerer/geokit
def test_Location___eq__():
    # TEst against locations
    l1 = Location(*xy)
    l2 = Location(*xy)

    assert l1 == l2

    l3 = Location(xy[0], xy[1]+0.001)
    assert (l1 == l3) == False

    # test against tuple
    assert l1 == xy

    # test against geometry
    pt = geom.point(*xy, srs=4326)
    pt.TransformTo(EPSG3035)

    assert l1 == pt
コード例 #10
0
ファイル: test_07_locations.py プロジェクト: Zaubeerer/geokit
def test_Location_load():
    l1 = Location(*xy)

    assert l1 == Location.load(l1)

    # From pt
    pt = geom.point(*xy, srs=4326)
    pt.TransformTo(EPSG3035)
    assert l1 == Location.load(pt)

    # From xy
    assert l1 == Location.load(xy)

    # From str
    assert l1 == Location.load(' ( 9.00000,5.00000) ',)

    # From xy with srs
    xy_3035 = pt.GetX(), pt.GetY()
    assert l1 == Location.load(xy_3035, srs=3035)
    assert l1 == Location.load(list(xy_3035), srs=3035)
    assert l1 == Location.load(np.array(xy_3035), srs=3035)
コード例 #11
0
def test_RegionMask_createRaster():
    rm = RegionMask.fromGeom(geom.point(6.20, 50.75).Buffer(0.05),
                             srs=EPSG4326,
                             pixelRes=0.001)

    # Create a raster like the mask
    ds = rm.createRaster()

    dsInfo = raster.rasterInfo(ds)
    assert np.isclose(dsInfo.xMin, 6.15)
    assert np.isclose(dsInfo.xMax, 6.25)
    assert np.isclose(dsInfo.yMin, 50.70)
    assert np.isclose(dsInfo.yMax, 50.80)
    assert dsInfo.srs.IsSame(EPSG4326)
    assert dsInfo.dtype == gdal.GDT_Byte

    # Fill a raster with mask data
    out2 = result("rasterMast_createRaster_2.tif")
    rm.createRaster(output=out2, data=rm.mask, overwrite=True)

    ds = gdal.Open(out2)
    band = ds.GetRasterBand(1)
    assert np.isclose(band.ReadAsArray(), rm.mask).all()

    # The function is not meant for scaling down
    # # test Scaling down
    # scaledData = scaleMatrix(rm.mask,-4)
    # ds = rm.createRaster(resolutionDiv=1/4, data=scaledData, overwrite=True)

    # band = ds.GetRasterBand(1)
    # if (band.ReadAsArray()-scaledData).any(): error("createRaster 3 - data mismatch")

    # test Scaling up
    scaledData = util.scaleMatrix(rm.mask, 2)

    ds = rm.createRaster(resolutionDiv=2, data=scaledData, overwrite=True)
    band = ds.GetRasterBand(1)
    assert np.isclose(band.ReadAsArray(), scaledData).all()
コード例 #12
0
ファイル: test_03_geom.py プロジェクト: sevberg/geokit
def test_extractVerticies():
    # Test polygon
    pts1 = geom.extractVerticies(GEOM)
    assert np.isclose(pts1[5, 1], 35.1)
    assert pts1.shape == (10, 2)

    # Test multipolygon
    pts2 = geom.extractVerticies(geom.flatten(SUB_GEOMS))
    assert pts2.shape == (12, 2)

    # Test linestring
    pts3 = geom.extractVerticies(GEOM.Boundary())
    assert np.isclose(pts3[5, 1], 35.1)
    assert pts3.shape == (10, 2)

    # Test multilinestring
    assert np.isclose(pts3[5, 1], 35.1)
    assert pts3.shape == (10, 2)

    # Test Point
    pts5 = geom.extractVerticies(geom.point(5, 20))
    assert np.isclose(pts5[0, 0], 5)
    assert pts5.shape == (1, 2)
コード例 #13
0
ファイル: test_03_geom.py プロジェクト: sevberg/geokit
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
コード例 #14
0
ファイル: test_07_locations.py プロジェクト: Zaubeerer/geokit
def test_Location_latlon():
    pt = geom.point(*xy, srs=4326)
    pt.TransformTo(EPSG3035)

    l1 = Location.fromPointGeom(pt)
    assert np.isclose(l1.latlon, (xy[1], xy[0])).all()