U I O N E Escribiendo M Guiones con

56
Tutoriales Escribiendo Guiones con SML en TNTmips ® TNTeditTNTview ® G U I O N E S S M L

Transcript of U I O N E Escribiendo M Guiones con

Page 1: U I O N E Escribiendo M Guiones con

Tutoriales

EscribiendoGuiones con

SML

en

TNTmips®

TNTedit™TNTview®

GUIONES

SML

Page 2: U I O N E Escribiendo M Guiones con

página 2

Lenguaje de Manipulación Espacial

Traducción: Alberto Andrade

Antes del TutorialEste folleto introduce técnicas para crear guiones en el Lenguaje de ManipulaciónEspacial (SML) en los productos TNT. Los ejercicios en este folleto introducenlos conceptos y técnicas para escribir poderosos guiones para personalizarmanipulaciones de los objetos de datos espaciales en sus Archivos de proyectoTNT.

Requisitos Previos Este folleto asume que usted a completado los ejercicios enlos siguientes folletos Tutoriales: Desplegando Datos Geoespaciales, yNavegando. Por favor consulte esos folletos y el manual de referencia deTNTmips para cualquier revisión de las habilidades esenciales y técnicas básicasque necesite. Este folleto también asume que usted tiene al menos unconocimiento fundamental de uno o más lenguajes de programación tales comoC, BASIC o Pascal. Usted puede empezar a usar SML aún si usted no tiene unaformación en programación, pero SML es un lenguaje poderoso y permite obtenerel máximo beneficio en las manos de un buen programador.

Datos de Ejemplo Los ejercicios presentados en este folleto utilizan datos deejemplo distribuidos con los productos TNT. Si no tiene acceso al CD de productosTNT, usted puede bajar los datos desde el sitio web de MicroImages. En par-ticular este folleto usa los guiones de la colección de datos LITEDATA / SML, lossubdirectorios CUSTOM, MACRSCR y TOOLSCR bajo el directorio principal de TNT, yobjetos en las colecciones de datos CB_DATA, SF_DATA, SURFMODL, y EDITRAST. Instalelos archivos de ejemplo en su disco duro; usted podría encontrar problemas sitrabaja directamente con los datos de ejemplo en el CD-ROM.

Mas Documentación Este folleto solo intenta ser una introducción al uso delLenguaje de Manipulación Espacial. Para mayor información, consulte el manualde referencia de TNT y especialmente la referencia en línea de SML.

TNTmips y TNTlite™ TNTmips viene en dos versiones: la versión profesionaly la versión libre TNTlite. Este folleto se refiere a las dos versiones como“TNTmips.” Si usted no compra la versión profesional (la cual requiere de unallave de licencia de software), TNTmips opera en modo TNTlite, el cual limitael tamaño de sus materiales de proyecto y activa el compartir de datos únicamentecon otras copias de TNTlite. SML no está disponible en TNTatlas. Todos losejercicios pueden completarse en TNTlite utilizando los geodatos de ejemploproporcionados.

Keith Ghormley and Randall B. Smith, Ph.D., 31 October 2001

©MicroImages, Inc., 1997 Sin una copia a color de este folleto podría ser difícil identificar algunos puntos importantes

en algunas ilustraciones. Usted puede imprimir o leer este folleto a color en el sitio Webde MicroImages. Este sitio Web es también su fuente de nuevos Tutoriales sobre otrostemas. Usted puede descargar una guía de instalación, datos de ejemplo y la últimaversión de TNTlite.

http://www.microimages.com

Page 3: U I O N E Escribiendo M Guiones con

página 3

Lenguaje de Manipulación Espacial

Traducción: Alberto Andrade

SML en los Productos TNTEl Lenguaje de Manipulación Espacial (SML)es un lenguaje de programación que le permiteescribir guiones que operan sobre objetos dedatos geoespaciales en los Archivos deProyecto de TNT. Los guiones SML se puedenejecutar desde menúes personalizados, barrasde iconos, iconos del escritorio de lacomputadora y aún desde la línea decomandos del sistema operativo.

SML es una herramienta de personalización ydiseño. Con SML puede usar los productos TNTpara tareas mas allá de los procesos predefinidosque se encuentran en los menúes estándar de TNT.Usted puede crear guiones para simples procesos obien productos completos de propósitos especialespara objetivos de mercado privado. Usted puedeaún empaquetar sus guiones conjuntamente conobjetos de geodatos en un archivo de proyecto ydistribuir todo el paquete como un proyecto llaveen mano: APPLIDAT (APPLIcation plus Data).MicroImages proporciona varias piezas de ejemplos deguiones SML para darle modelos con los que puedetrabajar. Usted puede examinar yadaptar los guiones que van desdesimples rutinas de procesamiento acomplejos APPLIDATs quecontienen cientos de líneasde código. Sus guionesSML serán fáciles demodificar y mejorar a lolargo de la vida de su proyecto.Usted rápidamente puede hacerprototipos y probar lascaracterísticas del programa.

Los ejercicios en las páginas4-18 introducen losconceptos básicos de SML ylas convenciones de losguiones. Las páginas 19-27ilustran sobre técnicas deprogramación específicaspara diferentes tipos deobjetos de geodatos. El restodel folleto introduce sobretécnicas avanzadas dedesarrollo de SML: creandoventanas de dialogo; guionesde animaciones; APPLIDATs;guiones de Herramientas yMacros.

SML en un APPLIDAT

Los guiones SML soncompletamente indepen-dientes de la plataforma;estos se ejecutan sinmodificación en cualquiercomputadora que corre losproductos TNT.

PASOSseleccione Instalar losEjemplos de GuionesSML del CD-ROM delos productos TNT en elmenú de instalación

En ejercicios posterioresusted accederá los guionesen los subdirectorios /CUSTOM

bajo el directorio de losproductos TNT.

SML en TNTedit

SML en TNTview

SML está disponible en TNTmips, TNTedit, y TNTview.Adicionalmente todas las formas de guiones en los productosTNT usan estructuras delineadas de SML (con variacionesmenores):• guiones de consultas y estilos • APPLIDATs• GeoFormulas • Guiones de Herramientas• CartoScripts • Guiones de MacrosReferirse a los folletos Tutoriales Generando y Usando Consultas,Usando CartoScripts, y Usando Formulas Geoespaciales parainformación acerca de los tipos particulares de guiones.

SML en TNTmips

Page 4: U I O N E Escribiendo M Guiones con

página 4

Lenguaje de Manipulación Espacial

Traducción: Alberto Andrade

Ejecutar VIEWSHED.SMLEl guión VIEWSHED.SML conjuntamente con sus datosde ejemplo en VIEWSHED.RVC están contenidos en elCD-ROM de los productos TNT, y también se hallandisponibles en la página WEB de MicroImages. Elguión crea un objeto raster binario de salida quemuestra cuales partes de la superficie de elevaciónde ingreso son visibles desde el flujo de puntos a lolargo de los elementos lineales de ingreso. Muchasaplicaciones que tratan con las características delas superficies de líneas de vista pueden usar lastécnicas ilustradas en este guión.

Inicie SML y cargue el guión VIEWSHED.SML

siguiendo los pasos listados. Antes de ejecutar elguión, recórralo y estudie su contenido. A menosque usted no tenga algún conocimiento con unlenguaje de programación como C o BASIC, ustedpodrá reconocer formas de declaración y estructurasde programación.

Note que el trabajo más pesado del guión esefectuado con llamadas a varia funciones SML, talescomo RasterToBinaryViewshed().MicroImages está constantemente añadiendonuevas funciones a SML. Estando enterado decuales funciones están disponibles y entendiendo

que hacen es esencial para producir lamayoría de SML. Adicionalmente al usode las funciones propias de SML, ustedpuede escribir en C sus propiasextensiones SML con TNTsdk, einvocar programas externos desde elguión SML (ver página 28).

PASOSseleccione Process /SML / Edit Scriptescoja File / Open /*.SML File y seleccioneVIEWSHED.SML de lacarpeta LITEDATA / SML

recorra por el guión parauna primera mirada aSMLclic [Run...] en el fondode la ventanacuando sea requerido elingreso del raster “RIN”,seleccione ELEVATION delArchivo de ProyectoCB_TM En LITEDATA /CB_DATA

para el ingreso del vector“V”, seleccione VROAD delArchivo de ProyectoVIEWSHED en LITEDATA / SML

seleccione un nuevoArchivo de Proyecto yobjeto para el raster desalida “ROUT”utilice el proceso dedespliegue para mirar lostres layers: CB_TM /ELEVATION, su nuevo rasterde salida, y VIEWSHED /VROADS

VIEWSHED.SML produce un raster binario (los 1’smostrados aquí en amarillo) que indica lasáreas visibles en una superficie de elevación(mostradas en pseudo - color) desde un flujode puntos a lo largo de los elementos linealesde un vector de entrada (mostrados en azul).Por lo tanto si los elementos linealesrepresentan caminos, luego las áreasamarillas definen las vistas disponibles paralos viajeros en la ruta.

Page 5: U I O N E Escribiendo M Guiones con

página 5

Lenguaje de Manipulación Espacial

Traducción: Alberto Andrade

Principios Para Elaborar GuionesUn guión SML puede ser desde algo tan simplecomo una declaración hasta un largo programaestructurado con ramificaciones de estructuraslógicas anidadas y llamadas a programas externos.Existen unas pocas restricciones estructuralesformales.

Usted puede usar espacios en blanco en casicualquier forma. SML no se preocupa si usaespacios o tabulaciones (tab) para las sangrías delas líneas, o si deja líneas en blanco, o aún si rompeuna declaración en la mitad y la continúa en lasiguiente línea. Consecuentemente VIEWSHED.SML

tiene una llamada a una función que esta rota en lamitad de la lista de argumentos y continúa en lasiguiente línea:

MapToObject( georefR, xVector,Vector,Rin, rCol, rLine )

De la misma manera, las declaracionespueden continuar a lo largo de variaslíneas. Seleccione New del menú Filepara despejar la ventana SML. Luegoescriba el guión ilustrado aquí. Ladeclaración inicial clear() borra elcontenido de la ventana de Consola. Ladeclaración var1 = 3 asigna el valorde 3 a la variable var1. La primeradeclaración print() reproduce el valorde var1 a la ventana de la Consola.

Note que las siguientes tres líneas contienenuna sola declaración: var1 = 5 . Ladeclaración final print() es así mismodistribuida a lo largo de cuatro líneas. Clic[Run...] para ejecutar el guión.

Por supuesto que el absurdo formato en esteejemplo se proporciona únicamente parailustrar lo flexible del formato que soporta SML. En suspropios guiones, utilice sangrías, espacios y líneas enblanco para facilitar la legibilidad y reflejar la estructuralógica del programa. Si usted llega a usar un formato osintaxis ilegal, SML no ejecuta el guión cuando haceclic en [Run], pero anuncia un mensaje de error y colocael cursor en el guión en el punto del error.

PASOSdespeje la ventana SMLseleccionando New delmenú Fileescriba el guión ilustradoabajo, usando tab o labarra espaciadora para lasangría del textoseleccione Syntax /Check para verificar lasintaxisclic [Run] para ejecutar elguión

La Ventana de la Consolamuestra los resultados de print()y otros textos de operaciones deinput / output

La Ventana SML es unsimple editor de texto queproporciona acceso a unalista de funciones yverificación de la sintaxis.

Este formatoabsurdo muestrala flexibilidad deSML

Page 6: U I O N E Escribiendo M Guiones con

página 6

Lenguaje de Manipulación Espacial

Traducción: Alberto Andrade

Variables y ConstantesVariables pueden usarse para entidades alfanuméricas,numéricas, lógicas, arreglos, clases y objetos (CAD, ras-ter, vector, regiones, y TIN). Las variables son creadascuando el guión las menciona por primera vez. Con laexcepción de los Arreglos y Clases, ellas no necesitanque sean declaradas por adelantado. Los nombres puedenser hasta de 100 caracteres de largo y siguen las siguientesconvenciones:

String: la letra inicial es en minúscula; debeterminar con el signo ‘$’. En el guión de ejemplode esta página, areaLabel$ es una variable string.

Numeric: la letra inicial es minúscula; no puedeterminar en ‘$’. En el guión de ejemplo de estapágina, r y area son variables numéricas.

Object: la letra inicial es mayúscula.

Ejemplo GetInputRaster(R)

Logical: implementada como numérica donde 0 =falso, y todos los valores distintos de cero =verdadero. Luego:

done = 0;if (condition) done = 1;if (done) <statement>;

Los nombres de Array y Class siguen lasconvenciones de las variables string y numéricas.Usted debe declarar un arreglo o clase antes de

usarlos. Encierre el índice de un arreglo enparéntesis rectos:

array numlist[10];class COLOR red;numlist[1] = 256;

Usted puede usar la ventana de inserción de símbolos(Insert / Symbol) para insertar las variablespreviamente utilizadas en el guión, o para insertarconstantes predefinidas (cuyos valores no pueden sercambiados). Utilice la opción del menú Type paraescoger el tipo de variable (o constante) y mirar lalista asociada. Insertando nombres de variables enlugar de escribirlos puede reducir los errores deescritura. Sus nombres de variables no aparecen esestas listas hasta que usted use la operación deverificación de sintaxis (vea página 16) o ejecuta elguión.

PASOSseleccionar File / Newpara despejar la ventanaSMLescriba en las dosprimeras líneas del guiónen la forma

clear()print()

y deje su cursor entre losparéntesis de ladeclaración print()seleccione Insert /Symbol, escoja pi de lalista, y clic [Insert],[Close]escriba el resto del guiónindicado abajo y clic[Run]

Page 7: U I O N E Escribiendo M Guiones con

página 7

Lenguaje de Manipulación Espacial

Traducción: Alberto Andrade

Expresiones y DeclaracionesExpresiones son estructuras que se reducen a un valor. Asípi^2 , 5.10, y R[i,j]/100 todas son expresiones. Lasexpresiones pueden usarse en el lado derecho de lasdeclaraciones de asignación y como argumentos en llamadasa funciones.

Declaraciones pueden ser simples o complejas. Unadeclaración simple puede consistir de unaasignación, tal como

area = pi * r^2;

Una declaración compleja esta delimitada por laspalabras “begin” y “end” en la forma

if (condition) beginfunction(r);area = pi * r^2;

end

SML también le permite usar corchetes (“corchetescurvos”) en lugar de escribir “begin” y “end”:

if (condition) {function(r);area = pi * r^2;

}

Las declaraciones condicionales tienen la formaif (<condition>) then <statement>else <statement>;

La cláusula else es opcional, tanto como el “then”:if (<condition>) <statement>;

Es una buena práctica (aunque opcional) el usar elsigno terminal (el punto y coma,“;”) para marcar el final de unadeclaración. Usando el signo termi-nal también le permite colocarmúltiples declaraciones en unalínea, separándolas con puntos ycoma.

El signo de comentario (“#”) indica aSML que ignore el resto de la línea. Siun signo de comentario es el primeroen una línea, SML ignora toda la línea.Usted puede también colocar uncomentario en la misma línea con otros símbolos SML,con tal de que los símbolos estén antes del comentario.

El punto y coma separamúltiples declaraciones enuna línea. El símbolo decomentario (#) indica aSML ignorar el resto de la

SML utiliza lanotación estándarpara las operacionesde comparación,m a t e m á t i c a s ,asignación y lógicas.La mayoría deoperaciones queusted conoce de C oBASIC son lasmismas comoaquellas que usaSML. Por favor

PASOSseleccione File / Open /*.SML File y luego escojaLITEDATA / SML / EXPRESS.SML

ejecute el guióncambie el umbral del areapara la condición if yejecute el guiónnuevamente

Page 8: U I O N E Escribiendo M Guiones con

página 8

Lenguaje de Manipulación Espacial

Traducción: Alberto Andrade

Funciones InternasEl poder real de SML está en su rica librería defunciones que le permiten crear, leer y escribirobjetos y subobjetos geoespaciales en sus Archivosde Proyecto TNT. Funciones matemáticas estándarse incluyen conjuntamente con funcionesespecializadas de despliegue, interface ymanipulación de datos. MicroImagesconstantemente está mejorando y expandiendo lasfunciones SML para darle a usted más formas detrabajar con sus datos geoespaciales.

Seleccione Insert / Funtion para abrir la ventanade inserción de funciones, la cual le permiteseleccionar funciones y mirar su uso yespecificaciones de formato. Clic el botón Func-tion Group para examinar las funciones disponiblesde cada categoría. Conforme usted se desplaza a lolargo de la lista de funciones, la definición en elpanel inferior cambia para mostrar la función ac-tual. Clic el botón Insert para copiar la función enla ventana de guiones SML.

PASOSdespeje la ventanaSML con File / Newseleccione Insert /Function clic el botón FunctionGroup y examine lalibrería de funcionespara cada categoría

El botón FuntionGroup abre una listadeslizable de lascategorías de funciones

La ventana de Inserción deFunciones ofrece una listadeslizable de las funciones en elpanel superior, y una definiciónde la función en el panelinferior. Si usted hace clic[Insert ], SML inserta lafunción resaltada en la posiciónque se halle el cursor en laventana de SML.

Page 9: U I O N E Escribiendo M Guiones con

página 9

Lenguaje de Manipulación Espacial

Traducción: Alberto Andrade

Ayuda de Funciones en Línea

PASOSseleccione All en el recuadrode texto Function Groupdesplazar hasta la funciónGPSPortRead()clic el botón Detailsclic [Insert Sample]examine las líneas del guiónrecientemente insertado enla ventana de guiones SML

La documentación de soporte para las funcionesSML está incorporada en el proceso. Primero elpanel inferior de la ventana de Inserción de Funciónprovee de una definición simple, mostrando cadaargumento y su tipo de dato. Usted puede hacerclic en el botón Insert para copiar una instanciacompleta de la función en la ventana de SML

Para mayor información, clic en el botón Detailsen la ventana de Inserción de Funciones. SML abrela ventana de Detalles que proporciona detallescompletos, más una sección de trabajo de códigoque muestra como la función trabaja enuna secuencia de declaraciones. Ustedpuede hacer clic en el botón de Inserciónde Ejemplos, para copiar el ejemplocompleto en la ventana SML.

Dado que las funciones SML sonmejoradas de tiempo en tiempo, laventana de inserción de funcionesmuestra cuando la función actual fueactualizada por últimavez. Este pendiente delas modificaciones queproveen nuevasc a p a c i d a d e sopcionales de fun-ciones que haya usado.

Clic el botón Detallespara mirar unadescripción completade los argumentos dela función con unejemplo de su

La fecha de creaciónindica cuando la funciónfue introducida a SML. Lafecha de Modificaciónindica cuando la funciónfue actualizada por últimavez. Algunas veces losargumentos opcionalesson añadidos a unafunción para expandir suscapacidades.

Clic Insertar Ejemplo paracopiar toda la sección deejemplo del código en laventana SML

cierre las ventanas Details e Insert Function cuandohaya completado este ejercicio

Page 10: U I O N E Escribiendo M Guiones con

página 10

Lenguaje de Manipulación Espacial

Traducción: Alberto Andrade

Funciones Definidas por el Usuario y Procedimientos

este ejemplo simple usado en este ejercicioencuentra el mayor de dos valores.

A menos que se declare lo contrario, todaslas variables del guión son globales. Estosignifica que sus funciones y procedimientospueden usar y modificar las variablesdefinidas en cualquier parte del guión.Cualquier variable global y Clase usada en

funciones y procedimientos deben ser declaradasantes de las definiciones de las funciones. En unguión largo o complejo, el alcance de estas vari-ables globales podría causar consecuenciasimprevistas. Para limitar el alcance de una vari-

able a una función en particular oprocedimiento, usted debe declarar la vari-able como una variable local dentro de ladefinición de la función:

PASOSseleccione File / Open /

*.SML File y abraLARGER.SML de la carpetaLITEDATA / SML

ejecute el guión

func funcname ([parmlist]) { statement; statement; ... return expr }proc procname ([parmlist]) { statement; statement; ... }

SML permite definir sus propias funciones yprocedimientos que puede usar para encapsularsecuencias de pasos de programa que deben repetirse envarios lugares del guión. Las funciones definidas por elusuario deben retornar un valor, mientras que losprocedimientos no. Por supuesto usted debe declarar unafunción o procedimiento antes de invocarlo, utilizando

la forma:

seleccione File / Open /*.SML File y abraLARGER2.SML de la carpetaLITEDATA / SML

ejecute el guión

en donde x es un nombre de variable. Lasvariables locales pueden tener el mismonombre de las variables globales en cualquierparte del guión, no obstante esta no es unapráctica recomendada. El guión LARGER2declara una variable local “a” dentro de ladefinición de la función larger(a,b) y leasigna un valor de 6. En la parte principaldel guión, es declarada una variable globalcon el mismo nombre y asignado el valor

de 8. Como lo ilustra el resultado del guión, la vari-able global es ignorada y el valor de la local esutilizado en su lugar por la función.

local x;

Page 11: U I O N E Escribiendo M Guiones con

página 11

Lenguaje de Manipulación Espacial

Traducción: Alberto Andrade

Usando Clases

PASOSdespejar la ventana SMLcon File / Newseleccione Insert / Classdeslizar por la lista en elpanel superior de laventana Insert Class yseleccione la clase Color

Una Clase es una variable compleja que consistede múltiples miembros, de la misma forma que unregistro de una base de datos consiste de múltiplescampos. Una variable de clase puede tener cualquiernúmero de miembros y los miembros pueden sercualquier tipo de datos, incluyendo otras clases.

Las variables de clase están diseñadas para pasarinformación desde y hacia funciones complejas. Enmuchos casos, los miembros de una variablede clase se fijan únicamente por una llamadaa una función, y por lo tanto son solo delectura desde el punto de vista del guión, aellos no se puede asignar nuevos valores pormedio de declaraciones de asignación.

Una clase debe ser declarada con la palabraclave de Clase, de la forma:

class COLOR background

la cual declara a “background” como unavariable de Clase de tipo Color. Losmiembros de una clase son especificados enla forma name.member (de igual forma comolos valores de base de datos son especificadosde la forma table.field). Por ejemplo, la clasecolor tiene cinco miembros a los quepueden ser asignados valores condeclaraciones de la forma:

background.red=50 background.green=75 background.blue=20 background.transp=0

El nombre del miembro de la Clase Color,es utilizado únicamente para pasar losvalores de red, green y blue a la variablede clase desde el archivo de referenciaestándar RGB.TXT. En consecuencia:

background.name = “purple”fija los componentes RGB de la variablede clase “background” de acuerdo a ladefinición de “purple” en RGB.TXT. El nombre delmiembro es solo de escritura y no puede ser leídaen otra parte del guión.

Los nombres de Clases yMiembros son insensibles amayúsculas / minúsculas

Page 12: U I O N E Escribiendo M Guiones con

página 12

Lenguaje de Manipulación Espacial

Traducción: Alberto Andrade

Herencia de los Miembros y Chequeo de TiposPASOS

seleccione Insert / Classseleccione POINT2D enel panel superior de laventana Insert Class, yexamine sus miembrosseleccione POINT3D enel panel superior de laventana Insert Class, yexamine sus miembrosseleccioneXmPushButton en elpanel superior de laventana Insert Classsiga la línea de Clase yderivación de Miembrosmostrada en el panelinferior

Un importante concepto con las Clases es la herencia.La Clase POINT2D representa la ubicación de un punto2-dimensional; sus miembros son las coordenadas x, ydel punto. LA Clase POINT3D se dice que es derivadade la clase POINT2D. Esto significa que una variable declase que usted declara como POINT3D no solamentetiene su propio miembro z, pero también hereda losmiembros x, y de la clase POINT2D. Usted puede utilizarlos miembros heredados de una Clase de la misma formaque los haría con los miembros nativos.

El uso de Clases le permite una estricta verificaciónde tipos. De forma que cuando invoca una funciónque requiere un POINT2D para parámetro, usted puedepasar cualquier POINT2D (o una clase derivada). Perola función rechazará cualquier variable que no sea unPOINT2D. Por ejemplo, usted no puede pasar a talfunción una Clase Color, porque Color no es unPOINT2D. Por contraste dado que POINT3D es derivadode POINT2D, usted puede pasar un POINT3D o cualquierderivado de POINT2D a una función que requiera unPOINT2D.

Siga la herencia desde Widget a XmPrimitive aXmLabel a XmPushButon

Las definiciones de XmLabel yXmPushButton muestran laherencia compartida.

Series de Clases derivadascomo aquellas mostradasabajo son utilizadas en SMLpara representar lasestructuras de X Windows /Motif usadas para crear lainterface de windows. Todoslos componentes de lainterface son categorías deun componente básicollamado un widget

Page 13: U I O N E Escribiendo M Guiones con

página 13

Lenguaje de Manipulación Espacial

Traducción: Alberto Andrade

Métodos de ClasesAlgunas Clases incluyen sus propias funciones yprocedimientos, las cuales son llamadascolectivamente Métodos de Clases. Los métodos declases pueden ser utilizados para pasar valoresdentro de una clase o para ejecutar algunas otrasoperaciones relacionadas a la clase. Los métodosde clase son invocados usando la formaname.method(), donde name es el nombre de lavariable de clase.

La clase VIEWPOINT3D representa losparámetros fijados para una reproducción 3Den la ventana de Vista 3D. Esta incluye losmiembros ViewPos, una variable de clasePOINT3D que contiene las coordenadasx,y,z de la ventana de inspección. Un métodode clase es utilizado para pasar los valoresrequeridos dentro de la clase:

Class VIEWPOINT3D vp;Class POINT3D vpos;vpos.x = 523487;vpos.y = 1473245;vpos.z = 2000;

vp.SetViewerPosition(vpos);

Este método de clase es un procedimiento, y por lotanto no devuelve un valor.

Los métodos en la Clase STRING son todasfunciones que devuelven bien sea una cadena decaracteres o un valor numérico. Intente escribiendoy ejecutando el siguiente ejemplo:

clear();Class STRING txt$;txt$ = “watershed”;

char1$ = txt$.charAt(1);print(char1$);

uc$ = txt$.toUppercase();

print(uc$);

El método CharAt(n) devuelve el carácterenésimo en la cadena de caracteres – string-(indexada a 0 con el carácter más hacia laizquierda). El método toUppercas() devuelve unacopia de la cadena de caracteres todos enmayúsculas.

PASOSseleccione Insert / ClassseleccioneVIEWPOINT3D en elpanel superior de laventana Insert Classdesplace el panel inferiory examine los métodosde clase

seleccione STRING en elpanel superior de la ventanaInsert Classdesplace el panel inferior yexamine los métodos declase

Page 14: U I O N E Escribiendo M Guiones con

página 14

Lenguaje de Manipulación Espacial

Traducción: Alberto Andrade

Ingreso del Usuario

PASOSdespeje la ventana SML conFile / Newescriba en la ventana de laconsola las declaraciones deprompt e input ilustradasy ejecute [Run] el guiónescoja Insert / Functionclic el botón Function

Group, seleccionePopup Dialog de laventana Function Groupy clic [OK]

escoja File / Open yseleccione LITEDATA / SML /POPUP.SML y [Run] el guión

El más simple tipo de ingreso y salida para elusuario utiliza la ventana de la consola. Usted puedeimprimir mensajes de requerimiento y capturarrespuestas del usuario usando las funciones print()e input$(). El código de ingreso en la consola essimple para el autor del guión, pero los mensajesen la consola podrían perderse para un usuariodesatento.clear(); print(“Enter your name:”)name$ = input$()print(“Your name is: “,name$)

Las ventanas de diálogo desplegable ofrecen mayorflexibilidad y al mismo tiempo es menos probableque confundan al usuario. SML incluye funcionespredefinidas en el grupo de funciones Popup Dia-log que abren diálogos para el ingreso de valores

de texto o numéricos, respuestasde Si/No, y el despliegue demensajes de error. Cuando serequiere, los parámetros de lafunción incluye un mensaje derequerimiento que puede usarpara explicar que valor orespuesta debería ser ingresadopor el usuario.

Usted también puede construirsus propiasventanas dediálogo paraproveer de una in-terface interactivoconsistente para suguión. Estasventanas puedenincluir botones,menús de listas yotros componentescon los que estáfamiliarizado en lainterface deT N T m i p s .

Ejemplos mostrando como crear ventanas de diálogocon SML se incluyen más adelante en este folleto.

Las cajas de diálogodespliegan un valor pordefecto si usted utiliza uno enla llamada de la función.

Page 15: U I O N E Escribiendo M Guiones con

página 15

Lenguaje de Manipulación Espacial

Traducción: Alberto Andrade

Bucles y BifurcacionesBucles Implícitos. Cuando SML mira una variablede un objeto raster en el lado izquierdo de unadeclaración de asignación, ejecuta un bucleimplícito, evaluando el lado derecho de ladeclaración y asignando el resultado a cada celdadel objeto raster en el lado izquierdo:R = R * scale # multiplies each cell in R

Las declaraciones For Each para objetos rasters yvector tienen la forma:for each Rastvar statementfor each Rastvar[lin,col] statementfor each Rastvar in Region statementfor each vector_element[n] in V statement

En la notación raster (R), lin y col indican elnúmero de línea y columna de la “posición actual”en el raster para el acceso dentro del bucle deprocesamiento. En la notación vector (V), loselementos vector pueden ser “point”, “line”, “poly”,o “node”. La n es opcional y puede ser omitida. Sise proporciona, la variable n se usa como el contadordel bucle.

Las declaraciones For tienen dos formas:for var=expr to expr statementfor var=expr to expr step expr statement

Bucles usando declaraciones “for”permiten un guión que opere enporciones de un conjunto de valores(celdas raster, valores de arreglos,números de elementos) especificadospor rangos, o por “pasos” a través deun conjunto de valores.While. Tenga cuidado de los bucles“while”while (condition) statement

En tanto la condición del bucle retorneverdadero, el bucle continúa. Si la condiciónnunca llega a ser falsa, usted está ante unbucle infinito.

a = 0;while (a <= 360) { print (a, sin(a/deg)); a = a + 1;}

NOTA: la secuencia de palabrasclave “for each” también sepuede escribir como una solapalabra: “foreach”. Esta versiónde SML no soporta comandos“foreach” anidados.

La declaración break se usapara salir de un bucle antes queéste pueda terminar de otramanera. Es a menudo usado enuna prueba condicional dentrode un bucle. La declaraciónbreak previene en este ejemplouna división por cero.

Note que con todos los sistemas decomputadoras, algunas operaciones dejanerrores muy pequeños en valores de puntoflotante (1/5 deja 0.20000000000000001).

PASOSseleccione File / Open yseleccione WHILEFOR.SML

de la carpeta LITEDATA / SML

ejecute el guióncambie la condición whiley ejecute el guiónnuevamente

cambie el valor del pasoen el “for” del bucle yejecute el guiónnuevamente

Page 16: U I O N E Escribiendo M Guiones con

página 16

Lenguaje de Manipulación Espacial

Traducción: Alberto Andrade

Desarrollo de Guiones y su Verificación

PASOS (no para Macintosh)mantenga el guión delejercicio previo abiertoabra otra instancia de laventana SML con Process /SML / Edit Scriptmueva la nueva ventanaSML de forma que nooculte a la primeraseleccione el código delbucle “while” del guiónWHILEFOR

use las selecciones de Copyy Paste en los menúes Editpara copiar la secciónseleccionada a su nuevoguiónremueva el carácter decierre “}” de su nuevoguiónescoja Syntax / Check parael nuevo guiónescoja File / Exit para laventana del nuevo guión yno almacene los cambios

La forma más fácil de desarrollar un guión SML esadaptar a sus necesidades los ejemplos de guionesdistribuidos con los productos TNT. Usted puedeabrir dos ventanas de edición de guiones SML ladoa lado y usar las funciones de menú “copiar – pegar”,para copiar secciones de código desde el guión deejemplo de MicroImages hacia el guión que estádesarrollando. Si usted está bajo ejecutando lasoperaciones de Copia y Pegado bajo sistemaoperativo Windows, use el portapapeles de Win-dows, de forma que pueda también copiar y pegartextos entre el editor SML y un editor bajo Win-dows.

La opción de verificación en el menú Syntaxchequea los errores de sintaxis de su guión. Lostipos de error que se pueden encontrar incluyen lafalta de parámetros en una función, errores deescritura de funciones o variables, y paréntesis obucles sin cerrar. El verificador de sintaxis nodetecta errores de lógica tales como bucles infinitoso ingreso de valores incorrectos.

Si el verificador de sintaxis encuentra problemas en suguión, la línea de mensajes al final de la ventanaSML, despliega un mensaje de error y coloca elcursor al final de la última parte del guión que elverificador pudo interpretar correctamente. Amenudo el error se halla inmediatamente despuésde la ubicación del cursor, pero si el error involu-cra bucles de procesos anidados, usted podríanecesitar buscar algunos pasos más adelante del

cursor para encontrar el problema. Usteddebería usar frecuentemente el verificador desintaxis conforme va desarrollando el guión.Verifique cada pequeña porción que usteddesarrolla. Es más fácil encontrar y arreglarlos errores sobre la marcha en lugar de esperarpara arreglar todos los errores en un guión largoy complejo. La verificación de la sintaxis

también actualiza lalista de las variablesdisponibles para suingreso desde laventana Insert/Sym-bol.

NOTA: el MacOS no le permiteabrir dos instancias del mismoproceso, de forma que usted nopuede usar este método paracopiar y pegar entre guionesSML en plataforma Mac.

Page 17: U I O N E Escribiendo M Guiones con

página 17

Lenguaje de Manipulación Espacial

Traducción: Alberto Andrade

Barra de Herramientas y el Menú Personalizado de SML

Usted puede seleccionar y ejecutar cualquier guiónSML sin abrir la ventana de edición de SML,seleccionando SML /Run desde el menú Process.También puede asignar guiones SML a iconos enla barra de herramientas personalizada. Utilice laventa del Editor de la Barra de Herramientas paracrear o seleccionar una barra de herramientas, fijela orientación a horizontal o vertical y defina lasposiciones de las etiquetas. Luego seleccione uno omás guiones SML y edite las cajas de texto de lasEtiquetas e información de las herramientas talcomo se ilustra, para establecer el texto de la inter-face de cada uno. Presione el botón Icon paraseleccionar un icono para cada guión. Los pasos eneste ejercicio crean una nueva barra de herramientasSML con dos botones de iconos para los guiones.

Los ejemplos de guiones SML proporcionados porMicroImages pueden también ser ejecutados desdeun menú desplegable personalizado si usted les hainstalado desde el CD-ROM de productos TNT. (Sisu barra de menúes TNT no tiene el menú Custom,ejecute el programa de instalación desde el CD yseleccione Install Sample SML Scripts.) Elprograma de instalación crea un subdirectorio /CUSTOM y copia a este los ejemplos de guiones*.SML . De allí en adelante, cualquier nuevo guiónque usted ponga en el directorio /CUSTOM estarádisponible en el menú Custom.

PASOSescoja Toolbars / Editen el menú principalTNTmipspresione [New] en laventana del Editor deToolbaredite el campo Namepara leer “SMLToolbar”seleccione Horizontaldel menú Orientationclic [Add SML...]seleccione BOXCAR2.SML

clic [Icon...] yseleccione un icono

repita los dos pasosprevios paraVIEWSHED.SML

clic [OK] para terminar

Utilice el Editor de la Barrade Herramientas para añadirlos iconos de BOXCAR2 yVIEWSHED a una nueva barrade herramientas.

El menúdesplegableCustom lista losguiones delsubdirectorio /CUSTOM creadospor el procesode instalaciónde TNT

Page 18: U I O N E Escribiendo M Guiones con

página 18

Lenguaje de Manipulación Espacial

Traducción: Alberto Andrade

Objetos Guión y EncriptamientoHasta ahora usted ha trabajado con guiones SMLque han sido almacenados como archivos de textoindependientes con la extensión SML. Esto sonarchivos de texto de 1byte que pueden ser abiertoscon cualquier editor de texto. Si usted edita unarchivo de guión con otro editor de texto, asegúresede almacenarlo con la extensión SML.

Un guión SML también se puede almacenar comoun objeto guión en el Archivo de Proyecto (utiliceFile / Save As / RVC Object). Esto le permite colocaren el mismo archivo, los objetos de ingreso, saliday guiones si usted estima esto conveniente. Otraventaja de almacenar un guión en un Archivo deProyecto es la habilidad de encriptar el objetoguión. Usted podría distribuir sus guiones a otrospero aún proteger sus esfuerzos de desarrollo yalgoritmos propios. Un objeto de guión encriptadopuede ser ejecutado únicamente por usuariosautorizados de TNTmips y no puede ser mirado oeditado por cualquiera (incluyendo el creador;siempre mantenga una copia sin encriptar del guiónpara referencia o desarrollos posteriores). Ustedpuede permitir que un guión encriptado seaejecutado por cualquier usuario de TNTmips o

limitar su uso a computadoras conun número específico de llave dela licencia de software. Ustedtambién puede escoger elrequerimiento de una palabraclave para ejecutar el guión.

PASOSseleccione File / Open /*.SML File y escoja /LITEDATA / SML / BOXCAR2.SML

seleccione File / Save As /RVC Object (Encriptado)cree un nuevo Archivo deProyecto y objeto SMLcomo lo requeridoseleccione una palabra clave

de encriptamiento en lasopciones de la ventanaEncryption

si usted no esta utilizandoTNTlite, use File / Openpara seleccionar su guiónencriptado (este solo muestraun mensaje de encripción)

NOTA: Se requiere de unallave física para ejecutar unobjeto guión SML encriptado.Por consiguiente los guionesencriptados no puedenejecutarse en TNTlite.

Utilice la opción Save AS / Encrypted para crearuna copia encriptada del guión en un Archivo deProyecto. Si usted abre un guión encriptado en laventana SML, este muestra solamente unmensaje de encripción. IMPORTANTE: siempremantenga una copia sin encriptar para laedición

Page 19: U I O N E Escribiendo M Guiones con

página 19

Lenguaje de Manipulación Espacial

Traducción: Alberto Andrade

Objetos RasterPASOS

seleccione File / Open yseleccione RATIOSCL.SML dela carpeta LITEDATA / SML

estudie la estructura delguión y la sintaxis de lasdeclaracionesejecute el guióncuando se requiera unraster para N, seleccionePHOTO_IR del Archivo deProyecto CB_TM enLITEDATA / CB_DATA

seleccione RED delArchivo de ProyectoCB_TM para ingresar elobjeto Dcree un nuevo objetoraster para RS

para este ejercicio y losde las páginas siguientes,use el proceso dedespliegue para mirar losobjetos de ingreso y elnuevo objeto creado por elguión.

Un conjunto completo de funciones raster lepermiten a sus guiones SML leer, crear y analizarobjetos raster. Usted puede escribir expresionesmatemáticas para calcular valores de nuevos objetosraster a partir de uno o más rasters de entrada ousar varias funciones SML de alto nivel para crearnuevos valores raster.

Utilice las funciones GetOutputRaster() yCreateRaster() para crear nuevos objetos raster.Cuando usted crea un objeto raster de salida, analiceun poco las opciones sobre la especificidad del tipode datos: binarios, enteros, con signo, sin signo, ypunto flotante. Por ejemplo si los cálculos del guiónSML pueden crear valores de salida de celdasnegativas, asegúrese de especificar un tipo de datoscon signo. Varias funciones proveen acceso asubobjetos raster.

El ejemplo de guión RATIOSCL está designado paracalcular la razón entre dos bandas de una imagenraster (asumiendo que son rasters de 8bits sin signo)y rescalar el resultado al rango de datos de 8bitssin signo para el raster de salida. Los valores crudosresultantes de la razón podrían variara en el rangoentre .004 (1/255) y 255, y un escalamientoseparado es aplicado para razones menores que omayores que 1. El factor de escalapara el rango superior esta basadoen el máximo valor de la razón paratoda el área de la imagen. Estonecesita que sealmacenen losvalores crudos dela razón en unraster temporalde punto flotante,calcular el factorde escala a partirdel valor de razónmáximo, y luegocalcular losv a l o r e srescalados yescribirlos al raster final de salida.

Raster de razón escalado (izquierda)producido por RATIOSCL.SML. a partir deCB_TM / RED (centro) y CB_TM / PHOTO_IR

(derecha).

Page 20: U I O N E Escribiendo M Guiones con

página 20

Lenguaje de Manipulación Espacial

Traducción: Alberto Andrade

Objetos VectorUna creciente lista de funciones soporta la creación,lectura, escritura y manipulación de objetos vector.Mire las definiciones de funciones vector en losgrupos Vector, Vector Network y Vector Toolkit.

Un guión simple ilustra las funciones básicas parael ingreso, salida y una de las combinaciones devectores:GetInputVector(Voperator);GetInputVector(Vsource);GetOutputVector(Vor);Vor = VectorOR(Voperator, Vsource);

Las operaciones de extracción de vectores estánsoportadas por funciones similares. Por ejemplo,refiérase al guión de ejemplo CUSTOM / VECTOR /VECEXTR.SML.

SML también soporta más complejas interaccionesentre objetos vector y objetos de otros tipos. Ustedya ha visto VIEWSHED.SML (página 4). Otro ejemplose proporciona en CUSTOM / FOCAL / VECFOCAL.SML,la cual utiliza puntos en un objeto vector paraseleccionar celdas en un objeto raster y aplica lafunción FocalMean() para cada una de esas celdasen su orden. Abra este guión y observe como lascoordenadas del vector (x=V.point[i].Internal.x) sontraducidas en coordenadas del mapa usando lafunción de georeferenciaObjectToMap(V,x,y,georefV,xVector,yVector), ycomo MapToObject(georefR, xVector, yVector, R,rCol, rLine) encuentra las celdas rastercorrespondientes a la coordenadas del mapa.

Las funciones Vector estánlistadas en las listas de funcionesde Vector (arriba), VectorNetwork, y Vector Toolkit El guión

cortomostradoarriba usaVectorOR()Paracombinar dosobjetosvector deingreso enun soloobjeto vectorde salida.

PASOSseleccione File / Open /*.SML File y abra el guiónVECTCOMB.SML de LITEDATA /SML

ejecute el guión utilizandopara ingreso HYDROLOGY yROADS desde CB_DATA /CB_DLG

VectorOR() ➱

Page 21: U I O N E Escribiendo M Guiones con

página 21

Lenguaje de Manipulación Espacial

Traducción: Alberto Andrade

Usando la Caja de Herramientas de VectorPASOS

seleccione File / Open /*.SML File y abra el guiónVTOOLKIT.SML de LITEDATA /SML

estudie la estructura ycomentarios del guiónejecute el guión usandopara ingreso DEM_16BIT

del Archivo de ProyectoCB_ELEV en LITEDATA /CB_DATA

Las funciones en el grupo Vector Toolkit le permitena un guión modificar los elementos en un objetovector existente o añadir nuevos elementos a unobjeto. Para modificar un objeto vector existente,el guión debe primero inicializar la caja deherramientas de Vector para usar con ese objeto:

GetInputVector(V);VectorToolkitInit(V);

[Editing operations with vectortoolkit functions]

CloseVector(V);

Cuando usted añadirá elementos a un nuevo objetovector de salida, la inicialización de lasherramientas puede hacerse cuando el objeto escreado. El segundo argumento de la funciónGetOutputVector() es una bandera string opcional,que puede ser usada para fijar el nivel de topologíay para inicializar las herramientas vector. Porejemplo fijando este argumento a“VectorToolkit,Polygonal” inicializa lasherramientas vector y establece la topologíapoligonal para el objeto vector.

El guión de ejemplo VTOOLKIT.SML muestra comoalgunas de las funciones de las herramientas vec-tor pueden ser usadas para crear elementos en unnuevo objeto vector. El guión primero abreun raster de ingreso y encuentra suextensión geográfica y la posición en elmapa de la celda con le mayor valor. Elguión luego crea un nuevo objeto vector conuna georeferencia implícita al objeto raster deingreso, añade luego un elemento punto en laposición de la celda de máximo valor, y dibujauna línea vector por el perfil de la extensióndel raster. Luego se encuentra la ubicacióndentro de esta línea limítrofe que esté máscercana al punto de la celda de máximo valory se añade una línea conectando estos dospuntos. Luego el objeto vector es validado(para verificar la topología y calcular losatributos estándar) y cerrado.

Raster DEM16_BIT y el objeto vector creado apartir de él por medio del guión de ejemplo.

Page 22: U I O N E Escribiendo M Guiones con

página 22

Lenguaje de Manipulación Espacial

Traducción: Alberto Andrade

Objetos CAD y TIN

PASOSseleccione File / Open /*.SML File y abra el guiónCAD.SML de LITEDATA / SML

examine y luego ejecute elguión usando el objetoraster HAYWARD del Archivode Proyecto HAYWDEM enLITEDATA / SF_DATA

abra el guión TIN.SML deLITEDATA / SML

estudie y luego ejecute elguión, usando el objetoELEV_PTS del Archivo deProyecto SURFACE en LITEDATA

/ SURFMODL para el ingreso

Una creciente lista de funciones soportan lacreación, lectura, escritura y manipulación deobjetos CAD y TIN. El guión de ejemplo CAD.SML

utiliza algunas de las numerosas funciones CAD.El guión utiliza un objeto raster como ingreso paradefinir la extensión geográfica y georeferenciacióny crea un nuevo objeto CAD georeferenciado, alcual algunos elementos son añadidos. Un elementocírculo es dibujado centrado al punto geográficocentral del raster, luego un elemento lineal se dibujadesde el centro a la circunferencia del círculo. Varioselementos tipo rectangular son añadidos alrededordel punto central.

El guión de ejemploTIN.SML ilustra algunas delas funciones TIN.Utiliza la funciónTINCreateFromNodes()para hacer un nuevoobjeto TIN a partir de unarreglo de coordenadasde nodos. Los arreglos decoordenadas son creadosen este caso leyendo lascoordenadas de lospuntos de un objetovector 3D. El guióntambién utiliza funcionespara leer el número de marcos, bordes ytriángulos.

Page 23: U I O N E Escribiendo M Guiones con

página 23

Lenguaje de Manipulación Espacial

Traducción: Alberto Andrade

Objetos Región

PASOSseleccione File / Open /*.SML File y abra el guiónREGION.SML de LITEDATA / SML

estudie la estructura ycomentarios del guión

ejecute el guión usando paraingreso los objetos regiónPOLYREGION y RECTANGLE delArchivo de Proyecto REGION

en LITEDATA / SML y el objetovector ELEV_PTS del Archivode Proyecto SURFACE enLITEDATA / SURFMODL.

Usted puede también crear y usar objetos región enlos guiones SML. Los objetos Región representanel contorno de una región de interés en operacionesen otros objetos espaciales. Las funciones SML enel grupo de funciones Región le permite abrir yalmacenar objetos región, verificar si coordenadasparticulares de mapa se hallan dentro de una región,y ejecutar combinaciones de regiones (AND, OR,Subtract y XOR). Varias funciones en el grupo deConversión de Objetos, le permiten convertirvectores y raster binarios en objetos región.

SML proporciona una manera simple de usar unobjeto región para restringir acciones sobre unobjeto raster: La construcción simple:

for each RastVar in RegionVar {[actions]

}

restringe las acciones a las celdas raster que sehallan dentro de los límites de la región. Estaconstrucción provee de una alternativa más simpleque usando valores en una máscara raster binariapara controlar las operaciones.

El guión de ejemplo REGION.SML ilustra eluso de algunas funciones región. El guiónabre dos objetos región y usa la funciónRegionAND() para encontrar la región quees su intersección. Esta nueva región esluego usada para encontrar informaciónsobre los elementos puntos en lacorrespondiente área de un objeto vector3D de ingreso. El guión usa la funciónPointInRegion() en un bucle “for each”para examinar cada coordenada de lospuntos y seleccionar únicamente aquellosque se hallan dentro de la región.

Page 24: U I O N E Escribiendo M Guiones con

página 24

Lenguaje de Manipulación Espacial

Traducción: Alberto Andrade

Objetos Base de DatosEl guión de ejemplo DATABASE.SML muestra comoleer valores de atributos desde una base de datos.La sintaxis es una extensión de la construcciónTABLENAME.FIELDNAME usada en las consultas. Enun guión SML, la referencia a un campo de la basede datos debe también especificar al objeto, elsubobjeto de base de datos (una base de datosseparada se mantiene para cada tipo de elementoen un objeto vector o TIN), y el número de elemento.Si el campo siendo leído es un campo textual, usteddebe también añadir el carácter “$” al final delcampo de referencia:

string$ = Vect.poly[4].table.field$.

Funciones para crear y modificar bases de datos sehallan en el grupo de funciones Database. Estegrupo incluye funciones para crear nuevas tablas,para añadir o insertar campos en las tablas, paraescribir nuevos registros en la tabla, y para enlazarregistros a elementos en el objeto espacial. El guiónde ejemplo DB2.SML provee de ejemplos de estasoperaciones. Este crea un nuevo objeto vector conpuntos localizados en los centroides de los polígonosen el objeto vector de ingreso, crea una base de datosde puntos y una tabla, y copia los atributosseleccionados desde cada polígono al elementopunto asociado.

PASOSabra el guión de ejemploDATABASE.SML desde lacarpeta LITEDATA / SML

ejecute el guión usandopara ingreso el objeto HSOILS

del Archivo de ProyectoHAYWSOIL en la carpetaLITEDATA / SF_DATA

abra el guión de ejemploDB2.SML de la carpetaLITEDATA / SML

ejecute el guión usandopara ingreso el objetoCB_SOILSLITE del Archivo deProyecto CB_SOILS en lacarpeta CB_DATA

DATABASE.SML refiere alcampo ACRES de la tablaSOILTYPE y al campo SOILNAME

de la tabla WILDLIFE.

Page 25: U I O N E Escribiendo M Guiones con

página 25

Lenguaje de Manipulación Espacial

Traducción: Alberto Andrade

Convirtiendo ObjetosPASOS

abrir el guión de ejemploSOILTEST.SML de LITEDATA /SML

estudiar el guión, luegoejecutarlo usando losobjetos en el Archivo deProyecto SOILTEST enLITEDATA / SML para ingreso.Use el objeto SAMPPTS paralos “Points” y el objetoBOUNDARY para “Boundary”acepte los valores pordefecto para los otrosparámetros requeridos porlas ventanas de diálogosdesplegables.

Puntos demuestreode suelo.

Polígonolímite delcampo.

Una razón común para crear guiones SML esel deseo de automatizar secuencias deprocesamiento de múltiples pasos, querequieren ser ejecutadas repetidamente en unacantidad de diferentes conjuntos de datos deingreso. La habilidad de convertir datosgeoespaciales de un tipo a otro dentro de SML,le proporciona una gran flexibilidad paradiseñar tales guiones. El proceso estándar deconversión de datos en TNTmips lidera la in-dustria en soporte de tipos de datos yfuncionalidad. Muchos de estos procesos deconversión están disponibles como funcionesSML en el grupo de funciones de Conversiónde Objetos. Otras funciones especializadas deconversión en el grupo de funciones SurfaceFitting interpolan una superficie raster partirde un objeto de ingreso vector o TIN.El guión de ejemplo SOILTEST.SML automatiza elprocesamiento de datos de muestras de suelo y usa variostipos de funciones de conversión de objetos. El guiónlee una serie de valores químicos almacenados en unatabla de una base de datos enlazada a los elementospuntos vector de ingreso que representan las ubicacionesde las muestras. Para cada tipo de valor (pH del suelo,contenido de materia orgánica, y otros), el guión usa unafunción de ajuste de superficie para crear un raster desuperficie. En pasos intermedios el guión usa un polígonovector que representa el borde del campo para crear unraster en blanco para usarlo como una máscara para cadas u p e r f i c i e .También creauna regióndesde elpolígono y lautiliza paraescribir unvalor de 1 encada celdade lamáscara ras-ter queq u e d adentro dellímite delcampo.

Raster desuperficiecalculado pH delsuelo

Raster de superficiecalculada de lamateria orgánica delsuelo

Page 26: U I O N E Escribiendo M Guiones con

página 26

Lenguaje de Manipulación Espacial

Traducción: Alberto Andrade

Ejemplo de Guión: Extraer Polígonos

PASOSescoja File / Open /

*.SML File y seleccionede su directorio principalTNT CUSTOM / VECTOR /TIGER.SML

estudie la estructura ycomentarios del guión

El guión de ejemplo TIGER.SML proporciona unejemplo de procesamiento en SML de vector y basede datos. Este extrae líneas especificadas de losobjetos vectores de ingreso y los escribe en un objetovector de salida, transfiere los atributos de la líneaa los atributos de los polígonos de salida.

TIGER.SML fue diseñada para procesar objetos vectorimportados de archivos de líneas TIGER (versión

2000) producidos por la Oficina de Censos delos Estados Unidos. Los geodatos TIGER estánorganizados por condado, e integran líneas degeodatos de muchos tipos (hidrología, vías,líneas limítrofes de censos y administrativas) enun solo nivel de datos vector. Los polígonostopológicos resultado de la intersección de estosvarios tipos de líneas con excepción de lospolígonos individuales tienen poco significadogeográfico. Los atributos de área estáncodificados únicamente como atributos de loslados derecho e izquierdo de las líneas. Estacaracterística de los datos TIGER hace difícil deacceder y desplegar información de área usandolos objetos vector crudos.

Las líneas de límite de área en el vector TIGER, talescomo límites de ciudades y pueblos, pueden seridentificadas por la desigualdad de los valores deatributos particulares en cada lado de la línea. Esteguión encuentra las líneas límites de la ciudad en unoo más objetos vector TIGER de ingreso y escribe cadalínea a un nuevo objeto vector de salida. Cuando todoslos elementos línea de un particular límite de ciudadhan sido transferidos, ellos se interceptan para formarun polígono en el vector de salida. Si la línea actualcompleta un nuevo polígono, el nombre de ciudad selee de la base de datos de la línea de ingreso, y secrea un nuevo registro de la base de datos de polígonosconteniendo el nombre para el vector resultante. Esteguión ha sido usado en MicroImages para procesartodos los 93 objetos vector TIGER de condados para

el estado de Nebraska para producir un objeto depolígonos únicos de ciudades a nivel del estado.

Vector TIGER para un condado conestilos de líneas basados en susatributos.

Polígonos de ciudad conetiquetas, extraídos para elmismo condado

Mas acerca del guión de extracción de polígonos se halla disponible en un documento en línea en:

http://www.microimages.com/relnotes/v65/smltiger.pdf

Page 27: U I O N E Escribiendo M Guiones con

página 27

Lenguaje de Manipulación Espacial

Traducción: Alberto Andrade

Ejemplo de Guión: Red de Ruteo

PASOSescoja File / Open /

*.SML File y seleccionede su directorio principalde TNT CUSTOM / VECTOR

/ NETWORK.SML

estudie la estructura ycomentarios del guión

Ejemplos del resultado delguión de redes. Lasubicaciones de las granjas(círculos) han sido puestascon un estilo en el mismocolor que las plantas deprocesamiento (cuadrados)que se hallan más cercanas alo largo de la red de caminos.

Más acerca del guión de redes se halla disponible en un documento en línea en:

http://www.microimages.com/relnotes/v65/smlnz.pdf

El ejemplo de guión NETWORK.SML muestra unaaplicación más complicada de procesamiento SMLde vectores y base de datos. Esta utiliza las funcionesde análisis de redes para afrontar el problema deuna eficiente entrega de materiales desde locacionesnumerosas y dispersas (tal como granjas) a unpequeño número de destinos (tal comoplantas deprocesamiento). El objetivo esdeterminar la distancia de red máscorta desde cada granja a cada plantade procesamiento, de forma quecada granja pueda transportar susproductos a la planta máscercana. Se requiere de unguión para resolver esteproblema considerando que lasgranjas y las plantas sonrepresentadas como puntos enobjetos vector distintos,separados del objeto quecontiene la red de caminos.

Para cada granja y planta deprocesamiento, el guión añadeun nodo al objeto de caminosen el punto más cercano de lalínea más cercana. Semantiene un control delnúmero de elementos de estosdos conjuntos de nodosañadidos en un par de arreglos de forma que lasdistancias de red pueden ser asociados con la plantay granja correctas. Las funciones de análisis deredes se utilizan luego para calcular el conjunto dedistancias requeridas, las cuales son almacenadasen una nueva tabla de la base de datos para el vec-tor representando las granjas. Para cada punto deuna granja, existe un registro enlazado por cadaplanta de procesamiento, mostrando la distanciade red mínima.

Page 28: U I O N E Escribiendo M Guiones con

página 28

Lenguaje de Manipulación Espacial

Traducción: Alberto Andrade

Incluyendo Guiones y Programas Ejecutables

PASOSdesplace hasta el final lalista en la ventana InsertOperator para mirar lasdirectivas de preprocesoSML

El proceso SML incluye un conjunto de directivasde procesamiento previo que son interpretadas an-tes de todas las declaraciones regulares del guión.Las directivas de preproceso le permiten llamar aotros guiones y fijar modos alternativos del guión.

Usted puede hacer que un guión lea y ejecute otroguión SML utilizando la directiva $include:

$include “another.sml”

El guión incluido debe hallarse en el mismodirectorio o Archivo de Proyecto que el guión pa-dre. Si usted tiene varios guiones que necesitan usarlas mismas funciones definidas por el usuario, ladefinición de funciones pueden hacerse en un guiónseparado que usted “$include” en los otros guiones.

Mientras usted está desarrollando un guióncomplejo podría desear disponer de un modo “nor-mal” de ejecución y de un modo “de depuración”que imprima a la consola la información relevantepara ayudarle a identificar posibles puntos de falla.Usted puede fijar el modo de depuración usando ladirectiva:

$define DEBUG

y coloque entre paréntesis todas las declaracionesde depuración con el siguiente par de directivas:

$ifdef DEBUG[serie de declaraciones de impresión]

$endif

Para ejecutar el guión en el modo normal,simplemente comenta la única declaración $define,dejando su código de depuración sin cambios paraun uso futuro.

Si su guión requiere manipulaciones yconversiones que no se hallan soportadas porSML usted puede usar la función del sistemarun(), para llamar a procesos TNT o programaexternos. Por ejemplo, la versión actual deSML no incluye una función para convertir unobjeto CAD a un objeto Vector, usted podríaseleccionar que su guión ejecute Prepare /Convert / CAD to Vector:

run (“c:/tnt/win32/convobjs cadtovec”).

Las directivas depreprocesamiento SML quese pueden insertar mediantela ventana Insert Operatorson:

$ifdef$ifndef$else$endif$define

$include

Para encontrar el nombre deun módulo de procesos deTNT (tal como “convcobjscadtovec” en el ejemplo de laderecha), utilice cualquiereditor de texto para abrir elarchivo TNTMIPS.MNU (el que sehalla en su directorio de TNT)

Cuando utiliza la función run()como se muestra a laderecha, SML espera hastaque usted cierre el programaexterno antes de continuarcon la siguiente declaraciónen el guión. Si usted fija elvalor del argumento opcional“wait” de la función run() a 0,el programa externo seejecuta en un segundo plano.

Page 29: U I O N E Escribiendo M Guiones con

página 29

Lenguaje de Manipulación Espacial

Traducción: Alberto Andrade

Un Nivel SML en el Despliegue

PASOSejecute Display / SpatialData y abra un grupo New2Dclic Add SMLseleccione la tarjeta Scripten la ventana SML LayerControls y escoja File /Open / *.SMLseleccione LITEDATA / SML /ARROW.SML

en el panel Coordinates, useel botón Projection paracambiar el sistema decoordenadas a UniversalTransverse Mercatorclic [OK] para cerrar laventana Layer Controlsexamine el despliegue,luego remueva el nivelSMLañada el objeto_8_BIT del Archivo deproyecto CB_COMP enLITEDATA / CB_DATA

clic Add SML yseleccione LITEDATA /SML / NEATLINE.SML

en el panel Coordinates, fijeel sistema de coordenadas aUnited States State Plane1927 y la Zona to NebraskaNorth clic [OK] para cerrar la

ventana Layer Controls

El proceso estándar de despliegue (Display / Spa-tial Data) soporta el uso de un guión SML como unnivel más, de igual forma que lo puede ser son unobjeto raster, vector, CAD, o TIN. Un nivel de guiónSML puede usar funciones de dibujo cartográficoflexibles, para crear símbolos especiales de mapasy recuadros.

El guión de ejemplo ARROW.SML está diseñado paradibujar en el formato un símbolo de mapeo de laorientación de la declinación magnética. El nivelSML debe ir solo en un grupo. Este determina ladirección del norte verdadero a partir del mapa enel grupo previo del formato. El guión de ejemplo

neatline.msldibuja unr e c u a d r oalrededor deun grupo, eincluye ítemsde dibujoad ic iona lesque ustedp u e d ee n c e n d e rremoviendo elcarácter dec o m e n t a r i o

(#) de las declaraciones relevantes del guión.

El panel Coordinates le permiterelacionar su nivel de guión a lascoordenadas del mapa de losotros niveles en el despliegue.

El panel de tarjeta Script en laventana SML Layer Controlcontiene la interface para editar yejecutar guiones.

ARROW.SML dibujaun símbolo demapa orientadoque muestra lasdirecciones delnorte verdadero

El botón del icono Add SML

Page 30: U I O N E Escribiendo M Guiones con

página 30

Lenguaje de Manipulación Espacial

Traducción: Alberto Andrade

Un nivel de GeoFórmula es un nivel de desplieguecalculado, que utiliza uno o más objetos de entradapara derivar un resultado a desplegar. Esto leproporciona una forma de aplicar operaciones SMLa objetos en forma “instantánea” en lugar de ejecutarprocesos separados para preparar objetos resultantespara su despliegue. Un nivel de GeoFórmulacontiene un “objeto virtual”; éste no crea un objetode salida que sea almacenado en un Archivo deProyecto. En cambio crea un nivel de despliegueque libera todos sus recursos del sistema (tales comoespacio de disco y memoria) cuando termina conél.

Por ejemplo, las bandas roja e infrarroja de unaimagen raster pueden ser combinadas para producirun Índice Transformado de Vegetación (TVI). Porsupuesto que TNTmips ofrece un proceso simpleque produce un raster de salida con el TVI a partirde los objetos de ingreso seleccionados, si usteddesea mantener el resultado del TVI para otros usos.Pero si únicamente desea mirar el resultado del TVIy no le preocupa mantener el objeto resultante, ustedpuede usar un nivel de despliegue de GeoFórmula.

Un guión de GeoFórmula puede almacenarse comoun archivo reutilizable. Un nivel de GeoFórmulapuede combinarse con cualquier número de otros

niveles en el proceso dedespliegue de TNT, para crearuna visualización compleja demúltiples objetos geoespaciales.

La característica de GeoFórmula esprimariamente provista para tarea devisualización dinámica en el procesode despliegue. Usted también puedeejecutar un proceso separado deGeoFórmula (Interpret / Raster /Combine / GeoFormula) para crearobjetos permanentes de salida paraotros usos.

SML y GeoFórmulas

Un Folleto Tutorial separadoestá dedicado al tópico deGeoFórmulas. Mirar el Tutorial:Usando GeoFórmulas”.

El ejemplo LITEDATA / GEOFRMLA /BROV_UMN.GSF ilustra el realcedinámico de una imagen de bajaresolución TM con una SPOTde alta resolución.

PASOSescoja Display / Spatial Dataclic Add Geoformula /Quick-AddGeoformulaseleccione LITEDATA /GEOFRMLA / BROV_UMN.GSF

para ingreso, seleccione tresbandas TM del Archivo deProyecto CB_TM y la imagenSPOT_PAN en el Archivo deProyecto CB_SPOT, todos losobjetos se hallan en LITEDATA /CB_DATA

Page 31: U I O N E Escribiendo M Guiones con

página 31

Lenguaje de Manipulación Espacial

Traducción: Alberto Andrade

Creando una Ventana de Diálogo SimplePASOS

seleccione Process /SML / Edit Scriptescoja File / Open /*.SML File y seleccioneDIALOG1.SML de la carpetaLITEDATA / SML

ejecute el guiónestudie las secciones del

guión que definen lasdiferentes partes de laventana de diálogo HelloWorld

presione [Close] en laventana Hello World

win1Class: XmForm

winLabelClass: XmLabel

closeButtonClass: XmPushButton

Jerarquía del Widget en la ventana Hello World

Para guiones complejos que incluyen múltiplesoperaciones incluyendo ingresos del usuario,considere la creación de ventanas de diálogopersonalizadas, para controlar la interacción delusuario con el guión. Las funciones SML en el grupode funciones Widget (ventanas de acceso)proporciona acceso al conjunto de ventanas deacceso de Motif, el cual es utilizado para crear todaslas ventanas en la versión X Window de losproductos TNT.

Una ventana de diálogo consiste de una ventana deacceso (widget) padre que contiene otroscomponentes de ventanas de acceso (widgets). Cadatipo de ventana de acceso (widget) es una claseseparada en X y en SML. El guión de ejemploDIALOG1.SML crea y abre una muy simple ventana dediálogo, que despliega una etiqueta detexto y tiene un botón de “Cierre”. Cadauno de estos componentes es una ventanade acceso separada contenida en unawidget XmForm. Una widget XmFormle permite colocar sus “hijos” (widgetscontenidos) un esquema simple deubicación relativa. Cada widget puede serenlazado a otro en el tope, fondo,izquierda, o derecha, y usted puedeespecificar el valor de separación (enpixeles de pantalla) para cada lado. Eneste ejemplo el widget de etiqueta (classXmLabel) esta enlazado al formulario alos lados superior, izquierdo y derecho.El Botón de Cierre (classXmPushButton) está enlazado en suborde superior al widget de etiqueta y alos lados izquierdo y derecho alformulario. El formulario del widgetautomáticamente cambia de tamañopara acomodar todos los widgetcontenidos.

Usted puede crear una ventana deslizableusando el widget contenedorXmScrolledWindow en lugar deXmForm, u organizar widgets hijos en unagrilla usando el widget contenedor XmRowColumn.

Page 32: U I O N E Escribiendo M Guiones con

página 32

Lenguaje de Manipulación Espacial

Traducción: Alberto Andrade

Usando Widgets para Construir Ventanas de Diálogo

El rol del botón de Cierre en el guión DIALOG1 estádefinido por el registro de un callback en el wid-get, usando la función WidgetAddCallback(). Uncallback sirve como un puntero hacia una funcióno procedimiento que un widget llama en respuestaa uno o más eventos. Un XmPushButton tienedisponible un miembro de clase ActivateCallbackpara registrar la llamada a ser activada cuando elbotón es presionado. En este ejemplo, activando elbotón de cierre, se llama al procedimiento OnClose,definido al inicio del guión.

El guión de ejemplo DIALOG2.SML crea una ventanade diálogo más compleja que utiliza una variedadadicional de tipos de widget, incluyendo una campopara el ingreso de valores numéricos, un recuadro,una línea de separación y dos menúes de opciones.Los botones al final de la ventana utilizan diferentesclases de widgets que los botones del guión ante-rior. Estos son instancias de la clasePushButtonItem, los cuales pueden ser utilizadosbien sea para botones de texto o botones de iconos.Los botones de texto deben ser ubicados en una filade botones, y un tipo específico de XmForm ybotones de iconos se deben colocar en un widgetXmRowColumn. Usted no necesita usar la funciónWidgetAddCallback() para definir la acción de unPushButtonItem; la función que define el ítem,requiere el nombre de la función callback oprocedimiento como uno de sus argumentos. Elwidget de menú de opción de unidad, también usael último método para definir el procedimientollamado cuando la unidad es cambiada.

PASOSescoja File / Open /*.SML File y seleccioneDIALOG2.SML de la carpetaLITEDATA / SML

ejecute el guiónen la ventana de diálogoabierta por el guión,ingrese un valor en elcampo Enter Area Valueescoja una unidad para el

área de ingreso en elmenú superior deunidades

escoja una unidad deárea para la salida delmenú de unidades inferiorPresione el botón Convertestudie las secciones delguión que definen losdiferentes componentesy acciones de la ventana clic [Close] cuando

termine de trabajar con laventana de diálogo

NOTA: El guión DIALOG2.SML

fue escrito para usar unaamplia variedad de tipos dewidgets, y no para proveer unejemplo de un buen diseño deventanas o procesamientoeficiente. Un más eficientediseño omitiría el botónConvert y recalcularía el valorde salida cuando cualquier delos parámetros del usuariosean cambiados.

PushButtonItem inXmForm button row

XmSeparator

XmOptionMenu

XmLabel

PromptNum(incluyeetiqueta)

XmLabel

XmFramecon hijoXmForm

Clases Widget usadas para crear la ventana de diálogo Area Unit Conversion

XmForm(ventana de diálogo)

Page 33: U I O N E Escribiendo M Guiones con

página 33

Lenguaje de Manipulación Espacial

Traducción: Alberto Andrade

Creando y Usando un Área de Dibujo

PASOSescoja File / Open / *SMLFile y seleccioneDIALOG3.SML de la carpetaLITEDATA / SML

ejecute el guión estudie las secciones del

guión que definen losdiferentes componentesy acciones

clic [Close] cuando hayaterminado de trabajar conla ventana de diálogo

RectánguloRelleno

[ FillRect() ]

Círculorelleno

[ FillCircle() ]

Círculo [ DrawCircle() ]

En algunas instancias usted podría desear diseñaruna ventana de diálogo que incorpore un gráficocreado mediante el ingreso de sus datos o desde lasalida de un proceso, o algún otro gráfico.Numerosas funciones en el grupo de funciones deDibujo le permiten dibujar líneas, formasgeométricas y textos, así como fijar el color y otrascaracterísticas de estilo. Para utilizar estas funcionesusted debe incluir un widget XmDrawingArea ensu ventana de diálogo.

El guión DIALOG3.SML ilustra como estructurar yutilizar un área de dibujo en una ventana de diálogo.Cuando usted crea el área de dibujo, se especificasu alto y ancho en pixeles de pantalla conjuntamentecon el widget principal y los ambientes de enlace.La ubicación de los elementos en el área de dibujoestán referidos a un sistema de coordenadas X-Ycon unidades de pixeles de pantalla y origen(posición 0,0) en la esquina superior izquierda delárea de dibujo. Cuando utiliza funciones comoSetColor(), SetLineWidth(), y DrawTextSetFont(),estos parámetros se usan por las funciones de dibujosubsecuentes hasta que usted invoca nuevamentela función “Set” para cambiar los parámetros. Estosparámetros son almacenados en una estructurallamada contexto gráfico, el cual es creado por lafunción CreateGCForDrawingArea(). El GC debetambién ser activado por la función ActivateGC()antes de que pueda ser utilizado.

Si su ventana de diálogo es cubierta por otra ventana yluego descubierta, los widgets regulares Xm sonredibujados automáticamente. Sin embargo si utiliza unárea de dibujo, su guión debe en forma explícita manejareste evento. Usted debe añadir a la lista de llamadas delwidget del área de dibujo un ExposeCallback. Estallamada es activada automáticamente cuando se abre laventana o expuesta de otra manera. Todas lasinstrucciones del dibujo deben ser ubicadas dentro delproceso de llamada, de forma que el dibujo es activadopor cualquier evento de exposición. Un contexto gráficorequiere una ventana activa, de forma que el GC debetambién ser creado y activado dentro de la llamada.

Texto (rotado)[ DrawTextSimple() ]

El guión DIALOG3.SML usa unwidget de área de dibujo paradibujar (en orden) unrectángulo relleno en blanco,un círculo rojo relleno, uncírculo amarillo, y un textosimple. El guión para laHerramienta de Perfil Raster,descrito en una páginaposterior, incluye un ejemplomás complejo del uso de unárea de dibujo.

Page 34: U I O N E Escribiendo M Guiones con

página 34

Lenguaje de Manipulación Espacial

Traducción: Alberto Andrade

Creando un Despliegue en una Ventana de Diálogo

PASOS:seleccione File / Open /*.SML File y abra LITEDATA

/ SML / VIEW.SML

Ejecute el guión usandocomo raster de ingreso_8_BIT desde el Archivode Proyecto CB_COMP enLITEDATA / CB_DATA

seleccione View / Closepara cerrar la ventana

seleccione File / Open /*.SML File y abra LITEDATA

/ SML / BOXCAR2.SML

ejecute el guión,seleccionando comorasters de ingreso RED,GREEN, y BLUE desde elArchivo de ProyectoCB_TM en LITEDATA /CB_DATA

presione [Process] en laventana BoxcarClassification paraejecutar usando losvalores por defectoestudie el guión paramirar como los distintoscomponentes de laventana sonestructurados y como lasacciones son controladas

Una ventana de diálogo creada por un guión SMLpuede desplegar objetos de ingreso y salida en unaventana de despliegue. La funciónGroupCreateView() es utilizada para crear un wid-get de despliegue, para desplegar un grupo degeodatos dentro del diálogo principal. Otrasfunciones en los grupos de funciones Geodata Dis-play, Geodata Display Group, Geodata DisplayLayout, y Geodata Display View, le permitenestructurar un grupo para despliegue, para añadirobjetos y para acceder a información de escala y

coordenadas.

El guión de ejemplo VIEW.SML muestra los pasosbásicos requeridos para abrir una ventana dedespliegue de un grupo y desplegar un raster deingreso. El guión de ejemplo BOXCAR2.SML creauna más compleja ventana de diálogo,incorporando una cantidad de otros widgetsadicionalmente al de despliegue.

Por defecto, unwidget de unavista dedespliegue,incluye menúesestándar, barrasde herramientasbásicas, línea deescala/posición,y línea deestado. Elparámetrocreateflag$ de lafunción GroupCreateView() le permite si así lo desea eliminarlos elementos seleccionados de la ventana. Por ejemplo, laventana de despliegue Boxcar no tiene la línea de Escala /Posición o línea de estado.

El guión deejemploBOXCAR2.SML

provee unejemplo máscomplejo de

una ventana dediálogoincorporandouna vista dedespliegue.

Page 35: U I O N E Escribiendo M Guiones con

página 35

Lenguaje de Manipulación Espacial

Traducción: Alberto Andrade

Sistemas de Coordenadas en las VistasPASOS

seleccione File / Open /*.SML File y escoja /LITEDATA / SML / PTCOORD.SML

ejecute el guiónclic con el botón izquierdo

en la ventana para ubicarla herramienta de punto

clic derecho para mirar lascoordenadas en la ventanade Consola

pruebe varias ubicaciones depuntos para mirar comovarían los distintos tipos decoordenadasestudie el guión para mirar

como se ejecutan lastransformaciones decoordenadas

Cierre la ventana FindPoint Coordinatescuando haya terminado

Los ejercicios previos han discutido las funcionesSML que usan la información de georeferencia delos objetos para convertir información de posiciónentre las coordenadas del objeto (tales como losnúmeros de filas y columnas de un raster) y lascoordenadas del mapa. Cuando despliega objetosespaciales en una vista dentro de una ventana dedialogo, varios otros sistemas de coordenadas entranen juego. El guión de ejemplo PTCOORD.SML leayudará a explorar estos sistemas de coordenadas eilustra los recursos disponibles para la conversiónentre ellos. El guión despliega un rasterpredeterminado (con coordenadas UTM) y un objetovector (con coordenadas en Latitud y Longitud) yprovee una herramienta gráfica tipo punto, con lacual puede escoger una posición. Cuando aplica laherramienta (clic derecho) la posición del punto esreportada en la ventana de la consola en variossistemas de coordenadas.

Una herramienta gráfica usada en la vistaretorna las posiciones en coordenadas de lavista. Para un grupo simple de una sola vista,las coordenadas de la vista corresponden a lascoordenadas de mapa del grupo. El sistema decoordenadas del grupo es determinadoinicialmente por la georeferencia del primernivel agregado al grupo, pero puede sermodificado por el guión restableciendo la claseProyección para el grupo. Las coordenadas depantalla son las coordenadas del área de dibujode la vista (en pixeles), donde los objetos sonde hecho desplegados. Si desea que el guióndibuje características adicionales en el área dedibujo, las funciones de dibujo requieren de lascoordenadas de pantalla. Cada nivel en la vistatambién tiene las coordenadas del nivel, lascuales son las coordenadas del objeto para el objeto enel nivel, tanto como las coordenadas del mapa del nivel.El grupo de funcionesGeodata Display Viewincluye funciones paratrasladar entre coordenadasde vista y pantalla, nivel yde mapa de nivel.

Page 36: U I O N E Escribiendo M Guiones con

página 36

Lenguaje de Manipulación Espacial

Traducción: Alberto Andrade

Guiones de Generación de AnimacionesUn guión SML puede crear y registrar animacionespersonalizadas desde sus datos geoespaciales. Elguión de ejemplo en este ejercicio crea un archivode animación mostrando una serie de divisoriasvisuales calculadas desde un raster de elevación endiferentes puntos a lo largo de una línea vector.

Cualquier animación consiste de una secuencia decuadros estáticos que varían gradualmente. Unguión de generación de animaciones captura loscuadros desde el contenido de una o más ventanasde vista creadas por el guión y copia cada cuadroen un archivo de salida MPEG o AVI. La animaciónpuede por consiguiente registrar cualquier cambiosecuencial en la ventana(s) de la vista usada paracrear los cuadros. Las funciones en el grupo Frameand Movies son utilizadas para fijar los parámetrosgenerales de cuadro y animación, para capturar elcontenido de la ventana de vista a un cuadro y copiarel contenido del cuadro al archivo de salida. Ustedpuede también anotar cada cuadro con texto omarcas de posición usando las funciones del grupode funciones de Dibujo.

Los cambios secuenciales en la ventana de vistapueden ser logrados de varias maneras. El guión

puede añadir y remover una serie de nivelespreviamente preparados desde y hacia lavista. También puede modificar losparámetros de despliegue para un nivelcontinuo único. Para objetos vector, estopodría involucrar acomodar los estilos deelementos en una secuencia de variación devalores de atributos (tales como poblaciónen diferentes años). El método final esejemplificado por el guión VSHEDMOV: elguión mismo calcula los cambios de los datosproporcionados y parámetros. Para cadacuadro en esta animación, el guión calculala divisoria visual y la despliega en laventana de vista en amarillo sobre el

despliegue sombreado de relieve del modelo deelevación.

PASOSseleccione Process /SML / Edit Script delmenú principal deTNTmipsescoja File / Open /

*.SML File y seleccionede su directorio principalTNT CUSTOM / MOVIE /VSHEDMOV.SML

estudie la estructura ycomentarios del guión

Más acerca de guiones para la generación de animaciones esta disponible en un documento enlínea en http://www.microimages.com/relnotes/v64/viewmarks.pdf

Page 37: U I O N E Escribiendo M Guiones con

página 37

Lenguaje de Manipulación Espacial

Traducción: Alberto Andrade

Guiones de Simulaciones 3D

Animaciones creadas desde este ejemplo de guión de animación SML puede obtenerse en

http://www.microimages.com/promo/smlmovies

Un guión de animación SML puede utilizar lascapacidades de despliegue perspectivo 3D deTNTmips, para registrar animacionespersonalizadas 3D. Un guión puede abrir unaventana de vista perspectiva 3D y cambiar losparámetros de despliegue para cada cuadro en laanimación, permitiéndole moverse por encima,sobre y alrededor de una superficie 3D. SMLincorpora toda la funcionalidad del procesode simulación 3D de TNTmips, pero expandesu control sobre los parámetros de despliegue.

Los miembros de la Clase y métodos de la claseVIEWPOINT3D son usados para manipularlos parámetros para la vista 3D. Cada vista3D tiene una posición del visor y una posición a laque está mirando, el punto donde la vista actualestá centrada. SML le provee de un completo con-trol sobre las dos posiciones. Usted puede fijarexplícitamente las coordenadas del visor y laposición central de la vista de cada cuadro, o movercada posición una distancia específica o direcciónrelativa a la posición previa. Cualquier posiciónpuede ser rotada alrededor de otra. Usted tambiénpuede fijar cualquierposición y luegoespecificar un acimut,ángulo de elevación ydistancia para definir laotra posición.

El guión PATHCHT1 copia lasdos vistas 2D y 3D en cadacuadro de la animación. Lasposiciones del visor y centrode vista son calculadas delíneas vector 2D que estándesplegadas en la vista 2D,pero que son ocultadas en lavista 3D. Las posiciones actuales del visor y centro devista se muestran por medio de símbolos dibujados en laporción 2D de cada cuadro después de que las vistanhan sido capturadas.

PASOSescoja File / Open /

*.SML File y seleccionede su directorio principalde TNT CUSTOM / MOVIE /PATHCHT1.SML

estudie la estructura ycomentarios del guión

Para registrar una animacióndesde un guión SML, se debedisponer de un softwarecapaz de codificar archivosMPEG (cualquier plataformade computadora) o archivosAVI (únicamente plataformasWindows). Cuando el registroinicia, se abre una ventanaque le permite seleccionar lasopciones de compresión.

Page 38: U I O N E Escribiendo M Guiones con

página 38

Lenguaje de Manipulación Espacial

Traducción: Alberto Andrade

APPLIDATs

seleccione File / Open /RVC Object en la ventanaSMLseleccione /LITEDATA / SML /SMLLAYER.RVC / ARROW

seleccione el icono File /Edit Toolbaren la ventana Select BitmapPattern, clic el botón Set yescoja el conjunto Advisorde la listaseleccione el icono“gold” ilustrado yclic OKclic [Yes] paraconfirmar suopción en la caja de dialogoVerify

Barra de herramientas delAPPKIDAT Benchmark

Usted puede usar SML para crear productos llaveen mano de aplicaciones geoespaciales autónomos,denominados APPLIDATs. Un APPLIDAT puedeincluir un guión SML o una serie de guiones juntocon los datos geoespaciales a ser procesados. Dadoque se acoplan datos y guiones, ellos se cargan jun-tos automáticamente cuando el APPLIDAT seejecuta. No hay necesidad de que el usuario naveguey cargue los datos manualmente. Un APPLIDATes por consiguiente ideal para proporcionar datoscon aplicaciones personalizadas a usuarios que noestán familiarizado con la interface de TNT.

Un APPLIDAT incluye uno o más objetos guiónSML en un Archivo de Proyecto TNT, que se harenombrado con la extensión de archivo. SML. Losusuarios pueden ejecutar un APPLIDAT con undoble clic en el archivo o usando un icono de accesodirecto del escritorio. (Como se indica en esteejercicio, los usuarios de TNTmips también puedenejecutar un APPLIDAT del Menú Custom /APPLIDAT.) Ejecutando un APPLIDAT inicializaTNTview (con la interface normal escondida) y abreuna barra de herramientas personalizada, con unicono para cada guión incluido. Los botones deiconos para abrir la interface estándar de TNTviewy para salir del APPLIDAT también son incluidosautomáticamente. Usted puede escribir loscomponentes del guión para usar datos almacenadosen el mismo Archivo de Proyecto SML o en unArchivo de Proyecto normal acompañando en elmismo directorio.

Cuando un objeto guión se crea en un Archivo deProyecto, TNT le asigna automáticamente un icono desubobjeto predefinido, que usted puede revisar o puedecambiar con un icono diferente. Cuando el APPLIDATes ejecutado, se agregan a la barra de herramientas losbotones de los iconos de los guiones, desde la izquierdaen orden alfabético según los nombres de guión. Si suAPPLIDAT incluye varios guiones que deben ejecutarseen un orden definido, nombre los guiones para que elorden alfabético de sus nombres siga la sucesión definidadel proceso. La descripción de un objeto guión se usaautomáticamente como la guía informativa para el botónde su icono.

SalirTNTviewInstrucciones

Guión SML: TNT Benchmark

PASOSseleccione Custom /APPLIDAT / BENCHMRK

clic el botón del iconoInstructions en la barra deherramientaspresione [Close] en laventana Helpclic el botón del iconoTNT Benchmarkpruebe algunos de losprocesos benchmark,luego presione [Exit] clic el botón Exit en la

barra de herramientas

Page 39: U I O N E Escribiendo M Guiones con

página 39

Lenguaje de Manipulación Espacial

Traducción: Alberto Andrade

Proporcionando Instrucciones para APPLIDATs

SML le permite escribir APPLIDATs que tienenuna interface intuitiva. Sus usuarios no necesitanser entrenados en (o incluso estar conscientes de)los productos TNT. Todas las instruccionesnecesarias pueden descubrirse la primera vez queel APPLIDAT se usa, o ser fácilmenteredescubiertas después de un lapso de tiempo.Simplemente incluya en su APPLIDAT una copiadel guión HELP.SML del APPLIDAT BENCHMARK.Este guión crea una ventana del diálogo paradesplegar texto en formato HTML e ilustraciones.El juego de instrucciones HTML se almacena comoun subobjeto del guión de HELP.SML.

Un conjunto de instrucciones es fácil de crear ymantener porque usted puede usar cualquier editorque soporte el formato HTML. Así usted puedeescribir sus instrucciones en un programa comoMicrosoft Word y usar la opción Guardar Como...para almacenar el archivo en formato HTML. Paraasociar su nuevo archivo de ayuda con elAPPLIDAT, edite el guión HELP en el editor deguiones SML y seleccione Add Text Objects delmenú File. Cuando usted selecciona su archivoHTML, TNT lo copia a un subobjeto del guión.

PASOSescoja File / Open /*.SML File en la ventanaSMLseleccione BENCHMRK.SML

en la ventana Select Fileseleccione el objeto guión

Help en la ventanaSelect Object

examine la estructura ycomentarios del guión

NOTA: para abrir los objetosguión en un Archivo deProyecto APPLIDAT (archivode extensión .SML) en eleditor SML, usted debe usarFile / Open / *.SML File.Cuando usted selecciona unarchivo SML que en realidades un Archivo de Proyecto, seabre una ventana deselección de objetos, parapermitirle seleccionar unobjeto guión desde dentro delarchivo.

Usted puedecopiar este guiónde Ayuda a supropio archivoAPPLIDAT yusarlodirectamente paracrear susInstrucciones oventana de Ayuda.Un juego deinstrucciones nose separará de suAPPLIDATporque estáempaquetado conlos otrosrecursos.

Page 40: U I O N E Escribiendo M Guiones con

página 40

Lenguaje de Manipulación Espacial

Traducción: Alberto Andrade

APPLIDAT BIOMASS2

El APPLIDAT biomass2 fue escrito porMicroImages para proporcionar un ejemplo yprototipo de un producto llave en mano de

APPLIDAT. Este ilustra cómo unAPPLIDAT puede permitir al usuariollevar a cabo una serie de operacionesen los datos de la entrada y

automáticamente pasar a los productos intermediosa lo largo de la siguiente operación. En este ejemplola aplicación le permitiría a un granjero determinarla biomasa de la cosecha para cualquiera áreadesignada de una imagen infrarroja en color,desplegar los recursos de la granja encima de laimagen y mapa de la biomasa, y despliega una vistaperspectiva 3D de la imagen y mapa de la biomasa.Las Instrucciones para el APPLIDAT BIOMASS2proporcionan una apreciación global más detalladade cada operación.

El archivo APPLIDAT (BIOMASS2.SML) incluye tresobjetos guión de procesamiento: Biomass (Mapeode Biomasa), Pinmap (Despliegue de Recursos), yView3D (Simulación 3D) esto está diseñado paraser ejecutado en ese orden (note el orden alfabéticode los nombres de los guiones y las posiciones desus iconos en la barra de herramientas).Instrucciones para el producto están contenidas enel guión llamado About (note que el propio guióncontiene las instrucciones en formato HTML, enlugar de usar un subobjeto HTML). Todos los datosde entrada están en el archivo APPLIDAT. Losobjetos espaciales producidos por el APPLIDAT,se almacenan y recuperan conforme se necesitanen el Archivo de Proyecto adjunto BIOMASS.RVC.

Después de que usted ha ejecutado el APPLIDAT,debe examinar la estructura y componentes delguión. Cada guión contiene el código para crearsu ventana de diálogo y controles, losprocedimientos de llamadas asignados a esoscontroles, e instrucciones para la entrada y salidade datos. Usted puede usar éstos como modelos paradesarrollar sus propios programas de APPLIDATtipo llave en mano.

PASOSseleccione Support /Maintenance / Project Filedel menú principal deTNTmips y examine elcontenido de BIOMASS2.SML

en la carpeta Custom /APPLIDAT de su carpetaprincipal de productosTNTsalir de Project FileMaintenance y seleccioneCustom / APPLIDAT /BIOMASS2clic el botón del iconoInstructions y lea lasinstruccionesclic en el botón del iconoBiomass Mapping, definaun área para mapear,filtre el resultado, yconviértalo a vectorsalga de la ventanaBiomass Mappingejecutar las aplicaciones

de Asset Mapping y 3DSimulation

salga del APPLIDATBIOMASS2 cuando hayaterminado

Mapeo deBiomasa

Manejo deRecursos

Simulation3D

Instrucciones

Page 41: U I O N E Escribiendo M Guiones con

página 41

Lenguaje de Manipulación Espacial

Traducción: Alberto Andrade

Guiones de Herramientas y MacrosGuiones de Herramientas y Macros son formas especializadas de guiones SMLque se inician desde un botón del icono en la ventana de Despliegue y se accedenautomáticamente y operan en los objetos en la vista. Usted puede crear guionesde herramientas o guiones de macros que permiten a cualquier usuario ejecutarlos procedimientos personalizados en las capas de datos espaciales cargadas enla ventana de despliegue. Después de que usted agrega un guión de herramientaso un guión de macros, el botón del icono aparece en la barra de herramientas decada ventana de despliegue para todos los procesos de TNT. Y cada ventanaView ofrece selecciones de menú que le permiten fácilmente agregar o eliminarguiones de Herramienta y guiones de Macros (Options / Customize).

Los guiones de macros yherramientas sonejecutados desde losbotones de los iconos enla barra de herramientasde la ventana dedespliegue.

Para el desarrollador de guiones, los guiones de macros y de herramientas leproporcionan una manera aerodinámica de proporcionar capacidades de procesamientopersonalizadas, que requieren la interacción visual con los datos espaciales. Parahacer esto en un guión SML normal, usted tiene que proporcionar el código para creary manejar la ventana View y su contenido. Pero porque se invocan guiones de macrosy de herramientas desde una ventana de despliegue, la mayoría de esa gestión esejecutada automáticamente, y usted puede enfocarse en codificar el procesamientopersonalizado propiamente dicho.

Los guiones de macros y de herramientas:

• se ejecutan desde un botón del icono en la barra de herramientas de la ventana deVista;

• pueden acceder elementos de la vista actual, como los niveles, extensión, proyección,elementos seleccionados, factor de ampliación, escala, y estilos;

• pueden operar en los objetos en la vista actual u objetos contenidos en la mismaárea;

• pueden agregar un nivel recientemente creado a la vista;• pueden empezar un programa externo y proporcionarle datos derivados de la

vista actual.Un guión de herramienta invoca una herramienta de dibujo y/o una ventana de diálogo(definida por el desarrollador del guión), eso le permite al usuario interactuar con losdatos espaciales en la ventana de vista. Por ejemplo, el usuario podría delinear unaárea o seleccionar los elementos particulares ser procesados. Un guión de macros nopermite tal interacción gráfica, pero puede establecerse con un menú desplegable queproporciona las opciones del programa.

Page 42: U I O N E Escribiendo M Guiones con

página 42

Lenguaje de Manipulación Espacial

Traducción: Alberto Andrade

Estructura de un Guión de MacrosPara agregar un guión de macros de forma que pueda ejecutarse desde un iconoen la barra de herramientas de la ventana View, escoja Options / Customize /Macro Scripts de la ventana View en cualquier proceso. Haciendo esta selecciónse abre la ventana Customize Macro Scripts. Si quiere agregar un guión existente,pulse el botón del icono Add para abrir la ventana de selección de archivo, para

que pueda navegar al guión yseleccionarlo. Para crear un nuevoguión de macro, pulse el botón delicono New. Una ventana de Editorde Consultas se abre con un guiónpredefinido que contiene una lista de

símbolos predefinidos quepuede usar en el guión demacros. La ventana de Edi-tor de Consultas incluyetodas las características decreación y edición deguiones de una ventanaSML normal.

Una vez usted ha creado oha agregado un guión de macros, la ventana Macro Script Properties se abre.Esta ventana le permite escoger un icono, indicar si el guión se ejecuta de unbotón simple o un botón del menú, prepara la barra de herramientas para elbotón del icono, ingresa los ítems del menú si se utiliza un botón de menú, yprueba su guión. Escoja un botón simple para hacer que su guión de herramientase ejecute automáticamente sin ingreso adicional del usuario. Escoja un botónde menú si quiere que se presentenopciones desplegables cuando elbotón es pulsado. Si es escogido unBotón de Menú en la ventanaMacro Script Properties, el campode texto Menu Choices se poneactivo para que usted puedaingresar en las opciones del menúnecesarias para el guión.

Ingrese la información que quieredirectamente en el campo ToolTip. Estainformación aparece cuando el cursorse coloca encima del icono del guión de macros en la ventana de Vista. El botón dePrueba al fondo de la ventana le permite ejecutar su guión sin cerrar las ventanaspersonalizadas. Pulse OK en las ventanas Macro Script Properties y Customize MacroScripts cuando haya terminado de añadir, desarrollar, y/o comprobar su guión.

Escoja un icono, ToolTip y otrascaracterísticas en el diálogo MacroScript Properties.

Nuevo AñadirEjempos de guiones macrospueden hallarse en elsubdirectorio MACRSCR deldirectorio primario de TNT.

Page 43: U I O N E Escribiendo M Guiones con

página 43

Lenguaje de Manipulación Espacial

Traducción: Alberto Andrade

Ejemplo de Guión de Macros: Ampliación a EscalaAlgunos ejemplos de guiones de macros seproporcionan en el subdirectorio MACRSCR en sudirectorio primario de TNT. Estudie estosejemplos para entender como estructurarsus propios guiones de macros.

El guión de macros Zoom to Scale lepermite al visor redibujar la ventana deVista a una de varias escalas de mapasseleccionadas del botón del menúdesplegable del guión. Para una operaciónadecuada del guión, los objetos en laventana de vista o deben estar georeferenciados, odeben estar calibrados a una escala.

Las selecciones del menú no se predeterminan por elguión Zoom to Scale. Cuando usted instala el guión, eslibre de preparar las opciones del menú con el rango deselecciones de escala más apropiado para sus datos. Elguión acepta ingreso de escala del menú como escala delmapa o dimensiones del terreno. Si la entrada del menúes completamente numérica, se interpreta como eldenominador de la fracción de la escala de mapa. Porejemplo, 12000 es interpretado como una escala del mapade 1:12000. Si el ingreso del menú está en dos partesseparadas por un espacio (como “1 mi”), la primera partede la entrada se interpreta como una dimensión en millasdel terreno. (Esta porción del guión puede modificarsefácilmente para aceptar lasdimensiones en kilómetros u otrasunidades de distancia.) El guiónrealiza luego los cálculosnecesarios y fija entonces la nuevaescala del mapa para la ventana deVista.

La variable predefinida del guiónde macros MenuChoice$ es usadapara representar la selección delusuario en el botón del menú delguión de macros. Para la entradanumérica, este texto debe convertirse a un valor numéricousando la función StrToNum ().

Al instalar el guión Zoom toScale, fije las opciones demenú de escala que sean lasmás apropiadas para susdatos espaciales.

Más acerca del guión de macro Zoom to Scale está disponible en el documento en línea en

http://www.microimages.com/relnotes/v64/zoomto.pdf

Page 44: U I O N E Escribiendo M Guiones con

página 44

Lenguaje de Manipulación Espacial

Traducción: Alberto Andrade

Ejemplo de Guión de Macros: Instantánea

El guión de la Instantánea es un ejemplo simple deun guión de macros que procesa los datos de unaventana de Vista y ejecuta una aplicación externa.El guión captura una instantánea de la pantalla dela ventana de vista y la exporta a un formato dearchivo de imagen que usted ha escogido del botóndel menú desplegable del guión. El guión lanza elprograma de aplicación que usted ha registradopreviamente con su sistema operativo para abrirentonces ese tipo de archivo.

El guión de la Instantánea se haescrito para crear formatos dearchivo específicos: JPEG, PNG,BMP, PCX, GIF, TIFF, yarchivos ASCII con TXT o DOCcomo extensiones. Cuando ustedagrega este guión de macros auna ventana de Vista, usted debefijar las opciones para el botóndel menú de guión de esteconjunto de formatos. El textopara cada entrada del menú debeemparejar exactamente elcarácter de texto esperado por el

guión, incluyendo mayúsculas y minúsculas (porejemplo, JPEG en lugar de Jpeg).

El guión almacena la instantánea inicialmente como unobjeto raster de color compuesto temporal. Laprofundidad de bits del color compuesto es determinada

por los parámetros de despliegue de sucomputadora. El segmento de guión para cadaformato de archivo realiza una conversión decolor a la profundidad de color apropiada paraese formato previo a su exportación. Elarchivo de salida se almacenaautomáticamente en el mismo directorio delguión, entonces la aplicación asociada alarchivo es ejecutada. Estas operaciones hacenuso de la variable clase _context, la queespecifica la información del contexto inte-rior para el guión. El miembro de la clase

_context.ScriptDir especifica el directorio en que el guiónse encuentra.

La instantáneaalmacenada de la ventanade Vista con el fondo delraster y variassobrepuestas de vector.

Page 45: U I O N E Escribiendo M Guiones con

página 45

Lenguaje de Manipulación Espacial

Traducción: Alberto Andrade

Los botones del icono delguión de herramientas,aparecen a la izquierda decualquier icono de Guión deMacros en la barra deherramientas de la ventanade Vista.

Plantilla para Guión de HerramientasPara añadir un guión de herramienta que ejecutedesde el botón de un icono en la barra deherramientas de la ventana de Vista, escoja Op-tions / Customize / Tool Scripts de la ventana Viewen cualquier proceso de TNT que tiene una ventanade despliegue. Haciendo esta selección se abre laventana Customize Tool Scripts,que es casi idéntica a la ventanaCustomize Macro Scripts,tratada previamente.

Para crear un nuevo guión deherramienta, pulse el botón en elbotón del icono New para abrirla ventana de Edición deConsultas, la que muestra laplantilla del guión deherramientas. La plantilla listavarios símbolos predefinidos yvalores que usted puede usar encualquier guión de herramientas.Los valores predefinidosincluyen las coordenadas X , Ydel cursor de la pantalla dentrode la vista (en pixeles) y valoresque graban las acciones de botóndel mouse.

Adicionalmente, la plantilla del guión de herramientasincluye las definiciones básicas de las funciones probablesa ser usadas en un guión de herramientas. Éstos incluyenlas funciones usadas la primera vez cuando unaherramienta es activada; cuando la herramienta secancela; cuando la herramienta es activada y desactivada;cuando la herramienta se suspende (durante un redibujo)y reasumida (después del redibujo); cuando los botonesizquierdo, derecho, o medio del mouse se presionan osueltan; cuando el cursor se mueve sin presionar unbotón; cuando el cursor se mueve con un botónpresionado; cuando el cursor entra o deja la ventanade despliegue; y cuando el usuario presiona una tecla.Para crear su guión, remueva los caracteres decomentario (#) a la izquierda de cada definición de lafunción usted necesita y agregue el código paraespecificar la acción deseada a ser llevada a cabo poresa función.

botones de guiónde herramientas

botones de guiónde macros

Page 46: U I O N E Escribiendo M Guiones con

página 46

Lenguaje de Manipulación Espacial

Traducción: Alberto Andrade

El guión de selección de punto (POINTSEL.SML) ilustracómo preparar una guión de herramientas quepermite al usuario interactivamente seleccionarelementos de un objeto vector en la ventana dedespliegue. En este caso el guión selecciona elelemento punto más cercano cuando el botón delratón izquierdo se presiona; esta acción se controlapor la definición de la función OnLeftButtonPress(). Este simple guión únicamente selecciona elpunto, pero la función de presionar el botón podríaexpandirse para usar el punto seleccionado paraprocesos posteriores, como escribir a un archivo

externo las coordenadas demapa de cada punto.

Dado que un guión deherramientas se ejecutainteractivamente desde unaventana de despliegue, todoel proceso se lleva a cabo porfunciones del guiónejecutadas por las accionesdel mouse o por accionesllevadas a cabo en ventanasde diálogo creadas por elguión. Las definiciones de lafunción que ustedproporciona para losnombres de las funcionespredefinidas, pueden llamara otras funciones yprocedimientos definidos enotras partes del guión deherramientas. En el guión deselección de puntos, porejemplo, la funciónOnLeftButtonPress() llama a

una función previamente definida checkLayer()queverifica para asegurarse que el grupo activo contiene unnivel, y que el nivel es un objeto vector. La funciónOnInitialize también llama a un procedimiento cbGroup()para identificar al grupo activo en un formato de múltiplesgrupos. Este código generaliza el guión de herramientaspara el uso bien sea en una vista de grupo o en unaventana de vista de formato.

Ejemplo de Guión de Herramientas:Selección de Puntos

Se proporcionan variosejemplos de guiones deherramientas con losproductos TNT en elsubdirectorio TOOLSCR bajo sudirectorio principal de TNT.Usted puede usar loscomponentes de cualquiera otodos estos guiones paracrear la herramientapersonalizada que ustednecesita para su aplicaciónespecializada.

Los Guiones de Herramientaspueden incluir procedimientosdefinidos por el usuario yfunciones que se llaman porotras funciones en el guión.

Page 47: U I O N E Escribiendo M Guiones con

página 47

Lenguaje de Manipulación Espacial

Traducción: Alberto Andrade

Más acerca del guión de herramienta ViewMarks esta disponible en un docuemnto en línea en

http://www.microimages.com/relnotes/v64/viewmarks.pdf

VPTOOL.SML le permiteescoger un punto devista de la Lista depuntos, para centrar lavista a esa ubicación yescala.

El guión de herramientas de (Marcas de vista)ViewMarks (VPTOOL.SML) le permite registrar unalista de marcas de posición para la ventana de Vista.Un ViewMark registra las coordenadas de mapa delcentro de vista actual (en latitud/longitud) y laescala del mapa. Una vez creada la lista, usted puedeseleccionar un ViewMark y centrar la ventana dedespliegue en esa posición y escala designadas. LosViewMarks son particularmente útiles paraformatos que cubren una área geográfica grande,sobre todo cuando el formato usa la limitación devisibilidad por escala del mapa para agregar y quitarniveles automáticamente, conforme usted amplia oreduce el área de vista en lapantalla de despliegue.

El guión de ViewMarks crea unaventana de diálogo Viewpoint Listque proporciona una listainteractiva así como los botonesusados para inicializar las accionesdel guión; no hay ningunaherramienta gráfica creada por elguión. Este diálogo se crea pormedio de la función OnInitialize(). Los botones del icono en laventana le permiten agregar o quiteViewMarks de la lista y hacer unacercamiento a la marcaseleccionada. Otros botones parapresionar le permiten guardar lalista a un archivo de texto, abrirun archivo existente de puntos devista, crear una nueva lista, o cerrarla ventana. Cada uno de estos botones llama a una funciónseparada o a un procedimiento definido en el guión deherramientas.

Cuando usted agrega un ViewMark, una ventana deingreso se abre para permitirle nombrar la marca. (Elnombre predefinido es el nivel de ampliación ycoordenada de la posición). Los nombres de ViewMarkse guardan en una lista de widget (clase XmList). Losvalores de la escala y las coordenadas X, Y se almacenanen arreglos numéricos separados.

Ejemplo de Guión de Herramientas: Marcas de Vista

Page 48: U I O N E Escribiendo M Guiones con

página 48

Lenguaje de Manipulación Espacial

Traducción: Alberto Andrade

Ejemplo de Guión de Herramientas: Perfil RasterEl guión de herramientas para Perfil Raster(RASTPROF.SML) proporciona una herramienta de líneaque registra y plotea un perfil de los valores rasterde las celdas a lo largo de una línea dibujada por el

usuario. El raster designado para el perfildeben ser la capa activa en la vista, y lasposiciones x-y para los valores se registranen las coordenadas del raster (la columnay fila de la línea). Aunque el ploteo delperfil es el resultado final en este ejemplo,el guión puede modificarse para convertirlas posiciones a coordenadas del mapa,

aplicar un procesamiento adicional a los valores delperfil, o escriba éstos a un archivo de texto.

Una porción de la función OnInitialize () en el guióninvoca una herramienta estándar interactiva delínea:

tool = ViewCreateLineTool(View);ToolAddCallback(tool.ApplyCallback,

cbToolApply);

(La herramienta variable fue previamente declaradacomo un miembro de la clase LineTool.) Elprocedimiento cbToolApply() que adquiere el perfilse llama cuando la herramienta es aplicada pormedio de una presión del botón derecho del ratón.

Este enlace se establece en lasegunda declaración delfragmento arriba, el mismo queañade el nombre delprocedimiento a la lista de laherramienta ApplyCallback.Esta estructura exime de lanecesidad de una funciónOnRightButtonPush separada.

El guión también demuestracómo el resultado de una acciónpuede mostrarse gráficamenteen una ventana creada por elguión. El código que dibuja losejes del gráfico, las etiquetas, yel perfil esta contenido en elprocedimiento cbRedraw()definido en el guión.

Page 49: U I O N E Escribiendo M Guiones con

página 49

Lenguaje de Manipulación Espacial

Traducción: Alberto Andrade

Más acerca del guión Estadísticas de un Área está disponible en el documento en línea en

http://www.microimages.com/relnotes/v64/polystats.pdf

El guión de herramienta de Estadísticas de Area(REGSTATS.SML) muestra cómo usted puede crear unaherramienta personalizada para permitir al usuariodibujar un polígono en la ventana de despliegue,convertir el polígono a una región, y usar la regiónpara operar en otro objeto. En este ejemplo, la regiónse usa para la tarea simple de extraer las estadísticasde un nivel raster en la vista. Pero el guión podríamodificarse para ejecutar muchas otras funciones,como crear una máscara raster o para extraer loselementos de un objeto vector. Las operaciones dela región no se restringen a las capas en la vista;usted puede operar en cualquier objetogeoreferenciado que traslape la región definida.

Este guión opera en un objeto raster que es la capaactiva en la vista. En el ejemplo mostrado aquí, elpolígono es dibujado sobre un nivel de una imagentraslapando el nivel activo que contiene un rasterde elevación. Usando la región definida por laherramienta del polígono, el guión calcula elnúmero de celdas, de celdas nulas, mínimo,máximo, media y desviación estándar de los valoresraster incluidos, y el área,perímetro, ubicación delcentroide, y área de la superficiede la región. (Las estadísticaspueden calcularse paracualquier tipo de raster enescala de grises o binario, perono para rasters compuestos oniveles de raster RGB) Lasestadísticas se muestran en unaventana de diálogo Estadísticasde la Región creada por elguión. El guión puede convertirlos valores de distancia y áreaa las unidades seleccionadas delmenú de opciones en la ventana. Las estadísticastambién pueden almacenarse a un archivo de texto.

Guión de Herramientas: Estadísticas de un Área

Page 50: U I O N E Escribiendo M Guiones con

página 50

Lenguaje de Manipulación Espacial

Traducción: Alberto Andrade

Ejemplo de Guión: Estadísticas de una RegiónEl guión de herramientas de Estadísticas de una

Región (REGSTATP.SML), demuestra el diseñopara una guión que permite al usuarioseleccionar los polígonos de la ventana devista, crea una región a partir de los polígonosseleccionados, y usa la región resultante pararealizar una acción en otro objeto. La tareadel ejemplo para este guión es igual que parael guión de las Estadísticas de un Área: calculalas estadísticas de un nivel del raster en la vista.Como ese guión, sin embargo, usted podríavolver a escribir el procedimientocbToolApply () para realizar diferentes tiposde operaciones en otros objetos.

Este guión le permite seleccionar uno o máspolígonos de la capa superior en la vista (y verificapara asegurar que ese nivel es un objeto vector conlos polígonos). Se calculan las estadísticas para elnivel del fondo en la vista; el guión verifica paraasegurarse que ese nivel contiene un objeto rasteren escala de grises o binario. La ventana deEstadísticas de Región creada por el guión es simi-lar al usado por el guión de Estadísticas de Área,

pero incluye en el borde su-perior botones parapresionar, que permiten alusuario indicar si elpolígono seleccionado debeagregarse o substraerse dela región, y un botón paradespejar la región.

El guión de Estadísticas deRegión invoca unaherramienta estándar depunto con acciones delbotón del mousepredefinidas. Una presión

del botón izquierdo ubica la herramienta de punto,y una presión del botón derecho selecciona lospolígonos encerrados por la región.

Más acerca del guión de Estadísticas de Región esta disponible en el documento en línea en

http://www.microimages.com/relnotes/v64/regionstatistics.pdf

Page 51: U I O N E Escribiendo M Guiones con

página 51

Lenguaje de Manipulación Espacial

Traducción: Alberto Andrade

Ejemplo de Guión: Ejecutar un Explorador

El guión de herramientas Run Browser (URLS.SML) es unejemplo de un guión personalizado que ejecuta unprograma de aplicación externo. El guión permite alusuario preparar y usar los enlaces entre datos espacialesen una ventana de despliegue y sitios en el World WideWeb. Pueden hacerse enlaces a los valores de celda enun raster, o a valores de atributoespecíficos asociados con loselementos del vector. En uno omás URLs pueden asignarse paracada valor. Una vez que los en-laces han sido establecidos, elusuario puede seleccionar unelemento o celda en la ventana dedespliegue, escoger el URLdeseado, y entonces el guión ejecuta el explorador dered (Web Browser) predefinido, el cual va a la direcciónWeb deseada.

Para usar la herramienta, hacer un clic con el botónizquierdo en el polígono o la celda deseada, luego unclic en el botón derecho para confirmar que la herramientade selección está posicionada correctamente. El URL(s)asociado con el rasgo seleccionado aparece en la ventanaSelect a URL que es creada por el guión. Escoja el URLdeseado, luego haga clic en el botón de Lanzamiento delNavegador.

Los enlaces entre URLs yatributos del elemento ovalores de la celda, sealmacenan en un archivo deltexto separado, especificadoen el guión de ejemplonombrado como URL.TXT. Elarchivo de texto lista elnombre y descripción paracada objeto con los enlaces deURL. Las asociaciones eneste ejemplo de guión deherramientas se refieren específicamente a CB_DATA /CB_SOILS.RVC / CBSOILS_LITE, o BEREA / BERCRPCL.RVC /CLS_MAXLIKE.

Más información acerca del guión Run Browser está disponible en el docuemnto en línea en

http://www.microimages.com/relnotes/v64/runbrowser.pdf

Active el botón Add para fijarlos enlaces, y el botón Scanpara usar los enlacesexistentes. Para usar losenlaces en modo Scan,seleccione su URL deseado yhaga clic [Launch Browser].

Page 52: U I O N E Escribiendo M Guiones con

página 52

Lenguaje de Manipulación Espacial

Traducción: Alberto Andrade

Ejemplo de Guión: Búsqueda de CallesEl guión de herramientas para Búsqueda de Calles(STREETS.SML) ilustra cómo un guión puede accedera la información de la base de datos y realizar tareasespecializadas de selección. El guión usa un nombrede Calle ingresado por el usuario para localizar y

resaltar la línea vector querepresenta la Calle. El usuariopuede ingresar todo o parte deun nombre de Calle, y el guiónde herramientas despliega una

lista de todas las calles que contienen ese texto dela búsqueda. Cuando el usuario escoge una Callede la lista, el guión vuelve a dibujar la vista a1:30000 con todas las líneas que forman parte dela Calle resaltadas y centradas en la Vista. Si laslíneas de toda la Calle no encajan en la Vista a

1:30000, la Vista se vuelvea dibujar a una escala quecontiene totalmente laslíneas.

El guión usa los coloresactuales para realce de loselementos activos yseleccionados (Options /Colors). Para estaherramienta, la Calleseleccionada tendrá unaapariencia uniforme si

tanto el color activo como seleccionado son elmismo (amarillo en la ilustración de la ventana).

El nombre de la ciudad y el código postal tambiénse proporciona en la lista de calles encontrada. Elguión asume que no hay dos calles separadas conel mismo código postal y con el mismo nombre. Si,sin embargo, resulta que el nombre de la búsquedapertenece a dos calles diferentes en el mismo códigopostal (una Calle Principal, y otro Paseo Principal,por ejemplo), se lista sólo el primero encontradopero los dos se resaltan cuando esta selección seejecuta.

Más acerca del guión de herramientas Find Streets está disponible en el docuemnto en línea en

http://www.microimages.com/relnotes/v64/findstreets.pdf

STREETS.SML estácodificado para trabajarcon geodatos espe-cíficos de un atlas deejemplo de Francia.Usted debe modificar elguión antes de quefuncione con otrosgeodatos y atributos.

El usuario ingresa unnombre de Calle y el guiónde herramientas lo encuentraen el mapa.

Page 53: U I O N E Escribiendo M Guiones con

página 53

Lenguaje de Manipulación Espacial

Traducción: Alberto Andrade

Ejemplo de Guión: Camino de un FlujoEl guión de herramienta del Camino de un Flujo(Flow Path) muestra cómo pueden realizarseprocedimientos de análisis personalizados sobreniveles en la vista actual, usando un Guión deHerramienta SML. El guión usa funciones SMLwatershed que operan en un raster de elevación(DEM) que debe ser la primera capa en la ventanade despliegue.

Cuando el usuario inicia el guión, primero ejecutafunciones de watershed para crear una versión sindepresiones del DEM y un juego completo devectores de los caminos de flujo. Estascaracterísticas derivadas se requieren para los pasossubsecuentes del guión; ellosse guardan como objetostemporales y no sedespliegan en la vista. Elguión abre luego unaventana de FlowPath y Zonade Influencia y crea unaherramienta gráfica quepermite al usuario poner unoo más puntos semilla de lacuenca (watershed seedpoints) sobre el DEM o en un nivel de imagen quese traslape. Los botones interruptor en la ventanale permiten al usuario escoger calcular y desplegar:

• la cuenca upstream – aguas arriba- (el área conflujo hacia el punto semilla),• el camino del flujo downstream -aguas abajo- , y• una zona de influencia alrededor del camino deflujo.

Si el usuario pretende que los puntos semilla caigan a lolargo de un curso del arroyo, puede activar el botóninterruptor Move Seed Point to Flow Path. Cada puntosemilla se mueve entonces al camino de flujoprecalculado más cercano antes de que el nuevo caminode flujo y cuenca sean calculados. El usuario puedecolocar nuevos puntos semilla y repetir el análisis tantasveces como desee, y almacenar los objetos vectorcalculados.

Más acerca del guión de herramienta Flow Path está disponible en el docuemnto en línea en

http://www.microimages.com/relnotes/v64/flowpath.pdf

El guión también crea ydespliega (en rojo) un niveldel vector que demarca laextensión del DEM. Si unnivel de imagen con traslapoes más grande que el DEM,el usuario puede usar la cajade extensión para guiar lacolocación de los puntossemilla. La caja de laextensión también se usapara automáticamente cortarzonas de influenciacalculadas a partir de loscaminos de flujo queintersectan el límite del DEM.

Page 54: U I O N E Escribiendo M Guiones con

página 54

Lenguaje de Manipulación Espacial

Traducción: Alberto Andrade

Ejemplo de Guión: FRAGSTATSUna vez instalado un guión deherramientas, puede eje-cutarse desde cualquierventana de despliegue. Así queusted puede ejecutar elproceso de ClasificaciónAutomático e inmediatamentepuede ejecutar el guión deherramienta Fragstats en laparte del raster de Clase quese muestra en la ventana dedespliegue de la Clasificación.

Más acerca del guión de herramientas Fragstats esta disponible en el documento en línes en

http://www.microimages.com/relnotes/v65/fragstats.pdf

El guión de herramientas FRAGSTATS(FRAGTOOL.SML) es un ejemplo de un guión que extraelos datos espaciales de un nivel raster en eldespliegue y los pasa a una aplicación de unprograma externo para procesarlos. El programade FRAGSTATS fue desarrollado por ecólogos delpaisaje para calcular una variedad de estadísticassobre los modelos espaciales de áreas (parches)representando diferentes clases de hábitatsecológicos. La entrada apropiada para la

herramienta es porconsiguiente una claseraster que tenga un únicovalor entero asignado alas celdas para cadacategoría o clase. Ustedpuede crear el rasters declase a partir dei m á g e n e smultiespectrales usando

los procesos de Clasificación Automática o el Mapeode Características en TNTmips.

El guión de herramienta FRAGSTATS proporcionauna herramienta del polígono que permite al usuarioseleccionar un área (creada como un objeto regióntemporal) para calcular las estadísticas del paisaje.Cuando la herramienta es aplicada, el guión escribeel raster de clase a un archivo de texto para el usopor el programa FRAGSTATS. A las celdas fuerade la región de interés se les asigna valores de clasenegativos en el archivo de texto, que es laconvención de FRAGSTATS para identificar celdasque están fuera del “límite del paisaje.” El guiónejecuta entonces el programa FRAGSTATS en unambiente de DOS. FRAGSTATS identifica losparches homogéneos y calcula las estadísticas paralos parches individuales y para las clases completas.Las estadísticas se almacenan en una serie dearchivos de texto.

Una guión separado paraejecutar FRAGSTATS desdela interface de procesos SMLtambién está disponible.FRAGSTAT.SML puedeencontrarlo en su directorioprincipal de TNT bajo /Custom / General. Este guiónrequiere que ustedproporcione los raster declase y una máscara rasterbinaria para definir el área deinterés.

Page 55: U I O N E Escribiendo M Guiones con

página 55

Lenguaje de Manipulación Espacial

Traducción: Alberto Andrade

Ejemplo de Guión: Analizador de Comandos

Más acerca del guión Command Parser esta disponible en el documento en línea en

http://www.microimages.com/relnotes/v65/fixcolor.pdf

Algunas de los guiones de herramientas discutidospreviamente crean una ventana de controles quepermite a los usuarios ejecutar acciones del guiónusando botones para presionar u otros controles deinterface gráficos. El guión de herramientasAnalizador de Comandos (COMPAR.SML) demuestraun diseño de guión que crea una interface de “líneade comandos” para ejecutar las acciones del guión.La ventana de Command Parser creada por el guiónincluye un campo de texto en el que el usuarioingresa las órdenes de textopredefinidas. Un procedimientollamado ParseCommand () asocia cadatexto de comando con una función par-ticular o el procedimiento definido en otra partedel guión.

Este guión de muestra se diseñó como unalínea de comandos equivalente al Editorgráfico de la Paleta de Colores en TNTmips.Le permite a un usuario crear o editar unapaleta de colores asignando los colores avalores particulares de las celdas o a losrangos de valor de las celdas en un raster. Elguión usa un juego muy pequeño decomandos (de uno o dos caracteres de largocada uno) algunos de los cuales se acompañacon los parámetros numéricos. Por ejemplo,el comando de string “pr,3,20,1” pinta alrango de valores de celda de 3 a 20 con elcolor especificado por el índice colorimétriconúmero 1. Los números del índice y los valorescorrespondientes de color (R, G, B, y valor de laTransparencia) se definen en un archivo de textoque para el acceso del guión deben leerse de unarreglo usando el comando “b.”

Aunque una interface gráfica es fácil aprender, losusuarios experimentados pueden ejecutar tareasrepetitivas más rápidamente usando una interface de líneade comandos. Las tareas que pueden requerir variasacciones del mouse en una ventana gráfica pueden serejecutadas usando un solo comando de texto corto.

Se incluyen comandos paracrear un archivo de texto deuna paleta de colores de enun Archivo de Proyecto, opara crear una paleta de colordesde un archivo de texto.

La ventana del Evaluador deComandos creado por elguión incluye un campo paraingresar comandos texto yuno que despliega losmensajes del estado delproceso. Un botón del iconoabre una ventana de diálogode Ayuda.

Page 56: U I O N E Escribiendo M Guiones con

Software Avanzado para Análisis Geoespacial GUIONES

SML

Voice: (402)477-9554FAX: (402)477-9559

M icro Im ag es, In c .

email: [email protected]: www.microimages.com

11th Floor – Sharp Tower206 South 13th StreetLincoln, Nebraska 68508-2010 USA

MicroImages, Inc. produce una línea completa de software profesional paravisualización, análisis y publicación de datos geoespaciales. Contáctenos o viste nuestrapágina en Internet para información detallada del producto.

TNTmips TNTmips es un sistema profesional con una completa integración GIS,análisis de imágenes, CAD, TIN, cartografía de escritorio y gestión de Bases de Datosgeoespaciales.

TNTedit TNTedit provee de herramientas interactivas para crear, georeferenciary editar materiales de proyectos tipo vector, imagen, CAD, TIN y Bases de DatosRelacionales en una gran variedad de formatos.

TNTview TNTview tiene las mismas características poderosas de despliegue deTNTmips y es perfecto para aquellos que no necesitan las características de procesamientotécnico y preparación de TNTmips.

TNTatlas TNTatlas permite publicar y distribuir materiales de proyectos en CD-ROM a bajo costo. Los CDs de TNTatlas pueden ser usados en cualquier plataformapopular de computadora.

TNTserver TNTserver permite publicar sus Atlas en TNT en Internet o en suIntranet. Navegue a través de atlas de geodatos con su navegador web y el applet JavaTNTclient.

TNTlite TNTlite es una versión libre de TNTmips para estudiantes y profesionalescon proyectos pequeños. Usted puede descargar TNTlite del sitio Internet de MicroImages,o puede ordenar TNTlite en CD-ROM con el conjunto actualizado de folletos Tutoriales.

IndiceSML en los Productos TNT............................................. 3Ejecutar VIEWSHED.SML............................................. 4Principios Para Elaborar Guiones..................................... 5Variables y Constantes...................................................... 6Expresiones y Declaraciones............................................ 7Funciones Internas........................................................... 8Ayuda de Funciones en Línea........................................... 9Funciones Definidas por el Usuario y Procedimientos... 10Usando Clases.................................................................. 11Herencia de los Miembros y Chequeo de Tipos.............. 12Métodos de Clases........................................................... 13Ingreso del Usuario........................................................... 14Bucles y Bifurcaciones...................................................... 15Desarrollo de Guiones y su Verificación............................ 16Barra de Herramientas y el Menú Personalizado de SML.. 17Objetos Guión y Encriptamiento........................................ 18Objetos Raster.................................................................... 19Objetos Vector.................................................................... 20Usando la Caja de Herramientas de Vector........................ 21Objetos CAD y TIN........................................................... 22Objetos Región................................................................... 23Objetos Base de Datos...................................................... .24Convirtiendo Objetos......................................................... 25Ejemplo de Guión: Extraer Polígonos................................ 26Ejemplo de Guión: Red de Ruteo...................................... 27Incluyendo Guiones y Programas Ejecutables................... 28

Un Nivel SML en el Despliegue......................................... 29SML y GeoFórmulas........................................................... 30Creando una Ventana de Diálogo Simple............................ 31Usando Widgets para Construir Ventanas de Diálogo......... 32Creando y Usando un Área de Dibujo................................. 33Creando un Despliegue en una Ventana de Diálogo............ 34Sistemas de Coordenadas en las Vistas............................... 35Guiones de Generación de Animaciones............................ 36Guiones de Simulaciones 3D............................................. 37APPLIDATs....................................................................... 38Proporcionando Instrucciones para APPLIDATs.............. 39APPLIDAT BIOMASS2................................................... 40Guiones de Herramientas y Macros................................... 41Estructura de un Guión de Macros.................................... 42Ejemplo de Guión de Macros: Ampliación a Escala......... 43Ejemplo de Guión de Macros: Instantánea....................... 44Plantilla para Guión de Herramientas.............................. 45Ejemplo de Guión de Herramientas: Selección de Puntos... 46Ejemplo de Guión de Herramientas: Marcas de Vista........ 47Ejemplo de Guión de Herramientas: Perfil Raster.............. 48Guión de Herramientas: Estadísticas de un Área................ 49Ejemplo de Guión: Estadísticas de una Región.................. 50Ejemplo de Guión: Ejecutar un Explorador........................ 51Ejemplo de Guión: Búsqueda de Calles............................. 52Ejemplo de Guión: Camino de un Flujo............................. 53Ejemplo de Guión: FRAGSTATS....................................... 54Ejemplo de Guión: Analizador de Comandos.................... 55