本文整理汇总了Python中qgis.core.QgsRenderContext.setRendererScale方法的典型用法代码示例。如果您正苦于以下问题:Python QgsRenderContext.setRendererScale方法的具体用法?Python QgsRenderContext.setRendererScale怎么用?Python QgsRenderContext.setRendererScale使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类qgis.core.QgsRenderContext
的用法示例。
在下文中一共展示了QgsRenderContext.setRendererScale方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: testLegendKeysWhileCounting
# 需要导入模块: from qgis.core import QgsRenderContext [as 别名]
# 或者: from qgis.core.QgsRenderContext import setRendererScale [as 别名]
def testLegendKeysWhileCounting(self):
# test determining legend keys for features, while counting features
fields = QgsFields()
fields.append(QgsField('x'))
# setup renderer
renderer = QgsCategorizedSymbolRenderer()
renderer.setClassAttribute('x')
symbol_a = createMarkerSymbol()
symbol_a.setColor(QColor(255, 0, 0))
renderer.addCategory(QgsRendererCategory('a', symbol_a, 'a'))
symbol_b = createMarkerSymbol()
symbol_b.setColor(QColor(0, 255, 0))
renderer.addCategory(QgsRendererCategory('b', symbol_b, 'b'))
symbol_c = createMarkerSymbol()
symbol_c.setColor(QColor(0, 0, 255))
renderer.addCategory(QgsRendererCategory('c', symbol_c, 'c', False))
symbol_d = createMarkerSymbol()
symbol_d.setColor(QColor(255, 0, 255))
renderer.addCategory(QgsRendererCategory(['d', 'e'], symbol_d, 'de'))
# add default category
default_symbol = createMarkerSymbol()
default_symbol.setColor(QColor(255, 255, 255))
renderer.addCategory(QgsRendererCategory('', default_symbol, 'default'))
context = QgsRenderContext()
context.setRendererScale(0) # simulate counting
renderer.startRender(context, fields)
f = QgsFeature(fields)
f.setAttributes(['a'])
keys = renderer.legendKeysForFeature(f, context)
self.assertEqual(keys, {'0'})
f.setAttributes(['b'])
keys = renderer.legendKeysForFeature(f, context)
self.assertEqual(keys, {'1'})
# hidden category, should still return keys
f.setAttributes(['c'])
keys = renderer.legendKeysForFeature(f, context)
self.assertEqual(keys, {'2'})
# list
f.setAttributes(['d'])
keys = renderer.legendKeysForFeature(f, context)
self.assertEqual(keys, {'3'})
f.setAttributes(['e'])
keys = renderer.legendKeysForFeature(f, context)
self.assertEqual(keys, {'3'})
# no matching category
f.setAttributes(['xxx'])
keys = renderer.legendKeysForFeature(f, context)
self.assertFalse(keys)
renderer.stopRender(context)
示例2: isFeatureRendered
# 需要导入模块: from qgis.core import QgsRenderContext [as 别名]
# 或者: from qgis.core.QgsRenderContext import setRendererScale [as 别名]
def isFeatureRendered(canvas, layer, feature):
renderer = layer.rendererV2()
renderContext = QgsRenderContext()
renderContext.setExtent(canvas.mapRenderer().rendererContext().extent())
renderContext.setMapToPixel(canvas.mapRenderer().rendererContext().mapToPixel())
renderContext.setRendererScale(canvas.mapRenderer().scale())
if QGis.QGIS_VERSION_INT >= 20300:
renderer.startRender(renderContext, layer.pendingFields())
else:
renderer.startRender(renderContext, layer)
ans = renderer.willRenderFeature(feature)
renderer.stopRender(renderContext)
return ans
示例3: identify
# 需要导入模块: from qgis.core import QgsRenderContext [as 别名]
# 或者: from qgis.core.QgsRenderContext import setRendererScale [as 别名]
def identify(self, params):
self.check_required_params(params)
feature_collections = []
with change_directory(self.project_root):
crs = QgsCoordinateReferenceSystem()
crs.createFromSrid(params.get('srs'))
search_box = self._calcSearchBox(
params.get('bbox'), params.get('image_size')[0],
params.get('image_size')[1],
params.get('click_point')[0], params.get('click_point')[1]
)
# initialize mapRenderer and a rendering context in order to be
# to check if a feature will actually be rendered
# we don't want to return features that are not visible
img = QImage(QSize(
settings.SUNLUMO_GFI_BUFFER*2, settings.SUNLUMO_GFI_BUFFER*2),
QImage.Format_ARGB32_Premultiplied
)
dpm = 1 / 0.00028
img.setDotsPerMeterX(dpm)
img.setDotsPerMeterY(dpm)
mapRenderer = QgsMapRenderer()
mapRenderer.clearLayerCoordinateTransforms()
mapRenderer.setOutputSize(QSize(
settings.SUNLUMO_GFI_BUFFER*2, settings.SUNLUMO_GFI_BUFFER*2),
img.logicalDpiX()
)
mapRenderer.setDestinationCrs(crs)
mapRenderer.setProjectionsEnabled(True)
mapUnits = crs.mapUnits()
mapRenderer.setMapUnits(mapUnits)
mapExtent = QgsRectangle(*search_box)
mapRenderer.setExtent(mapExtent)
renderContext = QgsRenderContext()
renderContext.setExtent(mapRenderer.extent())
renderContext.setRasterScaleFactor(1.0)
renderContext.setMapToPixel(mapRenderer.coordinateTransform())
renderContext.setRendererScale(mapRenderer.scale())
renderContext.setScaleFactor(mapRenderer.outputDpi() / 25.4)
renderContext.setPainter(None)
qfr = QgsFeatureRequest()
search_rectangle = QgsRectangle(*search_box)
qfr.setFilterRect(search_rectangle)
for q_layer in params.get('query_layers'):
layer = self.layerRegistry.mapLayer(q_layer)
if layer.type() == QgsMapLayer.RasterLayer:
# skip raster layer processing
continue
# update layer fields (expressions, calculated, joined)
layer.updateFields()
scaleCalc = QgsScaleCalculator(
(img.logicalDpiX() + img.logicalDpiY()) / 2,
mapRenderer.destinationCrs().mapUnits()
)
scaleDenom = scaleCalc.calculate(mapExtent, img.width())
# skip the layer if it's not visible at the current map scale
if layer.hasScaleBasedVisibility():
if not(layer.minimumScale()
< scaleDenom < layer.maximumScale()):
continue
# check if features actually intersect search rectangle
intersected_features = self._intersectedFeatures(
layer.getFeatures(qfr), search_rectangle
)
# visible features generator
visible_features = self._visibleFeatures(
layer, renderContext, intersected_features
)
layer_features = [featureToGeoJSON(
feature.id(), feature.geometry(),
self._collectAttributes(layer, feature)
) for feature in visible_features
]
feature_collections.append(layer_features)
return writeGeoJSON(chain(*feature_collections))