gvsig-scripting / org.gvsig.scripting / trunk / org.gvsig.scripting / org.gvsig.scripting.app / org.gvsig.scripting.app.mainplugin / src / main / resources-plugin / scripting / scripts / libs / toolbox.py @ 478
History | View | Annotate | Download (4.04 KB)
1 |
#
|
---|---|
2 |
# ==========================================================
|
3 |
#
|
4 |
# Declara la clase ToolboxProcess y declara una serie de
|
5 |
# constantes de utilidad para ser usadas en la creacion
|
6 |
# de geoprocesos.
|
7 |
# La clase ToolboxProcess esta pensada para ser usada como
|
8 |
# clase base para crear procesos desde scripting con python.
|
9 |
#
|
10 |
#
|
11 |
|
12 |
|
13 |
use_plugin("org.gvsig.geoprocess.app.mainplugin")
|
14 |
|
15 |
from org.gvsig.geoprocess.lib.sextante import AbstractSextanteGeoProcess |
16 |
from es.unex.sextante.outputs import OutputVectorLayer |
17 |
from es.unex.sextante.dataObjects import IVectorLayer |
18 |
from es.unex.sextante.additionalInfo import AdditionalInfoNumericalValue |
19 |
from org.gvsig.geoprocess.lib.api import GeoProcessLocator |
20 |
from es.unex.sextante.gui.core import SextanteGUI |
21 |
from org.gvsig.tools.dispose import DisposeUtils |
22 |
from es.unex.sextante.core import Sextante |
23 |
|
24 |
|
25 |
SHAPE_TYPE_POINT = IVectorLayer.SHAPE_TYPE_POINT |
26 |
SHAPE_TYPE_LINE = IVectorLayer.SHAPE_TYPE_LINE |
27 |
SHAPE_TYPE_POLYGON = IVectorLayer.SHAPE_TYPE_POLYGON |
28 |
SHAPE_TYPE_MIXED = IVectorLayer.SHAPE_TYPE_MIXED |
29 |
SHAPE_TYPE_MULTIPOINT = IVectorLayer.SHAPE_TYPE_MULTIPOINT |
30 |
SHAPE_TYPE_MULTILINE = IVectorLayer.SHAPE_TYPE_MULTILINE |
31 |
SHAPE_TYPE_MULTIPOLYGON = IVectorLayer.SHAPE_TYPE_MULTIPOLYGON |
32 |
SHAPE_TYPE_WRONG = IVectorLayer.SHAPE_TYPE_WRONG |
33 |
SHAPE_TYPE_UNDEFINED = SHAPE_TYPE_WRONG |
34 |
|
35 |
NUMERICAL_VALUE_INTEGER = AdditionalInfoNumericalValue.NUMERICAL_VALUE_INTEGER |
36 |
NUMERICAL_VALUE_DOUBLE = AdditionalInfoNumericalValue.NUMERICAL_VALUE_DOUBLE |
37 |
|
38 |
class ToolboxProcess(AbstractSextanteGeoProcess): |
39 |
|
40 |
def __init__(self): |
41 |
self.__maxrange = 0 |
42 |
self.__countrange = 0 |
43 |
|
44 |
def getCommandLineName(self): |
45 |
"""
|
46 |
Este metodo debe ser sobreescrito en Jython para que funcione correctamente el geoproceso.
|
47 |
No se debe sobreescribir en nuestro geoproceso.
|
48 |
"""
|
49 |
return self.__class__.__name__ |
50 |
|
51 |
def getNewInstance(self): |
52 |
"""
|
53 |
Este metodo debe ser sobreescrito en Jython para que funcione correctamente el geoproceso.
|
54 |
No se debe sobreescribir en nuestro geoproceso.
|
55 |
"""
|
56 |
alg = self.__class__()
|
57 |
alg.setName(self.getName())
|
58 |
alg.setGroup(self.getGroup())
|
59 |
|
60 |
alg.setParameters(self.getParameters().getNewInstance())
|
61 |
alg.setOutputObjects(self.getOutputObjects().getNewInstance())
|
62 |
return alg;
|
63 |
|
64 |
def setRangeOfValues(self,start,end): |
65 |
"""
|
66 |
Metodo que debe ser invocado para fijar los limites de la iteracion del geoproceso.
|
67 |
Se encarga de actualizar las barras de progreso asociadas a nuestros geoprocesos.
|
68 |
"""
|
69 |
self.__maxrange = end
|
70 |
self.__countrange = 0 |
71 |
self.getStatus().setRangeOfValues(1,end) |
72 |
self.setProgress(0, end) |
73 |
|
74 |
def next(self): |
75 |
"""
|
76 |
Incrementa el progreso de nuestro proceso.
|
77 |
"""
|
78 |
self.__countrange+=1 |
79 |
self.setCurValue(self.__countrange) |
80 |
|
81 |
def isCanceled(self): |
82 |
"""
|
83 |
Nos informa si el usuario a cancelado el proceso.
|
84 |
"""
|
85 |
return self.getTaskMonitor().isCanceled() |
86 |
|
87 |
def setCurValue(self,current): |
88 |
"""
|
89 |
Fija el progreso de nuestro proceso en el valor indicado como parametro.
|
90 |
"""
|
91 |
self.getStatus().setCurValue(current)
|
92 |
self.setProgress(current, self.__maxrange); |
93 |
|
94 |
def createNewFeature(self, store, feature=None): |
95 |
"""
|
96 |
Crea una nueva feature o entidad asociada al almacen (store) pasado como parametro.
|
97 |
Esta nueva feature podra ser insertada en el almancen inficado como parametro.
|
98 |
Si se ha indicado como parametro una feature, se copiaran los datos de esta sobre la nueva.
|
99 |
"""
|
100 |
newfeature = store.createNewFeature() |
101 |
if feature!=None: |
102 |
for field in newfeature.getType().iterator(): |
103 |
try:
|
104 |
value = feature.get(field.getName()) |
105 |
newfeature.set(field.getName(), value) |
106 |
except:
|
107 |
# Ignoramos errores ya que es facil que hayan campo que no existen en una u otra
|
108 |
# feature o que no son del mismo tipo.
|
109 |
pass
|
110 |
return newfeature
|
111 |
|
112 |
def selfregister(self, groupname): |
113 |
"""
|
114 |
Registra el geoproceso en la lista de geoprocesos disponibles.
|
115 |
"""
|
116 |
Sextante.addGeoalgorithm(groupname,self.__class__())
|
117 |
|
118 |
def updateToolbox(self): |
119 |
"""
|
120 |
Fuerza que se actualize el interface de usuario de la Toolbox.
|
121 |
"""
|
122 |
SextanteGUI.getGUIFactory().updateToolbox() |
123 |
|