本文整理汇总了Python中qgis.core.QgsPalLayerSettings.getLabelExpression方法的典型用法代码示例。如果您正苦于以下问题:Python QgsPalLayerSettings.getLabelExpression方法的具体用法?Python QgsPalLayerSettings.getLabelExpression怎么用?Python QgsPalLayerSettings.getLabelExpression使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类qgis.core.QgsPalLayerSettings
的用法示例。
在下文中一共展示了QgsPalLayerSettings.getLabelExpression方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: convert2CartoCSS
# 需要导入模块: from qgis.core import QgsPalLayerSettings [as 别名]
# 或者: from qgis.core.QgsPalLayerSettings import getLabelExpression [as 别名]
def convert2CartoCSS(self, layer):
"""Convert layer symbology to CartoCSS"""
renderer = layer.rendererV2()
carto_css = ''
label_css = ''
label_settings = QgsPalLayerSettings()
label_settings.readFromLayer(layer)
if label_settings.enabled:
d = {
'layername': '#' + layer.tableName(),
'field': label_settings.getLabelExpression().dump(),
# TODO Get font size
'size': 11,
'color': label_settings.textColor.name()
}
filein = open(QgisCartoDB.CartoDBPlugin.PLUGIN_DIR + '/templates/labels.less')
label_css = Template(filein.read())
label_css = label_css.substitute(d)
# qDebug('Label CSS: ' + label_css)
# CSS for single symbols
if renderer.type() == 'singleSymbol':
symbol = renderer.symbol()
carto_css = self.symbol2CartoCSS(layer, symbol, '#' + layer.tableName())
# CSS for categorized symbols
elif renderer.type() == 'categorizedSymbol':
# qDebug('Categorized: ' + renderer.classAttribute())
for cat in renderer.categories():
symbol = cat.symbol()
# qDebug("%s: %s type: %s" % (str(cat.value()), cat.label(), type(cat.value())))
if cat.value() is not None and cat.value() != '' and not isinstance(cat.value(), QPyNullVariant):
if isinstance(cat.value(), (int, float, long)) or (isinstance(cat.value(), str) and cat.value().isdecimal()):
value = unicode(cat.value())
else:
value = unicode('"' + cat.value() + '"')
value = str(value.encode('utf8', 'ignore'))
# qDebug('Value {}'.format(value))
style_name = '#{}[{}={}]'.format(layer.tableName(), renderer.classAttribute(), value).decode('utf8')
carto_css = carto_css + \
self.symbol2CartoCSS(layer, symbol, style_name)
else:
carto_css = self.symbol2CartoCSS(layer, symbol, '#' + layer.tableName()) + carto_css
# CSS for graduated symbols
elif renderer.type() == 'graduatedSymbol':
# qDebug('Graduated')
def upperValue(ran):
"""Get upper value from range"""
return ran.upperValue()
ranges = sorted(renderer.ranges(), key=upperValue, reverse=True)
for ran in ranges:
symbol = ran.symbol()
'''
qDebug("%f - %f: %s" % (
ran.lowerValue(),
ran.upperValue(),
ran.label()
))
'''
carto_css = carto_css + \
self.symbol2CartoCSS(layer, symbol, '#' + layer.tableName() + \
'[' + renderer.classAttribute() + '<=' + str(ran.upperValue()) + ']')
return '/** Styles designed from QGISCartoDB Plugin */\n\n' + carto_css + '\n' + label_css