Appearance
Datos geográficos en formato ASCII
Base de datos GRASS GIS
Una base de datos de GRASS GIS es simplemente un conjunto de directorios y archivos con cierta estructura con la que GRASS GIS trabaja eficientemente. Location es un directorio con datos asociados con una ubicación geográfica o un proyecto. Todos los datos dentro de un Location tienen la misma proyección cartográfica. Un Location contiene Mapsets y cada Mapset contiene datos asociados con una tarea específica, un usuario o un proyecto más pequeño. Dentro de cada localización, existe un Mapset PERMANENT obligatorio que puede contener datos de uso común dentro de una localización, como los mapas base. El PERMANENT Mapset también contiene metadatos relacionados con el Location como la proyección. Cuando GRASS GIS se inicia se conecta a una Base de Datos, Location y Mapset especificados por el usuario, o bien, una base de datos temporal.

Una vez que se ejecuta GRASS, se puede crear un directorio desde la consola para la base de datos de GRASS y un directorio para todos los archivos de datos que se crearán:
mkdir GrassData
mkdir GisData
cd GisDataPosteriormente, se utiliza la opción del menú de Grass: Settings>Grass Working Environment>Create New Location. Esto provocará que se muestre una caja de diálogo en donde se solicitará el nombre de la nueva location y el directorio en donde debe ser creada, que para este caso sería el directorio que se acaba de crear: GrassData. Luego en la siguiente pantalla se solicita seleccionar un CRS (Coordinate Reference System). Para los siguientes ejemplos se puede utilizar la opción: Create a generic cartesian coordinate system (XY). Por último, Grass automáticamente creará un mapset llamado PERMANENT. Nota: recuerde actualizar la pestaña de DATA para ver los cambios reflejados.
Datos Vectoriales
Un "mapa vectorial" es una capa de datos consistente de una serie de elementos dispersos en el espacio geográfico. Estos pueden ser datos puntuales (sitios de perforación), líneas (carreteras), polígonos (límites de parques), volúmenes (estructuras CAD en 3D) o alguna combinación de ellos. Normalmente, cada elemento en el mapa estará asociado a un conjunto de atributos de la capa almacenados en una base de datos (nombres de calles, identificador del sitio, el tipo geológico, etc.). Como una regla general, estos pueden existir en el espacio 2D o 3D y son independientes de la región de procesamiento del SIG.
Para listar las diferentes capas de datos, que se han creado en GRASS, existe el comando general llamado g.list. De esto modo para listar solo las capas de datos vectoriales se debe utilizar el parámetro type de la siguiente forma:
g.list type=vectExisten también comandos generales para borrar un conjunto de datos (g.remove) o cambiarle el nombre (g.rename). En este caso el parámetro name indica el nombre de la capa de datos a eliminar. En ocasiones es necesario usar el parámetro -f para forzar el borrado del archivo. Por ejemplo, para borrar una capa vectorial de puntos (en el caso que exista) se podría utilizar un comando como:
g.remove type=vect name=puntos -fInformación de la capa
El comando v.info permite averiguar información sobre una capa dada. Este comando también permite revisar todo el historial de operaciones aplicadas a una capa particular.
Un aspecto importante de este comando es que muestra el tipo y cantidad de elementos que conforman la capa. Estos elementos pueden ser: puntos, líneas, centroides, áreas, caras (3D), núcleos, e islas.
Por ejemplo, el siguiente comando muestra las operaciones aplicadas a una capa lineas que podría existir en la base de datos:
v.info -h map=lineasExtensión de la región
El comando g.region permite determinar cuál es la extensión de la región actual sobre la que se está procesando. Muchos comandos realizan su procesamiento únicamente sobre dicha región. Para determinar la extensión de la región se utiliza el comando:
g.region -pResulta recomendable que siempre que se empieza a procesar un mapa vectorial (o raster) se establezca una nueva región que abarque la extensión de dicho mapa. Por ejemplo, esto se puede realizar de la siguiente forma, dependiendo del tipo de mapa a procesar:
g.region vector=lineas
g.region raster=imagenManejo geométricos en formato ASCII
Los módulos v.in.ascii y v.out.ascii permiten el ingreso/exportación de archivos de texto conteniendo coordenadas y datos de atributos, respectivamente. Se pueden utilizar dos formatos para dichos datos (parámetro format ): puntual o vectorial. Para el caso del formato puntual (point) cada fila del archivo contendrá las coordenadas X,Y de un punto junto con algunos otros atributos asociados. Los valores pueden estar separados por un delimitador (parámetro separator) que seleccione el usuario. Si no se definen los nombres de las columnas (parámetro columns) entonces se utilizan nombres por omisión. También existen parámetros para especificar el número de la columna en donde aparece el valor de X, Y, Z y el identificador o categoría (parámetro cat).
El formato vectorial (standard) utiliza varias filas del archivo para especificar todos los vértices (uno por fila) que componen un elemento geográfico. Además, se utiliza un código para identificar el tipo de elemento: (P) punto, (L) línea, (A) área, (B) frontera, (C) centroide, etc. Este formato no incluye atributos asociados dentro del mismo archivo, estos residen en otro archivo aparte y son asociados mediante un identificador o categoría (cat) común a ambos archivos. Un archivo en formato vectorial puede contener una mezcla de elementos de diferentes tipos, sin embargo, es conveniente intentar mantener únicamente elementos del mismo tipo en cada archivo.
El separador de datos (parámetro separator) puede ser un caracter cualquiera; o la palabra tab, space, comma ó un espacio en blanco. El formato de los datos de latitud,longitud pueden ser dados en grados decimales (+/-) DDD.DDDDDD
Ejemplo datos puntuales
Un archivo ASCII con coordenadas geográficas, llamado coords.txt, podría lucir de la siguiente forma:
1664619,5103481
1664473,5095782
1664273,5101919
1663427,5105234
1663709,5102614Para importar este archivo en Grass se debe utilizar el siguiente comando (note que podría ser necesario indicar toda la ruta del archivo de coordenadas si no se encuentra en el directorio actual):
v.in.ascii separator=',' input=coords.txt output=coordsAún cuando este comando crea un mapa de coordenadas, dicho mapa no tiene asociada una tabla de datos. Esto puede ser verificado mediante el comando:
v.info map=coords -cPor lo anterior, se presenta otro archivo llamado points.txt que incluirá atributos y el identificador en forma explícita:
1,1664619,5103481,studna
2,1664473,5095782,kadibudka
3,1664273,5101919,hruska
4,1663427,5105234,mysi dira
5,1663709,5102614,mineralni pramenEl comando para importar este otro archivo varía pues es necesario especificar el nombre de cada campo:
v.in.ascii separator=',' input=points.txt output=points x=2 y=3 cat=1 columns="cat int,x double precision,y double precision,label varchar(20)"Nuevamente, para verificar la existencia de la tabla de datos asociada se puede utilizar el comando:
v.info map=points -cLa información de la tabla puede desplegarse en la consola utilizando el siguiente comando:
v.db.select map=pointsEn el momento que se requiera volver a exportar estos datos en formato ASCII, se utilizará el siguiente comando (el orden de los campos puede variar en la salida):
v.out.ascii separator=',' input=points output=points.txt columns=labelEjemplo datos lineales
Un archivo ASCII también puede contener datos lineales, sin embargo se requiere un dato adicional que indique de cuántos vértices consta cada línea y en cuántas capas está presente. Luego de listar los vértices aparece un dato con el número de capa y su identificador (categoría) en esa capa. Estos datos se muestran en el siguiente archivo llamado lines.txt:
L 6 1
5958812 3400828
5958957 3400877
5959021 3400930
5959048 3400973
5959069 3401032
5958812 3400828
1 5
L 4 1
5959010 3401338
5959096 3401370
5959091 3401450
5959010 3401338
1 7En este caso se definen dos líneas, la primera consta de seis vértices y aparecerá en la capa 1 con número de categoría (cat) de 5, la segunda línea consta de cuatro vértices aparece en la capa 1 y su número de categoría es 7.
El comando para importar este archivo no varía de aquellos utilizados para datos puntuales, sin embargo se debe utilizar la opción -n para indicar que el archivo no incluye encabezados:
v.in.ascii input=lines.txt output=lines -n format=standardSin embargo, aún falta importar los datos sobre los atributos asociados. El archivo linesAttr.csv muestra algunos atributos asociados al archivo de líneas en formato CSV:
num,label
5,St.Paul Park
7,Central ParkEl comando utilizado para importar el archivo de atributos en una tabla de GRASS, es el siguiente:
db.in.ogr input=linesAttr.csv output=linesAttrMediante el siguiente comando se puede verificar que la tabla fue correctamente importada en GRASS:
db.tablesAhora es necesario conectar este archivo de datos con el archivo de geometrías, esto se realiza mediante el siguiente comando:
v.db.connect map=lines table=linesAttr key=numComo antes se pueden listar en la consola los datos asociados al mapa de líneas, utilizando el comando:
v.db.select map=linesEjemplo datos poligonales
La importación de datos que representan áreas también es posible en GRASS de la misma forma en que se importan datos lineales. En este caso basta con cambiar el identificador de línea (L) por una identificador de áreas (A) o frontera (B). El archivo areas.txt muestra este formato (note que las coordenadas del primer y último vértice deben coincidir):
A 6 1
5958812 3400828
5958957 3400877
5959021 3400930
5959048 3400973
5959069 3401032
5958812 3400828
1 5
A 4 1
5959010 3401338
5959096 3401370
5959091 3401450
5959010 3401338
1 7El formato de importación es el mismo utilizado en datos lineales:
v.in.ascii input=areas.txt output=areas -n format=standardEn GRASS resulta necesario crear los centroides asociadas a los polígonos para que el sistema los reconozca como tales. Para eso se ejecuta el comando v.centroids sobre dicho mapa:
v.centroids input=areas output=areas2De igual forma que antes, es necesario asociar este mapa con su respectiva tabla de atributos. En este caso se utiliza el comando mostrado anteriormente, aún cuando los dos mapas (líneas y áreas) queden asociadas a la misma tabla, lo cual es permitido:
v.db.connect map=areas2 table=linesAttr key=numEjemplo datos poligonales con fronteras
Otra forma de definir polígonos en Grass es almacenar las fronteras (boundaries) y centroides del polígono en el mismo archivo. En este caso se deben definir dos elementos por cada polígono, la frontera del mismo (similar al elemento "área" visto anteriormente) y las coordenadas de un punto cualquiera dentro del polígono (el centroide). El siguiente archivo de ejemplo, llamado polygons.txt, muestra los datos utilizando este otro método:
B 6
5958812 3400828
5958957 3400877
5959021 3400930
5959048 3400973
5959069 3401032
5958812 3400828
C 1 1
5958952 3400918
1 5
B 4
5959010 3401338
5959096 3401370
5959091 3401450
5959010 3401338
C 1 1
5959063 3401386
1 7Para importar este nuevo archivo se utiliza el mismo comando utilizando anteriormente, pues realmente es el sistema internamente el que determina el tipo de geometría a crear.
v.in.ascii input=polygons.txt output=polygons -n format=standardAquí es importante resaltar que cada frontera (boundary) debe ser seguida por su respectivo centroide. La información de la capa y el identificador (categoría) del polígono se especifica en el centroide. En el caso anterior ambos polígonos aparecen únicamente en la capa 1, el primer polígono tiene el identificador de 5 y el segundo polígono de 7. Al igual que antes se puede asociar el archivo de atributos mediante el comando v.db.connect:
v.db.connect map=polygons table=linesAttr key=numEjercicios
- Con base en el mapa que se muestra más abajo cree tres archivos de datos llamados puntos.txt, lineas.txt y poligonos.txt. Note que los polígonos deben ser reconocidos como áreas cerradas. Asuma que dicho mapa se encuentra entre las coordenadas (0,0) y (200,200). Adicionalmente enlace cada elemento con su respectiva etiqueta almacenada en una tabla de datos. Por último exporte las tres capas del mapa a archivos en formato GeoJSON mediante el comando v.out.ogr