Example #1
0
def ogr_wasp_roughness_from_polygon_z():

    if ogr_wasp_create_ds() != 'success': return 'skip'

    if not ogrtest.have_geos() : gdal.PushErrorHandler('CPLQuietErrorHandler')
    layer = gdaltest.wasp_ds.CreateLayer('mylayer',  
                                          geom_type=ogr.wkbPolygon25D )
    if not ogrtest.have_geos() : gdal.PopErrorHandler()

    if layer == None:
        if ogrtest.have_geos():
            gdaltest.post_reason( 'unable to create layer')
            return 'fail'
        else:
            return 'success'

    dfn = ogr.FeatureDefn()

    for i in range(6):
        feat = ogr.Feature( dfn )
        ring = ogr.Geometry( type = ogr.wkbLinearRing )
        ring.AddPoint( 0, 0, i )
        ring.AddPoint( round(math.cos(i*math.pi/3),6),  round(math.sin(i*math.pi/3),6), i )
        ring.AddPoint( round(math.cos((i+1)*math.pi/3),6),  round(math.sin((i+1)*math.pi/3),6), i )
        ring.AddPoint( 0, 0, i )
        poly = ogr.Geometry( type = ogr.wkbPolygon25D )
        poly.AddGeometry(ring)
        feat.SetGeometry( poly )
        if layer.CreateFeature( feat ) != 0:
            gdaltest.post_reason( 'unable to create feature')
            return 'fail'

    del gdaltest.wasp_ds
    del layer

    f = open('tmp.map')
    for i in range(4): f.readline()
    i = 0
    j = 0
    res = set()
    for line in f:
        if not i%2:
            [l,r,n] = [v for v in line.split()]
            if int(n) != 2:
                gdaltest.post_reason( 'number of points sould be 2 and is %d' % int(n) )
                return 'fail'
            if float(r) > float(l) : res.add((float(l), float(r)))
            else   : res.add((float(r), float(l)))
            j+=1
        i+=1

    if j != 6: 
        gdaltest.post_reason( 'there should be 6 boundaries and there are %d' %j )
        return 'fail'

    if res != set([(0,1),(0,5),(1,2),(2,3),(3,4),(4,5)]):
        print(res)
        gdaltest.post_reason( 'wrong values f=in boundaries' )
        return 'fail'
    return 'success'
Example #2
0
def test_ogr_wasp_roughness_from_polygon_field():

    test_ogr_wasp_create_ds()

    if not ogrtest.have_geos():
        gdal.PushErrorHandler('CPLQuietErrorHandler')
    layer = gdaltest.wasp_ds.CreateLayer('mylayer',
                                         options=['WASP_FIELDS=roughness'],
                                         geom_type=ogr.wkbPolygon)
    if not ogrtest.have_geos():
        gdal.PopErrorHandler()

    if layer is None:
        assert not ogrtest.have_geos(), 'unable to create layer'
        return

    layer.CreateField(ogr.FieldDefn('roughness', ogr.OFTReal))
    layer.CreateField(ogr.FieldDefn('dummy', ogr.OFTString))

    for i in range(6):
        feat = ogr.Feature(layer.GetLayerDefn())
        feat.SetField(0, float(i))
        ring = ogr.Geometry(type=ogr.wkbLinearRing)
        ring.AddPoint(0, 0)
        ring.AddPoint(round(math.cos(i * math.pi / 3), 6), round(math.sin(i * math.pi / 3), 6))
        ring.AddPoint(round(math.cos((i + 1) * math.pi / 3), 6), round(math.sin((i + 1) * math.pi / 3), 6))
        ring.AddPoint(0, 0)
        poly = ogr.Geometry(type=ogr.wkbPolygon)
        poly.AddGeometry(ring)
        feat.SetGeometry(poly)
        assert layer.CreateFeature(feat) == 0, 'unable to create feature'

    del gdaltest.wasp_ds
    del layer

    f = open('tmp.map')
    for i in range(4):
        f.readline()
    i = 0
    j = 0
    res = set()
    for line in f:
        if not i % 2:
            [l, r, n] = [v for v in line.split()]
            assert int(n) == 2, ('number of points should be 2 and is %d' % int(n))
            if float(r) > float(l):
                res.add((float(l), float(r)))
            else:
                res.add((float(r), float(l)))
            j += 1
        i += 1

    assert j == 6, ('there should be 6 boundaries and there are %d' % j)

    assert res == set([(0, 1), (0, 5), (1, 2), (2, 3), (3, 4), (4, 5)]), \
        'wrong values f=in boundaries'
Example #3
0
def test_ogr_wasp_merge():

    test_ogr_wasp_create_ds()

    if not ogrtest.have_geos():
        gdal.PushErrorHandler('CPLQuietErrorHandler')
    layer = gdaltest.wasp_ds.CreateLayer('mylayer',
                                         geom_type=ogr.wkbPolygon25D)
    if not ogrtest.have_geos():
        gdal.PopErrorHandler()

    if layer is None:
        assert not ogrtest.have_geos(), 'unable to create layer'
        return

    dfn = ogr.FeatureDefn()

    for i in range(6):
        feat = ogr.Feature(dfn)
        ring = ogr.Geometry(type=ogr.wkbLinearRing)
        h = i % 2
        ring.AddPoint(0, 0, h)
        ring.AddPoint(round(math.cos(i * math.pi / 3), 6), round(math.sin(i * math.pi / 3), 6), h)
        ring.AddPoint(round(math.cos((i + 1) * math.pi / 3), 6), round(math.sin((i + 1) * math.pi / 3), 6), h)
        ring.AddPoint(0, 0, h)
        poly = ogr.Geometry(type=ogr.wkbPolygon25D)
        poly.AddGeometry(ring)
        feat.SetGeometry(poly)
        assert layer.CreateFeature(feat) == 0, 'unable to create feature'

    del gdaltest.wasp_ds
    del layer

    f = open('tmp.map')
    for i in range(4):
        f.readline()
    i = 0
    j = 0
    res = []
    for line in f:
        if not i % 2:
            [l, r, n] = [v for v in line.split()]
            assert int(n) == 2, \
                ('number of points should be 2 and is %d (unwanted merge ?)' % int(n))
            if float(r) > float(l):
                res.append((float(l), float(r)))
            else:
                res.append((float(r), float(l)))
            j += 1
        i += 1

    assert j == 6, ('there should be 6 boundaries and there are %d' % j)

    assert res == [(0, 1)] * 6, 'wrong values f=in boundaries'
Example #4
0
def test_ogr_wasp_elevation_from_linestring_z_toler():

    test_ogr_wasp_create_ds()

    ref = osr.SpatialReference()
    ref.ImportFromProj4('+proj=lcc +lat_1=46.8 +lat_0=46.8 +lon_0=0 +k_0=0.99987742 +x_0=600000 +y_0=2200000 +a=6378249.2 +b=6356514.999978254 +pm=2.337229167 +units=m +no_defs')

    if not ogrtest.have_geos():
        gdal.PushErrorHandler('CPLQuietErrorHandler')
    layer = gdaltest.wasp_ds.CreateLayer('mylayer',
                                         ref,
                                         options=['WASP_TOLERANCE=.1'],
                                         geom_type=ogr.wkbLineString25D)
    if not ogrtest.have_geos():
        gdal.PopErrorHandler()

    assert layer is not None, 'unable to create layer'

    dfn = ogr.FeatureDefn()

    for i in range(10):
        feat = ogr.Feature(dfn)
        line = ogr.Geometry(type=ogr.wkbLineString25D)
        line.AddPoint(i, 0, i)
        line.AddPoint(i, 0.5, i)
        line.AddPoint(i, 1, i)
        feat.SetGeometry(line)
        assert layer.CreateFeature(feat) == 0, 'unable to create feature'

    del gdaltest.wasp_ds
    del layer

    f = open('tmp.map')
    for i in range(4):
        f.readline()
    i = 0
    j = 0
    for line in f:
        if not i % 2:
            [h, n] = line.split()
            if int(n) != 2:
                if ogrtest.have_geos():
                    pytest.fail('number of points should be 2 and is %s' % n)
                elif int(n) != 3:
                    pytest.fail('number of points should be 3 and is %s' % n)

            assert float(h) == j, ('altitude should be %d and is %s' % (j, h))

            j += 1
        i += 1

    assert j == 10, ('nb of feature should be 10 and is %d' % j)
Example #5
0
def algebra_erase():
    if not ogrtest.have_geos():
        return 'skip'

    recreate_layer_C()

    # Erase; this should return 2 polygons

    err = A.Erase( B, C )

    if ogrtest.have_geos():
        if err != 0:
            gdaltest.post_reason( 'got non-zero result code '+str(err)+' from Layer.Erase' )
            return 'fail'

        if C.GetFeatureCount() != 2:
            gdaltest.post_reason( 'Layer.Erase returned '+str(C.GetFeatureCount())+' features' )
            return 'fail'

    recreate_layer_C()

    err = A.Erase( B, C, options = ['PROMOTE_TO_MULTI=YES'] )

    if ogrtest.have_geos():
        if err != 0:
            gdaltest.post_reason( 'got non-zero result code '+str(err)+' from Layer.Erase' )
            return 'fail'

        if C.GetFeatureCount() != 2:
            gdaltest.post_reason( 'Layer.Erase returned '+str(C.GetFeatureCount())+' features' )
            return 'fail'

    recreate_layer_C()

    # Erase with self ; this should return 0 features

    err = D1.Erase( D2, C )

    if ogrtest.have_geos():
        if err != 0:
            gdaltest.post_reason( 'got non-zero result code '+str(err)+' from Layer.Erase' )
            return 'fail'
 
    if C.GetFeatureCount() != 0:
            gdaltest.post_reason( 'Layer.Erase returned '+str(C.GetFeatureCount())+' features' )
            return 'fail'

    recreate_layer_C()

    return 'success'
Example #6
0
def algebra_identify():
    if not ogrtest.have_geos():
        return 'skip'

    recreate_layer_C()

    # Identity; this should return 4 polygons

    err = A.Identity( B, C )

    if ogrtest.have_geos():
        if err != 0:
            gdaltest.post_reason( 'got non-zero result code '+str(err)+' from Layer.Identity' )
            return 'fail'

        if C.GetFeatureCount() != 4:
            gdaltest.post_reason( 'Layer.Identity returned '+str(C.GetFeatureCount())+' features' )
            return 'fail'

    recreate_layer_C()

    err = A.Identity( B, C, options = ['PROMOTE_TO_MULTI=YES'] )

    if ogrtest.have_geos():
        if err != 0:
            gdaltest.post_reason( 'got non-zero result code '+str(err)+' from Layer.Identity' )
            return 'fail'

        if C.GetFeatureCount() != 4:
            gdaltest.post_reason( 'Layer.Identity returned '+str(C.GetFeatureCount())+' features' )
            return 'fail'

    recreate_layer_C()

    # Identity with self ; this should return 2 polygons

    err = D1.Identity( D2, C, ['KEEP_LOWER_DIMENSION_GEOMETRIES=NO'] )

    if ogrtest.have_geos():
        if err != 0:
            gdaltest.post_reason( 'got non-zero result code '+str(err)+' from Layer.Identity' )
            return 'fail'

        if not is_same(D1, C):
            gdaltest.post_reason( 'D1 != C' )
            return 'fail'

    return 'success'
Example #7
0
def test_algebra_union():
    if not ogrtest.have_geos():
        pytest.skip()

    recreate_layer_C()

    # Union; this should return 5 polygons

    err = A.Union(B, C)

    if ogrtest.have_geos():
        assert err == 0, ('got non-zero result code ' + str(err) + ' from Layer.Union')

        assert C.GetFeatureCount() == 5, \
            ('Layer.Union returned ' + str(C.GetFeatureCount()) + ' features')

    recreate_layer_C()

    err = A.Union(B, C, options=['PROMOTE_TO_MULTI=YES'])

    if ogrtest.have_geos():
        assert err == 0, ('got non-zero result code ' + str(err) + ' from Layer.Union')

        assert C.GetFeatureCount() == 5, \
            ('Layer.Union returned ' + str(C.GetFeatureCount()) + ' features')

    recreate_layer_C()

    # Union with self ; this should return 2 polygons

    err = D1.Union(D2, C, ['KEEP_LOWER_DIMENSION_GEOMETRIES=NO'])

    if ogrtest.have_geos():
        assert err == 0, ('got non-zero result code ' + str(err) + ' from Layer.Union')

        assert is_same(D1, C), 'D1 != C'

    recreate_layer_C()

    # Union of a polygon and a point within : should return the point and the polygon (#4772)

    err = B.Union(pointInB, C)

    if ogrtest.have_geos():
        assert err == 0, ('got non-zero result code ' + str(err) + ' from Layer.Union')

        assert C.GetFeatureCount() == 2, \
            ('Layer.Union returned ' + str(C.GetFeatureCount()) + ' features')
Example #8
0
def algebra_clip():
    if not ogrtest.have_geos():
        return 'skip'

    recreate_layer_C()

    # Clip; this should return 2 polygons

    err = A.Clip( B, C )

    if ogrtest.have_geos():
        if err != 0:
            gdaltest.post_reason( 'got non-zero result code '+str(err)+' from Layer.Clip' )
            return 'fail'

        if C.GetFeatureCount() != 2:
            gdaltest.post_reason( 'Layer.Clip returned '+str(C.GetFeatureCount())+' features' )
            return 'fail'

    recreate_layer_C()

    err = A.Clip( B, C, options = ['PROMOTE_TO_MULTI=YES'] )

    if ogrtest.have_geos():
        if err != 0:
            gdaltest.post_reason( 'got non-zero result code '+str(err)+' from Layer.Clip' )
            return 'fail'

        if C.GetFeatureCount() != 2:
            gdaltest.post_reason( 'Layer.Clip returned '+str(C.GetFeatureCount())+' features' )
            return 'fail'

    recreate_layer_C()

    # Clip with self ; this should return 2 polygons

    err = D1.Update( D2, C )

    if ogrtest.have_geos():
        if err != 0:
            gdaltest.post_reason( 'got non-zero result code '+str(err)+' from Layer.Clip' )
            return 'fail'
 
        if not is_same(D1, C):
            gdaltest.post_reason( 'D1 != C' )
            return 'fail'

    return 'success'
Example #9
0
def test_ogr2ogr_27():
    if test_cli_utilities.get_ogr2ogr_path() is None:
        return 'skip'
        
    if not ogrtest.have_geos():
        return 'skip'

    try:
        os.stat('tmp/poly.shp')
        ogr.GetDriverByName('ESRI Shapefile').DeleteDataSource('tmp/poly.shp')
    except:
        pass
    
    f = open('tmp/clip.csv', 'wt')
    f.write('foo,WKT\n')
    f.write('foo,"POLYGON((479609 4764629,479609 4764817,479764 4764817,479764 4764629,479609 4764629))"\n')
    f.close()

    gdaltest.runexternal(test_cli_utilities.get_ogr2ogr_path() + ' -nlt MULTIPOLYGON tmp/poly.shp ../ogr/data/poly.shp -clipdst tmp/clip.csv -clipdstsql "SELECT * from clip"')

    ds = ogr.Open('tmp/poly.shp')
    if ds is None or ds.GetLayer(0).GetFeatureCount() != 4:
        return 'fail'
        
    if ds.GetLayer(0).GetExtent() != (479609, 479764, 4764629, 4764817):
        print(ds.GetLayer(0).GetExtent())
        gdaltest.post_reason('unexpected extent')
        return 'fail'
        
    ds.Destroy()

    ogr.GetDriverByName('ESRI Shapefile').DeleteDataSource('tmp/poly.shp')
    os.remove('tmp/clip.csv')

    return 'success'
Example #10
0
def test_ogr2ogr_24():
    if test_cli_utilities.get_ogr2ogr_path() is None:
        return 'skip'
        
    if not ogrtest.have_geos():
        return 'skip'

    try:
        os.stat('tmp/poly.shp')
        ogr.GetDriverByName('ESRI Shapefile').DeleteDataSource('tmp/poly.shp')
    except:
        pass

    gdaltest.runexternal(test_cli_utilities.get_ogr2ogr_path() + ' tmp/poly.shp ../ogr/data/poly.shp -clipsrc "POLYGON((479609 4764629,479609 4764817,479764 4764817,479764 4764629,479609 4764629))"')

    ds = ogr.Open('tmp/poly.shp')
    if ds is None or ds.GetLayer(0).GetFeatureCount() != 4:
        return 'fail'
        
    if ds.GetLayer(0).GetExtent() != (479609, 479764, 4764629, 4764817):
        print(ds.GetLayer(0).GetExtent())
        gdaltest.post_reason('unexpected extent')
        return 'fail'
        
    ds.Destroy()

    ogr.GetDriverByName('ESRI Shapefile').DeleteDataSource('tmp/poly.shp')

    return 'success'
Example #11
0
def cutline_2():

    if not ogrtest.have_geos():
        return 'skip'

    tst = gdaltest.GDALTest('VRT', 'cutline_blend.vrt', 1, 21395)
    return tst.testOpen()
Example #12
0
def test_ogr2ogr_py_26():
    script_path = test_py_scripts.get_py_script("ogr2ogr")
    if script_path is None:
        return "skip"

    if not ogrtest.have_geos():
        return "skip"

    try:
        os.stat("tmp/poly.shp")
        ogr.GetDriverByName("ESRI Shapefile").DeleteDataSource("tmp/poly.shp")
    except:
        pass

    test_py_scripts.run_py_script(
        script_path,
        "ogr2ogr",
        'tmp/poly.shp ../ogr/data/poly.shp -clipdst "POLYGON((479609 4764629,479609 4764817,479764 4764817,479764 4764629,479609 4764629))"',
    )

    ds = ogr.Open("tmp/poly.shp")
    if ds is None or ds.GetLayer(0).GetFeatureCount() != 4:
        return "fail"

    if ds.GetLayer(0).GetExtent() != (479609, 479764, 4764629, 4764817):
        print(ds.GetLayer(0).GetExtent())
        gdaltest.post_reason("unexpected extent")
        return "fail"

    ds.Destroy()

    ogr.GetDriverByName("ESRI Shapefile").DeleteDataSource("tmp/poly.shp")

    return "success"
Example #13
0
def ogr_geos_overlaps():

    if not ogrtest.have_geos():
        return "skip"

    g1 = ogr.CreateGeometryFromWkt("POLYGON((0 0, 10 10, 10 0, 0 0))")
    g2 = ogr.CreateGeometryFromWkt("POLYGON((-90 -90, -90 90, 190 -90, -90 -90))")

    result = g2.Overlaps(g1)

    # g1 and g2 intersect, but their intersection is equal to g1
    if result != 0:
        gdaltest.post_reason("wrong result (got true)")
        return "fail"

    g1.Destroy()
    g2.Destroy()

    g1 = ogr.CreateGeometryFromWkt("POLYGON((0 0, 10 10, 10 0, 0 0))")
    g2 = ogr.CreateGeometryFromWkt("POLYGON((0 -5,10 5,10 -5,0 -5))")

    result = g2.Overlaps(g1)

    if result == 0:
        gdaltest.post_reason("wrong result (got false)")
        return "fail"

    g1.Destroy()
    g2.Destroy()

    return "success"
Example #14
0
def ogr_geos_crosses():

    if not ogrtest.have_geos():
        return "skip"

    g1 = ogr.CreateGeometryFromWkt("LINESTRING(0 0, 10 10)")
    g2 = ogr.CreateGeometryFromWkt("LINESTRING(10 0, 0 10)")

    result = g1.Crosses(g2)

    g1.Destroy()
    g2.Destroy()

    if result == 0:
        gdaltest.post_reason("wrong result (got false)")
        return "fail"

    g1 = ogr.CreateGeometryFromWkt("LINESTRING(0 0, 10 10)")
    g2 = ogr.CreateGeometryFromWkt("LINESTRING(0 0, 0 10)")

    result = g1.Crosses(g2)

    g1.Destroy()
    g2.Destroy()

    if result != 0:
        gdaltest.post_reason("wrong result (got true)")
        return "fail"

    return "success"
Example #15
0
def ogr_geos_intersect():

    if not ogrtest.have_geos():
        return "skip"

    g1 = ogr.CreateGeometryFromWkt("LINESTRING(0 0, 10 10)")
    g2 = ogr.CreateGeometryFromWkt("LINESTRING(10 0, 0 10)")

    result = g1.Intersect(g2)

    g1.Destroy()
    g2.Destroy()

    if result == 0:
        gdaltest.post_reason("wrong result (got false)")
        return "fail"

    g1 = ogr.CreateGeometryFromWkt("LINESTRING(0 0, 10 10)")
    g2 = ogr.CreateGeometryFromWkt("POLYGON((20 20, 20 30, 30 20, 20 20))")

    result = g1.Intersect(g2)

    g1.Destroy()
    g2.Destroy()

    if result != 0:
        gdaltest.post_reason("wrong result (got true)")
        return "fail"

    return "success"
Example #16
0
def test_ogr2ogr_py_26():
    script_path = test_py_scripts.get_py_script('ogr2ogr')
    if script_path is None:
        return 'skip'
        
    if not ogrtest.have_geos():
        return 'skip'

    try:
        os.stat('tmp/poly.shp')
        ogr.GetDriverByName('ESRI Shapefile').DeleteDataSource('tmp/poly.shp')
    except:
        pass

    test_py_scripts.run_py_script(script_path, 'ogr2ogr', 'tmp/poly.shp ../ogr/data/poly.shp -clipdst "POLYGON((479609 4764629,479609 4764817,479764 4764817,479764 4764629,479609 4764629))"')

    ds = ogr.Open('tmp/poly.shp')
    if ds is None or ds.GetLayer(0).GetFeatureCount() != 4:
        return 'fail'
        
    if ds.GetLayer(0).GetExtent() != (479609, 479764, 4764629, 4764817):
        print(ds.GetLayer(0).GetExtent())
        gdaltest.post_reason('unexpected extent')
        return 'fail'
        
    ds.Destroy()

    ogr.GetDriverByName('ESRI Shapefile').DeleteDataSource('tmp/poly.shp')

    return 'success'
Example #17
0
def ogr_geos_overlaps():

    if not ogrtest.have_geos():
        return 'skip'

    g1 = ogr.CreateGeometryFromWkt( 'POLYGON((0 0, 10 10, 10 0, 0 0))' )
    g2 = ogr.CreateGeometryFromWkt( 'POLYGON((-90 -90, -90 90, 190 -90, -90 -90))')

    result = g2.Overlaps( g1 )

    # g1 and g2 intersect, but their intersection is equal to g1
    if result != 0:
        gdaltest.post_reason( 'wrong result (got true)' )
        return 'fail'

    g1 = ogr.CreateGeometryFromWkt( 'POLYGON((0 0, 10 10, 10 0, 0 0))' )
    g2 = ogr.CreateGeometryFromWkt( 'POLYGON((0 -5,10 5,10 -5,0 -5))')

    result = g2.Overlaps( g1 )

    if result == 0:
        gdaltest.post_reason( 'wrong result (got false)' )
        return 'fail'

    return 'success'
Example #18
0
def test_ogr2ogr_py_3():
    script_path = test_py_scripts.get_py_script('ogr2ogr')
    if script_path is None:
        return 'skip'

    try:
        os.stat('tmp/poly.shp')
        ogr.GetDriverByName('ESRI Shapefile').DeleteDataSource('tmp/poly.shp')
    except:
        pass

    test_py_scripts.run_py_script(script_path, 'ogr2ogr', 'tmp/poly.shp ../ogr/data/poly.shp -spat 479609 4764629 479764 4764817')

    ds = ogr.Open('tmp/poly.shp')
    if ogrtest.have_geos():
        if ds is None or ds.GetLayer(0).GetFeatureCount() != 4:
            return 'fail'
    else:
        if ds is None or ds.GetLayer(0).GetFeatureCount() != 5:
            return 'fail'
    ds.Destroy()

    ogr.GetDriverByName('ESRI Shapefile').DeleteDataSource('tmp/poly.shp')

    return 'success'
Example #19
0
def test_ogr2ogr_py_3():
    script_path = test_py_scripts.get_py_script("ogr2ogr")
    if script_path is None:
        return "skip"

    try:
        os.stat("tmp/poly.shp")
        ogr.GetDriverByName("ESRI Shapefile").DeleteDataSource("tmp/poly.shp")
    except:
        pass

    test_py_scripts.run_py_script(
        script_path, "ogr2ogr", "tmp/poly.shp ../ogr/data/poly.shp -spat 479609 4764629 479764 4764817"
    )

    ds = ogr.Open("tmp/poly.shp")
    if ogrtest.have_geos():
        if ds is None or ds.GetLayer(0).GetFeatureCount() != 4:
            return "fail"
    else:
        if ds is None or ds.GetLayer(0).GetFeatureCount() != 5:
            return "fail"
    ds.Destroy()

    ogr.GetDriverByName("ESRI Shapefile").DeleteDataSource("tmp/poly.shp")

    return "success"
Example #20
0
def cutline_3():

    if not ogrtest.have_geos():
        return 'skip'

    tst = gdaltest.GDALTest('VRT', 'cutline_multipolygon.vrt', 1, 20827)
    return tst.testOpen()
Example #21
0
def test_cutline_2():

    if not ogrtest.have_geos():
        pytest.skip()

    tst = gdaltest.GDALTest('VRT', 'cutline_blend.vrt', 1, 21395)
    return tst.testOpen()
Example #22
0
def test_gdal_grid_clipsrc():
    if gdal_grid is None:
        pytest.skip()

    if not ogrtest.have_geos():
        pytest.skip()

    #################
    outfiles.append('tmp/grid_clipsrc.tif')
    try:
        os.remove(outfiles[-1])
    except OSError:
        pass

    open('tmp/clip.csv', 'wt').write(
        'id,WKT\n1,"POLYGON((440750 3751340,440750 3750100,441900 3750100,441900 3751340,440750 3751340))"\n')

    # Create a GDAL dataset from the values of "grid.csv".
    # Grid nodes are located exactly in raster nodes.
    gdaltest.runexternal_out_and_err(gdal_grid + ' -clipsrc tmp/clip.csv -txe 440720.0 441920.0 -tye 3751320.0 3750120.0 -outsize 20 20 -ot Byte -l grid -a nearest:radius1=0.0:radius2=0.0:angle=0.0:nodata=0.0 data/grid.vrt ' + outfiles[-1])

    os.unlink('tmp/clip.csv')

    # We should get the same values as in "gcore/data/byte.tif"
    ds = gdal.Open(outfiles[-1])
    cs = ds.GetRasterBand(1).Checksum()
    assert not (cs == 0 or cs == 4672), 'bad checksum'
    ds = None
Example #23
0
def test_ogrlineref_1():
    if ogrtest.have_geos() is 0 or test_cli_utilities.get_ogrlineref_path() is None:
        return 'skip'

    try:
        os.stat('tmp/parts.shp')
        ogr.GetDriverByName('ESRI Shapefile').DeleteDataSource('tmp/parts.shp')
    except:
        pass

    (ret, err) = gdaltest.runexternal_out_and_err(test_cli_utilities.get_ogrlineref_path() + ' -create -l data/path.shp -p data/mstones.shp -pm pos -o tmp/parts.shp -s 1000')
    if not (err is None or err == '') :
        gdaltest.post_reason('got error/warning')
        print(err)
        return 'fail'

    ds = ogr.Open('tmp/parts.shp')
    if ds is None or ds.GetLayer(0).GetFeatureCount() != 9:
        return 'fail'

    ds.Destroy()
    
#    ogr.GetDriverByName('ESRI Shapefile').DeleteDataSource('tmp/parts.shp')

    return 'success'
Example #24
0
def ogr_geos_crosses():

    if not ogrtest.have_geos():
        return 'skip'

    g1 = ogr.CreateGeometryFromWkt( 'LINESTRING(0 0, 10 10)' )
    g2 = ogr.CreateGeometryFromWkt( 'LINESTRING(10 0, 0 10)' )

    result = g1.Crosses( g2 )

    g1.Destroy()
    g2.Destroy()

    if result == 0:
        gdaltest.post_reason( 'wrong result (got false)' )
        return 'fail'

    g1 = ogr.CreateGeometryFromWkt( 'LINESTRING(0 0, 10 10)' )
    g2 = ogr.CreateGeometryFromWkt( 'LINESTRING(0 0, 0 10)' )

    result = g1.Crosses( g2 )

    g1.Destroy()
    g2.Destroy()

    if result != 0:
        gdaltest.post_reason( 'wrong result (got true)' )
        return 'fail'

    return 'success'
Example #25
0
def ogr_geos_intersect():

    if not ogrtest.have_geos():
        return 'skip'

    g1 = ogr.CreateGeometryFromWkt( 'LINESTRING(0 0, 10 10)' )
    g2 = ogr.CreateGeometryFromWkt( 'LINESTRING(10 0, 0 10)' )

    result = g1.Intersect( g2 )

    g1.Destroy()
    g2.Destroy()

    if result == 0:
        gdaltest.post_reason( 'wrong result (got false)' )
        return 'fail'

    g1 = ogr.CreateGeometryFromWkt( 'LINESTRING(0 0, 10 10)' )
    g2 = ogr.CreateGeometryFromWkt( 'POLYGON((20 20, 20 30, 30 20, 20 20))' )

    result = g1.Intersect( g2 )

    g1.Destroy()
    g2.Destroy()

    if result != 0:
        gdaltest.post_reason( 'wrong result (got true)' )
        return 'fail'

    return 'success'
Example #26
0
def test_ogr2ogr_py_27():
    script_path = test_py_scripts.get_py_script('ogr2ogr')
    if script_path is None:
        pytest.skip()

    if not ogrtest.have_geos():
        pytest.skip()

    try:
        os.stat('tmp/poly.shp')
        ogr.GetDriverByName('ESRI Shapefile').DeleteDataSource('tmp/poly.shp')
    except OSError:
        pass

    f = open('tmp/clip.csv', 'wt')
    f.write('foo,WKT\n')
    f.write('foo,"POLYGON((479609 4764629,479609 4764817,479764 4764817,479764 4764629,479609 4764629))"\n')
    f.close()

    test_py_scripts.run_py_script(script_path, 'ogr2ogr', '-nlt MULTIPOLYGON tmp/poly.shp ../ogr/data/poly.shp -clipdst tmp/clip.csv -clipdstsql "SELECT * from clip"')

    ds = ogr.Open('tmp/poly.shp')
    assert ds is not None and ds.GetLayer(0).GetFeatureCount() == 4

    assert ds.GetLayer(0).GetExtent() == (479609, 479764, 4764629, 4764817), \
        'unexpected extent'

    ds.Destroy()

    ogr.GetDriverByName('ESRI Shapefile').DeleteDataSource('tmp/poly.shp')
    os.remove('tmp/clip.csv')
Example #27
0
def ogr_geos_centroid():

    if not ogrtest.have_geos():
        return 'skip'

    g1 = ogr.CreateGeometryFromWkt( 'POLYGON((0 0, 10 10, 10 0, 0 0))' )

    centroid = g1.Centroid()

    g1.Destroy()

    if ogrtest.check_feature_geometry( centroid,
                                       'POINT(6.666666667 3.333333333)') != 0:
        print('Got: ', centroid.ExportToWkt())
        return 'fail'

    centroid.Destroy()

# Test with a self intersecting polygon too.
# This particular polygon has two triangles. The right triangle is larger.
    g2 = ogr.CreateGeometryFromWkt( 'POLYGON((0 0, 0 2, 2 -0.1, 2 2.1, 0 0))' )
    centroid2 = g2.Centroid()
    g2.Destroy()

    if ogrtest.check_feature_geometry( centroid2, 'POINT (8.0 1.0)') != 0:
        print('Got: ', centroid2.ExportToWkt())
        return 'fail'

    centroid2.Destroy()

    return 'success'
Example #28
0
def test_ogr2ogr_py_26():
    script_path = test_py_scripts.get_py_script('ogr2ogr')
    if script_path is None:
        pytest.skip()

    if not ogrtest.have_geos():
        pytest.skip()

    try:
        os.stat('tmp/poly.shp')
        ogr.GetDriverByName('ESRI Shapefile').DeleteDataSource('tmp/poly.shp')
    except OSError:
        pass

    test_py_scripts.run_py_script(script_path, 'ogr2ogr', 'tmp/poly.shp ../ogr/data/poly.shp -clipdst "POLYGON((479609 4764629,479609 4764817,479764 4764817,479764 4764629,479609 4764629))"')

    ds = ogr.Open('tmp/poly.shp')
    assert ds is not None and ds.GetLayer(0).GetFeatureCount() == 4

    assert ds.GetLayer(0).GetExtent() == (479609, 479764, 4764629, 4764817), \
        'unexpected extent'

    ds.Destroy()

    ogr.GetDriverByName('ESRI Shapefile').DeleteDataSource('tmp/poly.shp')
Example #29
0
def ogr_cloudant_SetSpatialFilter():
    if ogrtest.cloudant_drv is None:
        return 'skip'

    if not ogrtest.have_geos():
        return 'skip'

    ds = ogr.Open('cloudant:%s/%s' % (ogrtest.cloudant_test_server, ogrtest.cloudant_test_layer))
    if ds is None:
        return 'fail'

    lyr = ds.GetLayer(0)
    if lyr is None:
        return 'fail'

    lyr.SetSpatialFilterRect( -104.9847,39.7392,-104.9847,39.7392 )

    feat = lyr.GetNextFeature()
    if feat is None:
        gdaltest.post_reason('did not get expected feature')
        return 'fail'
    if feat.GetField('NAME') != 'Colorado':
        gdaltest.post_reason('did not get expected feature')
        feat.DumpReadable()
        return 'fail'

    return 'success'
Example #30
0
def test_ogr2ogr_29():

    if test_cli_utilities.get_ogr2ogr_path() is None:
        return 'skip'

    if ogrtest.have_geos() is 0:
        return 'skip'

    for i in range(2):
        try:
            os.stat('tmp/wrapdateline_src.shp')
            ogr.GetDriverByName('ESRI Shapefile').DeleteDataSource('tmp/wrapdateline_src.shp')
        except:
            pass
            
        try:
            os.stat('tmp/wrapdateline_dst.shp')
            ogr.GetDriverByName('ESRI Shapefile').DeleteDataSource('tmp/wrapdateline_dst.shp')
        except:
            pass
            
        ds = ogr.GetDriverByName('ESRI Shapefile').CreateDataSource('tmp/wrapdateline_src.shp')
        srs = osr.SpatialReference()
        srs.ImportFromEPSG(4326);
        lyr = ds.CreateLayer('wrapdateline_src', srs = srs)
        feat = ogr.Feature(lyr.GetLayerDefn())
        
        if i == 0:
            geom = ogr.CreateGeometryFromWkt('POLYGON((179 40,179.5 40,-179.5 40,-179 40,-170 40,-165 40,-165 30,-170 30,-179 30,-179.5 30,179.5 30,179 30,179 40))')
        else:
            geom = ogr.CreateGeometryFromWkt('POLYGON((-165 30,-170 30,-179 30,-179.5 30,179.5 30,179 30,179 40,179.5 40,-179.5 40,-179 40,-170 40,-165 40,-165 30))')
        feat.SetGeometry(geom)
        lyr.CreateFeature(feat)
        feat.Destroy()
        ds.Destroy()
        
        gdaltest.runexternal(test_cli_utilities.get_ogr2ogr_path() + ' -wrapdateline tmp/wrapdateline_dst.shp tmp/wrapdateline_src.shp')
        
        expected_wkt = 'MULTIPOLYGON (((180 30,179.5 30.0,179 30,179 40,179.5 40.0,180 40,180 30)),((-180 40,-179.5 40.0,-179 40,-170 40,-165 40,-165 30,-170 30,-179 30,-179.5 30.0,-180 30,-180 40)))'
        expected_geom = ogr.CreateGeometryFromWkt(expected_wkt)
        ds = ogr.Open('tmp/wrapdateline_dst.shp')
        lyr = ds.GetLayer(0)
        feat = lyr.GetNextFeature()
        ret = ogrtest.check_feature_geometry(feat, expected_geom)
        if ret != 0:
            print('src is : %s' % geom.ExportToWkt())
            print('got    : %s' % feat.GetGeometryRef().ExportToWkt())
    
        feat.Destroy()
        expected_geom.Destroy()
        ds.Destroy()
        
        ogr.GetDriverByName('ESRI Shapefile').DeleteDataSource('tmp/wrapdateline_src.shp')
        ogr.GetDriverByName('ESRI Shapefile').DeleteDataSource('tmp/wrapdateline_dst.shp')
    
        if ret != 0:
            return 'fail'

    return 'success'
Example #31
0
def test_ogr_geos_crosses():

    if not ogrtest.have_geos():
        pytest.skip()

    g1 = ogr.CreateGeometryFromWkt('LINESTRING(0 0, 10 10)')
    g2 = ogr.CreateGeometryFromWkt('LINESTRING(10 0, 0 10)')

    result = g1.Crosses(g2)

    assert result != 0, 'wrong result (got false)'

    g1 = ogr.CreateGeometryFromWkt('LINESTRING(0 0, 10 10)')
    g2 = ogr.CreateGeometryFromWkt('LINESTRING(0 0, 0 10)')

    result = g1.Crosses(g2)

    assert result == 0, 'wrong result (got true)'
Example #32
0
def test_ogr_geos_touches():

    if not ogrtest.have_geos():
        pytest.skip()

    g1 = ogr.CreateGeometryFromWkt('LINESTRING(0 0, 10 10)')
    g2 = ogr.CreateGeometryFromWkt('LINESTRING(0 0, 0 10)')

    result = g1.Touches(g2)

    assert result != 0, 'wrong result (got false)'

    g1 = ogr.CreateGeometryFromWkt('LINESTRING(0 0, 10 10)')
    g2 = ogr.CreateGeometryFromWkt('POLYGON((20 20, 20 30, 30 20, 20 20))')

    result = g1.Touches(g2)

    assert result == 0, 'wrong result (got true)'
Example #33
0
def ogr_geos_convexhull():

    if not ogrtest.have_geos():
        return 'skip'

    g1 = ogr.CreateGeometryFromWkt( 'GEOMETRYCOLLECTION(POINT(0 1), POINT(0 0), POINT(1 0), POINT(1 1))' )

    convexhull = g1.ConvexHull()

    g1.Destroy()

    if convexhull.ExportToWkt() != 'POLYGON ((0 0,0 1,1 1,1 0,0 0))':
        print('Got: ', convexhull.ExportToWkt())
        return 'fail'

    convexhull.Destroy()

    return 'success'
Example #34
0
def ogr_geos_distance():

    if not ogrtest.have_geos():
        return 'skip'

    g1 = ogr.CreateGeometryFromWkt('POINT(0 0)')
    g2 = ogr.CreateGeometryFromWkt('POINT(1 0)')

    distance = g1.Distance(g2)

    g1.Destroy()
    g2.Destroy()

    if abs(distance - 1) > 0.00000000001:
        gdaltest.post_reason('Distance() result wrong, got %g.' % distance)
        return 'fail'

    return 'success'
Example #35
0
def ogr_geos_unioncascaded():

    if not ogrtest.have_geos():
        return 'skip'

    g1 = ogr.CreateGeometryFromWkt(
        'MULTIPOLYGON(((0 0,0 1,1 1,1 0,0 0)),((0.5 0.5,0.5 1.5,1.5 1.5,1.5 0.5,0.5 0.5)))'
    )

    gdal.ErrorReset()
    cascadedunion = g1.UnionCascaded()

    if cascadedunion.ExportToWkt(
    ) != 'POLYGON ((0 0,0 1,0.5 1.0,0.5 1.5,1.5 1.5,1.5 0.5,1.0 0.5,1 0,0 0))':
        gdaltest.post_reason('Got: %s' % cascadedunion.ExportToWkt())
        return 'fail'

    return 'success'
Example #36
0
def ogr_geos_centroid_point_empty():

    if not ogrtest.have_geos():
        return 'skip'

    g1 = ogr.CreateGeometryFromWkt( 'POINT EMPTY' )

    centroid = g1.Centroid()

    g1.Destroy()

    if centroid.ExportToWkt() != 'POINT EMPTY':
        print('Got: ', centroid.ExportToWkt())
        return 'fail'

    centroid.Destroy()

    return 'success'
Example #37
0
def ogr_geos_DelaunayTriangulation():

    if not ogrtest.have_geos():
        return 'skip'

    g1 = ogr.CreateGeometryFromWkt('MULTIPOINT(0 0,0 1,1 1,1 0)')

    gdal.ErrorReset()
    triangulation = g1.DelaunayTriangulation()
    if triangulation is None and gdal.GetLastErrorMsg() == '':
        return 'fail'

    if triangulation.ExportToWkt(
    ) != 'GEOMETRYCOLLECTION (POLYGON ((0 1,0 0,1 0,0 1)),POLYGON ((0 1,1 0,1 1,0 1)))':
        gdaltest.post_reason('Got: %s' % triangulation.ExportToWkt())
        return 'fail'

    return 'success'
Example #38
0
def ogr_couchdb_SetSpatialFilter():
    if ogrtest.couchdb_drv is None:
        return 'skip'

    if not ogrtest.have_geos():
        return 'skip'

    ds = ogr.Open('couchdb:%s/%s' %
                  (ogrtest.couchdb_test_server, ogrtest.couchdb_test_layer))
    if ds is None:
        return 'fail'

    lyr = ds.GetLayer(0)
    if lyr is None:
        return 'fail'

    lyr.SetSpatialFilterRect(479647, 4764856.5, 480389.6875, 4765610.5)

    feat = lyr.GetNextFeature()
    if feat is None:
        gdaltest.post_reason('did not get expected feature')
        return 'fail'
    if feat.GetField('EAS_ID') != 168:
        gdaltest.post_reason('did not get expected feature')
        feat.DumpReadable()
        return 'fail'

    count = 0
    while feat is not None:
        count = count + 1
        feat = lyr.GetNextFeature()

    if count != 5:
        gdaltest.post_reason('did not get expected feature count (1)')
        print(count)
        return 'fail'

    count = lyr.GetFeatureCount()
    if count != 5:
        gdaltest.post_reason('did not get expected feature count (2)')
        print(count)
        return 'fail'

    return 'success'
Example #39
0
def test_ogr_geos_overlaps():

    if not ogrtest.have_geos():
        pytest.skip()

    g1 = ogr.CreateGeometryFromWkt('POLYGON((0 0, 10 10, 10 0, 0 0))')
    g2 = ogr.CreateGeometryFromWkt('POLYGON((-90 -90, -90 90, 190 -90, -90 -90))')

    result = g2.Overlaps(g1)

    # g1 and g2 intersect, but their intersection is equal to g1
    assert result == 0, 'wrong result (got true)'

    g1 = ogr.CreateGeometryFromWkt('POLYGON((0 0, 10 10, 10 0, 0 0))')
    g2 = ogr.CreateGeometryFromWkt('POLYGON((0 -5,10 5,10 -5,0 -5))')

    result = g2.Overlaps(g1)

    assert result != 0, 'wrong result (got false)'
Example #40
0
def ogr_geos_centroid_multipolygon():

    if not ogrtest.have_geos():
        return 'skip'

    g1 = ogr.CreateGeometryFromWkt( 'MULTIPOLYGON(((0 0,0 1,1 1,1 0,0 0)),((2 0,2 1,3 1,3 0,2 0)))' )

    centroid = g1.Centroid()

    g1.Destroy()

    if ogrtest.check_feature_geometry( centroid,
                                       'POINT (1.5 0.5)') != 0:
        print('Got: ', centroid.ExportToWkt())
        return 'fail'

    centroid.Destroy()

    return 'success'
Example #41
0
def ogr_geos_union():

    if not ogrtest.have_geos():
        return 'skip'

    pnt1 = ogr.CreateGeometryFromWkt( 'POINT(10 20)' )
    pnt2 = ogr.CreateGeometryFromWkt( 'POINT(30 20)' )

    result = pnt1.Union( pnt2 )

    pnt1.Destroy()
    pnt2.Destroy()
        
    if ogrtest.check_feature_geometry( result, 'MULTIPOINT (10 20,30 20)' ):
        return 'fail'

    result.Destroy()

    return 'success'
Example #42
0
def ogr_geos_simplifypreservetopology_linestring():

    if not ogrtest.have_geos():
        return 'skip'

    g1 = ogr.CreateGeometryFromWkt( 'LINESTRING(0 0,1 0,10 0)' )

    gdal.ErrorReset()
    simplify = g1.SimplifyPreserveTopology(5)

    g1.Destroy()

    if simplify.ExportToWkt() != 'LINESTRING (0 0,10 0)':
        print('Got: ', simplify.ExportToWkt())
        return 'fail'

    simplify.Destroy()

    return 'success'
Example #43
0
def ogr_geos_buffer():

    if not ogrtest.have_geos():
        return 'skip'

    g1 = ogr.CreateGeometryFromWkt( 'POLYGON((0 0, 10 10, 10 0, 0 0))' )

    result = g1.Buffer(1.0, 3)

    g1.Destroy()

    if ogrtest.check_feature_geometry( result,
                                       'POLYGON ((0 -1,-0.555570233019607 -0.831469612302542,-0.923879532511288 -0.382683432365087,-0.98078528040323 0.19509032201613,-0.707106781186547 0.707106781186547,9.292893218813452 10.707106781186548,9.690983005625053 10.951056516295154,10.156434465040231 10.987688340595138,10.587785252292473 10.809016994374947,10.891006524188368 10.453990499739547,11 10,11 0,10.866025403784439 -0.5,10.5 -0.866025403784439,10 -1,0 -1))') != 0:
        print('Got: ', result.ExportToWkt())
        return 'fail'

    result.Destroy()

    return 'success'
Example #44
0
def test_ogr_cloudant_SetSpatialFilter():

    if not ogrtest.have_geos():
        pytest.skip()

    ds = ogr.Open('cloudant:%s/%s' %
                  (ogrtest.cloudant_test_server, ogrtest.cloudant_test_layer))
    assert ds is not None

    lyr = ds.GetLayer(0)
    assert lyr is not None

    lyr.SetSpatialFilterRect(-104.9847, 39.7392, -104.9847, 39.7392)

    feat = lyr.GetNextFeature()
    assert feat is not None, 'did not get expected feature'
    if feat.GetField('NAME') != 'Colorado':
        feat.DumpReadable()
        pytest.fail('did not get expected feature')
Example #45
0
def test_ogr_interlis1_2():

    if not gdaltest.have_ili_reader:
        pytest.skip()

    if not ogrtest.have_geos():
        pytest.skip()

    ds = ogr.Open('data/ili/Beispiel.itf,data/ili/Beispiel.imd')
    layers = [
        'Bodenbedeckung__BoFlaechen', 'Bodenbedeckung__BoFlaechen_Form',
        'Bodenbedeckung__Strasse', 'Bodenbedeckung__Gebaeude'
    ]
    assert ds.GetLayerCount() == len(layers), 'layer count wrong.'

    for i in range(ds.GetLayerCount()):
        assert ds.GetLayer(i).GetName() in layers, 'Did not get right layers'

    lyr = ds.GetLayerByName('Bodenbedeckung__BoFlaechen')

    assert lyr.GetFeatureCount() == 3, 'feature count wrong.'

    # Get 2nd feature
    feat = lyr.GetNextFeature()
    feat = lyr.GetNextFeature()

    field_values = [20, 1, 168.27, 170.85]

    assert feat.GetFieldCount() == len(field_values), 'field count wrong.'

    for i in range(feat.GetFieldCount()):
        if feat.GetFieldAsString(i) != str(field_values[i]):
            feat.DumpReadable()
            print(feat.GetFieldAsString(i))
            pytest.fail('field value wrong.')

    geom = feat.GetGeomFieldRef(0)
    assert geom.GetCoordinateDimension() == 2, 'dimension wrong.'
    geom = feat.GetGeomFieldRef(1)
    assert geom.GetCoordinateDimension() == 2, 'dimension wrong.'

    geom = feat.GetGeometryRef()
    assert geom.GetGeometryName() == 'POLYGON', 'Geometry of wrong type.'
Example #46
0
def test_ogr_geos_centroid():

    if not ogrtest.have_geos():
        pytest.skip()

    g1 = ogr.CreateGeometryFromWkt('POLYGON((0 0, 10 10, 10 0, 0 0))')

    centroid = g1.Centroid()

    assert (ogrtest.check_feature_geometry(centroid,
                                      'POINT(6.666666667 3.333333333)') == 0), \
        ('Got: %s' % centroid.ExportToWkt())

# Test with a self intersecting polygon too.
# This particular polygon has two triangles. The right triangle is larger.
    g2 = ogr.CreateGeometryFromWkt('POLYGON((0 0, 0 2, 2 -0.1, 2 2.1, 0 0))')
    centroid2 = g2.Centroid()

    assert ogrtest.check_feature_geometry(centroid2, 'POINT (8.0 1.0)') == 0, \
        ('Got: %s' % centroid2.ExportToWkt())
Example #47
0
def ogr_geos_intersection():

    if not ogrtest.have_geos():
        return 'skip'

    g1 = ogr.CreateGeometryFromWkt( 'POLYGON((0 0, 10 10, 10 0, 0 0))' )
    g2 = ogr.CreateGeometryFromWkt( 'POLYGON((0 0, 0 10, 10 0, 0 0))' )

    result = g1.Intersection( g2 )

    g1.Destroy()
    g2.Destroy()

    if ogrtest.check_feature_geometry( result, 'POLYGON ((0 0,5 5,10 0,0 0))'):
        print('Got: ', result.ExportToWkt())
        return 'fail'

    result.Destroy()

    return 'success'
Example #48
0
def test_gdalwarp_lib_126():

    if not ogrtest.have_geos():
        return 'skip'

    ds = ogr.GetDriverByName('ESRI Shapefile').CreateDataSource('/vsimem/cutline.shp')
    lyr = ds.CreateLayer('cutline')
    f = ogr.Feature(lyr.GetLayerDefn())
    f.SetGeometry(ogr.CreateGeometryFromWkt('POLYGON((0 0,1 1,0 1,1 0,0 0))')) # Self intersecting
    lyr.CreateFeature(f)
    f = None
    ds = None
    with gdaltest.error_handler():
        ds = gdal.Warp('', '../gcore/data/utmsmall.tif', format = 'MEM', cutlineDSName = '/vsimem/cutline.shp')
    if ds is not None:
        gdaltest.post_reason('Did not expected dataset')
        return 'fail'
    ogr.GetDriverByName('ESRI Shapefile').DeleteDataSource('/vsimem/cutline.shp')

    return 'success'
Example #49
0
def test_ogr2ogr_py_25():
    script_path = test_py_scripts.get_py_script('ogr2ogr')
    if script_path is None:
        return 'skip'

    if not ogrtest.have_geos():
        return 'skip'

    try:
        os.stat('tmp/poly.shp')
        ogr.GetDriverByName('ESRI Shapefile').DeleteDataSource('tmp/poly.shp')
    except:
        pass

    f = open('tmp/clip.csv', 'wt')
    f.write('foo,WKT\n')
    f.write(
        'foo,"POLYGON((479609 4764629,479609 4764817,479764 4764817,479764 4764629,479609 4764629))"\n'
    )
    f.close()

    test_py_scripts.run_py_script(
        script_path, 'ogr2ogr',
        'tmp/poly.shp ../ogr/data/poly.shp -clipsrc tmp/clip.csv -clipsrcwhere foo=\'foo\''
    )

    ds = ogr.Open('tmp/poly.shp')
    if ds is None or ds.GetLayer(0).GetFeatureCount() != 4:
        return 'fail'

    if ds.GetLayer(0).GetExtent() != (479609, 479764, 4764629, 4764817):
        print(ds.GetLayer(0).GetExtent())
        gdaltest.post_reason('unexpected extent')
        return 'fail'

    ds.Destroy()

    ogr.GetDriverByName('ESRI Shapefile').DeleteDataSource('tmp/poly.shp')
    os.remove('tmp/clip.csv')

    return 'success'
Example #50
0
def test_ogrlineref_1():
    if not ogrtest.have_geos(
    ) or test_cli_utilities.get_ogrlineref_path() is None:
        return 'skip'

    if os.path.exists('tmp/parts.shp'):
        ogr.GetDriverByName('ESRI Shapefile').DeleteDataSource('tmp/parts.shp')

    ret, err = gdaltest.runexternal_out_and_err(
        test_cli_utilities.get_ogrlineref_path() +
        ' -create -l data/path.shp -p data/mstones.shp -pm pos -o tmp/parts.shp -s 1000'
    )
    if err is not None and err != '':
        gdaltest.post_reason('got error/warning: "%s"' % err)
        return 'fail'

    ds = ogr.Open('tmp/parts.shp')
    if ds is None or ds.GetLayer(0).GetFeatureCount() != 9:
        return 'fail'

    return 'success'
Example #51
0
def ogr_geos_contains():

    if not ogrtest.have_geos():
        return 'skip'

    g1 = ogr.CreateGeometryFromWkt( 'POLYGON((0 0, 10 10, 10 0, 0 0))' )
    g2 = ogr.CreateGeometryFromWkt( 'POLYGON((-90 -90, -90 90, 190 -90, -90 -90))')

    result = g2.Contains( g1 )

    if result == 0:
        gdaltest.post_reason( 'wrong result (got false)' )
        return 'fail'

    result = g1.Contains( g2 )

    if result != 0:
        gdaltest.post_reason( 'wrong result (got true)' )
        return 'fail'

    return 'success'
Example #52
0
def test_ogr2ogr_py_3():
    script_path = test_py_scripts.get_py_script('ogr2ogr')
    if script_path is None:
        pytest.skip()

    try:
        os.stat('tmp/poly.shp')
        ogr.GetDriverByName('ESRI Shapefile').DeleteDataSource('tmp/poly.shp')
    except:
        pass

    test_py_scripts.run_py_script(script_path, 'ogr2ogr', 'tmp/poly.shp ../ogr/data/poly.shp -spat 479609 4764629 479764 4764817')

    ds = ogr.Open('tmp/poly.shp')
    if ogrtest.have_geos():
        assert ds is not None and ds.GetLayer(0).GetFeatureCount() == 4
    else:
        assert ds is not None and ds.GetLayer(0).GetFeatureCount() == 5
    ds.Destroy()

    ogr.GetDriverByName('ESRI Shapefile').DeleteDataSource('tmp/poly.shp')
Example #53
0
def ogr_mvt_point_polygon_clip():

    if not ogrtest.have_geos() or gdal.GetConfigOption(
            'OGR_MVT_CLIP') is not None:
        return 'skip'

    if gdal.GetConfigOption('APPVEYOR') is not None:
        return 'skip'
    if sys.platform == 'darwin' and gdal.GetConfigOption('TRAVIS',
                                                         None) is not None:
        return 'skip'

    ds = ogr.Open('data/mvt/point_polygon/1')
    lyr = ds.GetLayer(1)
    f = lyr.GetNextFeature()
    if ogrtest.check_feature_geometry(f, 'MULTIPOLYGON (((445169.252732867 450061.222543117,445169.252732867 0.0,220138.641461308 0.0,220138.641461308 225030.61127156,0.0 225030.61127156,0.0 450061.222543117,445169.252732867 450061.222543117)),((107623.335825528 58703.6377230138,107623.335825528 0.0,53811.6679127641 0.0,53811.6679127641 58703.6377230138,107623.335825528 58703.6377230138)))') != 0 and \
       ogrtest.check_feature_geometry(f, 'MULTIPOLYGON (((445169.252732867 0.0,445169.252732867 -445169.252732867,0.0 -445169.252732867,0.0 -220138.641461308,220138.641461308 -220138.641461308,220138.641461308 0.0,445169.252732867 0.0)),((107623.335825528 0.0,107623.335825528 -53811.6679127641,53811.6679127641 -53811.6679127641,53811.6679127641 0.0,107623.335825528 0.0)))') != 0:
        f.DumpReadable()
        return 'fail'

    return 'success'
Example #54
0
def test_ogr2ogr_clipsrc_no_dst_geom():

    if not ogrtest.have_geos():
        return 'skip'

    tmpfilename = '/vsimem/out.csv'
    wkt = 'POLYGON ((479461 4764494,479461 4764196,480012 4764196,480012 4764494,479461 4764494))'
    ds = gdal.VectorTranslate(tmpfilename,
                              '../ogr/data/poly.shp',
                              options='-f CSV -clipsrc "%s"' % wkt)
    lyr = ds.GetLayer(0)
    fc = lyr.GetFeatureCount()
    if fc != 1:
        gdaltest.post_reason('fail')
        print(fc)
        return 'fail'
    ds = None

    gdal.Unlink(tmpfilename)

    return 'success'
Example #55
0
def ogr_geos_sym_difference():

    if not ogrtest.have_geos():
        return 'skip'

    g1 = ogr.CreateGeometryFromWkt( 'POLYGON((0 0, 10 10, 10 0, 0 0))' )
    g2 = ogr.CreateGeometryFromWkt( 'POLYGON((0 0, 0 10, 10 0, 0 0))' )

    result = g1.SymDifference( g2 )

    g1.Destroy()
    g2.Destroy()

    if ogrtest.check_feature_geometry( result,
           'MULTIPOLYGON (((5 5,0 0,0 10,5 5)),((5 5,10 10,10 0,5 5)))'):
        print('Got: ', result.ExportToWkt())
        return 'fail'

    result.Destroy()

    return 'success'
Example #56
0
def test_ogr2ogr_27():
    if test_cli_utilities.get_ogr2ogr_path() is None:
        return 'skip'

    if not ogrtest.have_geos():
        return 'skip'

    try:
        os.stat('tmp/poly.shp')
        ogr.GetDriverByName('ESRI Shapefile').DeleteDataSource('tmp/poly.shp')
    except:
        pass

    f = open('tmp/clip.csv', 'wt')
    f.write('foo,WKT\n')
    f.write(
        'foo,"POLYGON((479609 4764629,479609 4764817,479764 4764817,479764 4764629,479609 4764629))"\n'
    )
    f.close()

    gdaltest.runexternal(
        test_cli_utilities.get_ogr2ogr_path() +
        ' -nlt MULTIPOLYGON tmp/poly.shp ../ogr/data/poly.shp -clipdst tmp/clip.csv -clipdstsql "SELECT * from clip"'
    )

    ds = ogr.Open('tmp/poly.shp')
    if ds is None or ds.GetLayer(0).GetFeatureCount() != 4:
        return 'fail'

    if ds.GetLayer(0).GetExtent() != (479609, 479764, 4764629, 4764817):
        print(ds.GetLayer(0).GetExtent())
        gdaltest.post_reason('unexpected extent')
        return 'fail'

    ds.Destroy()

    ogr.GetDriverByName('ESRI Shapefile').DeleteDataSource('tmp/poly.shp')
    os.remove('tmp/clip.csv')

    return 'success'
Example #57
0
def test_vrt_read_25():

    import ogrtest
    if not ogrtest.have_geos():
        pytest.skip()

    ds = gdal.Open("""<VRTDataset rasterXSize="2000" rasterYSize="200">
  <VRTRasterBand dataType="Byte" band="1">
    <SimpleSource>
      <SourceFilename relativeToVRT="0">data/byte.tif</SourceFilename>
      <SourceBand>1</SourceBand>
      <SrcRect xOff="0" yOff="0" xSize="20" ySize="20" />
      <DstRect xOff="0" yOff="0" xSize="20" ySize="20" />
    </SimpleSource>
    <SimpleSource>
      <SourceFilename relativeToVRT="0">data/byte.tif</SourceFilename>
      <SourceBand>1</SourceBand>
      <SrcRect xOff="0" yOff="0" xSize="20" ySize="20" />
      <DstRect xOff="1000" yOff="30" xSize="10" ySize="20" />
    </SimpleSource>
    <SimpleSource>
      <SourceFilename relativeToVRT="0">data/byte.tif</SourceFilename>
      <SourceBand>1</SourceBand>
      <SrcRect xOff="0" yOff="0" xSize="20" ySize="20" />
      <DstRect xOff="1010" yOff="30" xSize="10" ySize="20" />
    </SimpleSource>
  </VRTRasterBand>
</VRTDataset>""")

    (flags, pct) = ds.GetRasterBand(1).GetDataCoverageStatus(0, 0, 20, 20)
    assert flags == gdal.GDAL_DATA_COVERAGE_STATUS_DATA and pct == 100.0

    (flags, pct) = ds.GetRasterBand(1).GetDataCoverageStatus(1005, 35, 10, 10)
    assert flags == gdal.GDAL_DATA_COVERAGE_STATUS_DATA and pct == 100.0

    (flags, pct) = ds.GetRasterBand(1).GetDataCoverageStatus(100, 100, 20, 20)
    assert flags == gdal.GDAL_DATA_COVERAGE_STATUS_EMPTY and pct == 0.0

    (flags, pct) = ds.GetRasterBand(1).GetDataCoverageStatus(10, 10, 20, 20)
    assert flags == gdal.GDAL_DATA_COVERAGE_STATUS_DATA | gdal.GDAL_DATA_COVERAGE_STATUS_EMPTY and pct == 25.0
Example #58
0
def test_ogrlineref_4():
    if not ogrtest.have_geos(
    ) or test_cli_utilities.get_ogrlineref_path() is None:
        pytest.skip()

    if os.path.exists('tmp/subline.shp'):
        ogr.GetDriverByName('ESRI Shapefile').DeleteDataSource(
            'tmp/subline.shp')

    gdaltest.runexternal(
        test_cli_utilities.get_ogrlineref_path() +
        ' -get_subline -r tmp/parts.shp -mb 13300 -me 17400 -o tmp/subline.shp'
    )

    ds = ogr.Open('tmp/subline.shp')
    assert ds is not None, 'ds is None'

    feature_count = ds.GetLayer(0).GetFeatureCount()
    assert feature_count == 1, ('feature count %d != 1' % feature_count)
    ds = None

    ogr.GetDriverByName('ESRI Shapefile').DeleteDataSource('tmp/subline.shp')
Example #59
0
def test_ogrlineref_4():
    if not ogrtest.have_geos() or test_cli_utilities.get_ogrlineref_path() is None:
        return 'skip'

    if os.path.exists('tmp/subline.shp'):
        ogr.GetDriverByName('ESRI Shapefile').DeleteDataSource('tmp/subline.shp')

    gdaltest.runexternal(test_cli_utilities.get_ogrlineref_path() + ' -get_subline -r tmp/parts.shp -mb 13300 -me 17400 -o tmp/subline.shp')

    ds = ogr.Open('tmp/subline.shp')
    if ds is None:
        gdaltest.post_reason('ds is None')
        return 'fail'

    feature_count = ds.GetLayer(0).GetFeatureCount()
    if feature_count != 1:
        gdaltest.post_reason('feature count %d != 1' % feature_count)
        return 'fail'
    ds = None

    ogr.GetDriverByName('ESRI Shapefile').DeleteDataSource('tmp/subline.shp')

    return 'success'
Example #60
0
def test_gdal_grid_clipsrc():
    if gdal_grid is None:
        return 'skip'

    if not ogrtest.have_geos():
        return 'skip'

    #################
    outfiles.append('tmp/grid_clipsrc.tif')
    try:
        os.remove(outfiles[-1])
    except OSError:
        pass

    open('tmp/clip.csv', 'wt').write(
        'id,WKT\n1,"POLYGON((440750 3751340,440750 3750100,441900 3750100,441900 3751340,440750 3751340))"\n'
    )

    # Create a GDAL dataset from the values of "grid.csv".
    # Grid nodes are located exactly in raster nodes.
    gdaltest.runexternal_out_and_err(
        gdal_grid +
        ' -clipsrc tmp/clip.csv -txe 440720.0 441920.0 -tye 3751320.0 3750120.0 -outsize 20 20 -ot Byte -l grid -a nearest:radius1=0.0:radius2=0.0:angle=0.0:nodata=0.0 data/grid.vrt '
        + outfiles[-1])

    os.unlink('tmp/clip.csv')

    # We should get the same values as in "gcore/data/byte.tif"
    ds = gdal.Open(outfiles[-1])
    cs = ds.GetRasterBand(1).Checksum()
    if cs == 0 or cs == 4672:
        gdaltest.post_reason('bad checksum')
        print(cs)
        return 'fail'
    ds = None

    return 'success'