Re: [Qgis-developer] symbolForFeature() does not works?
Hi Minoru, thanks for information. As I can see from ticket, this was fixed about month ago, but now exists again. Also this issue still exists with other renderers. I will reopen 10096 and add more information to tickets about other renderers 2014-07-04 3:54 GMT+03:00 Minoru Akagi akagi...@gmail.com: Hi Alexander, 2014-07-04 0:53 GMT+09:00 Alexander Bruy alexander.b...@gmail.com: Hi all, seems symbolForFeature() method does not works as expected for most renderers: * QgsSingleSymbolRendererV2 — returns feature symbol * QgsCategorizedSymbolRendererV2 — returns None and in debug output I have message saying there are no hashed symbols!!! * QgsGraduatedSymbolRendererV2 — just crashes QGIS * QgsRuleBasedRendererV2 — returns None All tests made with point shapefile. Here is code snipped I used (load vector layer and activate it first): layer = iface.mapCanvas().currentLayer() feat = layer.getFeatures().next() renderer = layer.rendererV2() symbol = renderer.symbolForFeature(feat) For me this is major issue that makes difficult to develop plugins that works with layer symbology (e.g. symbology import/export/conversion) Anyone confirms? Should I open a ticket? Matthias Kuhn showed me a workaround (http://hub.qgis.org/issues/10096#note-1). My code is like this: # initialize symbol rendering renderer = QgsMapRenderer() layer.rendererV2().startRender(renderer.rendererContext(), layer.pendingFields() if apiChanged23 else layer) for f in layer.getFeatures(): symbol = layer.rendererV2().symbolForFeature(f) print symbol.color().name() layer.rendererV2().stopRender(renderer.rendererContext()) -- Regards, Minoru -- Alexander Bruy ___ Qgis-developer mailing list Qgis-developer@lists.osgeo.org http://lists.osgeo.org/mailman/listinfo/qgis-developer
Re: [Qgis-developer] symbolForFeature() does not works?
Hi Alex On Thu, Jul 3, 2014 at 10:53 PM, Alexander Bruy alexander.b...@gmail.com wrote: Hi all, seems symbolForFeature() method does not works as expected for most renderers: * QgsSingleSymbolRendererV2 — returns feature symbol * QgsCategorizedSymbolRendererV2 — returns None and in debug output I have message saying there are no hashed symbols!!! * QgsGraduatedSymbolRendererV2 — just crashes QGIS * QgsRuleBasedRendererV2 — returns None All tests made with point shapefile. Here is code snipped I used (load vector layer and activate it first): layer = iface.mapCanvas().currentLayer() feat = layer.getFeatures().next() renderer = layer.rendererV2() symbol = renderer.symbolForFeature(feat) For me this is major issue that makes difficult to develop plugins that works with layer symbology (e.g. symbology import/export/conversion) Anyone confirms? Should I open a ticket? Like with renderFeature() call, the symbolForFeature() method must be called in between startRender()/stopRender() calls, otherwise the behaviour is undefined. It would be nice though not to crash and emit a warning instead... Regards Martin ___ Qgis-developer mailing list Qgis-developer@lists.osgeo.org http://lists.osgeo.org/mailman/listinfo/qgis-developer
[Qgis-developer] symbolForFeature() does not works?
Hi all, seems symbolForFeature() method does not works as expected for most renderers: * QgsSingleSymbolRendererV2 — returns feature symbol * QgsCategorizedSymbolRendererV2 — returns None and in debug output I have message saying there are no hashed symbols!!! * QgsGraduatedSymbolRendererV2 — just crashes QGIS * QgsRuleBasedRendererV2 — returns None All tests made with point shapefile. Here is code snipped I used (load vector layer and activate it first): layer = iface.mapCanvas().currentLayer() feat = layer.getFeatures().next() renderer = layer.rendererV2() symbol = renderer.symbolForFeature(feat) For me this is major issue that makes difficult to develop plugins that works with layer symbology (e.g. symbology import/export/conversion) Anyone confirms? Should I open a ticket? Thanks -- Alexander Bruy ___ Qgis-developer mailing list Qgis-developer@lists.osgeo.org http://lists.osgeo.org/mailman/listinfo/qgis-developer
Re: [Qgis-developer] symbolForFeature() does not works?
Hi Alexander, 2014-07-04 0:53 GMT+09:00 Alexander Bruy alexander.b...@gmail.com: Hi all, seems symbolForFeature() method does not works as expected for most renderers: * QgsSingleSymbolRendererV2 — returns feature symbol * QgsCategorizedSymbolRendererV2 — returns None and in debug output I have message saying there are no hashed symbols!!! * QgsGraduatedSymbolRendererV2 — just crashes QGIS * QgsRuleBasedRendererV2 — returns None All tests made with point shapefile. Here is code snipped I used (load vector layer and activate it first): layer = iface.mapCanvas().currentLayer() feat = layer.getFeatures().next() renderer = layer.rendererV2() symbol = renderer.symbolForFeature(feat) For me this is major issue that makes difficult to develop plugins that works with layer symbology (e.g. symbology import/export/conversion) Anyone confirms? Should I open a ticket? Matthias Kuhn showed me a workaround (http://hub.qgis.org/issues/10096#note-1). My code is like this: # initialize symbol rendering renderer = QgsMapRenderer() layer.rendererV2().startRender(renderer.rendererContext(), layer.pendingFields() if apiChanged23 else layer) for f in layer.getFeatures(): symbol = layer.rendererV2().symbolForFeature(f) print symbol.color().name() layer.rendererV2().stopRender(renderer.rendererContext()) -- Regards, Minoru ___ Qgis-developer mailing list Qgis-developer@lists.osgeo.org http://lists.osgeo.org/mailman/listinfo/qgis-developer