@@ -47,11 +47,11 @@ def update( self ):
47
47
# add all fields in combobox because now we can work with text fields too
48
48
for i in changedField :
49
49
if self .myFunction == 3 :
50
- if changedField [i ].type () == QVariant .Int or changedField [i ].type () == QVariant .Double :
50
+ # if changedField[i].type() == QVariant.Int or changedField[i].type() == QVariant.Double:
51
51
self .cmbField .addItem ( unicode ( changedField [i ].name () ) )
52
52
else :
53
53
self .cmbField .addItem ( unicode ( changedField [i ].name () ) )
54
- self .cmbField .addItem ( unicode ( changedField [i ].name () ) )
54
+ # self.cmbField.addItem( unicode( changedField[i].name() ) )
55
55
56
56
def accept ( self ):
57
57
if self .inShape .currentText () == "" :
@@ -246,19 +246,22 @@ def basic_statistics( self, vlayer, myField ):
246
246
if nVal > 0.00 :
247
247
meanVal = sumVal / nVal
248
248
lstStats = []
249
- lstStats .append ( QCoreApplication . translate ( "statResult" , " Max. len. : " ) + unicode ( maxVal ) )
250
- lstStats .append ( QCoreApplication . translate ( "statResult" , " Min. len. : " ) + unicode ( minVal ) )
251
- lstStats .append ( QCoreApplication . translate ( "statResult" , " Mean. len : " ) + unicode ( meanVal ) )
252
- lstStats .append ( QCoreApplication . translate ( "statResult" , "Filled : " ) + unicode ( fillVal ) )
253
- lstStats .append ( QCoreApplication . translate ( "statResult" , "Empty : " ) + unicode ( emptyVal ) )
254
- lstStats .append ( QCoreApplication . translate ( "statResult" , "N : " ) + unicode ( nVal ) )
249
+ lstStats .append ( self . tr ( "Max. len: " ) + " " + unicode ( maxVal ) )
250
+ lstStats .append ( self . tr ( "Min. len: " ) + " " + unicode ( minVal ) )
251
+ lstStats .append ( self . tr ( "Mean. len: " ) + " " + unicode ( meanVal ) )
252
+ lstStats .append ( self . tr ( "Filled: " ) + " " + unicode ( fillVal ) )
253
+ lstStats .append ( self . tr ( "Empty: " ) + " " + unicode ( emptyVal ) )
254
+ lstStats .append ( self . tr ( "N: " ) + " " + unicode ( nVal ) )
255
255
return ( lstStats , [] )
256
256
else : # numeric field
257
257
stdVal = 0
258
258
cvVal = 0
259
+ rangeVal = 0
260
+ medianVal = 0
259
261
if self .mySelection : # only selected features
260
262
selection = vlayer .selectedFeatures ()
261
263
nFeat = vlayer .selectedFeatureCount ()
264
+ uniqueVal = utils .getUniqueValuesCount ( vlayer , index , True )
262
265
self .emit ( SIGNAL ( "runStatus(PyQt_PyObject)" ), 0 )
263
266
self .emit ( SIGNAL ( "runRange(PyQt_PyObject)" ), ( 0 , nFeat ) )
264
267
for f in selection :
@@ -277,6 +280,7 @@ def basic_statistics( self, vlayer, myField ):
277
280
self .emit ( SIGNAL ( "runStatus(PyQt_PyObject)" ), nElement )
278
281
else : # there is no selection, process the whole layer
279
282
nFeat = vprovider .featureCount ()
283
+ uniqueVal = ftools_utils .getUniqueValuesCount ( vlayer , index , False )
280
284
self .emit ( SIGNAL ( "runStatus(PyQt_PyObject)" ), 0 )
281
285
self .emit ( SIGNAL ( "runRange(PyQt_PyObject)" ), ( 0 , nFeat ) )
282
286
while vprovider .nextFeature ( feat ):
@@ -294,21 +298,32 @@ def basic_statistics( self, vlayer, myField ):
294
298
nElement += 1
295
299
self .emit ( SIGNAL ( "runStatus(PyQt_PyObject)" ), nElement )
296
300
nVal = float ( len ( values ) )
301
+ rangeVal = maxVal - minVal
297
302
if nVal > 0.00 :
298
303
meanVal = sumVal / nVal
299
304
if meanVal != 0.00 :
300
305
for val in values :
301
306
stdVal += ( ( val - meanVal ) * ( val - meanVal ) )
302
307
stdVal = math .sqrt ( stdVal / nVal )
303
308
cvVal = stdVal / meanVal
309
+ if nVal > 1 :
310
+ lstVal = values
311
+ lstVal .sort ()
312
+ if ( nVal % 2 ) == 0 :
313
+ medianVal = 0.5 * ( lstVal [ int ( ( nVal - 1 ) / 2 ) ] + lstVal [ int ( ( nVal ) / 2 ) ] )
314
+ else :
315
+ medianVal = lstVal [ ( nVal + 1 ) / 2 ]
304
316
lstStats = []
305
- lstStats .append ( "Mean : " + unicode ( meanVal ) )
306
- lstStats .append ( "StdDev : " + unicode ( stdVal ) )
307
- lstStats .append ( "Sum : " + unicode ( sumVal ) )
308
- lstStats .append ( "Min : " + unicode ( minVal ) )
309
- lstStats .append ( "Max : " + unicode ( maxVal ) )
310
- lstStats .append ( "N : " + unicode ( nVal ) )
311
- lstStats .append ( "CV : " + unicode ( cvVal ) )
317
+ lstStats .append ( self .tr ( "Mean: " ) + " " + unicode ( meanVal ) )
318
+ lstStats .append ( self .tr ( "StdDev: " ) + " " + unicode ( stdVal ) )
319
+ lstStats .append ( self .tr ( "Sum: " ) + " " + unicode ( sumVal ) )
320
+ lstStats .append ( self .tr ( "Min: " ) + " " + unicode ( minVal ) )
321
+ lstStats .append ( self .tr ( "Max: " ) + " " + unicode ( maxVal ) )
322
+ lstStats .append ( self .tr ( "N: " ) + " " + unicode ( nVal ) )
323
+ lstStats .append ( self .tr ( "CV: " ) + " " + unicode ( cvVal ) )
324
+ lstStats .append ( self .tr ( "Number of unique values: " ) + " " + unicode ( uniqueVal ) )
325
+ lstStats .append ( self .tr ( "Range: " ) + " " + unicode ( rangeVal ) )
326
+ lstStats .append ( self .tr ( "Median: " ) + " " + unicode ( medianVal ) )
312
327
return ( lstStats , [] )
313
328
314
329
def nearest_neighbour_analysis ( self , vlayer ):
0 commit comments