[FEATURE][processing] New algorithm to truncate tables

Irretrievably deletes all features from a table... use with caution!
This commit is contained in:
Nyall Dawson 2017-01-06 10:12:05 +10:00
parent bce716c8b1
commit e5e0ec51eb
10 changed files with 81 additions and 1 deletions

View File

@ -540,6 +540,11 @@ qgis:texttofloat: >
qgis:translate: >
This algorithm moves the geometries within a layer, by offsetting them with a specified x and y displacement.
qgis:truncatetable: >
This algorithm truncates a layer, by deleting all features from within the layer.
Warning - this algorithm modifies the layer in place, and deleted features cannot be restored!
qgis:union: >
This algorithm creates a layer containing all the features from both input layers. In the case of polygon layers, separate features are created for overlapping and non-overlapping features. The attribute table of the union layer contains attribute values from the respective input layer for non-overlapping features, and attribute values from both input layers for overlapping features.

View File

@ -187,6 +187,7 @@ from .ShortestPathPointToLayer import ShortestPathPointToLayer
from .ShortestPathLayerToPoint import ShortestPathLayerToPoint
from .ServiceAreaFromPoint import ServiceAreaFromPoint
from .ServiceAreaFromLayer import ServiceAreaFromLayer
from .TruncateTable import TruncateTable
pluginPath = os.path.normpath(os.path.join(
os.path.split(os.path.dirname(__file__))[0], os.pardir))
@ -255,7 +256,7 @@ class QGISAlgorithmProvider(AlgorithmProvider):
RasterCalculator(), Heatmap(), Orthogonalize(),
ShortestPathPointToPoint(), ShortestPathPointToLayer(),
ShortestPathLayerToPoint(), ServiceAreaFromPoint(),
ServiceAreaFromLayer()
ServiceAreaFromLayer(), TruncateTable()
]
if hasMatplotlib:

View File

@ -0,0 +1,59 @@
# -*- coding: utf-8 -*-
"""
***************************************************************************
TruncateTable.py
-----------------------
Date : January 2017
Copyright : (C) 2017 by Nyall Dawson
Email : nyall dot dawson at gmail dot com
***************************************************************************
* *
* This program is free software; you can redistribute it and/or modify *
* it under the terms of the GNU General Public License as published by *
* the Free Software Foundation; either version 2 of the License, or *
* (at your option) any later version. *
* *
***************************************************************************
"""
__author__ = 'Nyall Dawson'
__date__ = 'January 2017'
__copyright__ = '(C) 2017, Nyall Dawson'
# This will get replaced with a git SHA1 when you do a git archive
__revision__ = '$Format:%H$'
from processing.core.GeoAlgorithm import GeoAlgorithm
from processing.core.parameters import ParameterTable
from processing.core.outputs import OutputVector
from processing.core.GeoAlgorithmExecutionException import GeoAlgorithmExecutionException
from processing.tools import dataobjects
class TruncateTable(GeoAlgorithm):
INPUT = 'INPUT'
OUTPUT = 'OUTPUT'
def defineCharacteristics(self):
self.name, self.i18n_name = self.trAlgorithm('Truncate table')
self.tags = self.tr('empty,delete,layer,clear,features')
self.group, self.i18n_group = self.trAlgorithm('Vector general tools')
self.addParameter(ParameterTable(self.INPUT,
self.tr('Input Layer')))
self.addOutput(OutputVector(self.OUTPUT,
self.tr('Truncated layer'), True))
def processAlgorithm(self, progress):
file_name = self.getParameterValue(self.INPUT)
layer = dataobjects.getObjectFromUri(file_name)
provider = layer.dataProvider()
if not provider.truncate():
raise GeoAlgorithmExecutionException(
self.tr('Could not truncate table.'))
self.setOutputValue(self.OUTPUT, file_name)

View File

@ -0,0 +1 @@
UTF-8

Binary file not shown.

View File

@ -0,0 +1 @@
GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137,298.257223563]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]]

View File

@ -0,0 +1 @@
GEOGCS["WGS 84",DATUM["WGS_1984",SPHEROID["WGS 84",6378137,298.257223563,AUTHORITY["EPSG","7030"]],AUTHORITY["EPSG","6326"]],PRIMEM["Greenwich",0,AUTHORITY["EPSG","8901"]],UNIT["degree",0.0174532925199433,AUTHORITY["EPSG","9122"]],AUTHORITY["EPSG","4326"]]

Binary file not shown.

Binary file not shown.

View File

@ -2118,3 +2118,15 @@ tests:
type: vector
in_place_result: true
- algorithm: qgis:truncatetable
name: Truncate table
params:
INPUT:
name: custom/points.shp
type: vector
in_place: true
results:
INPUT:
name: expected/truncated.shp
type: vector
in_place_result: true