12.05.2013 Views

Fundamentos de análisis geográfico con SEXTANTE - La Salle

Fundamentos de análisis geográfico con SEXTANTE - La Salle

Fundamentos de análisis geográfico con SEXTANTE - La Salle

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

20.2. LIBRERÍAS Y MÓDULOS 329<br />

);<br />

NULL, "PARMS", "Additional Parameters",<br />

""<br />

pNo<strong>de</strong>_1 = Parameters.Add_Value(<br />

pNo<strong>de</strong>_0, "PARM_LIN_B", "Linear Regression",<br />

"Parameter B for Linear Regression:\r\n y = Nugget + B * x",<br />

PARAMETER_TYPE_Double, 1.0<br />

);<br />

Un caso particular <strong>de</strong> lo anterior es el caso <strong>de</strong> requerir como entrada un campo <strong>de</strong> una<br />

tabla o <strong>de</strong> la tabla <strong>de</strong> atributos <strong>de</strong> una capa vectorial. En ese caso, la lista <strong>de</strong>splegable para<br />

elegir el campo <strong>de</strong>be ir lógicamente por <strong>de</strong>bajo <strong>de</strong>l parámetro que <strong>con</strong>tiene la capa vectorial o<br />

la tabla, pero a<strong>de</strong>más <strong>de</strong>be existir una <strong>de</strong>pen<strong>de</strong>ncia entre ambos, <strong>de</strong> tal modo que el <strong>con</strong>tenido<br />

<strong>de</strong> la lista se modifique en función <strong>de</strong> la capa o tabla seleccionada.<br />

Para ello, el método Add Table Field() se encarga automáticamente <strong>de</strong> gestionar esa <strong>de</strong>pen<strong>de</strong>ncia.<br />

El siguiente fragmento <strong>de</strong> código aña<strong>de</strong> a la ventana <strong>de</strong> parámetros un campo <strong>con</strong><br />

una capa vectorial y una lista para elegir un campo <strong>de</strong> entre los <strong>de</strong> la tabla <strong>de</strong> atributos <strong>de</strong> la<br />

misma, tal y como se ve en la figura mostrada seguidamente.<br />

pNo<strong>de</strong>_0 = Parameters.Add_Shapes(<br />

NULL, "INPUT", "Shapes",<br />

"",PARAMETER_INPUT<br />

);<br />

pNo<strong>de</strong>_1 = Parameters.Add_Table_Field(<br />

pNo<strong>de</strong>_0, "FIELD", "Attribute",""<br />

);<br />

20.2.2. El método On Execute()<br />

Una vez que la ventana <strong>de</strong> parámetros ha sido <strong>de</strong>finida, es hora <strong>de</strong> escribir los algoritmos<br />

que <strong>con</strong>stituyen el núcleo <strong>de</strong> nuestro módulo.<br />

Cuando el usuario introduce la información y hace clic en Aceptar, <strong>SEXTANTE</strong> llama al<br />

método On Execute(). Es aquí don<strong>de</strong> tienes que <strong>de</strong>sarrollar los algoritmos y don<strong>de</strong> el verda<strong>de</strong>ro<br />

procesado <strong>de</strong> los datos tiene lugar.<br />

Sin embargo, lo primero que <strong>de</strong>bemos hacer antes <strong>de</strong> escribir los algoritmos propiamente<br />

dichos es recoger la información introducida por el usuario y almacenarla en variables más<br />

prácticas para un uso cómodo. Esta información está recogida en el objeto Parameters, y<br />

pue<strong>de</strong> acce<strong>de</strong>rse a ella haciendo uso <strong>de</strong> métodos <strong>de</strong> la clase CParameters.<br />

Aquí pue<strong>de</strong>s ver el código correspondiente a esta parte en el módulo <strong>de</strong> ejemplo.<br />

pInput = Parameters("INPUT")->asGrid();<br />

pResult = Parameters("RESULT")->asGrid();<br />

d = Parameters("DOUBLE")->asDouble();<br />

Para obtener el valor <strong>de</strong> un parámetro, simplemente usa Parameters(i<strong>de</strong>ntificador <strong>de</strong>l parámetro)<br />

(esto te dará un puntero a dicho parámetro), y llama <strong>con</strong> él a alguno <strong>de</strong> los siguientes<br />

métodos, según el tipo <strong>de</strong> parámetro que sea.

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!