¿Qué es Bash?
El bash es el intérprete de comandos del proyecto GNU. Los scripts en bash tienen las extensiones .sh o .bash y si dispones de un ambiente GNU/Linux puedes ejecutarlos desde una terminal de comandos siempre y cuando tengas permiso para ello.
Para ejecutar un script en bash llamado primero.sh que está en la carpeta /home/geotux/ escribimos en una consola:
o vamos a la carpeta en la que se encuentra a través del comando cd /home/geotux/ y luego ejecutamos:
Necesitamos permisos de lectura y ejecución para ello.
Scripts en Bash
Después de buscar en la red sin mucho éxito (por ejemplo en osdir y geoserver), elaboré tres scripts que nos pueden ser útiles en algún momento:
1. Cambiar extensiones de archivos Shapefiles de mayúsculas a minúsculas (.SHP a .shp):
Algunas veces nos encontramos con archivos Shapefile que tienen extensiones en mayúsculas, tal vez no sea un error, pero mejor pensemos en cambiarlas. ¿Para qué? Para poder usar los scripts 2 y 3 por ejemplo :)
El script para pasar de "SHP" a "shp" no solamente debe cambiar la extensión SHP sino todas las asociadas al archivo principal, es decir, las requeridas:
- SHP: Entidades geométricas.
- SHX: Índice de la geometría.
- DBF: Atributos.
y las opcionales:
- SBN y SBX: Índice espacial.
- FBN y FBX: Índice espacial para Shapefiles de solo lectura.
- AIN y AIH: Índice de atributos.
- PRJ: Sistema de referencia.
- SHP.XML: Metadatos.
SCRIPT (Puedes descargarlo aquí):
| #!/bin/bash # Script para cambiar las extensiones de un Shapefile # de mayúsculas a minúsculas # 20080811 # # Germán Carrillo ( Esta dirección electrónica esta protegida contra spambots. Es necesario activar Javascript para visualizarla ) # GeoTux (http://geotux.tuxfamily.org) # # Shapefiles=($(find -name "*.SHP"));numShapefiles=${#Shapefiles[*]} if [ $numShapefiles = 0 ]; then echo "No hay Shapefiles con extensión en mayúsculas en el directorio "`pwd` else for file in $( find -name "*.SHP" ) do filename=`basename $file`;filename=${filename%SHP} mv ${filename}SHP ${filename}shp if [ -e ${filename}SHX ]; then mv ${filename}SHX ${filename}shx fi if [ -e ${filename}DBF ]; then mv ${filename}DBF ${filename}dbf fi if [ -e ${filename}SBN ]; then mv ${filename}SBN ${filename}sbn fi if [ -e ${filename}SBX ]; then mv ${filename}SBX ${filename}sbx fi if [ -e ${filename}FBN ]; then mv ${filename}FBN ${filename}fbn fi if [ -e ${filename}FBX ]; then mv ${filename}FBX ${filename}fbx fi if [ -e ${filename}AIN ]; then mv ${filename}AIN ${filename}ain fi if [ -e ${filename}AIH ]; then mv ${filename}AIH ${filename}aih fi if [ -e ${filename}PRJ ]; then mv ${filename}PRJ ${filename}prj fi if [ -e ${filename}SHP.XML ]; then mv ${filename}SHP.XML ${filename}shp.xml fi done echo "Se han cambiado las extensiones de los Shapefiles encontrados!" fi exit 0 #Fin del script |
2. Cargar todos los archivos Shapefile de un directorio a una base de datos de PostgreSQL/Postgis empleando la herramienta shp2pgsql:
Con este script puedes llevar todos los Shapefiles que tengas en una carpeta a una base de datos geográficos utilizando el comando shp2pgsql de Postgis.
Para poder emplearlo debes tener una base de datos creada y tener permisos para crear tablas y para crear registros en la tabla Geometry_Columns, en palabras cortas, casi que debes ser el propietario de la base de datos.
En la línea 11 del script puedes ajustar los parámetros que hacen referencia a la base de datos.
El script y los Shapefiles deben estar en el mismo directorio y tú debes situarte allí para poder ejecutarlo.
El script valida si existen archivos Shapefile en el directorio donde estás ubicado en la consola, si los hay ejecuta el comando shp2pgsql con las siguientes opciones:
El resultado completo de la ejecución del script se almacena en el archivo log.txt, es recomendable leerlo para conocer cualquier eventualidad que se haya presentado. En la consola se muestra un resumen de los archivos procesados.
SCRIPT (Puedes descargarlo aquí):
|
#!/bin/bash |
3. Cargar todos los archivos Shapefile de un directorio a una base de datos de PostgreSQL/Postgis empleando la herramienta ogr2ogr:
Con este script puedes llevar todos los Shapefiles que tengas en una carpeta a una base de datos geográficos utilizando la herramienta ogr2ogr de la librería GDAL/OGR.
Para poder emplearlo debes tener una base de datos creada y tener permisos para crear tablas y para crear registros en la tabla Geometry_Columns, en palabras cortas, casi que debes ser el propietario de la base de datos.
En la línea 11 del script puedes ajustar los parámetros que hacen referencia a la base de datos.
El script y los Shapefiles deben estar en el mismo directorio y tú debes situarte allí para poder ejecutarlo.
El script valida si existen archivos Shapefile en el directorio donde estás ubicado en la consola, si los hay ejecuta el comando ogr2ogr con la opción:
El script almacena información del cargue en el archivo log.txt, es recomendable leerlo para conocer cualquier eventualidad que se haya presentado. Si el cargue ha sido satisfactorio el archivo queda vacío.
SCRIPT (Puedes descargarlo aquí):
|
#!/bin/bash |
Sin duda bash puede ser de gran utilidad para automatizar tareas en GNU/Linux.
No dudes en comentarme cualquier sugerencia o inquietud.
Referencias:
-
BostonGIS, URL: http://bostongis.com
-
Wikipedia, URL: http://es.wikipedia.org/
- XTech, Soluciones Linux para empresas, URL: http://wiki.xtech.com.ar/
- Foro Fent Linux, URL: http://www.fentlinux.com/foros/
- Guía avanzada de scripts en Bash, UR: http://tldp.org/









Comentarios
bash_shp2pgsql.sh: 12: Syntax error: "(" unexpected
o
bash_ogr2ogr.sh: 12: Syntax error: "(" unexpected
$bash ./script.sh
Saludos.
Suscripción de noticias RSS para comentarios de esta entrada.