本文整理汇总了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()
#.........这里部分代码省略.........
示例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))
示例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, {
#.........这里部分代码省略.........