mirror of
https://github.com/qgis/QGIS.git
synced 2025-12-02 00:04:02 -05:00
Fixes crash when 'use selected' checkbox is check but no features are selected. Fixes #2504.
git-svn-id: http://svn.osgeo.org/qgis/trunk@13031 c8812cc2-4d05-0410-92ff-de0c093fc19c
This commit is contained in:
parent
428b72812b
commit
f60dda6be9
@ -237,8 +237,9 @@ class visualThread( QThread ):
|
|||||||
if self.mySelection: # only selected features
|
if self.mySelection: # only selected features
|
||||||
selection = vlayer.selectedFeatures()
|
selection = vlayer.selectedFeatures()
|
||||||
nFeat = vlayer.selectedFeatureCount()
|
nFeat = vlayer.selectedFeatureCount()
|
||||||
self.emit( SIGNAL( "runStatus(PyQt_PyObject)" ), 0 )
|
if nFeat > 0:
|
||||||
self.emit( SIGNAL( "runRange(PyQt_PyObject)" ), ( 0, nFeat ) )
|
self.emit( SIGNAL( "runStatus(PyQt_PyObject)" ), 0 )
|
||||||
|
self.emit( SIGNAL( "runRange(PyQt_PyObject)" ), ( 0, nFeat ) )
|
||||||
for f in selection:
|
for f in selection:
|
||||||
atMap = f.attributeMap()
|
atMap = f.attributeMap()
|
||||||
lenVal = float( len( atMap[ index ].toString() ) )
|
lenVal = float( len( atMap[ index ].toString() ) )
|
||||||
@ -281,16 +282,18 @@ class visualThread( QThread ):
|
|||||||
nElement += 1
|
nElement += 1
|
||||||
self.emit( SIGNAL( "runStatus(PyQt_PyObject)" ), nElement )
|
self.emit( SIGNAL( "runStatus(PyQt_PyObject)" ), nElement )
|
||||||
nVal= float( len( values ) )
|
nVal= float( len( values ) )
|
||||||
if nVal > 0.00:
|
if nVal > 0:
|
||||||
meanVal = sumVal / nVal
|
meanVal = sumVal / nVal
|
||||||
lstStats = []
|
lstStats = []
|
||||||
lstStats.append( self.tr( "Max. len:" ) + unicode( maxVal ) )
|
lstStats.append( self.tr( "Max. len:" ) + unicode( maxVal ) )
|
||||||
lstStats.append( self.tr( "Min. len:" ) + unicode( minVal ) )
|
lstStats.append( self.tr( "Min. len:" ) + unicode( minVal ) )
|
||||||
lstStats.append( self.tr( "Mean. len:" ) + unicode( meanVal ) )
|
lstStats.append( self.tr( "Mean. len:" ) + unicode( meanVal ) )
|
||||||
lstStats.append( self.tr( "Filled:" ) + unicode( fillVal ) )
|
lstStats.append( self.tr( "Filled:" ) + unicode( fillVal ) )
|
||||||
lstStats.append( self.tr( "Empty:" ) + unicode( emptyVal ) )
|
lstStats.append( self.tr( "Empty:" ) + unicode( emptyVal ) )
|
||||||
lstStats.append( self.tr( "N:" ) + unicode( nVal ) )
|
lstStats.append( self.tr( "N:" ) + unicode( nVal ) )
|
||||||
return ( lstStats, [] )
|
return ( lstStats, [] )
|
||||||
|
else:
|
||||||
|
return ( ["Error:No features selected!"], [] )
|
||||||
else: # numeric field
|
else: # numeric field
|
||||||
stdVal = 0.00
|
stdVal = 0.00
|
||||||
cvVal = 0.00
|
cvVal = 0.00
|
||||||
@ -302,8 +305,9 @@ class visualThread( QThread ):
|
|||||||
selection = vlayer.selectedFeatures()
|
selection = vlayer.selectedFeatures()
|
||||||
nFeat = vlayer.selectedFeatureCount()
|
nFeat = vlayer.selectedFeatureCount()
|
||||||
uniqueVal = ftools_utils.getUniqueValuesCount( vlayer, index, True )
|
uniqueVal = ftools_utils.getUniqueValuesCount( vlayer, index, True )
|
||||||
self.emit( SIGNAL( "runStatus(PyQt_PyObject)" ), 0 )
|
if nFeat > 0:
|
||||||
self.emit( SIGNAL( "runRange(PyQt_PyObject)" ), ( 0, nFeat ) )
|
self.emit( SIGNAL( "runStatus(PyQt_PyObject)" ), 0 )
|
||||||
|
self.emit( SIGNAL( "runRange(PyQt_PyObject)" ), ( 0, nFeat ) )
|
||||||
for f in selection:
|
for f in selection:
|
||||||
atMap = f.attributeMap()
|
atMap = f.attributeMap()
|
||||||
value = float( atMap[ index ].toDouble()[ 0 ] )
|
value = float( atMap[ index ].toDouble()[ 0 ] )
|
||||||
@ -339,33 +343,35 @@ class visualThread( QThread ):
|
|||||||
nElement += 1
|
nElement += 1
|
||||||
self.emit( SIGNAL( "runStatus(PyQt_PyObject)" ), nElement )
|
self.emit( SIGNAL( "runStatus(PyQt_PyObject)" ), nElement )
|
||||||
nVal= float( len( values ) )
|
nVal= float( len( values ) )
|
||||||
rangeVal = maxVal - minVal
|
|
||||||
if nVal > 0.00:
|
if nVal > 0.00:
|
||||||
|
rangeVal = maxVal - minVal
|
||||||
meanVal = sumVal / nVal
|
meanVal = sumVal / nVal
|
||||||
if meanVal != 0.00:
|
if meanVal != 0.00:
|
||||||
for val in values:
|
for val in values:
|
||||||
stdVal += ( ( val - meanVal ) * ( val - meanVal ) )
|
stdVal += ( ( val - meanVal ) * ( val - meanVal ) )
|
||||||
stdVal = math.sqrt( stdVal / nVal )
|
stdVal = math.sqrt( stdVal / nVal )
|
||||||
cvVal = stdVal / meanVal
|
cvVal = stdVal / meanVal
|
||||||
if nVal > 1:
|
if nVal > 1:
|
||||||
lstVal = values
|
lstVal = values
|
||||||
lstVal.sort()
|
lstVal.sort()
|
||||||
if ( nVal % 2 ) == 0:
|
if ( nVal % 2 ) == 0:
|
||||||
medianVal = 0.5 * ( lstVal[ int( ( nVal - 1 ) / 2 ) ] + lstVal[ int( ( nVal ) / 2 ) ] )
|
medianVal = 0.5 * ( lstVal[ int( ( nVal - 1 ) / 2 ) ] + lstVal[ int( ( nVal ) / 2 ) ] )
|
||||||
else:
|
else:
|
||||||
medianVal = lstVal[ int( ( nVal + 1 ) / 2 ) ]
|
medianVal = lstVal[ int( ( nVal + 1 ) / 2 ) ]
|
||||||
lstStats = []
|
lstStats = []
|
||||||
lstStats.append( self.tr( "Mean:" ) + unicode( meanVal ) )
|
lstStats.append( self.tr( "Mean:" ) + unicode( meanVal ) )
|
||||||
lstStats.append( self.tr( "StdDev:" ) + unicode( stdVal ) )
|
lstStats.append( self.tr( "StdDev:" ) + unicode( stdVal ) )
|
||||||
lstStats.append( self.tr( "Sum:" ) + unicode( sumVal) )
|
lstStats.append( self.tr( "Sum:" ) + unicode( sumVal) )
|
||||||
lstStats.append( self.tr( "Min:" ) + unicode( minVal ) )
|
lstStats.append( self.tr( "Min:" ) + unicode( minVal ) )
|
||||||
lstStats.append( self.tr( "Max:" ) + unicode( maxVal ) )
|
lstStats.append( self.tr( "Max:" ) + unicode( maxVal ) )
|
||||||
lstStats.append( self.tr( "N:" ) + unicode( nVal ) )
|
lstStats.append( self.tr( "N:" ) + unicode( nVal ) )
|
||||||
lstStats.append( self.tr( "CV:" ) + unicode( cvVal ) )
|
lstStats.append( self.tr( "CV:" ) + unicode( cvVal ) )
|
||||||
lstStats.append( self.tr( "Number of unique values:" ) + unicode( uniqueVal ) )
|
lstStats.append( self.tr( "Number of unique values:" ) + unicode( uniqueVal ) )
|
||||||
lstStats.append( self.tr( "Range:" ) + unicode( rangeVal ) )
|
lstStats.append( self.tr( "Range:" ) + unicode( rangeVal ) )
|
||||||
lstStats.append( self.tr( "Median:" ) + unicode( medianVal ) )
|
lstStats.append( self.tr( "Median:" ) + unicode( medianVal ) )
|
||||||
return ( lstStats, [] )
|
return ( lstStats, [] )
|
||||||
|
else:
|
||||||
|
return ( ["Error:No features selected!"], [] )
|
||||||
|
|
||||||
def nearest_neighbour_analysis( self, vlayer ):
|
def nearest_neighbour_analysis( self, vlayer ):
|
||||||
vprovider = vlayer.dataProvider()
|
vprovider = vlayer.dataProvider()
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user