Hi Andre,

On Sat, 12. Jun 2010 at 17:37:00 +0100, ALT SHN wrote:
>    Many of you certainly know that under the most recent revisions of QGIS
>    Trunk, the plugin Value Tool doesn't work under GRASS rasters.

The attached patch adds support for GRASS rasters to the valuetool.

Jürgen


-- 
Jürgen E. Fischer         norBIT GmbH               Tel. +49-4931-918175-20
Dipl.-Inf. (FH)           Rheinstraße 13            Fax. +49-4931-918175-50
Software Engineer         D-26506 Norden               http://www.norbit.de

-- 
norBIT Gesellschaft fuer Unternehmensberatung und Informationssysteme mbH
Rheinstrasse 13, 26506 Norden
GF: Jelto Buurman, HR: Amtsgericht Emden, HRB 5502

--- valuewidget.py.orig	2010-06-12 20:33:44.000000000 +0200
+++ valuewidget.py	2010-06-12 20:36:33.000000000 +0200
@@ -102,10 +102,14 @@
         rasterlayers=[]
         for i in range(self.canvas.layerCount()):
             layer = self.canvas.layer(i)
-            if (layer!=None and layer.type() == QgsMapLayer.RasterLayer and layer.providerKey()!="wms" and layer.providerKey()!="grassraster"):
-            #### il faut gerer les wms differemment...
-            #### and alayer.providerKey()=="wms"):
-            ###identifyRasterWmsLayer( QgsPoint( e->x(), e->y() ) );
+            if (layer!=None and layer.type()==QgsMapLayer.RasterLayer):
+              if layer.providerKey()=="wms":
+                continue
+
+              if layer.providerKey()=="grassraster":
+                nrow+=1
+                rasterlayers.append(layer)
+              else:
                 nrow+=layer.bandCount()
                 rasterlayers.append(layer)
 
@@ -119,11 +123,27 @@
 
         for layer in rasterlayers:
             isok,ident = layer.identify(mapPos)
-            if (not(isok)):
+            if not isok:
                 continue
+
             layername=unicode(layer.name())
-            iband=1
-            for j in ident:  # loop over the bands
+
+            if layer.providerKey()=="grassraster":
+                if not ident.has_key(QString("value")):
+                  continue
+                cstr = ident[QString("value")]
+		if cstr.isNull():
+                  continue
+                value = cstr.toDouble()
+		if not value[1]:
+                  continue
+                iband=1
+                self.ymin = min(self.ymin,value[0])
+                self.ymax = max(self.ymax,value[0])
+                self.values.append((layername,cstr))
+            else:
+              iband=1
+              for j in ident:  # loop over the bands
                 layernamewithband=layername
                 if len(ident)>1:
                     layernamewithband+=' '+j
_______________________________________________
Qgis-user mailing list
Qgis-user@lists.osgeo.org
http://lists.osgeo.org/mailman/listinfo/qgis-user

Reply via email to