[Qgis-developer] update plugin to QGIS 2.0

Etienne Tourigny etourigny.dev at gmail.com
Fri Aug 2 06:13:04 PDT 2013


On Fri, Aug 2, 2013 at 9:37 AM, Matthias Kuhn <matthias.kuhn at gmx.ch> 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?

>
> Sorry for the smart-arsing ;)
>
> -- Matthias
>
>>
>>
>> cheers
>> Etienne
>>
>> On Fri, Aug 2, 2013 at 7:13 AM, Otto Dassau <dassau at gbd-consult.de> 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 <etourigny.dev at gmail.com>:
>>>
>>>> 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 <dassau at gbd-consult.de> 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
>>>>> Qgis-developer at lists.osgeo.org
>>>>> 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
>> Qgis-developer at lists.osgeo.org
>> http://lists.osgeo.org/mailman/listinfo/qgis-developer
>
>


More information about the Qgis-developer mailing list