mirror of
https://github.com/qgis/QGIS.git
synced 2025-04-15 00:04:00 -04:00
[processing] Use layer crs/fields instead of provider crs/fields
Since the layer has more complete knowledge of the crs (ie, when provider could not determine crs and user has selected it from the list), and also better knowledge of layer fields (virtual fields, joined fields) we should use these rather than the provider methods.
This commit is contained in:
parent
00a8fea13b
commit
06c4b07222
@ -78,11 +78,10 @@ class AddTableField(GeoAlgorithm):
|
||||
layer = dataobjects.getObjectFromUri(
|
||||
self.getParameterValue(self.INPUT_LAYER))
|
||||
|
||||
provider = layer.dataProvider()
|
||||
fields = provider.fields()
|
||||
fields = layer.fields()
|
||||
fields.append(QgsField(fieldName, self.TYPES[fieldType], '',
|
||||
fieldLength, fieldPrecision))
|
||||
writer = output.getVectorWriter(fields, provider.wkbType(),
|
||||
writer = output.getVectorWriter(fields, layer.wkbType(),
|
||||
layer.crs())
|
||||
outFeat = QgsFeature()
|
||||
features = vector.features(layer)
|
||||
|
@ -49,10 +49,9 @@ class AutoincrementalField(GeoAlgorithm):
|
||||
output = self.getOutputFromName(self.OUTPUT)
|
||||
vlayer = \
|
||||
dataobjects.getObjectFromUri(self.getParameterValue(self.INPUT))
|
||||
vprovider = vlayer.dataProvider()
|
||||
fields = vprovider.fields()
|
||||
fields = vlayer.fields()
|
||||
fields.append(QgsField('AUTO', QVariant.Int))
|
||||
writer = output.getVectorWriter(fields, vprovider.wkbType(),
|
||||
writer = output.getVectorWriter(fields, vlayer.wkbType(),
|
||||
vlayer.crs())
|
||||
outFeat = QgsFeature()
|
||||
features = vector.features(vlayer)
|
||||
|
@ -63,7 +63,7 @@ class Centroids(GeoAlgorithm):
|
||||
|
||||
writer = self.getOutputFromName(
|
||||
self.OUTPUT_LAYER).getVectorWriter(
|
||||
layer.pendingFields().toList(),
|
||||
layer.fields(),
|
||||
QgsWkbTypes.Point,
|
||||
layer.crs())
|
||||
|
||||
|
@ -97,27 +97,26 @@ class CheckValidity(GeoAlgorithm):
|
||||
def doCheck(self, progress):
|
||||
layer = dataobjects.getObjectFromUri(
|
||||
self.getParameterValue(self.INPUT_LAYER))
|
||||
provider = layer.dataProvider()
|
||||
|
||||
settings = QSettings()
|
||||
method = int(settings.value(settings_method_key, 1))
|
||||
|
||||
valid_ouput = self.getOutputFromName(self.VALID_OUTPUT)
|
||||
valid_fields = layer.pendingFields().toList()
|
||||
valid_fields = layer.fields()
|
||||
valid_writer = valid_ouput.getVectorWriter(
|
||||
valid_fields,
|
||||
provider.wkbType(),
|
||||
layer.wkbType(),
|
||||
layer.crs())
|
||||
valid_count = 0
|
||||
|
||||
invalid_ouput = self.getOutputFromName(self.INVALID_OUTPUT)
|
||||
invalid_fields = layer.pendingFields().toList() + [
|
||||
invalid_fields = layer.fields().toList() + [
|
||||
QgsField(name='_errors',
|
||||
type=QVariant.String,
|
||||
len=255)]
|
||||
invalid_writer = invalid_ouput.getVectorWriter(
|
||||
invalid_fields,
|
||||
provider.wkbType(),
|
||||
layer.wkbType(),
|
||||
layer.crs())
|
||||
invalid_count = 0
|
||||
|
||||
|
@ -111,7 +111,7 @@ class ConcaveHull(GeoAlgorithm):
|
||||
feat = QgsFeature()
|
||||
dissolved_layer.getFeatures(QgsFeatureRequest().setFilterFid(0)).nextFeature(feat)
|
||||
writer = self.getOutputFromName(self.OUTPUT).getVectorWriter(
|
||||
layer.pendingFields().toList(), QgsWkbTypes.Polygon, layer.crs())
|
||||
layer.fields().toList(), QgsWkbTypes.Polygon, layer.crs())
|
||||
geom = feat.geometry()
|
||||
if no_multigeom and geom.isMultipart():
|
||||
# Only singlepart geometries are allowed
|
||||
|
@ -97,7 +97,7 @@ class ConvexHull(GeoAlgorithm):
|
||||
]
|
||||
|
||||
writer = self.getOutputFromName(self.OUTPUT).getVectorWriter(
|
||||
fields, QgsWkbTypes.Polygon, layer.dataProvider().crs())
|
||||
fields, QgsWkbTypes.Polygon, layer.crs())
|
||||
|
||||
outFeat = QgsFeature()
|
||||
inGeom = QgsGeometry()
|
||||
|
@ -68,11 +68,11 @@ class Difference(GeoAlgorithm):
|
||||
self.getParameterValue(Difference.OVERLAY))
|
||||
ignoreInvalid = self.getParameterValue(Difference.IGNORE_INVALID)
|
||||
|
||||
geomType = layerA.dataProvider().wkbType()
|
||||
geomType = layerA.wkbType()
|
||||
writer = self.getOutputFromName(
|
||||
Difference.OUTPUT).getVectorWriter(layerA.pendingFields(),
|
||||
geomType,
|
||||
layerA.dataProvider().crs())
|
||||
layerA.crs())
|
||||
|
||||
outFeat = QgsFeature()
|
||||
index = vector.spatialindex(layerB)
|
||||
|
@ -71,12 +71,11 @@ class Dissolve(GeoAlgorithm):
|
||||
field_names = self.getParameterValue(Dissolve.FIELD)
|
||||
vlayerA = dataobjects.getObjectFromUri(
|
||||
self.getParameterValue(Dissolve.INPUT))
|
||||
vproviderA = vlayerA.dataProvider()
|
||||
|
||||
writer = self.getOutputFromName(
|
||||
Dissolve.OUTPUT).getVectorWriter(
|
||||
vlayerA.fields().toList(),
|
||||
vproviderA.wkbType(),
|
||||
vlayerA.wkbType(),
|
||||
vlayerA.crs())
|
||||
|
||||
outFeat = QgsFeature()
|
||||
|
@ -315,10 +315,9 @@ class Eliminate(GeoAlgorithm):
|
||||
# End while
|
||||
|
||||
# Create output
|
||||
provider = processLayer.dataProvider()
|
||||
output = self.getOutputFromName(self.OUTPUT)
|
||||
writer = output.getVectorWriter(provider.fields(),
|
||||
provider.wkbType(), processLayer.crs())
|
||||
writer = output.getVectorWriter(processLayer.fields(),
|
||||
processLayer.wkbType(), processLayer.crs())
|
||||
|
||||
# Write all features that are left over to output layer
|
||||
iterator = processLayer.getFeatures()
|
||||
|
@ -54,11 +54,10 @@ class EquivalentNumField(GeoAlgorithm):
|
||||
output = self.getOutputFromName(self.OUTPUT)
|
||||
vlayer = dataobjects.getObjectFromUri(
|
||||
self.getParameterValue(self.INPUT))
|
||||
vprovider = vlayer.dataProvider()
|
||||
fieldindex = vlayer.fieldNameIndex(fieldname)
|
||||
fields = vprovider.fields()
|
||||
fields = vlayer.fields()
|
||||
fields.append(QgsField('NUM_FIELD', QVariant.Int))
|
||||
writer = output.getVectorWriter(fields, vprovider.wkbType(),
|
||||
writer = output.getVectorWriter(fields, vlayer.wkbType(),
|
||||
vlayer.crs())
|
||||
outFeat = QgsFeature()
|
||||
classes = {}
|
||||
|
@ -48,8 +48,7 @@ class Explode(GeoAlgorithm):
|
||||
vlayer = dataobjects.getObjectFromUri(
|
||||
self.getParameterValue(self.INPUT))
|
||||
output = self.getOutputFromName(self.OUTPUT)
|
||||
vprovider = vlayer.dataProvider()
|
||||
fields = vprovider.fields()
|
||||
fields = vlayer.fields()
|
||||
writer = output.getVectorWriter(fields, QgsWkbTypes.LineString,
|
||||
vlayer.crs())
|
||||
outFeat = QgsFeature()
|
||||
|
@ -89,7 +89,7 @@ class ExportGeometryInfo(GeoAlgorithm):
|
||||
fields.append(QgsField(yName, QVariant.Double))
|
||||
|
||||
writer = self.getOutputFromName(self.OUTPUT).getVectorWriter(
|
||||
fields.toList(), layer.dataProvider().wkbType(), layer.crs())
|
||||
fields.toList(), layer.wkbType(), layer.crs())
|
||||
|
||||
ellips = None
|
||||
crs = None
|
||||
|
@ -71,7 +71,7 @@ class ExtractByLocation(GeoAlgorithm):
|
||||
|
||||
output = self.getOutputFromName(self.OUTPUT)
|
||||
writer = output.getVectorWriter(layer.pendingFields(),
|
||||
layer.dataProvider().wkbType(), layer.crs())
|
||||
layer.wkbType(), layer.crs())
|
||||
|
||||
if 'disjoint' in predicates:
|
||||
disjoinSet = []
|
||||
|
@ -88,11 +88,10 @@ class FieldsPyculator(GeoAlgorithm):
|
||||
|
||||
layer = dataobjects.getObjectFromUri(
|
||||
self.getParameterValue(self.INPUT_LAYER))
|
||||
provider = layer.dataProvider()
|
||||
fields = provider.fields()
|
||||
fields = layer.fields()
|
||||
fields.append(QgsField(fieldName, self.TYPES[fieldType], '',
|
||||
fieldLength, fieldPrecision))
|
||||
writer = output.getVectorWriter(fields, provider.wkbType(),
|
||||
writer = output.getVectorWriter(fields, layer.wkbType(),
|
||||
layer.crs())
|
||||
outFeat = QgsFeature()
|
||||
new_ns = {}
|
||||
@ -107,7 +106,7 @@ class FieldsPyculator(GeoAlgorithm):
|
||||
self.tr("FieldPyculator code execute error.Global code block can't be executed!\n%s\n%s") % (unicode(sys.exc_info()[0].__name__), unicode(sys.exc_info()[1])))
|
||||
|
||||
# Replace all fields tags
|
||||
fields = provider.fields()
|
||||
fields = layer.fields()
|
||||
num = 0
|
||||
for field in fields:
|
||||
field_name = unicode(field.name())
|
||||
|
@ -94,12 +94,11 @@ class FieldsCalculator(GeoAlgorithm):
|
||||
output.value = system.getTempFilenameInTempFolder(
|
||||
output.name + '.' + ext)
|
||||
|
||||
provider = layer.dataProvider()
|
||||
fields = layer.pendingFields()
|
||||
fields = layer.fields()
|
||||
if newField:
|
||||
fields.append(QgsField(fieldName, fieldType, '', width, precision))
|
||||
|
||||
writer = output.getVectorWriter(fields, provider.wkbType(),
|
||||
writer = output.getVectorWriter(fields, layer.wkbType(),
|
||||
layer.crs())
|
||||
|
||||
exp = QgsExpression(formula)
|
||||
|
@ -68,7 +68,6 @@ class FieldsMapper(GeoAlgorithm):
|
||||
output = self.getOutputFromName(self.OUTPUT_LAYER)
|
||||
|
||||
layer = dataobjects.getObjectFromUri(layer)
|
||||
provider = layer.dataProvider()
|
||||
fields = []
|
||||
expressions = []
|
||||
|
||||
@ -109,7 +108,7 @@ class FieldsMapper(GeoAlgorithm):
|
||||
expressions.append(expression)
|
||||
|
||||
writer = output.getVectorWriter(fields,
|
||||
provider.wkbType(),
|
||||
layer.wkbType(),
|
||||
layer.crs())
|
||||
|
||||
# Create output vector layer with new attributes
|
||||
|
@ -73,12 +73,11 @@ class Intersection(GeoAlgorithm):
|
||||
self.getParameterValue(self.INPUT))
|
||||
vlayerB = dataobjects.getObjectFromUri(
|
||||
self.getParameterValue(self.INPUT2))
|
||||
vproviderA = vlayerA.dataProvider()
|
||||
|
||||
geomType = vproviderA.wkbType()
|
||||
geomType = vlayerA.wkbType()
|
||||
fields = vector.combineVectorFields(vlayerA, vlayerB)
|
||||
writer = self.getOutputFromName(self.OUTPUT).getVectorWriter(fields,
|
||||
geomType, vproviderA.crs())
|
||||
geomType, vlayerA.crs())
|
||||
outFeat = QgsFeature()
|
||||
index = vector.spatialindex(vlayerB)
|
||||
selectionA = vector.features(vlayerA)
|
||||
|
@ -69,14 +69,13 @@ class JoinAttributes(GeoAlgorithm):
|
||||
field2 = self.getParameterValue(self.TABLE_FIELD_2)
|
||||
|
||||
layer = dataobjects.getObjectFromUri(input)
|
||||
provider = layer.dataProvider()
|
||||
joinField1Index = layer.fieldNameIndex(field)
|
||||
|
||||
layer2 = dataobjects.getObjectFromUri(input2)
|
||||
joinField2Index = layer2.fieldNameIndex(field2)
|
||||
|
||||
outFields = vector.combineVectorFields(layer, layer2)
|
||||
writer = output.getVectorWriter(outFields, provider.wkbType(),
|
||||
writer = output.getVectorWriter(outFields, layer.wkbType(),
|
||||
layer.crs())
|
||||
|
||||
# Cache attributes of Layer 2
|
||||
|
@ -86,7 +86,7 @@ class LinesIntersection(GeoAlgorithm):
|
||||
layerB.pendingFields()[idxB]]
|
||||
|
||||
writer = self.getOutputFromName(self.OUTPUT).getVectorWriter(fieldList,
|
||||
QgsWkbTypes.Point, layerA.dataProvider().crs())
|
||||
QgsWkbTypes.Point, layerA.crs())
|
||||
|
||||
spatialIndex = vector.spatialindex(layerB)
|
||||
|
||||
|
@ -66,14 +66,14 @@ class Merge(GeoAlgorithm):
|
||||
layer = QgsVectorLayer(paths[x], unicode(x), 'ogr')
|
||||
|
||||
if (len(layers) > 0):
|
||||
if (layer.dataProvider().wkbType() != layers[0].dataProvider().wkbType()):
|
||||
if (layer.wkbType() != layers[0].wkbType()):
|
||||
raise GeoAlgorithmExecutionException(
|
||||
self.tr('All layers must have same geometry type!'))
|
||||
|
||||
layers.append(layer)
|
||||
totalFeatureCount += layer.featureCount()
|
||||
|
||||
for sindex, sfield in enumerate(layer.dataProvider().fields()):
|
||||
for sindex, sfield in enumerate(layer.fields()):
|
||||
found = None
|
||||
for dfield in fields:
|
||||
if (dfield.name().upper() == sfield.name().upper()):
|
||||
@ -88,12 +88,12 @@ class Merge(GeoAlgorithm):
|
||||
|
||||
total = 100.0 / totalFeatureCount
|
||||
writer = self.getOutputFromName(self.OUTPUT).getVectorWriter(
|
||||
fields.toList(), layers[0].dataProvider().wkbType(),
|
||||
fields.toList(), layers[0].wkbType(),
|
||||
layers[0].crs())
|
||||
|
||||
featureCount = 0
|
||||
for layer in layers:
|
||||
for feature in layer.dataProvider().getFeatures():
|
||||
for feature in layer.getFeatures():
|
||||
sattributes = feature.attributes()
|
||||
dattributes = []
|
||||
for dindex, dfield in enumerate(fields):
|
||||
@ -104,7 +104,7 @@ class Merge(GeoAlgorithm):
|
||||
else:
|
||||
dattribute = ''
|
||||
|
||||
for sindex, sfield in enumerate(layer.dataProvider().fields()):
|
||||
for sindex, sfield in enumerate(layer.fields()):
|
||||
if (sfield.name().upper() == dfield.name().upper()):
|
||||
if (sfield.type() != dfield.type()):
|
||||
raise GeoAlgorithmExecutionException(
|
||||
|
@ -59,12 +59,11 @@ class MergeLines(GeoAlgorithm):
|
||||
def processAlgorithm(self, progress):
|
||||
layer = dataobjects.getObjectFromUri(
|
||||
self.getParameterValue(self.INPUT_LAYER))
|
||||
provider = layer.dataProvider()
|
||||
|
||||
writer = self.getOutputFromName(
|
||||
self.OUTPUT_LAYER).getVectorWriter(
|
||||
layer.fields().toList(),
|
||||
provider.wkbType(),
|
||||
layer.wkbType(),
|
||||
layer.crs())
|
||||
|
||||
features = vector.features(layer)
|
||||
|
@ -58,7 +58,7 @@ class MultipartToSingleparts(GeoAlgorithm):
|
||||
def processAlgorithm(self, progress):
|
||||
layer = dataobjects.getObjectFromUri(self.getParameterValue(self.INPUT))
|
||||
|
||||
geomType = self.multiToSingleGeom(layer.dataProvider().wkbType())
|
||||
geomType = self.multiToSingleGeom(layer.wkbType())
|
||||
|
||||
writer = self.getOutputFromName(self.OUTPUT).getVectorWriter(
|
||||
layer.pendingFields().toList(), geomType, layer.crs())
|
||||
@ -87,41 +87,41 @@ class MultipartToSingleparts(GeoAlgorithm):
|
||||
|
||||
def multiToSingleGeom(self, wkbType):
|
||||
try:
|
||||
if wkbType in (QgsWkbTypes.Point, QgsWkbTypes.MultiPoint,
|
||||
QgsWkbTypes.Point25D, QgsWkbTypes.MultiPoint25D):
|
||||
return QgsWkbTypes.Point
|
||||
elif wkbType in (QgsWkbTypes.LineString, QgsWkbTypes.MultiLineString,
|
||||
QgsWkbTypes.MultiLineString25D,
|
||||
QgsWkbTypes.LineString25D):
|
||||
if wkbType in (Qgis.WKBPoint, Qgis.WKBMultiPoint,
|
||||
Qgis.WKBPoint25D, Qgis.WKBMultiPoint25D):
|
||||
return Qgis.WKBPoint
|
||||
elif wkbType in (Qgis.WKBLineString, Qgis.WKBMultiLineString,
|
||||
Qgis.WKBMultiLineString25D,
|
||||
Qgis.WKBLineString25D):
|
||||
|
||||
return QgsWkbTypes.LineString
|
||||
elif wkbType in (QgsWkbTypes.Polygon, QgsWkbTypes.MultiPolygon,
|
||||
QgsWkbTypes.MultiPolygon25D, QgsWkbTypes.Polygon25D):
|
||||
return Qgis.WKBLineString
|
||||
elif wkbType in (Qgis.WKBPolygon, Qgis.WKBMultiPolygon,
|
||||
Qgis.WKBMultiPolygon25D, Qgis.WKBPolygon25D):
|
||||
|
||||
return QgsWkbTypes.Polygon
|
||||
return Qgis.WKBPolygon
|
||||
else:
|
||||
return QgsWkbTypes.Unknown
|
||||
return Qgis.WKBUnknown
|
||||
except Exception as err:
|
||||
raise GeoAlgorithmExecutionException(unicode(err))
|
||||
|
||||
def extractAsSingle(self, geom):
|
||||
multiGeom = QgsGeometry()
|
||||
geometries = []
|
||||
if geom.type() == QgsWkbTypes.PointGeometry:
|
||||
if geom.type() == Qgis.Point:
|
||||
if geom.isMultipart():
|
||||
multiGeom = geom.asMultiPoint()
|
||||
for i in multiGeom:
|
||||
geometries.append(QgsGeometry().fromPoint(i))
|
||||
else:
|
||||
geometries.append(geom)
|
||||
elif geom.type() == QgsWkbTypes.LineGeometry:
|
||||
elif geom.type() == Qgis.Line:
|
||||
if geom.isMultipart():
|
||||
multiGeom = geom.asMultiPolyline()
|
||||
for i in multiGeom:
|
||||
geometries.append(QgsGeometry().fromPolyline(i))
|
||||
else:
|
||||
geometries.append(geom)
|
||||
elif geom.type() == QgsWkbTypes.PolygonGeometry:
|
||||
elif geom.type() == Qgis.Polygon:
|
||||
if geom.isMultipart():
|
||||
multiGeom = geom.asMultiPolygon()
|
||||
for i in multiGeom:
|
||||
|
@ -82,11 +82,10 @@ class OrientedMinimumBoundingBox(GeoAlgorithm):
|
||||
|
||||
def layerOmmb(self, layer, writer, progress):
|
||||
current = 0
|
||||
vprovider = layer.dataProvider()
|
||||
|
||||
fit = vprovider.getFeatures()
|
||||
fit = layer.getFeatures()
|
||||
inFeat = QgsFeature()
|
||||
total = 100.0 / vprovider.featureCount()
|
||||
total = 100.0 / layer.featureCount()
|
||||
newgeometry = QgsGeometry()
|
||||
first = True
|
||||
while fit.nextFeature(inFeat):
|
||||
|
@ -62,9 +62,8 @@ class PointsDisplacement(GeoAlgorithm):
|
||||
|
||||
layer = dataobjects.getObjectFromUri(self.getParameterValue(self.INPUT_LAYER))
|
||||
|
||||
provider = layer.dataProvider()
|
||||
writer = output.getVectorWriter(provider.fields(),
|
||||
provider.wkbType(), provider.crs())
|
||||
writer = output.getVectorWriter(layer.fields(),
|
||||
layer.wkbType(), layer.crs())
|
||||
|
||||
features = vector.features(layer)
|
||||
|
||||
|
@ -68,15 +68,14 @@ class PointsInPolygon(GeoAlgorithm):
|
||||
pointLayer = dataobjects.getObjectFromUri(self.getParameterValue(self.POINTS))
|
||||
fieldName = self.getParameterValue(self.FIELD)
|
||||
|
||||
polyProvider = polyLayer.dataProvider()
|
||||
fields = polyProvider.fields()
|
||||
fields = polyLayer.fields()
|
||||
fields.append(QgsField(fieldName, QVariant.Int))
|
||||
|
||||
(idxCount, fieldList) = vector.findOrCreateField(polyLayer,
|
||||
polyLayer.pendingFields(), fieldName)
|
||||
polyLayer.fields(), fieldName)
|
||||
|
||||
writer = self.getOutputFromName(self.OUTPUT).getVectorWriter(
|
||||
fields.toList(), polyProvider.geometryType(), polyProvider.crs())
|
||||
fields.toList(), polyLayer.wkbType(), polyLayer.crs())
|
||||
|
||||
spatialIndex = vector.spatialindex(pointLayer)
|
||||
|
||||
|
@ -62,8 +62,7 @@ class PointsInPolygonUnique(GeoAlgorithm):
|
||||
fieldName = self.getParameterValue(self.FIELD)
|
||||
classFieldName = self.getParameterValue(self.CLASSFIELD)
|
||||
|
||||
polyProvider = polyLayer.dataProvider()
|
||||
fields = polyProvider.fields()
|
||||
fields = polyLayer.fields()
|
||||
fields.append(QgsField(fieldName, QVariant.Int))
|
||||
|
||||
classFieldIndex = pointLayer.fieldNameIndex(classFieldName)
|
||||
@ -71,7 +70,7 @@ class PointsInPolygonUnique(GeoAlgorithm):
|
||||
polyLayer.pendingFields(), fieldName)
|
||||
|
||||
writer = self.getOutputFromName(self.OUTPUT).getVectorWriter(
|
||||
fields.toList(), polyProvider.geometryType(), polyProvider.crs())
|
||||
fields.toList(), polyLayer.wkbType(), polyLayer.crs())
|
||||
|
||||
spatialIndex = vector.spatialindex(pointLayer)
|
||||
|
||||
|
@ -69,15 +69,14 @@ class PointsInPolygonWeighted(GeoAlgorithm):
|
||||
fieldName = self.getParameterValue(self.FIELD)
|
||||
fieldIdx = pointLayer.fieldNameIndex(self.getParameterValue(self.WEIGHT))
|
||||
|
||||
polyProvider = polyLayer.dataProvider()
|
||||
fields = polyProvider.fields()
|
||||
fields = polyLayer.fields()
|
||||
fields.append(QgsField(fieldName, QVariant.Int))
|
||||
|
||||
(idxCount, fieldList) = vector.findOrCreateField(polyLayer,
|
||||
polyLayer.pendingFields(), fieldName)
|
||||
polyLayer.fields(), fieldName)
|
||||
|
||||
writer = self.getOutputFromName(self.OUTPUT).getVectorWriter(
|
||||
fields.toList(), polyProvider.geometryType(), polyProvider.crs())
|
||||
fields.toList(), polyLayer.wkbType(), polyLayer.crs())
|
||||
|
||||
spatialIndex = vector.spatialindex(pointLayer)
|
||||
|
||||
|
@ -63,8 +63,7 @@ class PointsLayerFromTable(GeoAlgorithm):
|
||||
source = self.getParameterValue(self.INPUT)
|
||||
vlayer = dataobjects.getObjectFromUri(source)
|
||||
output = self.getOutputFromName(self.OUTPUT)
|
||||
vprovider = vlayer.dataProvider()
|
||||
fields = vprovider.fields()
|
||||
fields = vlayer.fields()
|
||||
writer = output.getVectorWriter(fields, QgsWkbTypes.Point, self.crs)
|
||||
xfieldindex = vlayer.fieldNameIndex(self.getParameterValue(self.XFIELD))
|
||||
yfieldindex = vlayer.fieldNameIndex(self.getParameterValue(self.YFIELD))
|
||||
|
@ -81,7 +81,7 @@ class PointsToPaths(GeoAlgorithm):
|
||||
fields.append(QgsField('begin', QVariant.String, '', 254, 0))
|
||||
fields.append(QgsField('end', QVariant.String, '', 254, 0))
|
||||
writer = self.getOutputFromName(self.OUTPUT_LINES).getVectorWriter(
|
||||
fields, QgsWkbTypes.LineString, layer.dataProvider().crs())
|
||||
fields, QgsWkbTypes.LineString, layer.crs())
|
||||
|
||||
points = dict()
|
||||
features = vector.features(layer)
|
||||
|
@ -60,9 +60,8 @@ class Polygonize(GeoAlgorithm):
|
||||
def processAlgorithm(self, progress):
|
||||
vlayer = dataobjects.getObjectFromUri(self.getParameterValue(self.INPUT))
|
||||
output = self.getOutputFromName(self.OUTPUT)
|
||||
vprovider = vlayer.dataProvider()
|
||||
if self.getParameterValue(self.FIELDS):
|
||||
fields = vprovider.fields()
|
||||
fields = vlayer.fields()
|
||||
else:
|
||||
fields = QgsFields()
|
||||
if self.getParameterValue(self.GEOMETRY):
|
||||
|
@ -68,7 +68,7 @@ class RandomPointsAlongLines(GeoAlgorithm):
|
||||
fields = QgsFields()
|
||||
fields.append(QgsField('id', QVariant.Int, '', 10, 0))
|
||||
writer = self.getOutputFromName(self.OUTPUT).getVectorWriter(
|
||||
fields, QgsWkbTypes.Point, layer.dataProvider().crs())
|
||||
fields, QgsWkbTypes.Point, layer.crs())
|
||||
|
||||
nPoints = 0
|
||||
nIterations = 0
|
||||
|
@ -77,7 +77,7 @@ class RandomPointsLayer(GeoAlgorithm):
|
||||
fields = QgsFields()
|
||||
fields.append(QgsField('id', QVariant.Int, '', 10, 0))
|
||||
writer = self.getOutputFromName(self.OUTPUT).getVectorWriter(
|
||||
fields, QgsWkbTypes.Point, layer.dataProvider().crs())
|
||||
fields, QgsWkbTypes.Point, layer.crs())
|
||||
|
||||
nPoints = 0
|
||||
nIterations = 0
|
||||
|
@ -83,7 +83,7 @@ class RandomPointsPolygonsFixed(GeoAlgorithm):
|
||||
fields = QgsFields()
|
||||
fields.append(QgsField('id', QVariant.Int, '', 10, 0))
|
||||
writer = self.getOutputFromName(self.OUTPUT).getVectorWriter(
|
||||
fields, QgsWkbTypes.Point, layer.dataProvider().crs())
|
||||
fields, QgsWkbTypes.Point, layer.crs())
|
||||
|
||||
da = QgsDistanceArea()
|
||||
|
||||
|
@ -84,7 +84,7 @@ class RandomPointsPolygonsVariable(GeoAlgorithm):
|
||||
fields = QgsFields()
|
||||
fields.append(QgsField('id', QVariant.Int, '', 10, 0))
|
||||
writer = self.getOutputFromName(self.OUTPUT).getVectorWriter(
|
||||
fields, QgsWkbTypes.Point, layer.dataProvider().crs())
|
||||
fields, QgsWkbTypes.Point, layer.crs())
|
||||
|
||||
da = QgsDistanceArea()
|
||||
|
||||
|
@ -49,12 +49,11 @@ class ReverseLineDirection(GeoAlgorithm):
|
||||
def processAlgorithm(self, progress):
|
||||
layer = dataobjects.getObjectFromUri(
|
||||
self.getParameterValue(self.INPUT_LAYER))
|
||||
provider = layer.dataProvider()
|
||||
|
||||
writer = self.getOutputFromName(
|
||||
self.OUTPUT_LAYER).getVectorWriter(
|
||||
layer.fields().toList(),
|
||||
provider.wkbType(),
|
||||
layer.wkbType(),
|
||||
layer.crs())
|
||||
|
||||
outFeat = QgsFeature()
|
||||
|
@ -52,9 +52,8 @@ class SaveSelectedFeatures(GeoAlgorithm):
|
||||
|
||||
vectorLayer = dataobjects.getObjectFromUri(inputFilename)
|
||||
|
||||
provider = vectorLayer.dataProvider()
|
||||
writer = output.getVectorWriter(provider.fields(),
|
||||
provider.wkbType(), vectorLayer.crs())
|
||||
writer = output.getVectorWriter(vectorLayer.fields(),
|
||||
vectorLayer.wkbType(), vectorLayer.crs())
|
||||
|
||||
features = vector.features(vectorLayer)
|
||||
total = 100.0 / len(features)
|
||||
|
@ -64,7 +64,7 @@ class SinglePartsToMultiparts(GeoAlgorithm):
|
||||
layer = dataobjects.getObjectFromUri(self.getParameterValue(self.INPUT))
|
||||
fieldName = self.getParameterValue(self.FIELD)
|
||||
|
||||
geomType = self.singleToMultiGeom(layer.dataProvider().wkbType())
|
||||
geomType = self.singleToMultiGeom(layer.wkbType())
|
||||
|
||||
writer = self.getOutputFromName(self.OUTPUT).getVectorWriter(
|
||||
layer.pendingFields().toList(), geomType, layer.crs())
|
||||
|
@ -55,14 +55,13 @@ class Smooth(GeoAlgorithm):
|
||||
def processAlgorithm(self, progress):
|
||||
layer = dataobjects.getObjectFromUri(
|
||||
self.getParameterValue(self.INPUT_LAYER))
|
||||
provider = layer.dataProvider()
|
||||
iterations = self.getParameterValue(self.ITERATIONS)
|
||||
offset = self.getParameterValue(self.OFFSET)
|
||||
|
||||
writer = self.getOutputFromName(
|
||||
self.OUTPUT_LAYER).getVectorWriter(
|
||||
layer.fields().toList(),
|
||||
provider.wkbType(),
|
||||
layer.wkbType(),
|
||||
layer.crs())
|
||||
|
||||
outFeat = QgsFeature()
|
||||
|
@ -108,11 +108,8 @@ class SpatialJoin(GeoAlgorithm):
|
||||
|
||||
sumList = self.getParameterValue(self.STATS).lower().split(',')
|
||||
|
||||
targetProvider = target.dataProvider()
|
||||
joinProvider = join.dataProvider()
|
||||
|
||||
targetFields = targetProvider.fields()
|
||||
joinFields = joinProvider.fields()
|
||||
targetFields = target.fields()
|
||||
joinFields = join.fields()
|
||||
|
||||
fieldList = QgsFields()
|
||||
|
||||
@ -141,7 +138,7 @@ class SpatialJoin(GeoAlgorithm):
|
||||
fields.append(f)
|
||||
|
||||
writer = self.getOutputFromName(self.OUTPUT).getVectorWriter(
|
||||
fields, targetProvider.geometryType(), targetProvider.crs())
|
||||
fields, target.wkbType(), target.crs())
|
||||
|
||||
outFeat = QgsFeature()
|
||||
inFeatB = QgsFeature()
|
||||
|
@ -60,7 +60,7 @@ class SplitLinesWithLines(GeoAlgorithm):
|
||||
fieldList = layerA.pendingFields()
|
||||
|
||||
writer = self.getOutputFromName(self.OUTPUT).getVectorWriter(fieldList,
|
||||
QgsWkbTypes.LineString, layerA.dataProvider().crs())
|
||||
QgsWkbTypes.LineString, layerA.crs())
|
||||
|
||||
spatialIndex = vector.spatialindex(layerB)
|
||||
|
||||
|
@ -72,15 +72,13 @@ class SumLines(GeoAlgorithm):
|
||||
lengthFieldName = self.getParameterValue(self.LEN_FIELD)
|
||||
countFieldName = self.getParameterValue(self.COUNT_FIELD)
|
||||
|
||||
polyProvider = polyLayer.dataProvider()
|
||||
|
||||
(idxLength, fieldList) = vector.findOrCreateField(polyLayer,
|
||||
polyLayer.pendingFields(), lengthFieldName)
|
||||
polyLayer.fields(), lengthFieldName)
|
||||
(idxCount, fieldList) = vector.findOrCreateField(polyLayer, fieldList,
|
||||
countFieldName)
|
||||
|
||||
writer = self.getOutputFromName(self.OUTPUT).getVectorWriter(
|
||||
fieldList.toList(), polyProvider.geometryType(), polyProvider.crs())
|
||||
fieldList.toList(), polyLayer.wkbType(), polyLayer.crs())
|
||||
|
||||
spatialIndex = vector.spatialindex(lineLayer)
|
||||
|
||||
|
@ -65,13 +65,10 @@ class SymmetricalDifference(GeoAlgorithm):
|
||||
layerB = dataobjects.getObjectFromUri(
|
||||
self.getParameterValue(self.OVERLAY))
|
||||
|
||||
providerA = layerA.dataProvider()
|
||||
providerB = layerB.dataProvider()
|
||||
|
||||
geomType = providerA.geometryType()
|
||||
geomType = layerA.wkbType()
|
||||
fields = vector.combineVectorFields(layerA, layerB)
|
||||
writer = self.getOutputFromName(self.OUTPUT).getVectorWriter(
|
||||
fields, geomType, providerA.crs())
|
||||
fields, geomType, layerA.crs())
|
||||
|
||||
featB = QgsFeature()
|
||||
outFeat = QgsFeature()
|
||||
@ -92,7 +89,7 @@ class SymmetricalDifference(GeoAlgorithm):
|
||||
attrs = featA.attributes()
|
||||
intersects = indexA.intersects(geom.boundingBox())
|
||||
for i in intersects:
|
||||
providerB.getFeatures(QgsFeatureRequest().setFilterFid(i)).nextFeature(featB)
|
||||
layerB.getFeatures(QgsFeatureRequest().setFilterFid(i)).nextFeature(featB)
|
||||
tmpGeom = featB.geometry()
|
||||
if diffGeom.intersects(tmpGeom):
|
||||
diffGeom = QgsGeometry(diffGeom.difference(tmpGeom))
|
||||
@ -117,7 +114,7 @@ class SymmetricalDifference(GeoAlgorithm):
|
||||
count += 1
|
||||
progress.setPercentage(int(count * total))
|
||||
|
||||
length = len(providerA.fields())
|
||||
length = len(layerA.fields())
|
||||
|
||||
for featA in featuresB:
|
||||
add = True
|
||||
@ -127,7 +124,7 @@ class SymmetricalDifference(GeoAlgorithm):
|
||||
attrs = [NULL] * length + attrs
|
||||
intersects = indexB.intersects(geom.boundingBox())
|
||||
for i in intersects:
|
||||
providerA.getFeatures(QgsFeatureRequest().setFilterFid(i)).nextFeature(featB)
|
||||
layerA.getFeatures(QgsFeatureRequest().setFilterFid(i)).nextFeature(featB)
|
||||
tmpGeom = featB.geometry()
|
||||
if diffGeom.intersects(tmpGeom):
|
||||
diffGeom = QgsGeometry(diffGeom.difference(tmpGeom))
|
||||
|
@ -72,12 +72,10 @@ class Union(GeoAlgorithm):
|
||||
vlayerA = dataobjects.getObjectFromUri(self.getParameterValue(Union.INPUT))
|
||||
vlayerB = dataobjects.getObjectFromUri(self.getParameterValue(Union.INPUT2))
|
||||
|
||||
vproviderA = vlayerA.dataProvider()
|
||||
|
||||
geomType = vproviderA.wkbType()
|
||||
geomType = vlayerA.wkbType()
|
||||
fields = vector.combineVectorFields(vlayerA, vlayerB)
|
||||
writer = self.getOutputFromName(Union.OUTPUT).getVectorWriter(fields,
|
||||
geomType, vproviderA.crs())
|
||||
geomType, vlayerA.crs())
|
||||
inFeatA = QgsFeature()
|
||||
inFeatB = QgsFeature()
|
||||
outFeat = QgsFeature()
|
||||
@ -175,7 +173,7 @@ class Union(GeoAlgorithm):
|
||||
ProcessingLog.addToLog(ProcessingLog.LOG_INFO,
|
||||
self.tr('Feature geometry error: One or more output features ignored due to invalid geometry.'))
|
||||
|
||||
length = len(vproviderA.fields())
|
||||
length = len(vlayerA.fields())
|
||||
atMapA = [None] * length
|
||||
|
||||
featuresA = vector.features(vlayerB)
|
||||
|
@ -71,7 +71,7 @@ class VectorSplit(GeoAlgorithm):
|
||||
baseName = os.path.join(directory, '{0}_{1}'.format(layer.name(), fieldName))
|
||||
|
||||
fields = layer.pendingFields()
|
||||
crs = layer.dataProvider().crs()
|
||||
crs = layer.crs()
|
||||
geomType = layer.wkbType()
|
||||
|
||||
total = 100.0 / len(uniqueValues)
|
||||
|
@ -158,7 +158,7 @@ class ZonalStatistics(GeoAlgorithm):
|
||||
columnPrefix + 'mode', 21, 6)
|
||||
|
||||
writer = self.getOutputFromName(self.OUTPUT_LAYER).getVectorWriter(
|
||||
fields.toList(), layer.dataProvider().wkbType(), layer.crs())
|
||||
fields.toList(), layer.wkbType(), layer.crs())
|
||||
|
||||
outFeat = QgsFeature()
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user