当前位置: 首页>>代码示例>>Python>>正文


Python SubElement.attrib['color']方法代码示例

本文整理汇总了Python中xml.etree.ElementTree.SubElement.attrib['color']方法的典型用法代码示例。如果您正苦于以下问题:Python SubElement.attrib['color']方法的具体用法?Python SubElement.attrib['color']怎么用?Python SubElement.attrib['color']使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在xml.etree.ElementTree.SubElement的用法示例。


在下文中一共展示了SubElement.attrib['color']方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。

示例1: qml2Sld

# 需要导入模块: from xml.etree.ElementTree import SubElement [as 别名]
# 或者: from xml.etree.ElementTree.SubElement import attrib['color'] [as 别名]
    def qml2Sld(self):
        try:
            layer = self.allMapLayers[self.dlg.comboBox.currentIndex()]
        except:
            return

        qmlDocument = QDomDocument()
        root = qmlDocument.createElement('SLD4raster')
        qmlDocument.appendChild(root)
        qgisNode = qmlDocument.createElement('qgis')
        root.appendChild(qgisNode)

        errorMessage = None
        context = QgsReadWriteContext()
        layer.writeSymbology(qgisNode, qmlDocument, errorMessage, context)

        qmlString = minidom.parseString(qmlDocument.toString().encode('utf-8'))  # for non ASCII labels.

        sldRoot = Element('sld:StyledLayerDescriptor')
        sldRoot.attrib['xmlns'] = 'http://www.opengis.net/sld'
        sldRoot.attrib['xmlns:sld'] = 'http://www.opengis.net/sld'
        sldRoot.attrib['xmlns:ogc'] = 'http://www.opengis.net/ogc'
        sldRoot.attrib['xmlns:gml'] = 'http://www.opengis.net/gml'
        sldRoot.attrib['version'] = '1.0.0'

        userLayer = SubElement(sldRoot, 'sld:UserLayer')
        layerFeatureConstraints = SubElement(userLayer, 'sld:LayerFeatureConstraints')
        featureTypeConstraint = SubElement(layerFeatureConstraints, 'sld:FeatureTypeConstraint')
        userStyle = SubElement(userLayer, 'sld:UserStyle')

        styleName = SubElement(userStyle, 'sld:Name')
        styleName.text = self.dlg.comboBox.currentText()

        styleDescription = SubElement(userStyle, 'sld:Description')
        styleDescription.text = 'Generated by SLD4raster - https://cbsuygulama.wordpress.com/sld4raster'

        styleTitle = SubElement(userStyle, 'sld:Title')
        featureTypeStyle = SubElement(userStyle, 'sld:FeatureTypeStyle')
        featureName = SubElement(featureTypeStyle, 'sld:Name')
        featureRule = SubElement(featureTypeStyle, 'sld:Rule')
        rasterSymbolizer = SubElement(featureRule, 'sld:RasterSymbolizer')
        geometry = SubElement(rasterSymbolizer, 'sld:Geometry')
        ogcPropertyName = SubElement(geometry, 'ogc:PropertyName')
        ogcPropertyName.text = 'grid'
        opacity = SubElement(rasterSymbolizer, 'sld:Opacity')

        ###Getting raster type parameters
        rasterType = str(qmlString.getElementsByTagName('rasterrenderer')[0].attributes['type'].value)
        isGradient = 'gradient' in qmlString.getElementsByTagName('rasterrenderer')[0].attributes.keys()

        ###SLD for multiband raster
        if rasterType == 'multibandcolor':
            ###Getting RGB band order.
            redBand = str(qmlString.getElementsByTagName('rasterrenderer')[0].attributes['redBand'].value)
            greenBand = str(qmlString.getElementsByTagName('rasterrenderer')[0].attributes['greenBand'].value)
            blueBand = str(qmlString.getElementsByTagName('rasterrenderer')[0].attributes['blueBand'].value)

            channelSelection = SubElement(rasterSymbolizer, 'sld:ChannelSelection')

            redChannel = SubElement(channelSelection, 'sld:RedChannel')
            redSourceChannel = SubElement(redChannel, 'sld:SourceChannelName')
            redSourceChannel.text = redBand

            greenChannel = SubElement(channelSelection, 'sld:GreenChannel')
            greenSourceChannel = SubElement(greenChannel, 'sld:SourceChannelName')
            greenSourceChannel.text = greenBand

            blueChannel = SubElement(channelSelection, 'sld:BlueChannel')
            blueSourceChannel = SubElement(blueChannel, 'sld:SourceChannelName')
            blueSourceChannel.text = blueBand

        ###SLD for gradiented (black to white) raster
        elif isGradient:
            blackWhiteColor = ['#000000', '#FFFFFF']
            colorMap = SubElement(rasterSymbolizer, 'sld:ColorMap')
            gradientType = qmlString.getElementsByTagName('rasterrenderer')[0].attributes['gradient'].value
            blackWhiteValue = [qmlString.getElementsByTagName('minValue')[0].firstChild.nodeValue,
                               qmlString.getElementsByTagName('maxValue')[0].firstChild.nodeValue]

            ###Getting gradient color type
            if gradientType == 'WhiteToBlack':
                blackWhiteColor.reverse()

            for i in range(len(blackWhiteColor)):
                colorMapEntry = SubElement(colorMap, 'sld:ColorMapEntry')
                colorMapEntry.attrib['color'] = blackWhiteColor[i]
                colorMapEntry.attrib['opacity'] = '1.0'
                colorMapEntry.attrib['quantity'] = blackWhiteValue[i]

        ###SLD for singleband raster
        else:
            colorMap = SubElement(rasterSymbolizer, 'sld:ColorMap')

            ###Getting color ramp type
            colorType = str(qmlString.getElementsByTagName('colorrampshader')[0].attributes['colorRampType'].value)
            if colorType == 'DISCRETE':
                colorMap.attrib['type'] = "intervals"

            ###Getting color values
            colorValue = list()
#.........这里部分代码省略.........
开发者ID:MSBilgin,项目名称:SLD4raster,代码行数:103,代码来源:sld4raster.py

示例2: sld2qml

# 需要导入模块: from xml.etree.ElementTree import SubElement [as 别名]
# 或者: from xml.etree.ElementTree.SubElement import attrib['color'] [as 别名]
    def sld2qml(self):
        try:
            sldDocument = minidom.parseString(self.dlg.sldText2.text().encode('utf-8'))

            # Namespaces (sld, se, none) are most important part. Firstly they must be handled.
            if len(sldDocument.getElementsByTagName('sld:RasterSymbolizer')) > 0:
                nameSpace = 'sld:'

            elif len(sldDocument.getElementsByTagName('se:RasterSymbolizer')) > 0:
                nameSpace = 'se:'

            else:
                nameSpace = ''  # no namespace.

            # main QML structure.
            qmlRoot = Element('qgis')
            pipe = SubElement(qmlRoot, 'pipe')

            rasterRenderer = SubElement(pipe, 'rasterrenderer')
            rasterTransparency = SubElement(rasterRenderer, 'rasterTransparency')

            # checking document for containing ColorMap tag. If does, it is a single-band raster.
            sldRasterType = sldDocument.getElementsByTagName(nameSpace + 'ColorMap')

            if len(sldRasterType) == 0:
                sldRedBand = sldDocument.getElementsByTagName(nameSpace + 'RedChannel')[0].getElementsByTagName(
                    nameSpace + 'SourceChannelName')[0].firstChild.nodeValue
                sldGreenBand = sldDocument.getElementsByTagName(nameSpace + 'GreenChannel')[0].getElementsByTagName(
                    nameSpace + 'SourceChannelName')[0].firstChild.nodeValue
                sldBlueBand = sldDocument.getElementsByTagName(nameSpace + 'BlueChannel')[0].getElementsByTagName(
                    nameSpace + 'SourceChannelName')[0].firstChild.nodeValue

                rasterRenderer.attrib['type'] = 'multibandcolor'
                rasterRenderer.attrib['redBand'] = sldRedBand
                rasterRenderer.attrib['greenBand'] = sldGreenBand
                rasterRenderer.attrib['blueBand'] = sldBlueBand

            else:
                rasterRenderer.attrib['type'] = 'singlebandpseudocolor'
                rasterRenderer.attrib['band'] = '1'
                rasterShader = SubElement(rasterRenderer, 'rastershader')

                colorRampShader = SubElement(rasterShader, 'colorrampshader')

                sldColorMapType = None
                sldColorMapType2 = None
                try:
                    sldColorMapType = sldDocument.getElementsByTagName(nameSpace + 'ColorMap')[0].attributes.has_key(
                        'type')  # sometimes "ColorMap" tag does not contain "type" attribute. This means it is a ramp color.
                    sldColorMapType2 = sldDocument.getElementsByTagName(nameSpace + 'ColorMap')[0].attributes[
                        'type'].value  # or getting raster map colortype by "type" atribute.
                except:
                    pass

                if sldColorMapType and sldColorMapType2 == 'intervals':
                    colorRampShader.attrib['colorRampType'] = 'DISCRETE'
                else:
                    colorRampShader.attrib['colorRampType'] = 'INTERPOLATED'

                sldColorValues = list()
                sldItemList = sldDocument.getElementsByTagName(nameSpace + 'ColorMapEntry')

                # some SLD documents don't have 'label' attribute so the problem is handled by this way.
                try:
                    for m in sldItemList:
                        sldColorValues.append(
                            [m.attributes['quantity'].value, m.attributes['label'].value, m.attributes['color'].value])
                except:
                    for m in sldItemList:
                        sldColorValues.append([m.attributes['quantity'].value, m.attributes['quantity'].value,
                                               m.attributes['color'].value])

                for s in range(len(sldColorValues)):
                    item = SubElement(colorRampShader, 'item')
                    item.attrib['alpha'] = '255'
                    item.attrib['value'] = sldColorValues[s][0]
                    item.attrib['label'] = sldColorValues[s][1]
                    item.attrib['color'] = sldColorValues[s][2]

            # some SLD documents don't have 'Opacity' tag so the problem is handled by this way.
            try:
                sldOpacity = sldDocument.getElementsByTagName(nameSpace + 'Opacity')[0].firstChild.nodeValue
            except:
                sldOpacity = '1'

            rasterRenderer.attrib['opacity'] = sldOpacity

            brightnessContrast = SubElement(pipe, 'brightnesscontrast')
            hueSaturation = SubElement(pipe, 'huesaturation')
            rasterResampler = SubElement(pipe, 'rasterresampler')
            blendMode = SubElement(qmlRoot, 'blendMode')
            blendMode.text = '0'
            textQML = minidom.parseString(tostring(qmlRoot)).toprettyxml(indent="    ")
            self.saveFile(textQML, 'QML')

        except Exception as sldTransformError:
            QMessageBox.critical(None, "Invalid XML", str(sldTransformError))
开发者ID:MSBilgin,项目名称:SLD4raster,代码行数:99,代码来源:sld4raster.py

示例3: encode_as_tmx

# 需要导入模块: from xml.etree.ElementTree import SubElement [as 别名]
# 或者: from xml.etree.ElementTree.SubElement import attrib['color'] [as 别名]
def encode_as_tmx(level, tileset_path):
    root = Element('map')
    set_attrs(root, {
        "version" : "1.0",
        "orientation" : "orthogonal",
        "renderorder" : "right-down",
        "width" : 64,
        "height" : 64,
        "tilewidth" : 16,
        "tileheight" : 16,
        "nextobjectid" : 1
    })

    tileset = SubElement(root, 'tileset')
    set_attrs(tileset, {
        "firstgid" : 1,
        "source" : tileset_path,
    })

    ext_start = 32*128 + 1

    npc_tileset = SubElement(root, 'tileset')
    set_attrs(npc_tileset, {
        "firstgid" : ext_start,
        "name" : "extra images",
    })

    map_layer = SubElement(root, 'layer')
    set_attrs(map_layer, {
        "name" : "map",
        "width" : 64,
        "height" : 64,
    })

    data = SubElement(map_layer, 'data')
    data.attrib['encoding'] = "csv"
    data.text = encode_as_csv(level)

    scope = {
        "images" : {},
        "next_gid" : 0,
        "ext_start" : ext_start,
    }
    def index_for_img(src):
        if not scope['images'].has_key(src):
            scope['images'][src] = scope['ext_start'] + scope['next_gid']
            tile = SubElement(npc_tileset, 'tile')
            tile.attrib['id'] = str(scope['next_gid'])
            scope['next_gid'] += 1
            img = SubElement(tile, 'image')
            img.attrib['source'] = relative_img_path(src)
        return scope['images'][src]

    npc_layer = SubElement(root, 'objectgroup')
    npc_layer.attrib['name'] = "npcs"
    obj_id = 0
    for actor in level.actors:
        if not actor.image:
            continue
        obj_id += 1
        obj = SubElement(npc_layer, 'object')
        set_attrs(obj, {
            "id" : obj_id,
            "gid" : index_for_img(actor.image),
            "name" : actor.image.split("/")[-1],
            "x" : actor.x*16,
            "y" : actor.y*16 + actor.clip[3],
        })

    link_layer = SubElement(root, 'objectgroup')
    link_layer.attrib['name'] = "level links"
    link_layer.attrib['color'] = "#ffff00"
    for link in level.links:
        obj_id += 1
        obj = SubElement(link_layer, 'object')
        set_attrs(obj, {
            "id" : obj_id,
            "name" : link.target,
            "type" : "link",
            "x" : link.area[0] * 16,
            "y" : link.area[1] * 16,
            "width" : link.area[2] * 16,
            "height" : link.area[3] * 16,
        })

        props = SubElement(obj, 'properties')
        target = SubElement(props, 'property')
        set_attrs(target, {
            "name" : "warp target",
            "type" : "string",
            "value" : link.target,
        })
        dest_x = SubElement(props, 'property')
        set_attrs(dest_x, {
            "name" : "destination x",
            "type" : "string",
            "value" : link.dest[0],
        })
        dest_y = SubElement(props, 'property')
        set_attrs(dest_y, {
#.........这里部分代码省略.........
开发者ID:Aeva,项目名称:nw-converter,代码行数:103,代码来源:nw2tiled.py


注:本文中的xml.etree.ElementTree.SubElement.attrib['color']方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。