Script de bash para la extracción múltiple de coordenadas de imágenes, con espesor de una celda en sentido vertical, con GRASS-QGIS

En un artículo anterior se refirió la manera de calcular la media aritmética por columnas en un ráster usando QGIS y lenguaje R como, quizás, la manera más expedita de hacerlo. Sin embargo, sería interesante plantear la posibilidad de lograrlo desde el propio software SIG. Determinando las coordenadas del vertice superior izquierdo y del vértice inferior derecho de las imágenes con espesor de una celda en sentido vertical, sería posible en un loop cortar la imagen base en todas las posibles, vectorizarlas tipo punto y calcular las estadísticas a partir de la tabla atributiva de cada una de ellas. Esto último podría realizarse por adaptación del script referido en el artículo siguiente:

Script de bash para determinar promedio y desviación estándar en columnas con v.db.select (GRASS-QGIS)

Usando las bondades de g.region el script para la obtención de las coordenadas sería el siguiente:

#! /bin/bash
array=`g.region -g|grep -oE '[0-9.]*'`
norte=`echo $array|awk '{print $1}'`
sur=`echo $array|awk '{print $2}'`
oeste=`echo $array|awk '{print $3}'`
este=`echo $array|awk '{print $4}'`
eores=`echo $array|awk '{print $6}'`
cols=`echo $array|awk '{print $8}'`
oeste=`echo $(echo "scale=8; $oeste + 0.00000000" | bc )`
este=`echo $(echo "scale=8; $oeste + $eores" | bc )`
echo $norte $oeste $sur $este
for i in $(seq 1 $(expr $cols - 1 )) 
   do
      oeste=`echo $(echo "scale=8; $oeste + $eores" | bc )`
      este=`echo $(echo "scale=8; $oeste + $eores" | bc )`
      echo $norte $oeste $sur $este
done

Grabándolo como script_region, dándole permisos de ejecución con chmod script_region y ejecutándolo con ./script_region > coordenadas, se producirá un archivo de texto (coordenadas) que albergará todas las posibles para un ráster que se ha tomado como base para la región de trabajo de GRASS. Este es el extracto de tal archivo:

1106092.58696603 609585.50217740 994976.30954296 609616.11272214
1106092.58696603 609616.11272214 994976.30954296 609646.72326688
1106092.58696603 609646.72326688 994976.30954296 609677.33381162
1106092.58696603 609677.33381162 994976.30954296 609707.94435636
1106092.58696603 609707.94435636 994976.30954296 609738.55490110
1106092.58696603 609738.55490110 994976.30954296 609769.16544584
1106092.58696603 609769.16544584 994976.30954296 609799.77599058
1106092.58696603 609799.77599058 994976.30954296 609830.38653532
1106092.58696603 609830.38653532 994976.30954296 609860.99708006
1106092.58696603 609860.99708006 994976.30954296 609891.60762480
1106092.58696603 609891.60762480 994976.30954296 609922.21816954
1106092.58696603 609922.21816954 994976.30954296 609952.82871428
1106092.58696603 609952.82871428 994976.30954296 609983.43925902
1106092.58696603 609983.43925902 994976.30954296 610014.04980376
1106092.58696603 610014.04980376 994976.30954296 610044.66034850
1106092.58696603 610044.66034850 994976.30954296 610075.27089324
1106092.58696603 610075.27089324 994976.30954296 610105.88143798
1106092.58696603 610105.88143798 994976.30954296 610136.49198272
1106092.58696603 610136.49198272 994976.30954296 610167.10252746
1106092.58696603 610167.10252746 994976.30954296 610197.71307220
1106092.58696603 610197.71307220 994976.30954296 610228.32361694
1106092.58696603 610228.32361694 994976.30954296 610258.93416168
1106092.58696603 610258.93416168 994976.30954296 610289.54470642
1106092.58696603 610289.54470642 994976.30954296 610320.15525116
1106092.58696603 610320.15525116 994976.30954296 610350.76579590
1106092.58696603 610350.76579590 994976.30954296 610381.37634064
1106092.58696603 610381.37634064 994976.30954296 610411.98688538
.
.
.

que tiene 3603 filas, es decir, el número de columnas de la imagen.

Para probar si con las coordenadas es posible ajustar progresivamente en el loop la región a la imagen tipo columna, hacer el corte sobre la imagen base, rasterizarla y obtener las estadísticas con base en el script ya mencionado se usaron los comandos:

g.region w=$oeste e=$este
r.mapcalc temporal=N09W068_UTM19N_canoa 

en script_region para obtener, arbitrariamente, la imagen 9 de la serie; tal como se encuentra a continuación:

Se observa que el espesor es aproximadamente 30 m; resolución de la imagen en sentido este-oeste.

Al vectorizar la imagen columna y aplicar el script para la obtención de estadísticas básicas; tal como se observa a continuación:

se encuentra que:

El promedio de value es = 205.65206
La desviacion estandar de value es = 204.57536
con 3630 valores procesados

donde 3630 concuerda con el número de filas de la imagen.

El paso siguiente es generalizarla para obtener todas las estadísticas de las 3603 columnas; tema del próximo artículo.

Esta entrada fue publicada en GRASS, QGIS, SIG, Software Libre. Guarda el enlace permanente.

Responder

Por favor, inicia sesión con uno de estos métodos para publicar tu comentario:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s