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


Python QgsRenderContext.setMapToPixel方法代码示例

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


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

示例1: isFeatureRendered

# 需要导入模块: from qgis.core import QgsRenderContext [as 别名]
# 或者: from qgis.core.QgsRenderContext import setMapToPixel [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
开发者ID:lucasAlonso,项目名称:intersectit,代码行数:20,代码来源:isfeaturerendered.py

示例2: identify

# 需要导入模块: from qgis.core import QgsRenderContext [as 别名]
# 或者: from qgis.core.QgsRenderContext import setMapToPixel [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))
开发者ID:candela-it,项目名称:sunlumo,代码行数:95,代码来源:featureinfo.py


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