Skip to content

Commit 488c939

Browse files
author
alexander.bruy@gmail.com
committedJul 26, 2012
reorganize imports
add List Unique Values tool git-svn-id: http://sextante.googlecode.com/svn/trunk/soft/bindings/qgis-plugin@310 881b9c09-3ef8-f3c2-ec3d-21d735c97f4d
1 parent 3acf6cd commit 488c939

File tree

3 files changed

+99
-29
lines changed

3 files changed

+99
-29
lines changed
 
Lines changed: 45 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -1,49 +1,67 @@
1-
from sextante.core.AlgorithmProvider import AlgorithmProvider
2-
31
import os
2+
43
from PyQt4 import QtGui
5-
from sextante.ftools.Centroids import Centroids
4+
5+
from sextante.core.AlgorithmProvider import AlgorithmProvider
6+
7+
# analysis tools
8+
from sextante.ftools.SumLines import SumLines
9+
from sextante.ftools.MeanCoords import MeanCoords
10+
from sextante.ftools.UniqueValues import UniqueValues
11+
from sextante.ftools.BasicStatistics import BasicStatistics
12+
from sextante.ftools.PointsInPolygon import PointsInPolygon
13+
from sextante.ftools.LinesIntersection import LinesIntersection
14+
from sextante.ftools.NearestNeighbourAnalysis import NearestNeighbourAnalysis
15+
16+
# data management tools
17+
18+
# geometry tools
619
from sextante.ftools.Delaunay import Delaunay
7-
from sextante.ftools.SimplifyGeometries import SimplifyGeometries
8-
from sextante.ftools.VoronoiPolygons import VoronoiPolygons
9-
from sextante.ftools.ExportGeometryInfo import ExportGeometryInfo
20+
from sextante.ftools.Centroids import Centroids
1021
from sextante.ftools.ExtractNodes import ExtractNodes
22+
from sextante.ftools.VoronoiPolygons import VoronoiPolygons
1123
from sextante.ftools.LinesToPolygons import LinesToPolygons
1224
from sextante.ftools.PolygonsToLines import PolygonsToLines
25+
from sextante.ftools.SimplifyGeometries import SimplifyGeometries
26+
from sextante.ftools.ExportGeometryInfo import ExportGeometryInfo
27+
from sextante.ftools.MultipartToSingleparts import MultipartToSingleparts
1328
from sextante.ftools.SinglePartsToMultiparts import SinglePartsToMultiparts
14-
from sextante.ftools.BasicStatistics import BasicStatistics
15-
from sextante.ftools.PointsInPolygon import PointsInPolygon
16-
from sextante.ftools.SumLines import SumLines
17-
from sextante.ftools.MeanCoords import MeanCoords
18-
from sextante.ftools.NearestNeighbourAnalysis import NearestNeighbourAnalysis
19-
from sextante.ftools.LinesIntersection import LinesIntersection
20-
from sextante.ftools.ConvexHull import ConvexHull
21-
from sextante.ftools.FixedDistanceBuffer import FixedDistanceBuffer
22-
from sextante.ftools.VariableDistanceBuffer import VariableDistanceBuffer
29+
30+
# geoprocessing tools
31+
from sextante.ftools.Clip import Clip
32+
from sextante.ftools.Union import Union
2333
from sextante.ftools.Dissolve import Dissolve
34+
from sextante.ftools.ConvexHull import ConvexHull
2435
from sextante.ftools.Difference import Difference
2536
from sextante.ftools.Intersection import Intersection
26-
from sextante.ftools.Union import Union
27-
from sextante.ftools.Clip import Clip
37+
from sextante.ftools.FixedDistanceBuffer import FixedDistanceBuffer
38+
from sextante.ftools.VariableDistanceBuffer import VariableDistanceBuffer
39+
40+
# research tools
2841
from sextante.ftools.ExtentFromLayer import ExtentFromLayer
2942
from sextante.ftools.RandomSelection import RandomSelection
3043
from sextante.ftools.SelectByLocation import SelectByLocation
3144
from sextante.ftools.RandomSelectionWithinSubsets import RandomSelectionWithinSubsets
32-
from sextante.ftools.MultipartToSingleparts import MultipartTosingleparts
3345

3446
class FToolsAlgorithmProvider(AlgorithmProvider):
3547

3648
def __init__(self):
3749
AlgorithmProvider.__init__(self)
38-
self.alglist = [SinglePartsToMultiparts(), PolygonsToLines(),
39-
LinesToPolygons(), ExportGeometryInfo(), ExtractNodes(),
40-
Centroids(), SimplifyGeometries(), Delaunay(), VoronoiPolygons(),
41-
SumLines(), BasicStatistics(), PointsInPolygon(),
42-
NearestNeighbourAnalysis(), MeanCoords(), LinesIntersection(),
43-
ConvexHull(), FixedDistanceBuffer(), VariableDistanceBuffer(),
44-
Dissolve(), Difference(), Intersection(), Union(), Clip(), ExtentFromLayer(),
45-
RandomSelection(), RandomSelectionWithinSubsets(), SelectByLocation(),
46-
MultipartTosingleparts()]
50+
self.alglist = [SumLines(), PointsInPolygon(), BasicStatistics(),
51+
NearestNeighbourAnalysis(), MeanCoords(), LinesIntersection(),
52+
UniqueValues(),
53+
# data management
54+
# geometry
55+
ExportGeometryInfo(), Centroids(), Delaunay(), VoronoiPolygons(),
56+
SimplifyGeometries(), MultipartToSingleparts(), SinglePartsToMultiparts(),
57+
PolygonsToLines(), LinesToPolygons(), ExtractNodes(),
58+
# geoprocessing
59+
ConvexHull(), FixedDistanceBuffer(), VariableDistanceBuffer(),
60+
Dissolve(), Difference(), Intersection(), Union(), Clip(),
61+
# research
62+
ExtentFromLayer(), RandomSelection(), RandomSelectionWithinSubsets(),
63+
SelectByLocation()
64+
]
4765

4866
def getDescription(self):
4967
return "fTools (Vector analysis)"
@@ -57,6 +75,5 @@ def getIcon(self):
5775
def _loadAlgorithms(self):
5876
self.algs = self.alglist
5977

60-
6178
def getSupportedOutputTableExtensions(self):
6279
return ["csv"]

‎src/sextante/ftools/MultipartToSingleparts.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
from sextante.core.GeoAlgorithmExecutionException import GeoAlgorithmExecutionException
1010
from sextante.outputs.OutputVector import OutputVector
1111

12-
class MultipartTosingleparts(GeoAlgorithm):
12+
class MultipartToSingleparts(GeoAlgorithm):
1313

1414
INPUT = "INPUT"
1515
OUTPUT = "OUTPUT"

‎src/sextante/ftools/UniqueValues.py

Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
import os.path
2+
3+
from PyQt4 import QtGui
4+
5+
from sextante.core.GeoAlgorithm import GeoAlgorithm
6+
from sextante.core.QGisLayers import QGisLayers
7+
from sextante.core.GeoAlgorithmExecutionException import GeoAlgorithmExecutionException
8+
9+
from sextante.parameters.ParameterVector import ParameterVector
10+
from sextante.parameters.ParameterTableField import ParameterTableField
11+
12+
from sextante.outputs.OutputHTML import OutputHTML
13+
from sextante.outputs.OutputNumber import OutputNumber
14+
15+
from sextante.ftools import ftools_utils
16+
17+
class UniqueValues(GeoAlgorithm):
18+
19+
INPUT_LAYER = "INPUT_LAYER"
20+
FIELD_NAME = "FIELD_NAME"
21+
TOTAL_VALUES = "TOTAL_VALUES"
22+
OUTPUT = "OUTPUT"
23+
24+
def getIcon(self):
25+
return QtGui.QIcon(os.path.dirname(__file__) + "/icons/unique.png")
26+
27+
def defineCharacteristics(self):
28+
self.name = "List unique values"
29+
self.group = "Analysis tools"
30+
self.addParameter(ParameterVector(UniqueValues.INPUT_LAYER, "Input layer", ParameterVector.VECTOR_TYPE_ANY))
31+
self.addParameter(ParameterTableField(UniqueValues.FIELD_NAME, "Targer field", UniqueValues.INPUT_LAYER, ParameterTableField.DATA_TYPE_ANY))
32+
self.addOutput(OutputHTML(UniqueValues.OUTPUT, "Unique values"))
33+
self.addOutput(OutputNumber(UniqueValues.TOTAL_VALUES, "Total unique values"))
34+
35+
def processAlgorithm(self, progress):
36+
layer = QGisLayers.getObjectFromUri(self.getParameterValue(UniqueValues.INPUT_LAYER))
37+
fieldName = self.getParameterValue(UniqueValues.FIELD_NAME)
38+
39+
outputFile = self.getOutputValue(UniqueValues.OUTPUT)
40+
41+
values = layer.uniqueValues(layer.fieldNameIndex(fieldName))
42+
self.createHTML(outputFile, values)
43+
self.setOutputValue(UniqueValues.TOTAL_VALUES, len(values))
44+
45+
def createHTML(self, outputFile, algData):
46+
f = open(outputFile, "w")
47+
f.write("<p>Total unique values: " + str(len(algData)) + "</p>")
48+
f.write("<p>Unique values:</p>")
49+
f.write("<ul>")
50+
for s in algData:
51+
f.write("<li>" + unicode(s.toString()) + "</li>")
52+
f.write("</ul>")
53+
f.close()

0 commit comments

Comments
 (0)
Please sign in to comment.