本文整理汇总了Python中qgis.core.QgsSymbolLayerUtils类的典型用法代码示例。如果您正苦于以下问题:Python QgsSymbolLayerUtils类的具体用法?Python QgsSymbolLayerUtils怎么用?Python QgsSymbolLayerUtils使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。
在下文中一共展示了QgsSymbolLayerUtils类的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: testDecodeArrowHeadType
def testDecodeArrowHeadType(self):
type, ok = QgsSymbolLayerUtils.decodeArrowHeadType(0)
self.assertTrue(ok)
self.assertEqual(type, QgsArrowSymbolLayer.HeadSingle)
type, ok = QgsSymbolLayerUtils.decodeArrowHeadType('single')
self.assertTrue(ok)
self.assertEqual(type, QgsArrowSymbolLayer.HeadSingle)
type, ok = QgsSymbolLayerUtils.decodeArrowHeadType(' SINGLE ')
self.assertTrue(ok)
self.assertEqual(type, QgsArrowSymbolLayer.HeadSingle)
type, ok = QgsSymbolLayerUtils.decodeArrowHeadType(1)
self.assertTrue(ok)
self.assertEqual(type, QgsArrowSymbolLayer.HeadReversed)
type, ok = QgsSymbolLayerUtils.decodeArrowHeadType('reversed')
self.assertTrue(ok)
self.assertEqual(type, QgsArrowSymbolLayer.HeadReversed)
type, ok = QgsSymbolLayerUtils.decodeArrowHeadType(2)
self.assertTrue(ok)
self.assertEqual(type, QgsArrowSymbolLayer.HeadDouble)
type, ok = QgsSymbolLayerUtils.decodeArrowHeadType('double')
self.assertTrue(ok)
self.assertEqual(type, QgsArrowSymbolLayer.HeadDouble)
type, ok = QgsSymbolLayerUtils.decodeArrowHeadType('xxxxx')
self.assertFalse(ok)
type, ok = QgsSymbolLayerUtils.decodeArrowHeadType(34)
self.assertFalse(ok)
示例2: testDecodeArrowType
def testDecodeArrowType(self):
type, ok = QgsSymbolLayerUtils.decodeArrowType(0)
self.assertTrue(ok)
self.assertEqual(type, QgsArrowSymbolLayer.ArrowPlain)
type, ok = QgsSymbolLayerUtils.decodeArrowType('plain')
self.assertTrue(ok)
self.assertEqual(type, QgsArrowSymbolLayer.ArrowPlain)
type, ok = QgsSymbolLayerUtils.decodeArrowType(' PLAIN ')
self.assertTrue(ok)
self.assertEqual(type, QgsArrowSymbolLayer.ArrowPlain)
type, ok = QgsSymbolLayerUtils.decodeArrowType(1)
self.assertTrue(ok)
self.assertEqual(type, QgsArrowSymbolLayer.ArrowLeftHalf)
type, ok = QgsSymbolLayerUtils.decodeArrowType('lefthalf')
self.assertTrue(ok)
self.assertEqual(type, QgsArrowSymbolLayer.ArrowLeftHalf)
type, ok = QgsSymbolLayerUtils.decodeArrowType(2)
self.assertTrue(ok)
self.assertEqual(type, QgsArrowSymbolLayer.ArrowRightHalf)
type, ok = QgsSymbolLayerUtils.decodeArrowType('righthalf')
self.assertTrue(ok)
self.assertEqual(type, QgsArrowSymbolLayer.ArrowRightHalf)
type, ok = QgsSymbolLayerUtils.decodeArrowType('xxxxx')
self.assertFalse(ok)
type, ok = QgsSymbolLayerUtils.decodeArrowType(34)
self.assertFalse(ok)
示例3: testSymbolToFromMimeData
def testSymbolToFromMimeData(self):
"""
Test converting symbols to and from mime data
"""
symbol = QgsMarkerSymbol.createSimple({})
symbol.setColor(QColor(255, 0, 255))
self.assertFalse(QgsSymbolLayerUtils.symbolFromMimeData(None))
self.assertFalse(QgsSymbolLayerUtils.symbolToMimeData(None))
mime = QgsSymbolLayerUtils.symbolToMimeData(symbol)
self.assertTrue(mime is not None)
symbol2 = QgsSymbolLayerUtils.symbolFromMimeData(mime)
self.assertTrue(symbol2 is not None)
self.assertEqual(symbol2.color().name(), symbol.color().name())
示例4: testEncodeDecodeSize
def testEncodeDecodeSize(self):
s = QSizeF()
string = QgsSymbolLayerUtils.encodeSize(s)
s2 = QgsSymbolLayerUtils.decodeSize(string)
self.assertEqual(s2, s)
s = QSizeF(1.5, 2.5)
string = QgsSymbolLayerUtils.encodeSize(s)
s2 = QgsSymbolLayerUtils.decodeSize(string)
self.assertEqual(s2, s)
# bad string
s2 = QgsSymbolLayerUtils.decodeSize('')
self.assertEqual(s2, QSizeF(0, 0))
示例5: testEncodeDecodePoint
def testEncodeDecodePoint(self):
s = QPointF()
string = QgsSymbolLayerUtils.encodePoint(s)
s2 = QgsSymbolLayerUtils.decodePoint(string)
self.assertEqual(s2, s)
s = QPointF(1.5, 2.5)
string = QgsSymbolLayerUtils.encodePoint(s)
s2 = QgsSymbolLayerUtils.decodePoint(string)
self.assertEqual(s2, s)
# bad string
s2 = QgsSymbolLayerUtils.decodePoint('')
self.assertEqual(s2, QPointF())
示例6: getLegend
def getLegend(layer, renderer, outputProjectFileName, safeLayerName):
if isinstance(renderer, QgsSingleSymbolRenderer):
symbol = renderer.symbol()
legendIcon = QgsSymbolLayerUtils.symbolPreviewPixmap(symbol,
QSize(16, 16))
legendIcon.save(os.path.join(outputProjectFileName, "legend",
safeLayerName + ".png"))
legend = ('<img src="legend/' + safeLayerName + '.png" /> ')
legend += layer.name()
else:
if isinstance(renderer, QgsCategorizedSymbolRenderer):
classes = renderer.categories()
elif isinstance(renderer, QgsGraduatedSymbolRenderer):
classes = renderer.ranges()
elif isinstance(renderer, QgsRuleBasedRenderer):
classes = renderer.rootRule().children()
legend = layer.name().replace("'", "\\'") + "<br />"
legend += "<table>"
for cnt, c in enumerate(classes):
symbol = c.symbol()
legend = iconLegend(symbol, c, outputProjectFileName,
safeLayerName, legend, cnt)
legend += "</table>"
symbol = classes[0].symbol()
return (legend, symbol)
示例7: categorized
def categorized(defs, sln, layer, renderer, legendFolder, stylesFolder,
layer_alpha):
cluster = False
defs += """
function categories_%s(feature, value, size, resolution, labelText,
labelFont, labelFill) {
switch(value.toString()) {""" % sln
cats = []
useAnyMapUnits = False
for cnt, cat in enumerate(renderer.categories()):
legendIcon = QgsSymbolLayerUtils.symbolPreviewPixmap(cat.symbol(),
QSize(16, 16))
legendIcon.save(os.path.join(legendFolder,
sln + "_" + unicode(cnt) + ".png"))
if (cat.value() is not None and cat.value() != ""):
categoryStr = "case '%s':" % unicode(
cat.value()).replace("'", "\\'")
else:
categoryStr = "default:"
(style, pattern, setPattern,
useMapUnits) = (getSymbolAsStyle(cat.symbol(), stylesFolder,
layer_alpha, renderer, sln, layer))
if useMapUnits:
useAnyMapUnits = True
categoryStr += '''
return %s;
break;''' % style
cats.append(categoryStr)
defs += "\n".join(cats) + "}};"
style = """
var style = categories_%s(feature, value, size, resolution, labelText,
labelFont, labelFill)""" % sln
value = getValue(layer, renderer)
return (style, pattern, setPattern, value, defs, useAnyMapUnits)
示例8: testRingFilter
def testRingFilter(self):
# test filtering rings during rendering
s = QgsFillSymbol()
s.deleteSymbolLayer(0)
hash_line = QgsHashedLineSymbolLayer(True)
hash_line.setPlacement(QgsTemplatedLineSymbolLayerBase.Interval)
hash_line.setInterval(6)
simple_line = QgsSimpleLineSymbolLayer()
simple_line.setColor(QColor(0, 255, 0))
simple_line.setWidth(1)
line_symbol = QgsLineSymbol()
line_symbol.changeSymbolLayer(0, simple_line)
hash_line.setSubSymbol(line_symbol)
hash_line.setHashLength(10)
hash_line.setAverageAngleLength(0)
s.appendSymbolLayer(hash_line.clone())
self.assertEqual(s.symbolLayer(0).ringFilter(), QgsLineSymbolLayer.AllRings)
s.symbolLayer(0).setRingFilter(QgsLineSymbolLayer.ExteriorRingOnly)
self.assertEqual(s.symbolLayer(0).ringFilter(), QgsLineSymbolLayer.ExteriorRingOnly)
s2 = s.clone()
self.assertEqual(s2.symbolLayer(0).ringFilter(), QgsLineSymbolLayer.ExteriorRingOnly)
doc = QDomDocument()
context = QgsReadWriteContext()
element = QgsSymbolLayerUtils.saveSymbol('test', s, doc, context)
s2 = QgsSymbolLayerUtils.loadSymbol(element, context)
self.assertEqual(s2.symbolLayer(0).ringFilter(), QgsLineSymbolLayer.ExteriorRingOnly)
# rendering test
s3 = QgsFillSymbol()
s3.deleteSymbolLayer(0)
s3.appendSymbolLayer(
hash_line.clone())
s3.symbolLayer(0).setRingFilter(QgsLineSymbolLayer.ExteriorRingOnly)
g = QgsGeometry.fromWkt('Polygon((0 0, 10 0, 10 10, 0 10, 0 0),(1 1, 1 2, 2 2, 2 1, 1 1),(8 8, 9 8, 9 9, 8 9, 8 8))')
rendered_image = self.renderGeometry(s3, g)
assert self.imageCheck('hashline_exterioronly', 'hashline_exterioronly', rendered_image)
s3.symbolLayer(0).setRingFilter(QgsLineSymbolLayer.InteriorRingsOnly)
g = QgsGeometry.fromWkt('Polygon((0 0, 10 0, 10 10, 0 10, 0 0),(1 1, 1 2, 2 2, 2 1, 1 1),(8 8, 9 8, 9 9, 8 9, 8 8))')
rendered_image = self.renderGeometry(s3, g)
assert self.imageCheck('hashline_interioronly', 'hashline_interioronly', rendered_image)
示例9: testRingFilter
def testRingFilter(self):
# test filtering rings during rendering
s = QgsFillSymbol()
s.deleteSymbolLayer(0)
marker_line = QgsMarkerLineSymbolLayer(True)
marker_line.setPlacement(QgsMarkerLineSymbolLayer.FirstVertex)
marker = QgsSimpleMarkerSymbolLayer(QgsSimpleMarkerSymbolLayer.Triangle, 4)
marker.setColor(QColor(255, 0, 0))
marker.setStrokeStyle(Qt.NoPen)
marker_symbol = QgsMarkerSymbol()
marker_symbol.changeSymbolLayer(0, marker)
marker_line.setSubSymbol(marker_symbol)
s.appendSymbolLayer(marker_line.clone())
self.assertEqual(s.symbolLayer(0).ringFilter(), QgsLineSymbolLayer.AllRings)
s.symbolLayer(0).setRingFilter(QgsLineSymbolLayer.ExteriorRingOnly)
self.assertEqual(s.symbolLayer(0).ringFilter(), QgsLineSymbolLayer.ExteriorRingOnly)
s2 = s.clone()
self.assertEqual(s2.symbolLayer(0).ringFilter(), QgsLineSymbolLayer.ExteriorRingOnly)
doc = QDomDocument()
context = QgsReadWriteContext()
element = QgsSymbolLayerUtils.saveSymbol('test', s, doc, context)
s2 = QgsSymbolLayerUtils.loadSymbol(element, context)
self.assertEqual(s2.symbolLayer(0).ringFilter(), QgsLineSymbolLayer.ExteriorRingOnly)
# rendering test
s3 = QgsFillSymbol()
s3.deleteSymbolLayer(0)
s3.appendSymbolLayer(
QgsMarkerLineSymbolLayer())
s3.symbolLayer(0).setRingFilter(QgsLineSymbolLayer.ExteriorRingOnly)
s3.symbolLayer(0).setAverageAngleLength(0)
g = QgsGeometry.fromWkt('Polygon((0 0, 10 0, 10 10, 0 10, 0 0),(1 1, 1 2, 2 2, 2 1, 1 1),(8 8, 9 8, 9 9, 8 9, 8 8))')
rendered_image = self.renderGeometry(s3, g)
assert self.imageCheck('markerline_exterioronly', 'markerline_exterioronly', rendered_image)
s3.symbolLayer(0).setRingFilter(QgsLineSymbolLayer.InteriorRingsOnly)
g = QgsGeometry.fromWkt('Polygon((0 0, 10 0, 10 10, 0 10, 0 0),(1 1, 1 2, 2 2, 2 1, 1 1),(8 8, 9 8, 9 9, 8 9, 8 8))')
rendered_image = self.renderGeometry(s3, g)
assert self.imageCheck('markerline_interioronly', 'markerline_interioronly', rendered_image)
示例10: testConvertFromMapUnits
def testConvertFromMapUnits(self):
# test QgsSymbolLayerUtils::convertToMapUnits() without QgsMapUnitScale
ms = QgsMapSettings()
ms.setExtent(QgsRectangle(0, 0, 100, 100))
ms.setOutputSize(QSize(100, 50))
ms.setOutputDpi(300)
r = QgsRenderContext.fromMapSettings(ms)
# renderer scale should be about 1:291937841
size = QgsSymbolLayerUtils.convertFromMapUnits(r, 2, QgsUnitTypes.RenderMapUnits)
self.assertEqual(size, 2.0)
size = QgsSymbolLayerUtils.convertFromMapUnits(r, 50, QgsUnitTypes.RenderMillimeters)
self.assertAlmostEqual(size, 2.1166666666, places=5)
size = QgsSymbolLayerUtils.convertFromMapUnits(r, 50, QgsUnitTypes.RenderPoints)
self.assertAlmostEqual(size, 6.0000000015, places=5)
size = QgsSymbolLayerUtils.convertFromMapUnits(r, 4, QgsUnitTypes.RenderPixels)
self.assertAlmostEqual(size, 2.0, places=5)
示例11: testMapUnitScaleFactor
def testMapUnitScaleFactor(self):
# test QgsSymbolLayerUtils::mapUnitScaleFactor() using QgsMapUnitScale
ms = QgsMapSettings()
ms.setExtent(QgsRectangle(0, 0, 100, 100))
ms.setOutputSize(QSize(100, 50))
ms.setOutputDpi(300)
r = QgsRenderContext.fromMapSettings(ms)
# renderer scale should be about 1:291937841
c = QgsMapUnitScale()
sf = QgsSymbolLayerUtils.mapUnitScaleFactor(r, QgsUnitTypes.RenderMapUnits, c)
self.assertAlmostEqual(sf, 1.0, places=5)
sf = QgsSymbolLayerUtils.mapUnitScaleFactor(r, QgsUnitTypes.RenderMillimeters, c)
self.assertAlmostEqual(sf, 23.622047, places=5)
sf = QgsSymbolLayerUtils.mapUnitScaleFactor(r, QgsUnitTypes.RenderPixels, c)
self.assertAlmostEqual(sf, 2.0, places=5)
示例12: testSaveRestore
def testSaveRestore(self):
""" Test saving and restoring base symbol layer properties to xml"""
layer = QgsSimpleFillSymbolLayer()
layer.setEnabled(False)
layer.setLocked(True)
layer.setRenderingPass(5)
symbol = QgsFillSymbol()
symbol.changeSymbolLayer(0, layer)
doc = QDomDocument("testdoc")
elem = QgsSymbolLayerUtils.saveSymbol('test', symbol, doc, QgsReadWriteContext())
restored_symbol = QgsSymbolLayerUtils.loadSymbol(elem, QgsReadWriteContext())
restored_layer = restored_symbol.symbolLayer(0)
self.assertFalse(restored_layer.enabled())
self.assertTrue(restored_layer.isLocked())
self.assertEqual(restored_layer.renderingPass(), 5)
示例13: testForceRHR
def testForceRHR(self):
# test forcing right hand rule during rendering
s = QgsFillSymbol()
s.deleteSymbolLayer(0)
s.appendSymbolLayer(
QgsSimpleFillSymbolLayer(color=QColor(255, 0, 0), strokeColor=QColor(0, 255, 0)))
self.assertFalse(s.forceRHR())
s.setForceRHR(True)
self.assertTrue(s.forceRHR())
s.setForceRHR(False)
self.assertFalse(s.forceRHR())
s.setForceRHR(True)
doc = QDomDocument()
context = QgsReadWriteContext()
element = QgsSymbolLayerUtils.saveSymbol('test', s, doc, context)
s2 = QgsSymbolLayerUtils.loadSymbol(element, context)
self.assertTrue(s2.forceRHR())
# rendering test
s3 = QgsFillSymbol()
s3.deleteSymbolLayer(0)
s3.appendSymbolLayer(
QgsSimpleFillSymbolLayer(color=QColor(255, 200, 200), strokeColor=QColor(0, 255, 0), strokeWidth=2))
marker_line = QgsMarkerLineSymbolLayer(True)
marker_line.setPlacement(QgsMarkerLineSymbolLayer.FirstVertex)
marker = QgsSimpleMarkerSymbolLayer(QgsSimpleMarkerSymbolLayer.Triangle, 4)
marker.setColor(QColor(255, 0, 0))
marker.setStrokeStyle(Qt.NoPen)
marker_symbol = QgsMarkerSymbol()
marker_symbol.changeSymbolLayer(0, marker)
marker_line.setSubSymbol(marker_symbol)
s3.appendSymbolLayer(marker_line)
g = QgsGeometry.fromWkt('Polygon((0 0, 10 0, 10 10, 0 10, 0 0),(1 1, 1 2, 2 2, 2 1, 1 1),(8 8, 9 8, 9 9, 8 9, 8 8))')
rendered_image = self.renderGeometry(s3, g)
assert self.imageCheck('force_rhr_off', 'polygon_forcerhr_off', rendered_image)
s3.setForceRHR(True)
rendered_image = self.renderGeometry(s3, g)
assert self.imageCheck('force_rhr_on', 'polygon_forcerhr_on', rendered_image)
示例14: singleSymbol
def singleSymbol(renderer, stylesFolder, layer_alpha, sln, legendFolder,
layer):
symbol = renderer.symbol()
(style, pattern, setPattern,
useMapUnits) = getSymbolAsStyle(symbol, stylesFolder,
layer_alpha, renderer, sln, layer)
style = "var style = " + style
legendIcon = QgsSymbolLayerUtils.symbolPreviewPixmap(
symbol, QSize(16, 16))
legendIcon.save(os.path.join(legendFolder, sln + ".png"))
value = 'var value = ""'
return (style, pattern, setPattern, value, useMapUnits)
示例15: testConvertToPainterUnits
def testConvertToPainterUnits(self):
# test QgsSymbolLayerUtils::convertToPainterUnits() using QgsMapUnitScale
ms = QgsMapSettings()
ms.setExtent(QgsRectangle(0, 0, 100, 100))
ms.setOutputSize(QSize(100, 50))
ms.setOutputDpi(300)
r = QgsRenderContext.fromMapSettings(ms)
# renderer scale should be about 1:291937841
# start with no min/max scale
c = QgsMapUnitScale()
size = QgsSymbolLayerUtils.convertToPainterUnits(r, 2, QgsUnitTypes.RenderMapUnits, c)
self.assertAlmostEqual(size, 1.0, places=5)
size = QgsSymbolLayerUtils.convertToPainterUnits(r, 2, QgsUnitTypes.RenderMillimeters, c)
self.assertAlmostEqual(size, 23.622047, places=5)
size = QgsSymbolLayerUtils.convertToPainterUnits(r, 2, QgsUnitTypes.RenderPixels, c)
self.assertAlmostEqual(size, 2.0, places=5)
# minimum size greater than the calculated size, so size should be limited to minSizeMM
c.minSizeMM = 5
c.minSizeMMEnabled = True
size = QgsSymbolLayerUtils.convertToPainterUnits(r, 2, QgsUnitTypes.RenderMapUnits, c)
self.assertAlmostEqual(size, 59.0551181, places=5)
# only conversion from mapunits should be affected
size = QgsSymbolLayerUtils.convertToPainterUnits(r, 2, QgsUnitTypes.RenderMillimeters, c)
self.assertAlmostEqual(size, 23.622047, places=5)
size = QgsSymbolLayerUtils.convertToPainterUnits(r, 2, QgsUnitTypes.RenderPixels, c)
self.assertAlmostEqual(size, 2.0, places=5)
c.minSizeMMEnabled = False
# maximum size less than the calculated size, so size should be limited to maxSizeMM
c.maxSizeMM = 0.1
c.maxSizeMMEnabled = True
size = QgsSymbolLayerUtils.convertToPainterUnits(r, 2, QgsUnitTypes.RenderMapUnits, c)
self.assertAlmostEqual(size, 1.0, places=5)
# only conversion from mapunits should be affected
size = QgsSymbolLayerUtils.convertToPainterUnits(r, 2, QgsUnitTypes.RenderMillimeters, c)
self.assertAlmostEqual(size, 23.622047, places=5)
size = QgsSymbolLayerUtils.convertToPainterUnits(r, 2, QgsUnitTypes.RenderPixels, c)
self.assertAlmostEqual(size, 2.0, places=5)