Introducción | Medio Ambiente | Funciones | Comandos | Ejemplos | Ayuda
El ambiente Python de TerraLook ofrece acceso a los datos de imágen en un ambiente de escritura Python, con funciones matemáticas incorporadas (dadas por el módulo numérico Python). El Python Shell de TerraLook agrega una capa extra delgada de interpretación al python común, permitiendo que una sintaxis diferente sea utilizada para algunas funciones frecuentemente utilizadas y para la conveniencia de la escritura (ningún soporte). Las principales funciones de conveniencia (llamadas Comandos) se registran automáticamente cuando se lanza el ambiente Python y tienen más capacidades que las funciones regulares del python para revisar la infraestructura. Para ilustrar la diferencia entre el python y el comando sintaxis, el siguiente ejemplo muestra dos maneras de guardar una colección desde el ambiente del python a un archivo:
Los módulos de extensión con otros comandos se pueden registrar con el comando central loadtext , pero los comandos requieren un tiempo de procesamiento para implementarse y en la mayoría de los casos es preferible utilizar el sintaxis ordinario del python.Python: SaveArray(my_array,'my_filename') Command: save my_array my_filenameSi no estás familiarizado con Python o con el Python numérico (NumPy) aquí hay algunas referencias:
En el arranque (Desde el ítem del menú Editar/Python Shell) el ambiente Python automáticamente importa funciones desde Numeric y Gdalnuméric y registra los Comandos Centrales. Numeric ofrece el Python Numeric, mientras que Gdalnumeric ofrece funciones para acceder a los datos de imágenes de TerraLook.
El shell consiste en una ventana de entrada de comando (abajo) y en una ventana de salida (arriba). Aparte de los comandos registrados, se comporta de la misma forma que el comando intérprete de línea Python. Use las teclas con flechas de arriba y abajo para desplazarse a un previo comando de historia.
Además de las funciones importadas desde el python Numérico, el Python Shell de TerraLook incluye las siguientes funciones:
Los comandos hacen uso de una infraestructura que simplifica el uso y el acceso a ayuda para los procedimientos comúnmente usados y que interactúan con la aplicación principal de TerraLook o que describen el ambiente local. Estos comandos son interceptados y analizados de manera sintáctica antes de ser pasados al intérprete del Python Shell, mientras que son ingresados con el comando y los argumentos, separados por espacios y no por paréntesis y comas. Los comandos no se pueden cargar o usar en un Python Shell común; ellos sólo tienen significado dentro del contexto de TerraLook.
- Loadfile (filename) [,xoff][,yoff][,xsize][,ysize]) – regresa una colección que contiene los datos de filename. Si xoff y yoff son específicos, filename será leído comenzando en píxel (columna), offset xoff y línea (fila) offset yoff. Si xsize y ysize son específicos, sólo los píxeles xsize y las líneas ysize serán leídas, de otra manera, el recordatorio del archivo será leído. La colección devuelta tendrá dimensiones ysize x xsize, si el raster está en escala de grises. N x ysize x xsize, si el raster tiene N canales.
- display(array) - añade la colección a la vista actual de TerraLook y la muestra.
- roi() - regresa la Región de Interés (ROI) dibujada por la herramienta ROI en el formato (x,y, ancho, alto)
- get_roi(array) - dado un array, y una ROI, marcado por la herramienta ROI, extraiga la región desde array regrésela.
- SaveArray(array,filename[,format])- guarde el array en un archivo filename, usando format. Format debe ser un formato de apoyo de escritura GDAL como ´GTiff´(Geotiff). Si format no es especificado, lo automatizará a GTiff .
- CopyDatasetInfo(src,dst)- información de copia de metadatos y de georefencia desde la base de datos GDAL src para la base de datos GDAL dst.
Lista de comandos centrales:
Aquí se encuentra un pequeño tutorial que ilustra el uso sencillo de python y de algunas de las funciones del python de TerraLook. Para un tutorial más completo, por favor diríjase a la página:www.python.org tutorial.
- newview- crea una nueva vista de TerraLook.
- view3d- exhibe un Digital Elevation Model (DEM) y cubre en el modo 3D en la vista actual de TerraLook.
- get- datos de la capa o vista actualmente activa de TerraLook.
- show- muestra una colección de Python Shell o una variable de GvShapes en una vista de TerraLook.
- clearview- limpia la vista actual de TerraLook
- save- guardar un array Python Shell o una variable GVshapes en una vista de TerraLook
- loadext- registra comandos desde un módulo de extensión (comando equivalente de la palabra clave de importación de python.
- macro- acciona una secuencia de comandos o declaraciones phyton desde un archivo de texto
- journal- guarda el texto ingresado en el comando de línea de Python Shell a un archivo de texto
- locals- enlista las variables locales de esta sesión y sus tipos de códigos
- help- muestra ayuda para una función o comando
- functions- enlista funciones cargadas de python o escanea un módulo para funciones
- commands- enlista comandos registrados.
Ejemplo 1
Las funciones numéricas de python como ones y array también se pueden usar para crear y manipular arreglos:
- Cargar un archivo en una colección numérica python:
array1 = LoadFile(`filename.foo`)Mostrar en la vista actual:display(array1)Para obtener la Región de Interés (ROI) marcada en la imagen:
Utilizar la herramienta ROI para llegar a un subarreglo::
- Lanzar la entrada del menú Edición/ Editar barra de herramientas
- Seleccionar "Dibujar ROI" para activar la herramienta ROI.
- Usar la herramienta ROI para marcar una región (haga clic izquierdo para empezar a dibujar, arrastrar, liberar y finalizar)
- roi() ROI() regresa el ROI en ( x, y, ancho y alto)
Para guardar array2 a un nuevo archivo:
- Marcar en ROI con la herramienta de imagen
- array2 = get_roi(array1)
SaveArray(array2,'filename2.tif')
- Crear un arreglo de punto flotante de unas 5 líneas y 6 columnas::
array3=ones([5,6],Float)Borrar filas 1 al 4, columnas 1 al 5 del arreglo con algunos valores:
array3[1:5,1:6]=array([[1,2,3,4,5],[6,7,8,9,10],[11,12,13,14,15],[16,17,18,19,20]],Float)Cuádrelo:
array3=power(array3,2)Exhibir en la vista actual:
display(array3)Algunos puntos importantes para tener en cuenta son::
- El arreglo de python numérico es indexado desde cero.
- Al cortar un arreglo numérico python se usa para indexar rangos N;M elementos N+1…. M-1 son incluidos.
Ejemplo 2
Comenzamos con una Python Shell ( Edición-> Python Shell...... ítem menú). Usted debe cargar algún archivo raster dentro del trabajo con TerraLook
El Python Shell utiliza tres comandos que proporcionan ayuda en funciones y comandos:
- Obtener una capa activa
layer = gview.app.sel_manager.get_active_layer()...and load data array into memory:
ds = layer.get_parent().get_dataset()data = DatasetReadAsArray(ds)Nota: Al usar el comando principal Obtener con el argumento de los datos (Ej. ingresar "obtener datos" en la línea de comando) presentará estos tres pasos para ustedSi usted no desea abrir ni exhibir la entrada de datos con TerraLook pero desea cargar el archivo en la memoria, haga algunos cálculos y exhiba los resultados, usted puede usar otro acercamiento en lugar de los pasos anteriores:
data = LoadFile('filename.l1b')(En este ejemplo trabajaremos con datos NOAA AVHRR, en formato L1B ).
- Ahora estamos listos para operar con datos cargados. Por ejemplo, calcular índices de vegetación diferente normalizada (NDVI) con datos NOAA AVHRR. En este caso NDVI es calculado como (Banda2 - Banda1)/(Banda2 + Banda1). Se asume que los datos ya están calibrados en nuestro archivo.
ndvi = (data[1] - data[0]) / (data[1] + data[0])- Mostrar el resultado y opcionalmente guardarlo dentro de un archivo:
display(ndvi)SaveArray(ndvi,'ndvi.tif','GTiff')Observe que todas las colecciones de computaciones están completamente cargadas dentro de la memoria. Asegúrese de que posee suficientes recursos para esto. Puede tomar algún tiempo cargar colecciones largas y cálculos.
- Otra operación: crear una imagen compuesta en RGB. En general esta operación debe ser interactivamente controlada por el usuario, porque los colores de la banda deben ser cuidadosamente ajustados para producir los mejores resultados visuales. Pero se debe simplificar la tarea. Los datos NOAA AVHRR tienen 10 bits de profundidad (GDAL los almacena en 16 bits enteros) sólo podemos escalar entradas de datos a 8 bits y llenar tres- componente del arreglo.
rgb = zeros((3, ds.RasterYSize, ds.RasterXSize), UnsignedInt8) for i in range(3): rgb[i] = (data[i] * 256 / 1024).astype(UnsignedInt8) display(rgb)Este código produce una composición RGB de los primeros tres canales para la imagen ingresada, pero puede desenrollar la presilla y usar los canales que desee. Siguiendo los códigos de uso, canal 5 como rojo, 2 como verde y 3 como azul:
rgb[0] = (data[4] * 256 / 1024).astype(UnsignedInt8) rgb[1] = (data[1] * 256 / 1024).astype(UnsignedInt8) rgb[2] = (data[3] * 256 / 1024).astype(UnsignedInt8)- Ahora podemos usar otros datos como ejemplo. Deje cargar ASTER Nivel 1B sistema de datos (la segunda banda) y trate de calibrarlo. Este sistema de datos ya está reprocesado y debe ser calibrado con la función linear simple. Función de coeficientes contenidos en los registros de metadatos, con el número correcto al final (2 en el caso de la segunda banda)
layer = gview.app.sel_manager.get_active_layer() ds = layer.get_parent().get_dataset() data = DatasetReadAsArray(ds) incl = float(ds.GetMetadata()["INCL2"]) offset = float(ds.GetMetadata()["OFFSET2"]) data_cal = data * incl + offset display(data_cal)Estos comandos hacen uso de phyton_doc_ cadenetas y de cualquiera de los archivos de texto de ayuda que están registrados. Los archivos de texto de ayuda deben usarse sólo cuando existe alguna razón para no actualizar el python_string por sí solo (Ej. Si la documentación fuera a estar disponible en múltiples idiomas o si el paqueta es de una tercera parte y usted no quiere usar el doc. cadeneta). También, si la documentación python está bien pero es necesario mostrar ayudar para algunas funciones/comandos que no son cargados, por lo cual cambia la documentación (por lo menos para los lanzamientos). Los archivos de texto de ayuda pueden tener entradas de los siguientes tres formatos: El Python Shell utiliza tres comandos:
- help- muestra la ayuda para una función o comando
- commands- lista de comandos registrados
- functions- lista de funciones cargadas python
COMMAND_NAME=my_command Module: my_module Group: my_group Html: my_html.html documentation... FUNCTION_NAME=my_func Module: my_module Html: my_html.html documentation... BUILTIN_NAME=my_builtin Module: my_module Html: my_html.html documentation...Donde my_command, my_func, y my_builtin son un comando de definido de usuario, función y de la función builtin (bound C), respectivamente. La entrada Html se usa para indicar un archivo html con más información y es opcional (actualmente la Python Shell no hará más con la información html, más que guardar el nombre del vínculo – esto podría ser usado en el futuro). El nombre del módulo se requiere para manejar el caso de dos módulos, definiendo diferentes comandos/funciones con el mismo nombre. El COMMAND_NAME, FUNCTION_NAME, BUILTIN_NAME, Módulo y las partes html del archivo de texto son sensibles a las mayúsculas (Ej. Un error ocurrirá si el caso no es como el de arriba). Mirar la función gvcorecmds.py's RegisterHelp para cómo registrar un archivo de ayuda con el intérprete (esta función determina la ubicación de gvcorecmds_help.txt, asumiendo que está en el mismo directorio que gvcorecmds_help.txt y sube el texto desde ahí, si está presente). La convención sugerida para archivos de ayuda de texto es que si son necesarios, ellos serán ubicados en el mismo directorio como los comandos/funciones con las que se relacionan. Tienen el mismo nombre como el módulo comando, menos el '.py', plus '_help.txt'.