@@ -237,8 +237,9 @@ def basic_statistics( self, vlayer, myField ):
237
237
if self .mySelection : # only selected features
238
238
selection = vlayer .selectedFeatures ()
239
239
nFeat = vlayer .selectedFeatureCount ()
240
- self .emit ( SIGNAL ( "runStatus(PyQt_PyObject)" ), 0 )
241
- self .emit ( SIGNAL ( "runRange(PyQt_PyObject)" ), ( 0 , nFeat ) )
240
+ if nFeat > 0 :
241
+ self .emit ( SIGNAL ( "runStatus(PyQt_PyObject)" ), 0 )
242
+ self .emit ( SIGNAL ( "runRange(PyQt_PyObject)" ), ( 0 , nFeat ) )
242
243
for f in selection :
243
244
atMap = f .attributeMap ()
244
245
lenVal = float ( len ( atMap [ index ].toString () ) )
@@ -281,16 +282,18 @@ def basic_statistics( self, vlayer, myField ):
281
282
nElement += 1
282
283
self .emit ( SIGNAL ( "runStatus(PyQt_PyObject)" ), nElement )
283
284
nVal = float ( len ( values ) )
284
- if nVal > 0.00 :
285
+ if nVal > 0 :
285
286
meanVal = sumVal / nVal
286
- lstStats = []
287
- lstStats .append ( self .tr ( "Max. len:" ) + unicode ( maxVal ) )
288
- lstStats .append ( self .tr ( "Min. len:" ) + unicode ( minVal ) )
289
- lstStats .append ( self .tr ( "Mean. len:" ) + unicode ( meanVal ) )
290
- lstStats .append ( self .tr ( "Filled:" ) + unicode ( fillVal ) )
291
- lstStats .append ( self .tr ( "Empty:" ) + unicode ( emptyVal ) )
292
- lstStats .append ( self .tr ( "N:" ) + unicode ( nVal ) )
293
- return ( lstStats , [] )
287
+ lstStats = []
288
+ lstStats .append ( self .tr ( "Max. len:" ) + unicode ( maxVal ) )
289
+ lstStats .append ( self .tr ( "Min. len:" ) + unicode ( minVal ) )
290
+ lstStats .append ( self .tr ( "Mean. len:" ) + unicode ( meanVal ) )
291
+ lstStats .append ( self .tr ( "Filled:" ) + unicode ( fillVal ) )
292
+ lstStats .append ( self .tr ( "Empty:" ) + unicode ( emptyVal ) )
293
+ lstStats .append ( self .tr ( "N:" ) + unicode ( nVal ) )
294
+ return ( lstStats , [] )
295
+ else :
296
+ return ( ["Error:No features selected!" ], [] )
294
297
else : # numeric field
295
298
stdVal = 0.00
296
299
cvVal = 0.00
@@ -302,8 +305,9 @@ def basic_statistics( self, vlayer, myField ):
302
305
selection = vlayer .selectedFeatures ()
303
306
nFeat = vlayer .selectedFeatureCount ()
304
307
uniqueVal = ftools_utils .getUniqueValuesCount ( vlayer , index , True )
305
- self .emit ( SIGNAL ( "runStatus(PyQt_PyObject)" ), 0 )
306
- self .emit ( SIGNAL ( "runRange(PyQt_PyObject)" ), ( 0 , nFeat ) )
308
+ if nFeat > 0 :
309
+ self .emit ( SIGNAL ( "runStatus(PyQt_PyObject)" ), 0 )
310
+ self .emit ( SIGNAL ( "runRange(PyQt_PyObject)" ), ( 0 , nFeat ) )
307
311
for f in selection :
308
312
atMap = f .attributeMap ()
309
313
value = float ( atMap [ index ].toDouble ()[ 0 ] )
@@ -339,33 +343,35 @@ def basic_statistics( self, vlayer, myField ):
339
343
nElement += 1
340
344
self .emit ( SIGNAL ( "runStatus(PyQt_PyObject)" ), nElement )
341
345
nVal = float ( len ( values ) )
342
- rangeVal = maxVal - minVal
343
346
if nVal > 0.00 :
347
+ rangeVal = maxVal - minVal
344
348
meanVal = sumVal / nVal
345
349
if meanVal != 0.00 :
346
350
for val in values :
347
351
stdVal += ( ( val - meanVal ) * ( val - meanVal ) )
348
352
stdVal = math .sqrt ( stdVal / nVal )
349
353
cvVal = stdVal / meanVal
350
- if nVal > 1 :
351
- lstVal = values
352
- lstVal .sort ()
353
- if ( nVal % 2 ) == 0 :
354
- medianVal = 0.5 * ( lstVal [ int ( ( nVal - 1 ) / 2 ) ] + lstVal [ int ( ( nVal ) / 2 ) ] )
355
- else :
356
- medianVal = lstVal [ int ( ( nVal + 1 ) / 2 ) ]
357
- lstStats = []
358
- lstStats .append ( self .tr ( "Mean:" ) + unicode ( meanVal ) )
359
- lstStats .append ( self .tr ( "StdDev:" ) + unicode ( stdVal ) )
360
- lstStats .append ( self .tr ( "Sum:" ) + unicode ( sumVal ) )
361
- lstStats .append ( self .tr ( "Min:" ) + unicode ( minVal ) )
362
- lstStats .append ( self .tr ( "Max:" ) + unicode ( maxVal ) )
363
- lstStats .append ( self .tr ( "N:" ) + unicode ( nVal ) )
364
- lstStats .append ( self .tr ( "CV:" ) + unicode ( cvVal ) )
365
- lstStats .append ( self .tr ( "Number of unique values:" ) + unicode ( uniqueVal ) )
366
- lstStats .append ( self .tr ( "Range:" ) + unicode ( rangeVal ) )
367
- lstStats .append ( self .tr ( "Median:" ) + unicode ( medianVal ) )
368
- return ( lstStats , [] )
354
+ if nVal > 1 :
355
+ lstVal = values
356
+ lstVal .sort ()
357
+ if ( nVal % 2 ) == 0 :
358
+ medianVal = 0.5 * ( lstVal [ int ( ( nVal - 1 ) / 2 ) ] + lstVal [ int ( ( nVal ) / 2 ) ] )
359
+ else :
360
+ medianVal = lstVal [ int ( ( nVal + 1 ) / 2 ) ]
361
+ lstStats = []
362
+ lstStats .append ( self .tr ( "Mean:" ) + unicode ( meanVal ) )
363
+ lstStats .append ( self .tr ( "StdDev:" ) + unicode ( stdVal ) )
364
+ lstStats .append ( self .tr ( "Sum:" ) + unicode ( sumVal ) )
365
+ lstStats .append ( self .tr ( "Min:" ) + unicode ( minVal ) )
366
+ lstStats .append ( self .tr ( "Max:" ) + unicode ( maxVal ) )
367
+ lstStats .append ( self .tr ( "N:" ) + unicode ( nVal ) )
368
+ lstStats .append ( self .tr ( "CV:" ) + unicode ( cvVal ) )
369
+ lstStats .append ( self .tr ( "Number of unique values:" ) + unicode ( uniqueVal ) )
370
+ lstStats .append ( self .tr ( "Range:" ) + unicode ( rangeVal ) )
371
+ lstStats .append ( self .tr ( "Median:" ) + unicode ( medianVal ) )
372
+ return ( lstStats , [] )
373
+ else :
374
+ return ( ["Error:No features selected!" ], [] )
369
375
370
376
def nearest_neighbour_analysis ( self , vlayer ):
371
377
vprovider = vlayer .dataProvider ()
0 commit comments