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.8. COMUNICÁNDOSE CON EL USUARIO 337<br />

Morphometry.Get_Parameters()->Set_Parameter("ASPECT" , Parameters("ASPECT");<br />

Morphometry.Execute() )<br />

Para el caso <strong>de</strong> la pendiente, como es una variable muy habitual, la clase CGrid incorpora<br />

un método que calcula la pendiente en una celda mediante la metodología <strong>de</strong> Zevenbergen<br />

& Thorne. Pue<strong>de</strong>s cambiar lo anterior por el siguiente bloque <strong>de</strong> código. De este modo, no<br />

necesitas la <strong>de</strong>pen<strong>de</strong>ncia <strong>de</strong> la otra librería,<br />

for(y=0; ySet_Value(x, y, slope);<br />

m_pAspectGrid ->Set_Value(x, y, aspect);<br />

}<br />

else{<br />

m_pSlopeGrid ->Set_NoData(x, y);<br />

m_pAspectGrid ->Set_NoData(x, y);<br />

}<br />

}<br />

}<br />

Para que los módulos que <strong>de</strong>sarrolles puedan ser llamados <strong>de</strong>s<strong>de</strong> otros <strong>de</strong>bes <strong>de</strong>finirlos<br />

como tales. Aña<strong>de</strong> en el fichero MLB Interface.h un bloque como el siguiente (en este caso<br />

correspon<strong>de</strong> a la librería <strong>de</strong> <strong>análisis</strong> mormofétrico):<br />

#if<strong>de</strong>f ta_morphometry_EXPORTS<br />

#<strong>de</strong>fine ta_morphometry_EXPORT _SAGA_DLL_EXPORT<br />

#else<br />

#<strong>de</strong>fine ta_morphometry_EXPORT _SAGA_DLL_IMPORT<br />

#endif<br />

sustituye ta morphometry EXPORTS por nombre–<strong>de</strong>–tu–librería EXPORTS y ta morphometry<br />

EXPORT por nombre–<strong>de</strong>–tu–librería EXPORT (ése es el <strong>con</strong>venio que se sigue, y es<br />

<strong>con</strong>veniente seguirlo en tus propio <strong>de</strong>sarrollos), y no olvi<strong>de</strong>s añadir nombre–<strong>de</strong>–tu–librería EX-<br />

PORTS a las directivas <strong>de</strong> preprocesado.<br />

Con eso ya permites que en otros módulos (tuyos o <strong>de</strong> otro <strong>de</strong>sarrollador) se pueda hacer<br />

uso <strong>de</strong> las capacida<strong>de</strong>s <strong>de</strong>l módulo actual.<br />

20.8. Comunicándose <strong>con</strong> el usuario<br />

Los módulos más complejos, o aquellos que aun no siendo complejos se ejecuten sobre<br />

capas <strong>de</strong> gran tamaño, pue<strong>de</strong>n requerir un tiempo elevado en ejecutarse. Durante este tiempo,<br />

es una buena i<strong>de</strong>a informar al usuario acerca <strong>de</strong> lo que está sucediendo y, en la medida <strong>de</strong> lo<br />

posible, darle una estimación <strong>de</strong>l tiempo que aún resta <strong>de</strong> ejecución. También es interesante<br />

en muchos casos proporcionar información sobre la ejecución <strong>de</strong>l módulo no relacionada <strong>con</strong><br />

el tiempo <strong>de</strong> ejecución, sino <strong>con</strong> otros aspectos tales como avisos o errores.<br />

Todo esto pue<strong>de</strong> realizarse <strong>de</strong> diversas maneras, las cuales ya has visto en su momento en<br />

los distintos módulos que se han <strong>de</strong>scrito en otros capítulos. Ahora es el momento <strong>de</strong> ver cómo<br />

preparar tus propios módulos para establecer esa necesaria comunicación <strong>con</strong> el usuario.<br />

En primer lugar, pue<strong>de</strong>s mostrar información en la barra <strong>de</strong> estado acerca <strong>de</strong> la óperación<br />

que se realiza en cada momento, usando el método Process Set Text(*char). Por ejemplo:

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

Saved successfully!

Ooh no, something went wrong!