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

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

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

Ahora, para cada módulo que quieras añadir a esta librería, simplemente aña<strong>de</strong> su cabecera<br />

correspondiente y su propia entrada <strong>de</strong>ntro <strong>de</strong>l bloque switch.<br />

Ya tenemos <strong>de</strong>finida la estructura <strong>de</strong> la librería, así que po<strong>de</strong>mos empezar a trabajar <strong>con</strong><br />

los módulos propiamente dichos y comenzar a <strong>de</strong>sarrollar nuestros propios algoritmos.<br />

<strong>La</strong> plantilla <strong>de</strong> módulo <strong>con</strong> la que trabajamos (que has renombrado a MiModulo) <strong>con</strong>stituye<br />

un buen ejemplo <strong>de</strong> un módulo básico, y <strong>con</strong>tiene algunas <strong>de</strong> las características más<br />

importantes <strong>de</strong> los mismos. Intentaremos en este capítulo profundizar algo en la estructura<br />

misma <strong>de</strong>l código, así como en los métodos <strong>de</strong> la API <strong>de</strong> <strong>SEXTANTE</strong> que pue<strong>de</strong>n utilizarse<br />

<strong>de</strong>s<strong>de</strong> cualquier módulo que creemos.<br />

Aunque éste es un capítulo ✭✭intenso✮✮ en el que se recoge una gran cantidad <strong>de</strong> información,<br />

no es posible tratar todos los métodos disponibles y todas las posibilida<strong>de</strong>s sin que la extensión<br />

<strong>de</strong>l mismo sea excesiva. Sin embargo, una vez que adquieras un manejo básico para el <strong>de</strong>sarrollo<br />

<strong>de</strong> módulos sencillos, hay otros métodos para ampliar tus <strong>con</strong>ocimientos. No olvi<strong>de</strong>s que los<br />

módulos <strong>de</strong> <strong>SEXTANTE</strong> son libres y pue<strong>de</strong>s disponer <strong>de</strong>l código fuente <strong>de</strong> todos ellos. Leyendo<br />

este código podrás compren<strong>de</strong>r probablemente sin mucha dificultad cómo llevar a cabo tareas<br />

que no quedan explicadas en este capítulo pero se hayan presentes en algunos módulos. No<br />

tengas miedo en curiosear el código <strong>de</strong> los módulos principales. Te sorpren<strong>de</strong>rás muchas veces<br />

al ver que se trata <strong>de</strong> formulaciones sencillas y fáciles <strong>de</strong> enten<strong>de</strong>r. Recuerda que la curiosidad<br />

es la madre <strong>de</strong> la ciencia...<br />

En un módulo básico (no interactivo), se incluyen las siguientes partes<br />

Obtener información por parte <strong>de</strong>l usuario acerca <strong>de</strong> cómo ha <strong>de</strong> ejecutarse el módulo<br />

Ejecutar el módulo <strong>con</strong> dicha información<br />

Veamos <strong>de</strong>tenidamente como implementar cada una <strong>de</strong> estas partes.<br />

20.2.1. Constructoras. Crear una ventana <strong>de</strong> parámetros<br />

A <strong>con</strong>tinuación pue<strong>de</strong>s ver la <strong>con</strong>structora <strong>de</strong> la clase que <strong>con</strong>tiene el módulo MiModulo<br />

(una vez más sin comentarios).<br />

CMyModule::CMyModule(void)<br />

{<br />

Parameters.Set_Name("MiModulo");<br />

Parameters.Set_Description("MiModulo");<br />

Parameters.Add_Grid(NULL, "INPUT", "Input" ,<br />

"Input for module calculations.", PARAMETER_INPUT);<br />

Parameters.Add_Grid(NULL, "RESULT", "Output",<br />

"Output of module calculations.", PARAMETER_OUTPUT);<br />

Parameters.Add_Value(NULL, "BOOLEAN", "Boolean",<br />

"A value of type boolean.", PARAMETER_TYPE_Bool, true);<br />

Parameters.Add_Value(NULL, "INTEGER", "Integer",<br />

"A value of type integer.", PARAMETER_TYPE_Int, 200);<br />

Parameters.Add_Value(NULL, "DOUBLE", "Double",<br />

"A floating point value.", PARAMETER_TYPE_Double, 3.145);<br />

Parameters.Add_Choice(NULL, "METHOD" , "Method",

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

Saved successfully!

Ooh no, something went wrong!