On Fre 02 Aug 2013 15:13:04 CEST, Etienne Tourigny wrote: > On Fri, Aug 2, 2013 at 9:37 AM, Matthias Kuhn <[email protected]> wrote: >> Hi >> >> On Fre 02 Aug 2013 13:50:08 CEST, Etienne Tourigny wrote: >>> >>> for each band, if the point is outside of the raster extent or is >>> nodata, the value will be a null QVariant (i.e. QVariant()) which in >>> python is None. >> >> It will be a QPyNullVariant so doing >> >> value = QPyNullVariant( int ) >> if not value: >> print 'Is NULL' >> else: >> print 'Is not NULL' >> >> if value is None: >> print 'Is None' >> else: >> print 'Is NOT None' >> >> will print: >> Is NULL >> Is NOT None > > Hi, > > I was not referring to the value of QPyNullVariant( int ), but the > value that results() would return in the case of nodata (which is > QVariant() in the c++ code) > > unless mistaken, that would be converted to None by Sip - or am I wrong? >
The SIP API v2 for QVariant defines: An Invalid QVariant will be represented as None A Null QVariant will be represented as QPyNullVariant [1] Except for feature attributes (e.g. for a vectorlayer: feature['attr']) which is patched by QGIS to become None in case of a Null value. Matthias [1] http://pyqt.sourceforge.net/Docs/PyQt4/python_v3.html#qvariant >> >> Sorry for the smart-arsing ;) >> >> -- Matthias >> >>> >>> >>> cheers >>> Etienne >>> >>> On Fri, Aug 2, 2013 at 7:13 AM, Otto Dassau <[email protected]> wrote: >>>> >>>> Hi, >>>> >>>> thanks for your hints, I think I am on the right track now. I had a look at >>>> the value tool plugin and tried to adapt the method accordingly: >>>> >>>> def sampleRaster20(self, layer, x, y): >>>> #success, data = layer.dataProvider().identify(QgsPoint(x,y)) >>>> success, data = >>>> layer.dataProvider().identify(QgsPoint(x,y),QgsRaster.IdentifyFormatValue).results() >>>> for band, value in data.items(): >>>> return value >>>> >>>> But now I get another error message >>>> >>>> File >>>> >>>> "/home/dassau/.qgis2/python/plugins/weibullanalyse/weibullanalysedialog.py", >>>> line 448, in printValue self.showValues() File >>>> >>>> "/home/dassau/.qgis2/python/plugins/weibullanalyse/weibullanalysedialog.py", >>>> line 454, in showValues self.plot() File >>>> >>>> "/home/dassau/.qgis2/python/plugins/weibullanalyse/weibullanalysedialog.py", >>>> line 526, in plot w = float(self.sampleRaster(self.InRastW.currentText(), >>>> self.xCoord, self.yCoord))/10 File >>>> >>>> "/home/dassau/.qgis2/python/plugins/weibullanalyse/weibullanalysedialog.py", >>>> line 300, in sampleRaster return self.sampleRaster20(layer, x, y) File >>>> >>>> "/home/dassau/.qgis2/python/plugins/weibullanalyse/weibullanalysedialog.py", >>>> line 285, in sampleRaster20 success, data = >>>> layer.dataProvider().identify(QgsPoint(x,y), QgsRaster.IdentifyFormatValue >>>> ).results() ValueError: need more than 1 value to unpack >>>> >>>> Do you have an idea for this, too? >>>> >>>> Thanks >>>> Otto >>>> >>>> Am Thu, 1 Aug 2013 16:00:08 -0300 >>>> schrieb Etienne Tourigny <[email protected]>: >>>> >>>>> Have a look at the source of the value tool plugin, it calls the >>>>> identify() >>>>> method and has been updated to 2.0 api. >>>>> >>>>> Etienne >>>>> >>>>> On Thu, Aug 1, 2013 at 1:58 PM, Otto Dassau <[email protected]> wrote: >>>>> >>>>>> Hi, >>>>>> >>>>>> I want to update a plugin from 1.8 to QGIS 2.0 and it throws following >>>>>> error: >>>>>> >>>>>> Traceback (most recent call last): >>>>>> File >>>>>> >>>>>> >>>>>> "/home/dassau/.qgis2/python/plugins/weibullanalyse/weibullanalysedialog.py", >>>>>> line 447, in printValue self.showValues() File >>>>>> >>>>>> >>>>>> "/home/dassau/.qgis2/python/plugins/weibullanalyse/weibullanalysedialog.py", >>>>>> line 453, in showValues self.plot() File >>>>>> >>>>>> >>>>>> "/home/dassau/.qgis2/python/plugins/weibullanalyse/weibullanalysedialog.py", >>>>>> line 514, in plot w = float(self.sampleRaster(self.InRastW.currentText(), >>>>>> self.xCoord, self.yCoord))/10 File >>>>>> >>>>>> >>>>>> "/home/dassau/.qgis2/python/plugins/weibullanalyse/weibullanalysedialog.py", >>>>>> line 299, in sampleRaster return self.sampleRaster20(layer, x, y) File >>>>>> >>>>>> >>>>>> "/home/dassau/.qgis2/python/plugins/weibullanalyse/weibullanalysedialog.py", >>>>>> line 284, in sampleRaster20 success, data = >>>>>> layer.dataProvider().identify(QgsPoint(x,y)) >>>>>> >>>>>> TypeError: >>>>>> QgsRasterDataProvider.identify(QgsPoint, QgsRaster.IdentifyFormat, >>>>>> QgsRectangle theExtent=QgsRectangle(), int theWidth=0, int theHeight=0): >>>>>> not enough arguments >>>>>> >>>>>> I found at >>>>>> http://hub.qgis.org/wiki/quantum-gis/API_changes_for_version_20 the >>>>>> section QgsRasterDataProvider which should fit. And the Method, where I >>>>>> assume the error occurs should be this >>>>>> >>>>>> # get value at mouse position QGIS <= 1.8 (working for 1.8) >>>>>> def sampleRaster18(self, layer, x, y): >>>>>> success, data = layer.identify(QgsPoint(x,y)) >>>>>> for band, value in data.items(): >>>>>> return value >>>>>> >>>>>> now what I tried but doesn't work (see error above) >>>>>> >>>>>> # get value at mouse position QGIS >= 2.0 (not working yet :() >>>>>> def sampleRaster20(self, layer, x, y): >>>>>> success, data = layer.dataProvider().identify(QgsPoint(x,y)) >>>>>> for band, value in data.items(): >>>>>> return value >>>>>> >>>>>> my problem is, that I don't understand how to implement in sampleRaster20 >>>>>> the new method from the API_changes_for_version_20 website which says: >>>>>> >>>>>> QMap<int, QVariant> identify( const QgsPoint & thePoint, IdentifyFormat >>>>>> theFormat, const QgsRectangle &theExtent = QgsRectangle(), int theWidth = >>>>>> 0, int theHeight = 0 ) >>>>>> >>>>>> can anybody help? >>>>>> >>>>>> Thanks >>>>>> >>>>>> Otto >>>>>> _______________________________________________ >>>>>> Qgis-developer mailing list >>>>>> [email protected] >>>>>> http://lists.osgeo.org/mailman/listinfo/qgis-developer >>>>>> >>>> >>>> >>>> -- >>>> Geoinformatik Büro Dassau - http://www.gbd-consult.de >>>> FOSSGIS consulting , training , support and analysis >>>> Ackerstrasse 144c , D - 40233 Düsseldorf , Germany >>>> Tel: +49-(0)211-47468178 , Mobil: +49-(0)171-4687540 >>>> >>>> -- >>>> Community Advisor - QGIS Project Steering Committee >>> _______________________________________________ >>> Qgis-developer mailing list >>> [email protected] >>> http://lists.osgeo.org/mailman/listinfo/qgis-developer >> >> _______________________________________________ Qgis-developer mailing list [email protected] http://lists.osgeo.org/mailman/listinfo/qgis-developer
