@@ -24,8 +24,12 @@ def keyPressEvent( self, e ):
24
24
if ( e .modifiers () == Qt .ControlModifier or e .modifiers () == Qt .MetaModifier ) and e .key () == Qt .Key_C :
25
25
selection = self .lstUnique .selectedItems ()
26
26
items = QString ()
27
- for item in selection :
28
- items .append ( item .text () + "\n " )
27
+ if self .myFunction in ( 1 , 2 ):
28
+ for rec in range ( self .tblUnique .rowCount () ):
29
+ items .append ( self .tblUnique .item ( rec , 0 ).text () + "\n " )
30
+ else :
31
+ for rec in range ( self .tblUnique .rowCount () ):
32
+ items .append ( self .tblUnique .item ( rec , 0 ).text () + ":" + self .tblUnique .item ( rec , 1 ).text () + "\n " )
29
33
if not items .isEmpty ():
30
34
clip_board = QApplication .clipboard ()
31
35
clip_board .setText ( items )
@@ -46,12 +50,7 @@ def update( self ):
46
50
self .useSelected .setCheckState ( Qt .Unchecked )
47
51
# add all fields in combobox because now we can work with text fields too
48
52
for i in changedField :
49
- if self .myFunction == 3 :
50
- # if changedField[i].type() == QVariant.Int or changedField[i].type() == QVariant.Double:
51
- self .cmbField .addItem ( unicode ( changedField [i ].name () ) )
52
- else :
53
- self .cmbField .addItem ( unicode ( changedField [i ].name () ) )
54
- # self.cmbField.addItem( unicode( changedField[i].name() ) )
53
+ self .cmbField .addItem ( unicode ( changedField [i ].name () ) )
55
54
56
55
def accept ( self ):
57
56
if self .inShape .currentText () == "" :
@@ -105,7 +104,8 @@ def manageGui( self ):
105
104
#4: Nearest neighbour analysis
106
105
def visual ( self , myLayer , myField , mySelection ):
107
106
vlayer = ftools_utils .getVectorLayerByName ( myLayer )
108
- self .lstUnique .clear ()
107
+ self .tblUnique .clearContents ()
108
+ self .tblUnique .setRowCount ( 0 )
109
109
self .lstCount .clear ()
110
110
self .testThread = visualThread ( self .iface .mainWindow (), self , self .myFunction , vlayer , myField , mySelection )
111
111
QObject .connect ( self .testThread , SIGNAL ( "runFinished(PyQt_PyObject)" ), self .runFinishedFromThread )
@@ -121,7 +121,29 @@ def cancelThread( self ):
121
121
122
122
def runFinishedFromThread ( self , output ):
123
123
self .testThread .stop ()
124
- self .lstUnique .addItems ( output [ 0 ] )
124
+
125
+ result = output [ 0 ]
126
+ numRows = len ( result )
127
+ self .tblUnique .setRowCount ( numRows )
128
+ if self .myFunction in ( 1 , 2 ):
129
+ self .tblUnique .setColumnCount ( 1 )
130
+ for rec in range ( numRows ):
131
+ item = QTableWidgetItem ( result [ rec ] )
132
+ self .tblUnique .setItem ( rec , 0 , item )
133
+ else :
134
+ self .tblUnique .setColumnCount ( 2 )
135
+ for rec in range ( numRows ):
136
+ tmp = result [ rec ].split ( ":" )
137
+ item = QTableWidgetItem ( tmp [ 0 ] )
138
+ self .tblUnique .setItem ( rec , 0 , item )
139
+ item = QTableWidgetItem ( tmp [ 1 ] )
140
+ self .tblUnique .setItem ( rec , 1 , item )
141
+ self .tblUnique .setHorizontalHeaderLabels ( [ "Parameter" , "Value" ] )
142
+ self .tblUnique .horizontalHeader ().setResizeMode ( 1 , QHeaderView .ResizeToContents )
143
+ self .tblUnique .horizontalHeader ().show ()
144
+ self .tblUnique .horizontalHeader ().setResizeMode ( 0 , QHeaderView .Stretch )
145
+ self .tblUnique .resizeRowsToContents ()
146
+
125
147
self .lstCount .insert ( unicode ( output [ 1 ] ) )
126
148
self .cancel_close .setText ( "Close" )
127
149
QObject .disconnect ( self .cancel_close , SIGNAL ( "clicked()" ), self .cancelThread )
@@ -246,12 +268,12 @@ def basic_statistics( self, vlayer, myField ):
246
268
if nVal > 0.00 :
247
269
meanVal = sumVal / nVal
248
270
lstStats = []
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 ) )
271
+ lstStats .append ( self .tr ( "Max. len:" ) + unicode ( maxVal ) )
272
+ lstStats .append ( self .tr ( "Min. len:" ) + unicode ( minVal ) )
273
+ lstStats .append ( self .tr ( "Mean. len:" ) + unicode ( meanVal ) )
274
+ lstStats .append ( self .tr ( "Filled:" ) + unicode ( fillVal ) )
275
+ lstStats .append ( self .tr ( "Empty:" ) + unicode ( emptyVal ) )
276
+ lstStats .append ( self .tr ( "N:" ) + unicode ( nVal ) )
255
277
return ( lstStats , [] )
256
278
else : # numeric field
257
279
stdVal = 0
@@ -261,7 +283,7 @@ def basic_statistics( self, vlayer, myField ):
261
283
if self .mySelection : # only selected features
262
284
selection = vlayer .selectedFeatures ()
263
285
nFeat = vlayer .selectedFeatureCount ()
264
- uniqueVal = utils .getUniqueValuesCount ( vlayer , index , True )
286
+ uniqueVal = ftools_utils .getUniqueValuesCount ( vlayer , index , True )
265
287
self .emit ( SIGNAL ( "runStatus(PyQt_PyObject)" ), 0 )
266
288
self .emit ( SIGNAL ( "runRange(PyQt_PyObject)" ), ( 0 , nFeat ) )
267
289
for f in selection :
@@ -314,16 +336,16 @@ def basic_statistics( self, vlayer, myField ):
314
336
else :
315
337
medianVal = lstVal [ ( nVal + 1 ) / 2 ]
316
338
lstStats = []
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 ) )
339
+ lstStats .append ( self .tr ( "Mean:" ) + unicode ( meanVal ) )
340
+ lstStats .append ( self .tr ( "StdDev:" ) + unicode ( stdVal ) )
341
+ lstStats .append ( self .tr ( "Sum:" ) + unicode ( sumVal ) )
342
+ lstStats .append ( self .tr ( "Min:" ) + unicode ( minVal ) )
343
+ lstStats .append ( self .tr ( "Max:" ) + unicode ( maxVal ) )
344
+ lstStats .append ( self .tr ( "N:" ) + unicode ( nVal ) )
345
+ lstStats .append ( self .tr ( "CV:" ) + unicode ( cvVal ) )
346
+ lstStats .append ( self .tr ( "Number of unique values:" ) + unicode ( uniqueVal ) )
347
+ lstStats .append ( self .tr ( "Range:" ) + unicode ( rangeVal ) )
348
+ lstStats .append ( self .tr ( "Median:" ) + unicode ( medianVal ) )
327
349
return ( lstStats , [] )
328
350
329
351
def nearest_neighbour_analysis ( self , vlayer ):
@@ -356,11 +378,11 @@ def nearest_neighbour_analysis( self, vlayer ):
356
378
SE = float ( 0.26136 / math .sqrt ( ( nVal * nVal ) / A ) )
357
379
zscore = float ( ( do - de ) / SE )
358
380
lstStats = []
359
- lstStats .append ( self .tr ( "Observed mean distance : " ) + " " + unicode ( do ) )
360
- lstStats .append ( self .tr ( "Expected mean distance : " ) + " " + unicode ( de ) )
361
- lstStats .append ( self .tr ( "Nearest neighbour index : " ) + " " + unicode ( d ) )
362
- lstStats .append ( "N : " + unicode ( nVal ) )
363
- lstStats .append ( "Z-Score : " + unicode ( zscore ) )
381
+ lstStats .append ( self .tr ( "Observed mean distance: " ) + unicode ( do ) )
382
+ lstStats .append ( self .tr ( "Expected mean distance: " ) + unicode ( de ) )
383
+ lstStats .append ( self .tr ( "Nearest neighbour index: " ) + unicode ( d ) )
384
+ lstStats .append ( self . tr ( "N:" ) + unicode ( nVal ) )
385
+ lstStats .append ( self . tr ( "Z-Score:" ) + unicode ( zscore ) )
364
386
return ( lstStats , [] )
365
387
366
388
def check_geometry ( self , vlayer ):
0 commit comments