mirror of
https://github.com/qgis/QGIS.git
synced 2025-04-19 00:04:52 -04:00
[FEATURE][processing] New algorithm to truncate tables
Irretrievably deletes all features from a table... use with caution!
This commit is contained in:
parent
bce716c8b1
commit
e5e0ec51eb
@ -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.
|
||||
|
||||
|
@ -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:
|
||||
|
59
python/plugins/processing/algs/qgis/TruncateTable.py
Normal file
59
python/plugins/processing/algs/qgis/TruncateTable.py
Normal 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)
|
1
python/plugins/processing/tests/testdata/expected/truncated.cpg
vendored
Normal file
1
python/plugins/processing/tests/testdata/expected/truncated.cpg
vendored
Normal file
@ -0,0 +1 @@
|
||||
UTF-8
|
BIN
python/plugins/processing/tests/testdata/expected/truncated.dbf
vendored
Normal file
BIN
python/plugins/processing/tests/testdata/expected/truncated.dbf
vendored
Normal file
Binary file not shown.
1
python/plugins/processing/tests/testdata/expected/truncated.prj
vendored
Normal file
1
python/plugins/processing/tests/testdata/expected/truncated.prj
vendored
Normal 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]]
|
1
python/plugins/processing/tests/testdata/expected/truncated.qpj
vendored
Normal file
1
python/plugins/processing/tests/testdata/expected/truncated.qpj
vendored
Normal 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"]]
|
BIN
python/plugins/processing/tests/testdata/expected/truncated.shp
vendored
Normal file
BIN
python/plugins/processing/tests/testdata/expected/truncated.shp
vendored
Normal file
Binary file not shown.
BIN
python/plugins/processing/tests/testdata/expected/truncated.shx
vendored
Normal file
BIN
python/plugins/processing/tests/testdata/expected/truncated.shx
vendored
Normal file
Binary file not shown.
@ -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
|
||||
|
Loading…
x
Reference in New Issue
Block a user