[Qgis-developer] update plugin to QGIS 2.0

Matthias Kuhn matthias.kuhn at gmx.ch
Fri Aug 2 05:37:01 PDT 2013


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

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