Exemple #1
0
def test_ogr_style_styletable():

    style_table = ogr.StyleTable()
    style_table.AddStyle("style1_normal", 'SYMBOL(id:"http://style1_normal",c:#67452301)')
    gdal.PushErrorHandler('CPLQuietErrorHandler')
    ret = style_table.SaveStyleTable('/nonexistingdir/nonexistingfile')
    gdal.PopErrorHandler()
    assert ret == 0
    assert style_table.SaveStyleTable("/vsimem/out.txt") == 1
    style_table = None

    style_table = ogr.StyleTable()
    gdal.PushErrorHandler('CPLQuietErrorHandler')
    ret = style_table.LoadStyleTable('/nonexistent')
    gdal.PopErrorHandler()
    assert ret == 0
    assert style_table.LoadStyleTable('/vsimem/out.txt') == 1

    gdal.Unlink('/vsimem/out.txt')

    gdal.PushErrorHandler('CPLQuietErrorHandler')
    ret = style_table.Find("non_existing_style")
    gdal.PopErrorHandler()
    assert ret is None

    assert style_table.Find("style1_normal") == 'SYMBOL(id:"http://style1_normal",c:#67452301)'

    style = style_table.GetNextStyle()
    assert style == 'SYMBOL(id:"http://style1_normal",c:#67452301)'
    style_name = style_table.GetLastStyleName()
    assert style_name == 'style1_normal'

    style = style_table.GetNextStyle()
    assert style is None

    style_table.ResetStyleStringReading()
    style = style_table.GetNextStyle()
    assert style is not None

    # GetStyleTable()/SetStyleTable() on data source
    ds = ogr.GetDriverByName('Memory').CreateDataSource('')
    assert ds.GetStyleTable() is None
    ds.SetStyleTable(None)
    assert ds.GetStyleTable() is None
    ds.SetStyleTable(style_table)
    style_table2 = ds.GetStyleTable()
    style = style_table2.GetNextStyle()
    assert style == 'SYMBOL(id:"http://style1_normal",c:#67452301)'

    # GetStyleTable()/SetStyleTable() on layer
    lyr = ds.CreateLayer('foo')
    assert lyr.GetStyleTable() is None
    lyr.SetStyleTable(None)
    assert lyr.GetStyleTable() is None
    lyr.SetStyleTable(style_table)
    style_table2 = lyr.GetStyleTable()
    style = style_table2.GetNextStyle()
    assert style == 'SYMBOL(id:"http://style1_normal",c:#67452301)'

    ds = None
Exemple #2
0
def generate_libkml(filename):

    try:
        os.unlink(filename)
    except:
        pass


    content = """eiffel_tower_normal:SYMBOL(id:"http://upload.wikimedia.org/wikipedia/commons/thumb/7/78/Eiffel_Tower_from_north_Avenue_de_New_York%2C_Aug_2010.jpg/220px-Eiffel_Tower_from_north_Avenue_de_New_York%2C_Aug_2010.jpg");LABEL(c:#FF0000FF)
eiffel_tower_highlight:SYMBOL(id:"http://upload.wikimedia.org/wikipedia/commons/thumb/7/78/Eiffel_Tower_from_north_Avenue_de_New_York%2C_Aug_2010.jpg/220px-Eiffel_Tower_from_north_Avenue_de_New_York%2C_Aug_2010.jpg");LABEL(c:#0000FFFF)"""
    gdal.FileFromMemBuffer("/vsimem/style.txt", content)
    style_table = ogr.StyleTable()
    style_table.LoadStyleTable("/vsimem/style.txt")
    gdal.Unlink("/vsimem/style.txt")

    ds_options = ['author_name=Even Rouault',
                'author_uri=http://gdal.org',
                '[email protected]',
                'link=http://gdal.org',
                'phonenumber=tel:12345678',
                'NLC_MINREFRESHPERIOD=3600',
                'NLC_MAXSESSIONLENGTH=-1',
                'NLC_COOKIE=cookie',
                'NLC_MESSAGE=message',
                'NLC_LINKNAME=linkname',
                'NLC_LINKDESCRIPTION=linkdescription',
                'NLC_LINKSNIPPET=linksnippet',
                'NLC_EXPIRES=2014-12-31T23:59:59Z',
                'LISTSTYLE_ICON_HREF=http://www.gdal.org/gdalicon.png',
                'eiffel_tower_normal_balloonstyle_bgcolor=#FFFF00']
    ds = ogr.GetDriverByName('LIBKML').CreateDataSource(filename, options = ds_options)

    ds.SetStyleTable(style_table)

    lyr_options = [ 'LOOKAT_LONGITUDE=2.2945', 'LOOKAT_LATITUDE=48.85825', 'LOOKAT_RANGE=300',
                    'LOOKAT_ALTITUDE=30', 'LOOKAT_HEADING=0', 'LOOKAT_TILT=70', 'LOOKAT_ALTITUDEMODE=relativeToGround',
                    'ADD_REGION=YES', 'REGION_MIN_LOD_PIXELS=128', 'REGION_MAX_LOD_PIXELS=10000000', \
                    'REGION_MIN_FADE_EXTENT=1', 'REGION_MAX_FADE_EXTENT=2', 'SO_HREF=http://www.gdal.org/gdalicon.png',
                    'LISTSTYLE_ICON_HREF=http://www.gdal.org/gdalicon.png']
    lyr = ds.CreateLayer('test', options = lyr_options)
    lyr.CreateField(ogr.FieldDefn('name', ogr.OFTString))
    lyr.CreateField(ogr.FieldDefn('description', ogr.OFTString))
    lyr.CreateField(ogr.FieldDefn('nom_francais', ogr.OFTString))
    lyr.CreateField(ogr.FieldDefn('int_value', ogr.OFTInteger))
    lyr.CreateField(ogr.FieldDefn('double_value', ogr.OFTReal))
    lyr.CreateField(ogr.FieldDefn('timestamp', ogr.OFTDateTime))
    lyr.CreateField(ogr.FieldDefn('begin', ogr.OFTDateTime))
    lyr.CreateField(ogr.FieldDefn('end', ogr.OFTDateTime))
    lyr.CreateField(ogr.FieldDefn('snippet', ogr.OFTString))
    lyr.CreateField(ogr.FieldDefn('altitudeMode', ogr.OFTString))
    lyr.CreateField(ogr.FieldDefn('extrude', ogr.OFTInteger))
    lyr.CreateField(ogr.FieldDefn('tessellate', ogr.OFTInteger))
    lyr.CreateField(ogr.FieldDefn('model', ogr.OFTString))
    lyr.CreateField(ogr.FieldDefn("scale_x", ogr.OFTReal))
    lyr.CreateField(ogr.FieldDefn("scale_y", ogr.OFTReal))
    lyr.CreateField(ogr.FieldDefn("scale_z", ogr.OFTReal))
    lyr.CreateField(ogr.FieldDefn("heading", ogr.OFTReal))
    lyr.CreateField(ogr.FieldDefn("tilt", ogr.OFTReal))
    lyr.CreateField(ogr.FieldDefn("roll", ogr.OFTReal))

    lyr.CreateField(ogr.FieldDefn("networklink", ogr.OFTString))
    lyr.CreateField(ogr.FieldDefn("networklink_refreshvisibility", ogr.OFTInteger))
    lyr.CreateField(ogr.FieldDefn("networklink_flytoview", ogr.OFTInteger))
    lyr.CreateField(ogr.FieldDefn("networklink_refreshMode", ogr.OFTString))
    lyr.CreateField(ogr.FieldDefn("networklink_refreshInterval", ogr.OFTReal))
    lyr.CreateField(ogr.FieldDefn("networklink_viewRefreshMode", ogr.OFTString))
    lyr.CreateField(ogr.FieldDefn("networklink_viewRefreshTime", ogr.OFTReal))
    lyr.CreateField(ogr.FieldDefn("networklink_viewBoundScale", ogr.OFTReal))
    lyr.CreateField(ogr.FieldDefn("networklink_viewFormat", ogr.OFTString))
    lyr.CreateField(ogr.FieldDefn("networklink_httpQuery", ogr.OFTString))

    lyr.CreateField(ogr.FieldDefn("camera_longitude", ogr.OFTReal))
    lyr.CreateField(ogr.FieldDefn("camera_latitude", ogr.OFTReal))
    lyr.CreateField(ogr.FieldDefn("camera_altitude", ogr.OFTReal))
    lyr.CreateField(ogr.FieldDefn("camera_altitudemode", ogr.OFTString))
    lyr.CreateField(ogr.FieldDefn("photooverlay", ogr.OFTString))
    lyr.CreateField(ogr.FieldDefn("leftfov", ogr.OFTReal))
    lyr.CreateField(ogr.FieldDefn("rightfov", ogr.OFTReal))
    lyr.CreateField(ogr.FieldDefn("bottomfov", ogr.OFTReal))
    lyr.CreateField(ogr.FieldDefn("topfov", ogr.OFTReal))
    lyr.CreateField(ogr.FieldDefn("near", ogr.OFTReal))
    lyr.CreateField(ogr.FieldDefn("photooverlay_shape", ogr.OFTString))

    lyr.CreateField(ogr.FieldDefn("imagepyramid_tilesize", ogr.OFTInteger))
    lyr.CreateField(ogr.FieldDefn("imagepyramid_maxwidth", ogr.OFTInteger))
    lyr.CreateField(ogr.FieldDefn("imagepyramid_maxheight", ogr.OFTInteger))


    feat = ogr.Feature(lyr.GetLayerDefn())
    feat.SetField('name', 'Eiffel tower')
    feat.SetField('description', 'Famous Paris attraction. Built by Gustave Eiffel in 1889.')
    feat.SetField('nom_francais', 'Tour Eiffel')
    feat.SetField('int_value', 12)
    feat.SetField('double_value', 34.56)
    feat.SetField('snippet', 'Very cool snippet')
    feat.SetField('begin', '1889/05/06')
    feat.SetField('end', '9999/12/31')
    feat.SetStyleString('@eiffel_tower')
    feat.SetGeometry(ogr.CreateGeometryFromWkt('POINT(2.2945 48.85825)'))
    lyr.CreateFeature(feat)

    feat = ogr.Feature(lyr.GetLayerDefn())
    feat.SetField('name', 'Avenue Gustave Eiffel')
    feat.SetField('timestamp', '2014/02/22')
    feat.SetGeometry(ogr.CreateGeometryFromWkt('LINESTRING(2.29420 48.85746,2.29540 48.85833)'))
    feat.SetStyleString('PEN(c:#00FF00)')
    feat.SetField('tessellate', 1)
    lyr.CreateFeature(feat)

    feat = ogr.Feature(lyr.GetLayerDefn())
    feat.SetField('name', 'Ecole Militaire')
    feat.SetGeometry(ogr.CreateGeometryFromWkt('POLYGON((2.30383 48.85162 15,2.30460 48.85220 15,2.30581 48.85152 15,2.30507 48.85083 15,2.30383 48.85162 15))'))
    feat.SetField('altitudeMode', 'relativeToGround')
    feat.SetField('extrude', 1)
    feat.SetStyleString('BRUSH(fc:#0000FF)')
    lyr.CreateFeature(feat)


    feat = ogr.Feature(lyr.GetLayerDefn())
    feat.SetField('name', 'Champ de Mars')
    feat.SetGeometry(ogr.CreateGeometryFromWkt('MULTIPOLYGON(((2.29413 48.85703,2.29606 48.85847,2.29837 48.85679,2.29676 48.85543,2.29413 48.85703)),((2.29656 48.85504,2.29929 48.85674,2.30359 48.85364,2.30164 48.85226,2.29656 48.85504)))'))
    lyr.CreateFeature(feat)

    feat = ogr.Feature( lyr.GetLayerDefn() )
    feat.SetGeometry(ogr.CreateGeometryFromWkt('POINT(2.2945 48.85825 10)'))
    feat.SetField("tilt", 75)
    feat.SetField("roll", 10)
    feat.SetField("heading", -70)
    feat.SetField("scale_x", 2)
    feat.SetField("scale_y", 3)
    feat.SetField("scale_z", 4)
    feat.SetField("altitudeMode", "relativeToGround")
    feat.SetField("model", "http://even.rouault.free.fr/kml/gdal_2.1/dummy.dae")
    lyr.CreateFeature(feat)

    feat = ogr.Feature(lyr.GetLayerDefn())
    feat.SetField("name", "a network link")
    feat.SetField("networklink", "http://developers.google.com/kml/documentation/Point.kml")
    feat.SetField("networklink_refreshVisibility", 1)
    feat.SetField("networklink_flyToView", 1)
    feat.SetField("networklink_refreshInterval", 60)
    feat.SetField("networklink_httpQuery", "[clientVersion]")
    lyr.CreateFeature(feat)

    feat = ogr.Feature(lyr.GetLayerDefn())
    feat.SetField("networklink", "http://developers.google.com/kml/documentation/Point.kml")
    feat.SetField("networklink_viewRefreshTime", 30)
    lyr.CreateFeature(feat)

    feat = ogr.Feature(lyr.GetLayerDefn())
    feat.SetField("networklink", "http://developers.google.com/kml/documentation/Point.kml")
    feat.SetField("networklink_refreshMode", 'onExpire')
    feat.SetField("networklink_viewRefreshMode", 'onRegion')
    feat.SetField("networklink_viewBoundScale", 0.5)
    feat.SetField("networklink_viewFormat", 'BBOX=[bboxWest],[bboxSouth],[bboxEast],[bboxNorth]')
    lyr.CreateFeature(feat)

    feat = ogr.Feature(lyr.GetLayerDefn())
    feat.SetField("photooverlay", "http://tile.openstreetmap.org/$[level]/$[x]/$[y].png")
    feat.SetField("imagepyramid_tilesize", 256)
    feat.SetField("imagepyramid_maxwidth", 512)
    feat.SetField("imagepyramid_maxheight", 512)
    feat.SetField("camera_longitude", 2.2946)
    feat.SetField("camera_latitude", 48.8583)
    feat.SetField("camera_altitude", 20)
    feat.SetField("camera_altitudemode", "relativeToGround")
    feat.SetField("leftfov", -60)
    feat.SetField("rightfov", 60)
    feat.SetField("bottomfov", -60)
    feat.SetField("topfov", 60)
    feat.SetField("near", 100)
    feat.SetField("heading", 0)
    feat.SetField("tilt", 90)
    feat.SetField("roll", 0)
    feat.SetGeometry(ogr.CreateGeometryFromWkt('POINT(2.2945 48.85825)'))
    lyr.CreateFeature(feat)

    # feat = ogr.Feature(lyr.GetLayerDefn())
    # feat.SetGeometry(ogr.CreateGeometryFromWkt('POINT EMPTY'))
    # lyr.CreateFeature(feat)

    # feat = ogr.Feature(lyr.GetLayerDefn())
    # # feat.SetGeometry(ogr.CreateGeometryFromWkt('LINESTRING EMPTY'))
    # lyr.CreateFeature(feat)

    # feat = ogr.Feature(lyr.GetLayerDefn())
    # feat.SetGeometry(ogr.CreateGeometryFromWkt('POLYGON EMPTY'))
    # lyr.CreateFeature(feat)

    # feat = ogr.Feature(lyr.GetLayerDefn())
    # feat.SetGeometry(ogr.CreateGeometryFromWkt('GEOMETRYCOLLECTION (POINT EMPTY,POINT(1 2))'))
    # lyr.CreateFeature(feat)

    lyr_options = [ 'CAMERA_LONGITUDE=2.2945', 'CAMERA_LATITUDE=48.85825', 'CAMERA_ALTITUDE=30',
                    'CAMERA_HEADING=120', 'CAMERA_TILT=70', 'CAMERA_ROLL=10', 'CAMERA_ALTITUDEMODE=relativeToGround',
                    'FOLDER=YES', 'NAME=layer_name', 'DESCRIPTION=description', 'OPEN=1', 'VISIBILITY=1', 'SNIPPET=snippet' ]
    ds.CreateLayer('test2', options = lyr_options)

    gdal.SetConfigOption('LIBKML_USE_SIMPLEFIELD', 'NO')
    lyr = ds.CreateLayer('test_data')
    gdal.SetConfigOption('LIBKML_USE_SIMPLEFIELD', None)
    lyr.CreateField(ogr.FieldDefn('foo', ogr.OFTString))
    feat = ogr.Feature(lyr.GetLayerDefn())
    feat.SetField("foo", "bar")
    feat.SetGeometry(ogr.CreateGeometryFromWkt('POINT(2.2945 48.85825)'))
    lyr.CreateFeature(feat)

    ds = None

    return
Exemple #3
0
def ogr_style_styletable():

    style_table = ogr.StyleTable()
    style_table.AddStyle("style1_normal",
                         'SYMBOL(id:"http://style1_normal",c:#67452301)')
    gdal.PushErrorHandler('CPLQuietErrorHandler')
    ret = style_table.SaveStyleTable('/nonexisting')
    gdal.PopErrorHandler()
    if ret != 0:
        gdaltest.post_reason('failure')
        return 'fail'
    if style_table.SaveStyleTable("/vsimem/out.txt") != 1:
        gdaltest.post_reason('failure')
        return 'fail'
    style_table = None

    style_table = ogr.StyleTable()
    gdal.PushErrorHandler('CPLQuietErrorHandler')
    ret = style_table.LoadStyleTable('/nonexisting')
    gdal.PopErrorHandler()
    if ret != 0:
        gdaltest.post_reason('failure')
        return 'fail'
    if style_table.LoadStyleTable('/vsimem/out.txt') != 1:
        gdaltest.post_reason('failure')
        return 'fail'

    gdal.Unlink('/vsimem/out.txt')

    gdal.PushErrorHandler('CPLQuietErrorHandler')
    ret = style_table.Find("non_existing_style")
    gdal.PopErrorHandler()
    if ret is not None:
        gdaltest.post_reason('failure')
        return 'fail'

    if style_table.Find("style1_normal"
                        ) != 'SYMBOL(id:"http://style1_normal",c:#67452301)':
        gdaltest.post_reason('failure')
        return 'fail'

    style = style_table.GetNextStyle()
    if style != 'SYMBOL(id:"http://style1_normal",c:#67452301)':
        gdaltest.post_reason('failure')
        return 'fail'
    style_name = style_table.GetLastStyleName()
    if style_name != 'style1_normal':
        gdaltest.post_reason('failure')
        return 'fail'

    style = style_table.GetNextStyle()
    if style is not None:
        gdaltest.post_reason('failure')
        return 'fail'

    style_table.ResetStyleStringReading()
    style = style_table.GetNextStyle()
    if style is None:
        gdaltest.post_reason('failure')
        return 'fail'

    # GetStyleTable()/SetStyleTable() on data source
    ds = ogr.GetDriverByName('Memory').CreateDataSource('')
    if ds.GetStyleTable() is not None:
        gdaltest.post_reason('failure')
        return 'fail'
    ds.SetStyleTable(None)
    if ds.GetStyleTable() is not None:
        gdaltest.post_reason('failure')
        return 'fail'
    ds.SetStyleTable(style_table)
    style_table2 = ds.GetStyleTable()
    style = style_table2.GetNextStyle()
    if style != 'SYMBOL(id:"http://style1_normal",c:#67452301)':
        gdaltest.post_reason('failure')
        return 'fail'

    # GetStyleTable()/SetStyleTable() on layer
    lyr = ds.CreateLayer('foo')
    if lyr.GetStyleTable() is not None:
        gdaltest.post_reason('failure')
        return 'fail'
    lyr.SetStyleTable(None)
    if lyr.GetStyleTable() is not None:
        gdaltest.post_reason('failure')
        return 'fail'
    lyr.SetStyleTable(style_table)
    style_table2 = lyr.GetStyleTable()
    style = style_table2.GetNextStyle()
    if style != 'SYMBOL(id:"http://style1_normal",c:#67452301)':
        gdaltest.post_reason('failure')
        return 'fail'

    ds = None

    return 'success'