mirror of
https://github.com/qgis/QGIS.git
synced 2025-02-26 00:02:08 -05:00
updated remaining ftools algorithms to new architecture
git-svn-id: http://sextante.googlecode.com/svn/trunk/soft/bindings/qgis-plugin@348 881b9c09-3ef8-f3c2-ec3d-21d735c97f4d
This commit is contained in:
parent
0a29cc0a72
commit
8c42295ae4
@ -4,9 +4,7 @@ from qgis.core import *
|
||||
from sextante.core.GeoAlgorithmExecutionException import GeoAlgorithmExecutionException
|
||||
from sextante.core.SextanteLog import SextanteLog
|
||||
|
||||
def buffering(progress, output, distance, field, useSelection, useField, layer, dissolve, segments ):
|
||||
settings = QSettings()
|
||||
systemEncoding = settings.value( "/UI/encoding", "System" ).toString()
|
||||
def buffering(progress, writer, distance, field, useSelection, useField, layer, dissolve, segments ):
|
||||
GEOS_EXCEPT = True
|
||||
FEATURE_EXCEPT = True
|
||||
vproviderA = layer.dataProvider()
|
||||
@ -15,10 +13,6 @@ def buffering(progress, output, distance, field, useSelection, useField, layer,
|
||||
fields = vproviderA.fields()
|
||||
if useField:
|
||||
field = vproviderA.fieldNameIndex(field)
|
||||
writer = QgsVectorFileWriter(output, systemEncoding, fields, QGis.WKBPolygon, vproviderA.crs() )
|
||||
# check if writer was created properly, if not, return with error
|
||||
if writer.hasError():
|
||||
raise GeoAlgorithmExecutionException("Could not create output file");
|
||||
outFeat = QgsFeature()
|
||||
inFeat = QgsFeature()
|
||||
inGeom = QgsGeometry()
|
||||
@ -64,9 +58,9 @@ def buffering(progress, output, distance, field, useSelection, useField, layer,
|
||||
for inFeat in selectionA:
|
||||
atMap = inFeat.attributeMap()
|
||||
if useField:
|
||||
value = atMap[ self.myParam ].toDouble()[ 0 ]
|
||||
value = atMap[ field ].toDouble()[ 0 ]
|
||||
else:
|
||||
value = self.myParam
|
||||
value = distance
|
||||
inGeom = QgsGeometry( inFeat.geometry() )
|
||||
try:
|
||||
outGeom = inGeom.buffer( float( value ), segments )
|
||||
|
@ -28,14 +28,9 @@ class Centroids(GeoAlgorithm):
|
||||
def processAlgorithm(self, progress):
|
||||
layer = QGisLayers.getObjectFromUri(self.getParameterValue(Centroids.INPUT_LAYER))
|
||||
|
||||
outFileName = self.getOutputValue(Centroids.OUTPUT_LAYER)
|
||||
|
||||
provider = layer.dataProvider()
|
||||
|
||||
settings = QSettings()
|
||||
encoding = settings.value( "/UI/encoding", "System" ).toString()
|
||||
|
||||
writer = QgsVectorFileWriter(outFileName, encoding, provider.fields(),
|
||||
writer = self.getOutputFromName(Centroids.OUTPUT_LAYER).getVectorWriter(provider.fields(),
|
||||
QGis.WKBPoint, provider.crs())
|
||||
|
||||
allAttrs = provider.attributeIndexes()
|
||||
|
@ -19,9 +19,6 @@ class Delaunay(GeoAlgorithm):
|
||||
return QtGui.QIcon(os.path.dirname(__file__) + "/icons/delaunay.png")
|
||||
|
||||
def processAlgorithm(self, progress):
|
||||
settings = QSettings()
|
||||
systemEncoding = settings.value( "/UI/encoding", "System" ).toString()
|
||||
output = self.getOutputValue(Delaunay.OUTPUT)
|
||||
vlayer = QGisLayers.getObjectFromUri(self.getParameterValue(Delaunay.INPUT))
|
||||
vprovider = vlayer.dataProvider()
|
||||
allAttrs = vprovider.attributeIndexes()
|
||||
@ -30,7 +27,7 @@ class Delaunay(GeoAlgorithm):
|
||||
0 : QgsField( "POINTA", QVariant.Double ),
|
||||
1 : QgsField( "POINTB", QVariant.Double ),
|
||||
2 : QgsField( "POINTC", QVariant.Double ) }
|
||||
writer = QgsVectorFileWriter( output, systemEncoding, fields, QGis.WKBPolygon, vprovider.crs() )
|
||||
writer = self.getOutputFromName(Delaunay.OUTPUT).getVectorWriter(fields, QGis.WKBPolygon, vprovider.crs() )
|
||||
inFeat = QgsFeature()
|
||||
c = voronoi.Context()
|
||||
pts = []
|
||||
|
@ -24,9 +24,6 @@ class Difference(GeoAlgorithm):
|
||||
return QtGui.QIcon(os.path.dirname(__file__) + "/icons/difference.png")
|
||||
|
||||
def processAlgorithm(self, progress):
|
||||
settings = QSettings()
|
||||
systemEncoding = settings.value( "/UI/encoding", "System" ).toString()
|
||||
output = self.getOutputValue(Difference.OUTPUT)
|
||||
useSelection = self.getParameterValue(Difference.USE_SELECTED)
|
||||
useSelection2 = self.getParameterValue(Difference.USE_SELECTED2)
|
||||
vlayerA = QGisLayers.getObjectFromUri(self.getParameterValue(Difference.INPUT))
|
||||
@ -48,7 +45,7 @@ class Difference(GeoAlgorithm):
|
||||
else:
|
||||
if not crsA != crsB:
|
||||
SextanteLog.addToLog(SextanteLog.LOG_WARNING, "Difference. Non-matching CRSs. Results might be unexpected")
|
||||
writer = QgsVectorFileWriter(output, systemEncoding, fields, vproviderA.geometryType(), vproviderA.crs() )
|
||||
writer = self.getOutputFromName(Difference.OUTPUT).getVectorWriter(fields, vproviderA.geometryType(), vproviderA.crs() )
|
||||
inFeatA = QgsFeature()
|
||||
inFeatB = QgsFeature()
|
||||
outFeat = QgsFeature()
|
||||
|
@ -24,9 +24,6 @@ class Dissolve(GeoAlgorithm):
|
||||
return QtGui.QIcon(os.path.dirname(__file__) + "/icons/dissolve.png")
|
||||
|
||||
def processAlgorithm(self, progress):
|
||||
settings = QSettings()
|
||||
systemEncoding = settings.value( "/UI/encoding", "System" ).toString()
|
||||
output = self.getOutputValue(Dissolve.OUTPUT)
|
||||
useSelection = self.getParameterValue(Dissolve.USE_SELECTED)
|
||||
useField = not self.getParameterValue(Dissolve.USE_SELECTED)
|
||||
fieldname = self.getParameterValue(Dissolve.FIELD)
|
||||
@ -37,7 +34,7 @@ class Dissolve(GeoAlgorithm):
|
||||
vproviderA = vlayerA.dataProvider()
|
||||
allAttrsA = vproviderA.attributeIndexes()
|
||||
fields = vproviderA.fields()
|
||||
writer = QgsVectorFileWriter( output, systemEncoding, fields, vproviderA.geometryType(), vproviderA.crs() )
|
||||
writer = self.getOutputFromName(Dissolve.OUTPUT).getVectorWriter(fields, vproviderA.geometryType(), vproviderA.crs() )
|
||||
if writer.hasError():
|
||||
raise GeoAlgorithmExecutionException("Could not create output file");
|
||||
inFeat = QgsFeature()
|
||||
|
@ -17,15 +17,12 @@ class ExportGeometryInfo(GeoAlgorithm):
|
||||
return QtGui.QIcon(os.path.dirname(__file__) + "/icons/export_geometry.png")
|
||||
|
||||
def processAlgorithm(self, progress):
|
||||
settings = QSettings()
|
||||
systemEncoding = settings.value( "/UI/encoding", "System" ).toString()
|
||||
output = self.getOutputValue(ExportGeometryInfo.OUTPUT)
|
||||
vlayer = QGisLayers.getObjectFromUri(self.getParameterValue(ExportGeometryInfo.INPUT))
|
||||
vprovider = vlayer.dataProvider()
|
||||
allAttrs = vprovider.attributeIndexes()
|
||||
vprovider.select( allAttrs )
|
||||
( fields, index1, index2 ) = self.checkGeometryFields(vlayer)
|
||||
writer = QgsVectorFileWriter( output, systemEncoding,fields, vprovider.geometryType(), vprovider.crs() )
|
||||
writer = self.getOutputFromName(ExportGeometryInfo.OUTPUT).getVectorWriter(fields, vprovider.geometryType(), vprovider.crs() )
|
||||
inFeat = QgsFeature()
|
||||
outFeat = QgsFeature()
|
||||
inGeom = QgsGeometry()
|
||||
|
@ -17,9 +17,6 @@ class ExtentFromLayer(GeoAlgorithm):
|
||||
return QtGui.QIcon(os.path.dirname(__file__) + "/icons/layer_extent.png")
|
||||
|
||||
def processAlgorithm(self, progress):
|
||||
settings = QSettings()
|
||||
systemEncoding = settings.value( "/UI/encoding", "System" ).toString()
|
||||
output = self.getOutputValue(ExtentFromLayer.OUTPUT)
|
||||
vlayer = QGisLayers.getObjectFromUri(self.getParameterValue(ExtentFromLayer.INPUT))
|
||||
fields = {
|
||||
0 : QgsField( "MINX", QVariant.Double ),
|
||||
@ -33,7 +30,7 @@ class ExtentFromLayer(GeoAlgorithm):
|
||||
8 : QgsField( "HEIGHT", QVariant.Double ),
|
||||
9 : QgsField( "WIDTH", QVariant.Double ) }
|
||||
|
||||
writer = QgsVectorFileWriter(output, systemEncoding, fields, QGis.WKBPolygon, vlayer.crs() )
|
||||
writer = self.getOutputFromName(ExtentFromLayer.OUTPUT).getVectorWriter(fields, QGis.WKBPolygon, vlayer.crs() )
|
||||
rect = vlayer.extent()
|
||||
minx = rect.xMinimum()
|
||||
miny = rect.yMinimum()
|
||||
|
@ -18,15 +18,12 @@ class ExtractNodes(GeoAlgorithm):
|
||||
return QtGui.QIcon(os.path.dirname(__file__) + "/icons/extract_nodes.png")
|
||||
|
||||
def processAlgorithm(self, progress):
|
||||
settings = QSettings()
|
||||
systemEncoding = settings.value( "/UI/encoding", "System" ).toString()
|
||||
output = self.getOutputValue(ExtractNodes.OUTPUT)
|
||||
vlayer = QGisLayers.getObjectFromUri(self.getParameterValue(ExtractNodes.INPUT))
|
||||
vprovider = vlayer.dataProvider()
|
||||
allAttrs = vprovider.attributeIndexes()
|
||||
vprovider.select( allAttrs )
|
||||
fields = vprovider.fields()
|
||||
writer = QgsVectorFileWriter( output, systemEncoding, fields, QGis.WKBPoint, vprovider.crs() )
|
||||
writer = self.getOutputFromName(ExtractNodes.OUTPUT).getVectorWriter(fields, QGis.WKBPoint, vprovider.crs() )
|
||||
inFeat = QgsFeature()
|
||||
outFeat = QgsFeature()
|
||||
inGeom = QgsGeometry()
|
||||
|
@ -25,13 +25,17 @@ class FixedDistanceBuffer(GeoAlgorithm):
|
||||
return QtGui.QIcon(os.path.dirname(__file__) + "/icons/buffer.png")
|
||||
|
||||
def processAlgorithm(self, progress):
|
||||
output = self.getOutputValue(FixedDistanceBuffer.OUTPUT)
|
||||
vlayer = QGisLayers.getObjectFromUri(self.getParameterValue(FixedDistanceBuffer.INPUT))
|
||||
vprovider = vlayer.dataProvider()
|
||||
allAttrs = vprovider.attributeIndexes()
|
||||
vprovider.select(allAttrs)
|
||||
writer = self.getOutputFromName(FixedDistanceBuffer.OUTPUT).getVectorWriter(vprovider.fields(), QGis.WKBPolygon, vprovider.crs() )
|
||||
useSelection = self.getParameterValue(FixedDistanceBuffer.USE_SELECTED)
|
||||
distance = self.getParameterValue(FixedDistanceBuffer.DISTANCE)
|
||||
dissolve = self.getParameterValue(FixedDistanceBuffer.DISSOLVE)
|
||||
segments = int(self.getParameterValue(FixedDistanceBuffer.SEGMENTS))
|
||||
layer = QGisLayers.getObjectFromUri(self.getParameterValue(FixedDistanceBuffer.INPUT))
|
||||
buff.buffering(progress, output, distance, None, useSelection, False, layer, dissolve, segments)
|
||||
buff.buffering(progress, writer, distance, None, useSelection, False, layer, dissolve, segments)
|
||||
|
||||
def defineCharacteristics(self):
|
||||
self.name = "Fixed distance buffer"
|
||||
|
@ -24,9 +24,6 @@ class Intersection(GeoAlgorithm):
|
||||
return QtGui.QIcon(os.path.dirname(__file__) + "/icons/intersect.png")
|
||||
|
||||
def processAlgorithm(self, progress):
|
||||
settings = QSettings()
|
||||
systemEncoding = settings.value( "/UI/encoding", "System" ).toString()
|
||||
output = self.getOutputValue(Intersection.OUTPUT)
|
||||
useSelection = self.getParameterValue(Intersection.USE_SELECTED)
|
||||
useSelection2 = self.getParameterValue(Intersection.USE_SELECTED2)
|
||||
vlayerA = QGisLayers.getObjectFromUri(self.getParameterValue(Intersection.INPUT))
|
||||
@ -51,7 +48,7 @@ class Intersection(GeoAlgorithm):
|
||||
longNames = ftools_utils.checkFieldNameLength( fields )
|
||||
if not longNames.isEmpty():
|
||||
raise GeoAlgorithmExecutionException("Following field names are longer than 10 characters:\n" + longNames.join('\n') )
|
||||
writer = QgsVectorFileWriter( output, systemEncoding, fields, vproviderA.geometryType(), vproviderA.crs() )
|
||||
writer = self.getOutputFromName(Intersection.OUTPUT).getVectorWriter(fields, vproviderA.geometryType(), vproviderA.crs() )
|
||||
inFeatA = QgsFeature()
|
||||
inFeatB = QgsFeature()
|
||||
outFeat = QgsFeature()
|
||||
|
@ -18,9 +18,6 @@ class LayerFromExtent(GeoAlgorithm):
|
||||
return QtGui.QIcon(os.path.dirname(__file__) + "/icons/layer_extent.png")
|
||||
|
||||
def processAlgorithm(self, progress):
|
||||
settings = QSettings()
|
||||
systemEncoding = settings.value( "/UI/encoding", "System" ).toString()
|
||||
output = self.getOutputValue(LayerFromExtent.OUTPUT)
|
||||
vlayer = QGisLayers.getObjectFromUri(self.getParameterValue(LayerFromExtent.INPUT))
|
||||
fields = {
|
||||
0 : QgsField( "MINX", QVariant.Double ),
|
||||
@ -34,7 +31,7 @@ class LayerFromExtent(GeoAlgorithm):
|
||||
8 : QgsField( "HEIGHT", QVariant.Double ),
|
||||
9 : QgsField( "WIDTH", QVariant.Double ) }
|
||||
|
||||
writer = QgsVectorFileWriter( output, systemEncoding, fields, QGis.WKBPolygon, self.vlayer.crs() )
|
||||
writer = self.getOutputFromName(LayerFromExtent.OUTPUT).getVectorWriter(fields, QGis.WKBPolygon, self.vlayer.crs() )
|
||||
rect = vlayer.extent()
|
||||
minx = rect.xMinimum()
|
||||
miny = rect.yMinimum()
|
||||
|
@ -23,9 +23,6 @@ class LinesIntersection(GeoAlgorithm):
|
||||
return QtGui.QIcon(os.path.dirname(__file__) + "/icons/intersections.png")
|
||||
|
||||
def processAlgorithm(self, progress):
|
||||
settings = QSettings()
|
||||
systemEncoding = settings.value( "/UI/encoding", "System" ).toString()
|
||||
output = self.getOutputValue(LinesIntersection.OUTPUT)
|
||||
layer1 = QGisLayers.getObjectFromUri(self.getParameterValue(LinesIntersection.INPUT1))
|
||||
layer2 = QGisLayers.getObjectFromUri(self.getParameterValue(LinesIntersection.INPUT2))
|
||||
field1 = self.getParameterValue(LinesIntersection.FIELD1)
|
||||
@ -46,11 +43,7 @@ class LinesIntersection(GeoAlgorithm):
|
||||
field2.setName(unicode(field2.name()) + "_2")
|
||||
fieldList = {0:field1, 1:field2}
|
||||
sRs = provider1.crs()
|
||||
check = QFile(output)
|
||||
if check.exists():
|
||||
if not QgsVectorFileWriter.deleteShapeFile(output):
|
||||
raise GeoAlgorithmExecutionException("Could not delete existing output file")
|
||||
writer = QgsVectorFileWriter(output, systemEncoding, fieldList, QGis.WKBPoint, sRs)
|
||||
writer = self.getOutputFromName(LinesIntersection.OUTPUT).getVectorWriter(fieldList, QGis.WKBPoint, sRs)
|
||||
#writer = QgsVectorFileWriter(outPath, "UTF-8", fieldList, QGis.WKBPoint, sRs)
|
||||
inFeat = QgsFeature()
|
||||
inFeatB = QgsFeature()
|
||||
|
@ -17,15 +17,12 @@ class LinesToPolygons(GeoAlgorithm):
|
||||
return QtGui.QIcon(os.path.dirname(__file__) + "/icons/to_lines.png")
|
||||
|
||||
def processAlgorithm(self, progress):
|
||||
settings = QSettings()
|
||||
systemEncoding = settings.value( "/UI/encoding", "System" ).toString()
|
||||
output = self.getOutputValue(LinesToPolygons.OUTPUT)
|
||||
vlayer = QGisLayers.getObjectFromUri(self.getParameterValue(LinesToPolygons.INPUT))
|
||||
vprovider = vlayer.dataProvider()
|
||||
allAttrs = vprovider.attributeIndexes()
|
||||
vprovider.select( allAttrs )
|
||||
fields = vprovider.fields()
|
||||
writer = QgsVectorFileWriter( output, systemEncoding, fields, QGis.WKBPolygon, vprovider.crs() )
|
||||
writer = self.getOutputFromName(LinesToPolygons.OUTPUT).getVectorWriter(fields, QGis.WKBPolygon, vprovider.crs() )
|
||||
inFeat = QgsFeature()
|
||||
outFeat = QgsFeature()
|
||||
inGeom = QgsGeometry()
|
||||
|
@ -22,9 +22,6 @@ class MeanCoords(GeoAlgorithm):
|
||||
return QtGui.QIcon(os.path.dirname(__file__) + "/icons/mean.png")
|
||||
|
||||
def processAlgorithm(self, progress):
|
||||
settings = QSettings()
|
||||
systemEncoding = settings.value( "/UI/encoding", "System" ).toString()
|
||||
output = self.getOutputValue(MeanCoords.OUTPUT)
|
||||
vlayer = QGisLayers.getObjectFromUri(self.getParameterValue(MeanCoords.POINTS))
|
||||
weightField = self.getParameterValue(MeanCoords.WEIGHT)
|
||||
uniqueField = self.getParameterValue(MeanCoords.UID)
|
||||
@ -42,7 +39,7 @@ class MeanCoords(GeoAlgorithm):
|
||||
uniqueValues = [QVariant(1)]
|
||||
single = True
|
||||
fieldList = { 0 : QgsField("MEAN_X", QVariant.Double), 1 : QgsField("MEAN_Y", QVariant.Double), 2 : QgsField("UID", QVariant.String) }
|
||||
writer = QgsVectorFileWriter(output, systemEncoding, fieldList, QGis.WKBPoint, sRs)
|
||||
writer = self.getOutputFromName(MeanCoords.OUTPUT).getVectorWriter(fieldList, QGis.WKBPoint, sRs)
|
||||
outfeat = QgsFeature()
|
||||
points = []
|
||||
weights = []
|
||||
|
@ -18,17 +18,13 @@ class MultipartToSingleparts(GeoAlgorithm):
|
||||
return QtGui.QIcon(os.path.dirname(__file__) + "/icons/multi_to_single.png")
|
||||
|
||||
def processAlgorithm(self, progress):
|
||||
settings = QSettings()
|
||||
systemEncoding = settings.value( "/UI/encoding", "System" ).toString()
|
||||
vlayer = QGisLayers.getObjectFromUri(self.getParameterValue(self.INPUT))
|
||||
output = self.getOutputValue(self.OUTPUT)
|
||||
vprovider = vlayer.dataProvider()
|
||||
allAttrs = vprovider.attributeIndexes()
|
||||
vprovider.select( allAttrs )
|
||||
fields = vprovider.fields()
|
||||
geomType = self.multiToSingleGeom(vprovider.geometryType())
|
||||
writer = QgsVectorFileWriter( output, systemEncoding,
|
||||
fields, geomType, vprovider.crs() )
|
||||
writer = self.getOutputFromName(self.OUTPUT).getVectorWriter(fields, geomType, vprovider.crs() )
|
||||
inFeat = QgsFeature()
|
||||
outFeat = QgsFeature()
|
||||
inGeom = QgsGeometry()
|
||||
|
@ -23,9 +23,6 @@ class PointsInPolygon(GeoAlgorithm):
|
||||
return QtGui.QIcon(os.path.dirname(__file__) + "/icons/sum_points.png")
|
||||
|
||||
def processAlgorithm(self, progress):
|
||||
settings = QSettings()
|
||||
systemEncoding = settings.value( "/UI/encoding", "System" ).toString()
|
||||
output = self.getOutputValue(PointsInPolygon.OUTPUT)
|
||||
inField = self.getParameterValue(PointsInPolygon.FIELD)
|
||||
polyLayer = QGisLayers.getObjectFromUri(self.getParameterValue(PointsInPolygon.POLYGONS))
|
||||
pointLayer = QGisLayers.getObjectFromUri(self.getParameterValue(PointsInPolygon.POINTS))
|
||||
@ -45,11 +42,7 @@ class PointsInPolygon(GeoAlgorithm):
|
||||
field = QgsField(unicode(inField), QVariant.Double, "real", 24, 15, "point count field")
|
||||
fieldList[index] = field
|
||||
sRs = polyProvider.crs()
|
||||
check = QFile(output)
|
||||
if check.exists():
|
||||
if not QgsVectorFileWriter.deleteShapeFile(output):
|
||||
raise GeoAlgorithmExecutionException("could not delete file: " + output)
|
||||
writer = QgsVectorFileWriter(output, systemEncoding, fieldList, polyProvider.geometryType(), sRs)
|
||||
writer = self.getOutputFromName(PointsInPolygon.OUTPUT).getVectorWriter(fieldList, polyProvider.geometryType(), sRs)
|
||||
inFeat = QgsFeature()
|
||||
inFeatB = QgsFeature()
|
||||
outFeat = QgsFeature()
|
||||
|
@ -18,28 +18,22 @@ class PolygonsToLines(GeoAlgorithm):
|
||||
return QtGui.QIcon(os.path.dirname(__file__) + "/icons/to_lines.png")
|
||||
|
||||
def processAlgorithm(self, progress):
|
||||
settings = QSettings()
|
||||
systemEncoding = settings.value( "/UI/encoding", "System" ).toString()
|
||||
output = self.getOutputValue(PolygonsToLines.OUTPUT)
|
||||
vlayer = QGisLayers.getObjectFromUri(self.getParameterValue(PolygonsToLines.INPUT))
|
||||
vprovider = vlayer.dataProvider()
|
||||
allAttrs = vprovider.attributeIndexes()
|
||||
vprovider.select( allAttrs )
|
||||
fields = vprovider.fields()
|
||||
writer = QgsVectorFileWriter( output, systemEncoding,fields, QGis.WKBLineString, vprovider.crs() )
|
||||
writer = self.getOutputFromName(self.OUTPUT).getVectorWriter(fields, QGis.WKBLineString, vprovider.crs() )
|
||||
inFeat = QgsFeature()
|
||||
outFeat = QgsFeature()
|
||||
inGeom = QgsGeometry()
|
||||
outGeom = QgsGeometry()
|
||||
nFeat = vprovider.featureCount()
|
||||
nElement = 0
|
||||
#self.emit( SIGNAL( "runStatus(PyQt_PyObject)" ), 0)
|
||||
#self.emit( SIGNAL( "runRange(PyQt_PyObject)" ), ( 0, nFeat ) )
|
||||
while vprovider.nextFeature(inFeat):
|
||||
multi = False
|
||||
nElement += 1
|
||||
progress.setPercentage(int(nElement/nFeat * 100))
|
||||
#self.emit( SIGNAL( "runStatus(PyQt_PyObject)" ), nElement )
|
||||
inGeom = inFeat.geometry()
|
||||
if inGeom.isMultipart():
|
||||
multi = True
|
||||
|
@ -24,13 +24,10 @@ class SimplifyGeometries(GeoAlgorithm):
|
||||
def processAlgorithm(self, progress):
|
||||
self.processedFeatures = 0
|
||||
self.progress = progress
|
||||
settings = QSettings()
|
||||
systemEncoding = settings.value( "/UI/encoding", "System" ).toString()
|
||||
output = self.getOutputValue(SimplifyGeometries.OUTPUT)
|
||||
tolerance =self.getParameterValue(SimplifyGeometries.TOLERANCE)
|
||||
useSelection = self.getParameterValue(SimplifyGeometries.USE_SELECTION)
|
||||
vlayer = QGisLayers.getObjectFromUri(self.getParameterValue(SimplifyGeometries.INPUT))
|
||||
self.generalize(vlayer, useSelection, tolerance, output, systemEncoding)
|
||||
self.generalize(vlayer, useSelection, tolerance)
|
||||
|
||||
|
||||
def defineCharacteristics(self):
|
||||
@ -60,12 +57,8 @@ class SimplifyGeometries(GeoAlgorithm):
|
||||
self.inputLayer = inputLayer
|
||||
self.useSelection = useSelection
|
||||
self.tolerance = tolerance
|
||||
self.outputFileName = shapePath
|
||||
self.outputEncoding = shapeEncoding
|
||||
self.shapeFileWriter = None
|
||||
self.pointsBefore = 0
|
||||
self.pointsAfter = 0
|
||||
shapeFileWriter = None
|
||||
vProvider = self.inputLayer.dataProvider()
|
||||
allAttrs = vProvider.attributeIndexes()
|
||||
vProvider.select( allAttrs )
|
||||
@ -74,7 +67,7 @@ class SimplifyGeometries(GeoAlgorithm):
|
||||
wkbType = self.inputLayer.wkbType()
|
||||
if not crs.isValid():
|
||||
crs = None
|
||||
shapeFileWriter = QgsVectorFileWriter( self.outputFileName, self.outputEncoding, shapeFields, wkbType, crs )
|
||||
shapeFileWriter = self.getOutputFromName(SimplifyGeometries.OUTPUT).getVectorWriter(shapeFields, wkbType, crs )
|
||||
featureId = 0
|
||||
if self.useSelection:
|
||||
selection = self.inputLayer.selectedFeatures()
|
||||
|
@ -21,17 +21,13 @@ class SinglePartsToMultiparts(GeoAlgorithm):
|
||||
return QtGui.QIcon(os.path.dirname(__file__) + "/icons/single_to_multi.png")
|
||||
|
||||
def processAlgorithm(self, progress):
|
||||
settings = QSettings()
|
||||
systemEncoding = settings.value( "/UI/encoding", "System" ).toString()
|
||||
vlayer = QGisLayers.getObjectFromUri(self.getParameterValue(SinglePartsToMultiparts.INPUT))
|
||||
output = self.getOutputValue(SinglePartsToMultiparts.OUTPUT)
|
||||
vprovider = vlayer.dataProvider()
|
||||
allAttrs = vprovider.attributeIndexes()
|
||||
vprovider.select( allAttrs )
|
||||
fields = vprovider.fields()
|
||||
geomType = self.singleToMultiGeom(vprovider.geometryType())
|
||||
writer = QgsVectorFileWriter( output, systemEncoding,
|
||||
fields, geomType, vprovider.crs() )
|
||||
writer = self.getOutputFromName(SinglePartsToMultiparts.OUTPUT).getVectorWriter(fields, geomType, vprovider.crs() )
|
||||
inFeat = QgsFeature()
|
||||
outFeat = QgsFeature()
|
||||
inGeom = QgsGeometry()
|
||||
@ -60,7 +56,6 @@ class SinglePartsToMultiparts(GeoAlgorithm):
|
||||
feature_list = self.extractAsMulti( inGeom )
|
||||
multi_feature.extend( feature_list )
|
||||
nElement += 1
|
||||
#self.emit( SIGNAL( "runStatus(PyQt_PyObject)" ), nElement )
|
||||
outFeat.setAttributeMap( atts )
|
||||
outGeom = QgsGeometry( self.convertGeometry(multi_feature, vType) )
|
||||
outFeat.setGeometry(outGeom)
|
||||
|
@ -23,9 +23,6 @@ class SumLines(GeoAlgorithm):
|
||||
return QtGui.QIcon(os.path.dirname(__file__) + "/icons/sum_lines.png")
|
||||
|
||||
def processAlgorithm(self, progress):
|
||||
settings = QSettings()
|
||||
systemEncoding = settings.value( "/UI/encoding", "System" ).toString()
|
||||
output = self.getOutputValue(SumLines.OUTPUT)
|
||||
inField = self.getParameterValue(SumLines.FIELD)
|
||||
lineLayer = QGisLayers.getObjectFromUri(self.getParameterValue(SumLines.LINES))
|
||||
polyLayer = QGisLayers.getObjectFromUri(self.getParameterValue(SumLines.POLYGONS))
|
||||
@ -54,12 +51,7 @@ class SumLines(GeoAlgorithm):
|
||||
lineProvider.rewind()
|
||||
start = 15.00
|
||||
add = 85.00 / polyProvider.featureCount()
|
||||
check = QFile(output)
|
||||
if check.exists():
|
||||
if not QgsVectorFileWriter.deleteShapeFile(output):
|
||||
raise GeoAlgorithmExecutionException("Could not delete existing output file")
|
||||
writer = QgsVectorFileWriter(output, systemEncoding, fieldList, polyProvider.geometryType(), sRs)
|
||||
#writer = QgsVectorFileWriter(outPath, "UTF-8", fieldList, polyProvider.geometryType(), sRs)
|
||||
writer = self.getOutputFromName(SumLines.OUTPUT).getVectorWriter(fieldList, polyProvider.geometryType(), sRs)
|
||||
spatialIndex = ftools_utils.createIndex( lineProvider )
|
||||
while polyProvider.nextFeature(inFeat):
|
||||
inGeom = QgsGeometry(inFeat.geometry())
|
||||
|
@ -21,9 +21,6 @@ class Union(GeoAlgorithm):
|
||||
return QtGui.QIcon(os.path.dirname(__file__) + "/icons/union.png")
|
||||
|
||||
def processAlgorithm(self, progress):
|
||||
settings = QSettings()
|
||||
systemEncoding = settings.value( "/UI/encoding", "System" ).toString()
|
||||
output = self.getOutputValue(Union.OUTPUT)
|
||||
vlayerA = QGisLayers.getObjectFromUri(self.getParameterValue(Union.INPUT))
|
||||
vlayerB = QGisLayers.getObjectFromUri(self.getParameterValue(Union.INPUT2))
|
||||
GEOS_EXCEPT = True
|
||||
@ -47,7 +44,7 @@ class Union(GeoAlgorithm):
|
||||
longNames = ftools_utils.checkFieldNameLength( fields )
|
||||
if not longNames.isEmpty():
|
||||
raise GeoAlgorithmExecutionException("Following field names are longer than 10 characters:\n" + longNames.join('\n') )
|
||||
writer = QgsVectorFileWriter( output, systemEncoding, fields, vproviderA.geometryType(), vproviderA.crs() )
|
||||
writer = self.getOutputFromName(Union.OUTPUT).getVectorWriter(fields, vproviderA.geometryType(), vproviderA.crs() )
|
||||
inFeatA = QgsFeature()
|
||||
inFeatB = QgsFeature()
|
||||
outFeat = QgsFeature()
|
||||
|
@ -25,13 +25,17 @@ class VariableDistanceBuffer(GeoAlgorithm):
|
||||
return QtGui.QIcon(os.path.dirname(__file__) + "/icons/buffer.png")
|
||||
|
||||
def processAlgorithm(self, progress):
|
||||
output = self.getOutputValue(VariableDistanceBuffer.OUTPUT)
|
||||
vlayer = QGisLayers.getObjectFromUri(self.getParameterValue(VariableDistanceBuffer.INPUT))
|
||||
vprovider = vlayer.dataProvider()
|
||||
allAttrs = vprovider.attributeIndexes()
|
||||
vprovider.select(allAttrs)
|
||||
writer = self.getOutputFromName(VariableDistanceBuffer.OUTPUT).getVectorWriter(vprovider.fields(), QGis.WKBPolygon, vprovider.crs() )
|
||||
useSelection = self.getParameterValue(VariableDistanceBuffer.USE_SELECTED)
|
||||
dissolve = self.getParameterValue(VariableDistanceBuffer.DISSOLVE)
|
||||
field = self.getParameterValue(VariableDistanceBuffer.FIELD)
|
||||
segments = int(self.getParameterValue(VariableDistanceBuffer.SEGMENTS))
|
||||
layer = QGisLayers.getObjectFromUri(self.getParameterValue(VariableDistanceBuffer.INPUT))
|
||||
buff.buffering(progress, output, 0, field, useSelection, True, layer, dissolve, segments)
|
||||
buff.buffering(progress, writer, 0, field, useSelection, True, layer, dissolve, segments)
|
||||
|
||||
def defineCharacteristics(self):
|
||||
self.name = "Variable distance buffer"
|
||||
|
@ -15,14 +15,11 @@ class VoronoiPolygons(GeoAlgorithm):
|
||||
OUTPUT = "OUTPUT"
|
||||
|
||||
def processAlgorithm(self, progress):
|
||||
settings = QSettings()
|
||||
systemEncoding = settings.value( "/UI/encoding", "System" ).toString()
|
||||
output = self.getOutputValue(VoronoiPolygons.OUTPUT)
|
||||
vlayer = QGisLayers.getObjectFromUri(self.getParameterValue(VoronoiPolygons.INPUT))
|
||||
vprovider = vlayer.dataProvider()
|
||||
allAttrs = vprovider.attributeIndexes()
|
||||
vprovider.select( allAttrs )
|
||||
writer = QgsVectorFileWriter( output, systemEncoding, vprovider.fields(), QGis.WKBPolygon, vprovider.crs() )
|
||||
writer = self.getOutputFromName(VoronoiPolygons.OUTPUT).getVectorWriter(vprovider.fields(), QGis.WKBPolygon, vprovider.crs() )
|
||||
inFeat = QgsFeature()
|
||||
outFeat = QgsFeature()
|
||||
extent = vlayer.extent()
|
||||
|
@ -1,6 +1,7 @@
|
||||
from sextante.outputs.Output import Output
|
||||
from qgis.core import *
|
||||
from PyQt4.QtCore import *
|
||||
from sextante.core.GeoAlgorithmExecutionException import GeoAlgorithmExecutionException
|
||||
|
||||
class OutputVector(Output):
|
||||
|
||||
@ -19,7 +20,7 @@ class OutputVector(Output):
|
||||
'''Returns a suitable writer to which features can be added as a result of the algorithm.
|
||||
Use this to transparently handle output values instead of creating your own method.
|
||||
Parameters:
|
||||
-field: an array with the fields of the attributes table
|
||||
-field: an array with the fields of the attributes table or dict of int-QgsField
|
||||
-geomType: A suitable geometry type, as it would be passed to a QgsVectorFileWriter constructor
|
||||
-crs: the crs of the layer to create.
|
||||
Executing this method might modify the object, adding additional information to it, so the writer
|
||||
@ -28,6 +29,8 @@ class OutputVector(Output):
|
||||
thus rendering a previously obtained writer useless'''
|
||||
|
||||
if self.value.startswith(self.MEMORY_LAYER_PREFIX):
|
||||
if isinstance(fields, dict):
|
||||
fields = fields.values()
|
||||
types = { QGis.WKBPoint : "Point", QGis.WKBLineString : "Point", QGis.WKBPolygon : "Polygon",
|
||||
QGis.WKBMultiPoint : "MultiPoint", QGis.WKBMultiLineString : "MultiLineString", QGis.WKBMultiPolygon : "MultiPolygon",}
|
||||
v = QgsVectorLayer(types[geomType], self.description, "memory")
|
||||
@ -38,6 +41,10 @@ class OutputVector(Output):
|
||||
return v
|
||||
else: #outputChannel is a file path
|
||||
#TODO: Add support for encodings
|
||||
check = QFile(self.value)
|
||||
if check.exists():
|
||||
if not QgsVectorFileWriter.deleteShapeFile(self.value):
|
||||
raise GeoAlgorithmExecutionException("Could not delete existing output file")
|
||||
formats = QgsVectorFileWriter.supportedFiltersAndFormats()
|
||||
OGRCodes = {}
|
||||
for key,value in formats.items():
|
||||
@ -45,11 +52,14 @@ class OutputVector(Output):
|
||||
extension = extension[extension.find('*.') + 2:]
|
||||
extension = extension[:extension.find(" ")]
|
||||
OGRCodes[extension] = value
|
||||
fieldsDict = {}
|
||||
i = 0
|
||||
for field in fields:
|
||||
fieldsDict[i] = field
|
||||
i += 1
|
||||
if isinstance(fields, dict):
|
||||
fieldsDict = fields
|
||||
else:
|
||||
fieldsDict = {}
|
||||
i = 0
|
||||
for field in fields:
|
||||
fieldsDict[i] = field
|
||||
i += 1
|
||||
settings = QSettings()
|
||||
systemEncoding = settings.value( "/UI/encoding", "System" ).toString()
|
||||
extension = self.value[self.value.find(".")+1:]
|
||||
|
Loading…
x
Reference in New Issue
Block a user