Script de bash para rotar archivos vectoriales en GRASS-QGIS con v.transform

En el artículo anterior se consideró el procedimiento para la rotación de vectoriales en GRASS-QGIS con v.transform. En el presente se considera la automatización a fin de que tome directamente de la tabla atributiva del vectorial las coordenadas del eje y el ángulo de rotación y haga las compensaciones de translación usando la calculadora bc de precisión arbitraria. En el proceso también se asigna automáticamente el nombre del archivo para el vectorial rotado.

El script sugerido es el siguiente:

#! /bin/bash
clear
echo "Script para rotar vectoriales. Debe tener las columnas x, y, ang_rot";echo
read -p "Nombre del vectorial = ? " input_file
x1=`v.db.select map=$input_file col=x | grep -oE '[0-9.-]*'`
y1=`v.db.select map=$input_file col=y | grep -oE '[0-9.-]*'`
alpha=`v.db.select map=$input_file col=ang_rot | grep -oE '[0-9.-]*'`
output_file=$input_file"_rot""$alpha"
pi=$(echo "scale=20; 4*a(1)" | bc -l)
a=`echo $(echo "scale=8; $x1 - c($alpha*$pi/180)*$x1 + s($alpha*$pi/180)*$y1" | bc -l)`
b=`echo $(echo "scale=8; $y1 - s($alpha*$pi/180)*$x1 - c($alpha*$pi/180)*$y1" | bc -l)`
v.transform input=$input_file output=$output_file xshift=$a yshift=$b zrot=$alpha --quiet
echo "listo!"
echo "El vectorial rotado es " $output_file

Se grabó como script_rotar, se le dieron privilegios de ejecución con chmod +x script_rotar y se ejecutó con ./script_rotar. Los resultados se observan, conjuntamente con la ejecución en cónsola de GRASS, en la imagen siguiente:

La tabla atributiva del vectorial objeto de la rotación fue la siguiente:

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