La línea de comandos permite a los usuarios más avanzados hacer un uso mas ágil del programa y automatizar tareas mediante la creación de sencillos scripts.
Disponible en el menú “Herramientas/Geoprocesamiento/Línea de comandos”.
La interfaz es la siguiente:
La línea de comandos está basada en BeanShell. BeanShell es un interprete de código de Java en modo script que permite ejecutar dinámicamente la sintaxis estándar de Java y comandos comunes, como los de Perl y JavaScript. Se han añadido nuevos comandos que permiten ejecutar los algoritmos y obtener nueva información geográfica de los datos que se estén usando.
En las próximas líneas se puede encontrar una descripción detallada de todos los comandos disponibles.
Todos los algoritmos necesitan datos para ser ejecutados con éxito. Las capas geográficas y tablas son identificadas usando el nombre que tienen en la tabla de contenidos de gvSIG.
El comando data() escribe una lista de todos los objetos de datos disponibles que pueden ser usados, junto con el nombre particular de cada uno de ellos. Llamando a un dato se obtendrá algo como esto:
RASTER LAYERS ----------------- mdt25.asc VECTOR LAYERS ----------------- Curvas de nivel TABLES ----------------- |
El comando describe (nombre del objeto) permite obtener información sobre un objeto o dato concreto. Para referirnos a ese objeto, usamos el nombre que tiene en la tabla de contenidos. A continuación se muestra una serie de ejemplos con este comando donde se obtiene información sobre una capa vectorial, una capa raster y una tabla.
>describe points.shp Type: Vector layer - Point Number of entities: 300 Table fields: | ID | X | Y | SAND | SILT | CLAY | SOILTYPE | EXTRAPOLAT | >describe dem25.asc Type: Raster layer X min: 262846.525725 X max: 277871.525725 Y min: 4454025.0 Y max: 4464275.0 Cellsize X: 25.0 Cellsize Y: 0.0 Rows: 410 Cols: 601 >describe spatialCorrelation.dbf Type: TableNumber of records: 156 Table fields: | Distance | I_Moran | c_Geary | Semivariance | |
Cuando se ejecuta un geoproceso con la caja de herramientas, se usa la ventana de parámetros con varios campos, cada uno de ellos corresponde a un sólo parámetro. Cada geoproceso es identificado por un comando. Cuando se usa la línea de comandos, se debe conocer que parámetros son necesarios, para pasar los valores correctos y usar el método que haga correr el algoritmo. Existe un método para describir en detalle un algoritmo. Pero antes necesitamos conocer el nombre del algoritmo, y para ello utilizamos el comando algs(). Se muestra a continuación una parte de los geoprocesos.
bsh % algs(); acccost-------------------------------: Accumulated cost(isotropic) acccostanisotropic--------------------: Accumulated cost (anisotropic) acccostcombined-----------------------: Accumulated cost (combined) accflow-------------------------------: Flow accumulation acv-----------------------------------: Anisotropic coefficient of variation addeventtheme-------------------------: Points layer from table aggregate-----------------------------: Aggregate aggregationindex----------------------: Aggregation index ahp-----------------------------------: Analytical Hierarchy Process (AHP) aspect--------------------------------: Aspect buffer--------------------------------: Buffer |
En la izquierda hay una lista con el nombre de cada algoritmo. Este nombre es el que se tiene que usar para hacer referencia en la línea de comandos. En la derecha se puede ver el nombre del algoritmo en el idioma actual, el cual es el mismo nombre que identifica el algoritmo en la caja de herramientas. El nombre no es el mismo ya que depende del idioma en gvSIG, y por lo tanto puede ser usado para llamar al algoritmo.
A continuación vamos a ver como obtener una lista de parámetros que un algoritmo necesita para que se ejecute con éxito. Para ver la descripción de los parámetros que requiere un algoritmo usa el comando describealg(nombre_del_algoritmo). Recordar que se debe usar el nombre del algoritmo (lado izquierdo), no la descripción del algoritmo (lado derecho).
Por ejemplo, si queremos calcular la acumulación de flujo desde un MDE, necesitamos ejecutar el correspondiente modulo, el cual, de acuerdo a la lista de algoritmos ags(), es identifacado como accflow. Una descripción de las entradas y salidas de dicho algoritmo podemos ver a continuación:
>describealg("accflow") Usage: accflow(DEM[Raster Layer] WEIGHTS[Optional Raster Layer] METHOD[Selection] CONVERGENCE[Numerical Value] FLOWACC [output raster layer]) |
Para ejecutar los geoprocesos utilizamos el comando runalg. La sintaxis es la siguiente:
> runalg{name_of_the_algorithm, param1, param2, ..., paramN) |
La lista de parámetros para añadir depende del geoproceso. Para ver una lista de parámetros debemos utilizar el comando describealg.
Los valores se introducen de manera diferente, dependiendo del tipo de parámetro. Veamos los diferentes tipos de parámetros y cómo deben introducirse sus valores correspondientes para ejecutar con éxito el algoritmo.
Si se quiere utilizar un valor por defecto de un parámetro de entrada hay que escribir una almohadilla (#). En los parámetros opcionales, el uso del valor por defecto es equivalente a no utilizar entrada alguna.
Raster Layer, Vector Layer o Table. Simplemente introduce el nombre que identifica el objeto a usar. Si la entrada es opcional y no se quiere añadir ningún objeto, escribir ''#''.
Numerical value. Valor numérico.
Selection. Escribe el número correspondiente a la opción deseada, como muestra el comando options.
String. Cadena de texto.
Boolean. Escribe cualquier de los dos valores true o false (incluidas comillas).
Multiple selection - tipo_datos. Se necesita un grupo de objetos como parámetro para ejecutar el modulo, separados por comas y encerrados entre comillas.
Por ejemplo, para el algoritmo maxvaluegrid:
Usage: runalg("maxvaluegrid", INPUT[Multiple Input - Raster Layer] NODATA[Boolean], RESULT[Output raster layer]) |
La siguiente línea muestra un ejemplo de uso:
> runalg("maxvaluegrid", "lyr1, lyr2, lyr3", "false", "#") |
Por supuesto, lyr1, lyr2, lyr3 deben ser una capas raster válidas ya cargadas.
En el caso de [Multiple Input - Band] (múltiples bandas), cada parámetro es definido por un par de valores (capa, banda). Por ejemplo, para el algoritmo cluster.
Usage: runalg( "cluster", INPUT[Multiple Input - Band], NUMCLASS[Numerical Value], RESULTLAYER[output raster layer], RESULTTABLE[output table], ); |
Un ejemplo válido es la siguiente línea:
> runalg("cluster, "lyr1, 1, lyr1, 2, lyr2, 2", 5, "#", "#") |
El algoritmo usará 3 bandas, dos de ellas de lyr1 (bandas 1 y 2), y una de lyr2 (banda 2).
Table Field from XXX . Escribe el nombre del campo de una capa vectorial o una tabla.
Fixed Table Tabla fija. Simplemente introduce todos los valores de las celdas de la tabla, separados por comas y entre comillas. Primero los valores de la fila superior, de izquierda a derecha, luego los de la segunda, y así sucesivamente. La siguiente línea muestra un ejemplo de uso de tabla fija con la extensión Filtro 3 X 3 definido por el usuario:
runalg("kernelfilter", mdt25.asc, "-1, -1, -1, -1, 9, -1, -1, -1, -1", "#") |
Point . Las dos coordenadas de un punto deben estar separadas por comas y encerradas entre comillas. Ejemplo: ''220345, 4453616''
Los parámetros de entrada como las cadenas de texto o los valores numéricos tiene valores por defecto. Para usar estos, escribir ''#'' en la entrada correspondiente en lugar del valor de expresión.
Los objetos de salida, como la ruta de salida, pueden ser salvadas a un fichero temporal usando el signo ''#''. Si lo que quieres es salvar la capa de salida a un fichero permanente, escribe el nombre del fichero de salida.
Para ejecutar un modelo desde la línea de comandos debe utilizarse el comando model, con una sintaxis similar al comando runalg. En este caso, en lugar del nombre del algoritmo como primer parámetro, debe introducirse el nombre del fichero donde está almacenado el modelo, que obligatoriamente debe encontrarse en la carpeta de modelos establecida en la configuración. Los restantes parámetros son los correspondientes en cada caso al propio modelo, del mismo modo que en el caso de ejecutar un algoritmo con el comando runalg.
Se pueden realizar algunas operaciones de gestión de capas desde la interfaz en línea de comandos, como por ejemplo:
Cerrar una capa. Utiliza el comando close(nombre_capa)
Cambiar el valor de sin datos de una capa raster. Utiliza el comando setnodata(nombre_capa, nuevo_valor)
Cambiar el nombre de una capa. Utiliza el comando rename(nombre_capa,nuevo_nombre_capa)
Si se intenta ejecutar cualquier algoritmo que genere nuevas capas raster, las creará con un tamaño de celda y una extensión automática calculada a partir de la capa raster de entrada. Este funcionamiento puede ser modificado usando el comando autoextent.
> autoextent("true"/"false) |
Por defecto, tiene valor verdadero (true). Sin embargo, si quieres definir una extensión y tamaño de celda en particular para todas las capas raster de salida, debes usar el comando extent.
Usage: extent(raster layer[string]) extent(vector layer[string], cellsize[double]) extent(x min[double], y min[double], x max[double], y max[double], cell size[double]) Type "autoextent" to use automatic extent fitting when possible |
Al establecer una extensión fija, automáticamente se desactiva el ajuste automático (es decir, como si ejecutaras un comando autoextent false).