gvsig-scripting / org.gvsig.scripting / trunk / org.gvsig.scripting / org.gvsig.scripting.app / org.gvsig.scripting.app.mainplugin / src / main / resources-plugin / scripting / scripts / examples / geoprocess / proceso_desplazamientoxy.py @ 475
History | View | Annotate | Download (3.5 KB)
1 |
|
---|---|
2 |
|
3 |
execfile( script.getResource("../libs/import_utils.py").getAbsolutePath() ) |
4 |
|
5 |
use_plugin("org.gvsig.geoprocess.app.mainplugin")
|
6 |
|
7 |
|
8 |
import_from_module("..libs.toolbox","*") |
9 |
|
10 |
from gvsig import * |
11 |
from commonsdialog import * |
12 |
|
13 |
class XYShift(ToolboxProcess): |
14 |
|
15 |
def defineCharacteristics(self): |
16 |
"""
|
17 |
En esta operacion debemos definir los parametros de netrada y salida que va a precisar nuetro proceso.
|
18 |
"""
|
19 |
# Fijamos el nombre con el que se va a mostrar nuestro proceso
|
20 |
self.setName("Prueba desplazamiento en X e Y") |
21 |
|
22 |
# Indicamos el grupo en el que aparecera
|
23 |
self.setGroup("Vectorial") |
24 |
|
25 |
params = self.getParameters()
|
26 |
# Indicamos que precisamos un parametro LAYER, del tipo punto y que es obligatorio
|
27 |
params.addInputVectorLayer("LAYER","Caoa de entrada", SHAPE_TYPE_POINT,True) |
28 |
# Indicamos que precisamos un par de valores numericos, X e Y
|
29 |
params.addNumericalValue("X", "X_traslation",0, NUMERICAL_VALUE_DOUBLE) |
30 |
params.addNumericalValue("Y", "Y_traslation", 0, NUMERICAL_VALUE_DOUBLE) |
31 |
|
32 |
# Y por ultimo indicamos que precisaremos una capa de salida de puntos.
|
33 |
self.addOutputVectorLayer("RESULT_POINT", "XYShift_point", SHAPE_TYPE_POINT) |
34 |
|
35 |
def processAlgorithm(self): |
36 |
"""
|
37 |
Esta operacion es la encargada de realizar nuetro proceso.
|
38 |
"""
|
39 |
features=None
|
40 |
try:
|
41 |
"""
|
42 |
Recogemos los parametros y creamos el conjunto de entidades asociadas a la capa
|
43 |
de entrada.
|
44 |
"""
|
45 |
params = self.getParameters()
|
46 |
layer = params.getParameterValueAsVectorLayer("LAYER")
|
47 |
x = params.getParameterValueAsDouble("X")
|
48 |
y = params.getParameterValueAsDouble("Y")
|
49 |
|
50 |
input_store = layer.getFeatureStore() |
51 |
|
52 |
features = input_store.getFeatureSet() |
53 |
|
54 |
"""
|
55 |
Generamos la capa de salida con la misma estructura que la capa de entrada
|
56 |
"""
|
57 |
output_store = self.buildOutPutStore(
|
58 |
features.getDefaultFeatureType(), |
59 |
SHAPE_TYPE_POINT, |
60 |
"XYShift_points",
|
61 |
"RESULT_POINT"
|
62 |
) |
63 |
|
64 |
"""
|
65 |
Nos recorremos todas las entidades de entrada, y creamos las de salida desplazando la geometria
|
66 |
en los valores indicados por la X e Y de los parametros.
|
67 |
"""
|
68 |
self.setRangeOfValues(0,features.getSize()) |
69 |
for feature in features.iterator(): |
70 |
if self.isCanceled(): |
71 |
# Si el usuario indico que quiere cancelar el proceso abortamos.
|
72 |
print "Proceso cancelado" |
73 |
break
|
74 |
|
75 |
# Incrementamos el progreso de nuestro proceso.
|
76 |
self.next()
|
77 |
|
78 |
# Creamos una nueva entidad para nuestro almacen de salida.
|
79 |
newfeature = self.createNewFeature(output_store,feature)
|
80 |
|
81 |
# Desplazamos la geometria de la nueva entidad
|
82 |
geom = newfeature.getDefaultGeometry() |
83 |
geom.move(x,y) |
84 |
|
85 |
# Guardamos la nueva entidad
|
86 |
output_store.insert(newfeature) |
87 |
|
88 |
# Cuando hemos terminado de recorrernos las entidades terminamos la edicion.
|
89 |
output_store.finishEditing() |
90 |
|
91 |
finally:
|
92 |
DisposeUtils.disposeQuietly(features) |
93 |
print "Proceso terminado %s" % self.getCommandLineName() |
94 |
|
95 |
|
96 |
def main(*args): |
97 |
# Creamos nuesto geoproceso
|
98 |
process = XYShift() |
99 |
# Lo registramos entre los procesos disponibles en el grupo de "Scripting"
|
100 |
process.selfregister("Scripting")
|
101 |
# Actualizamos el interface de usuario de la Toolbox
|
102 |
process.updateToolbox() |
103 |
msgbox("Incorporado el script '%s/%s/%s' a la paleta de geoprocesos." % (
|
104 |
"Scripting",
|
105 |
process.getGroup(), |
106 |
process.getName() |
107 |
) |
108 |
) |