Georeferenciar una imagen raster con grass

Aquí relato de la mejor manera que me alcance a dar el coco "Cómo georeferenciar una imagen raster, obtenida apartir del escaneo de un mapa o plano".

La información la obtuve de grassbook y del manual de hannover de grass 6.0.

Según estuve viendo hay al menos 4 formas en grass de georeferenciar una imagen raster con grass:
1.- con los comandos i.ponts, i.traget, i.group (la que explico yo)
2.- utlilizando la interfaz gráfica,
3.- con qgis,
4.- no recuerdo bien cual es.

Ok, manos a la obra en el paso a paso.

1.- Creamos una location con en un sistema de coordenadas arbitario XY (cartesiana). En mi caso la llamaré: Project Location: ejido-san-martin-XY.





La extensión de la región de proyecto deberá ser al menos de el número de pixeles en X (filas, alto (heigth)) y el número de píxeles, en Y (columnas, ancho (width))
de la imagen escaneada. Que de la mía fuerón 4500X2528 píxeles. La resolución que fijaremos será de 1 metro por pixel.



A continuación, en la ventana de bienvenida, escogemos la location recién creada y le damos click al botón "Start GRASS".



2.- Importar la imagen raster que será georeferenciada. Utilizamos el módulo r.in.gdal.

GRASS 6.4.0RC4 (ejido-san-martin-XY):~ > r.in.gdal input=$HOME/Escritorio/fraccion-ejido-san-martin.tiff output=fraccion-ejido-san-martin-singeorreferenciar
Projection of input dataset and current location appear to match
100%
r.in.gdal complete. Raster map
<fraccion-ejido-san-martin-singeorreferenciar.red> created.
100%
r.in.gdal complete. Raster map
<fraccion-ejido-san-martin-singeorreferenciar.green> created.
100%
r.in.gdal complete. Raster map
<fraccion-ejido-san-martin-singeorreferenciar.blue> created.
100%
r.in.gdal complete. Raster map
<fraccion-ejido-san-martin-singeorreferenciar.4> created.
GRASS 6.4.0RC4 (ejido-san-martin-XY):~ >


NOTA: También podemos crear una location utilizando este módulo r.in.gdal al mismo tiempo que importamos a ella la imagen raster ahorrándonos el primero paso (1.-):

Capítulo 4 "Base de datos del Proyecto de GRASS"

Bueno, pues aquí sigo con la traducción del manual de Hannover
"An introduction to the practical use
of the Free Geographical Information System
GRASS 6.0 "
Ahora que pues el capítulo 3 me lo he saltado porque es relativo a la instalación así que ese luego.

No dejen de enviarme comentarios, no la armo muy bien en el inglés, de hecho le huyo al méndigo.

Sale, aqui mero empieza:


4 Base de datos del Proyecto de GRASS

En la base de datos orientados espacialmente de GRASS los datos están manejados en geocódigo. Por tal propósito, un sistema coordenado de la región (por ejemplo Gauß-Krüger, UTM, etc.), a la que nos referimos como Región (Location en inglés), necesita decidirse antes de comenzar a trabajar. Considere lo siguiente: Como regla general es indispensable elegir la estructura y la organización de la base de datos que se utilizará en GRASS y en cada GIS.

Extensión de la región de proyecto: Todos los datos que deben ser importados como parte de un proyecto deben estar contenidos dentro la extensión espacial de La Región (the Location). Adicionalmente uno debe determinar que proyección cartográfica será utilizada para el proyecto. Usualmente esto es proporcionado con los datos que se utilizarán en el proyecto e incluye información sobre el proyecto tal como nombre de la proyección cartográfica, elipsoide, datum y algunos otros parámetros

Resolución de los datos raster: Generalmente los requerimientos computacionales y de almacenamiento se incrementan exponencialmente con la resolución. Sin embargo, si la resolución de más baja que el conjunto de datos habrá pérdida de datos los resultados del GIS serán insatisfactorios. Por lo tanto, es útil elegir la resolución estándar (por defecto) para igualarla a la resolución de las capas de datos más importantes. La resolución raster siempre pude ser ajustada una vez que la región ha sido creada. Al importar datos se preserva la resolución original y el tamaño de los mapas

Ahora que las características de la región de proyecto y la resolución de los datos han sido determinadas, el siguiente paso es crear un subdirectorio para la base de datos de GRASS. Ésta generalmente se llama 'grassdata' (ver capítulo 2.3).

4.1 Llamando a un proyecto de GRASS

Si el script de inicio de la versión 6.0 de GRASS se encuentra en la ruta ($PATH), GRASS puede ser iniciado desde un intérprete de comandos (Terminal X) por medio del comando grass60. Una descripción más detallada puede encontrarse en el capítulo 3.

La pantalla de inicio resultante muestra cuales datos deben ser introducidos por medio del ratón ó el teclado. Podemos elegir entre una pantalla de inicio gráfica u otra basa en texto por medio del parámetro –text o –gui cuando iniciamos GRASS (ver Figuras 8 y 7).

grass60 -text   # inicia pantalla basada en texto
grass60 -gui    # inicia pantalla gráfica
Figura 7: Pantalla de inicio TclTT en GRASS

Aquí, en desde el menú, pueden seleccionarse una Región (Location) y mapset existentes ó pueden crearse una nueva Región (Location) así como también un nuevo mapset.

Si se agrega un nuevo mapset a la Region (Location) existente primero escoja la Región (Location) apropiada, después introduzca el nombre del nuevo mapset en la ventana debajo del texto 'Create New mapset' y presione el botón 'Create ...' (ver Figura 7)

Hay tres caminos para crear una nueva Región (Location). (A) Los datos de la proyección pueden proveerse directamente por el usuario. La información necesaria puede encontrarse generalmente en los metadatos asociados al archivo de datos. (B) La proyección puede ser asignada automáticamente por el código EPSG (ver http://www.epsg.org). Esto asigna una proyección estándar y parámetros nacionales al canevá a la Región (Location). El código numérico apropiado puede encontrarse en el menú (ver Figura 9) o en los metadatos. (C) Los datos de la proyección pueden importarse directamente con los datos utilizando los módulos de importación r.in.gdal y v.in.ogr.

(A): Para definir la proyección de una Región (Location) presione con el ratón en el botón 'Create New Location'. GRASS cambia a modo basado en texto, que pudiera ser también ser su pantalla de inicio – dependiendo de los ajuste de inicio (ver Figura 8). Los datos para crear una nueva Región (Location) están completamente descritos en el capítulo 4.5.1.


Figura 8: Pantalla para la definición de una nueva Region (Location) en GRASS

(B): Si existe un código EPSG para el proyecto Región (Location), éste pude utilizarse para crear automáticamente una nueva Region (Locación). Presione con el ratón sobre el botón 'Create Location from EPSG' e introduzca el código numérico apropiado (ver Figura 9). El botón 'EPSG Codes' muestra una lista una lista existente de códigos con sus definiciones apropiadas.

Figura 9: Pantalla para la integración de un código EPSG

(C): En algunos casos los datos ya contienen toda la información necesaria acerca de la proyección. Esto hace posible generar una nueva Región (Location) durante una sesión de GRASS utilizando la información sobre la proyección contenida en el conjunto de datos importados. Por ejemplo, una nueva Región (Location) puede crearse con un archivo tipo SHAPE ó GeoTIFF si se dispone de archivo de proyección 'correcto' (.prj) (desafortunadamente esto es un caso raro).

Ejemplo: Contenido de un archivo de proyección SHAPE (.prj)

PROJCS["Transverse Mercator",GEOGCS["bessel",
DATUM["Deutsches_Hauptdreiecksnetz",
SPHEROID["bessel",6377397.155,299.1528128],
TOWGS84[590.5,69.5,411.6,-0.796,-0.052,-3.601,8.30]],
PRIMEM["Greenwich",0],UNIT["degree",0.0174532925199433]],
PROJECTION["Transverse_Mercator"],PARAMETER["latitude_of_origin",0],
PARAMETER["central_meridian",9],PARAMETER["scale_factor",1],
PARAMETER["false_easting",3500000],PARAMETER["false_northing",0],
UNIT["meter",1]]

Ejemplo: Datos de proyección de una mapa raster (GeoTiff)

Driver: GTiff/GeoTIFF Size is 3570, 3753 Coordinate System is:
PROJCS["Transverse Mercator",
    GEOGCS["Deutsches_Hauptdreiecksnetz",
        DATUM["Deutsches_Hauptdreiecksnetz",
            SPHEROID["bessel",6377397.155,299.1528128000033],
            TOWGS84[590.5,69.5,411.6,-0.796,-0.052,-3.601,8.3]],
        PRIMEM["Greenwich",0],
        UNIT["degree",0.0174532925199433]],
    PROJECTION["Transverse_Mercator"],
    PARAMETER["latitude_of_origin",0],
    PARAMETER["central_meridian",9],
    PARAMETER["scale_factor",1],
    PARAMETER["false_easting",3500000],
    PARAMETER["false_northing",0],
    UNIT["meters",1]]
Origin = (3368561.280000,5928333.120000) 
Pixel Size = (0.32000000,-0.32000000) 
Corner Coordinates: 
Upper Left  ( 3368561.280, 5928333.120) (  7d 1'12.86"E, 53d28'18.24"N) 
Lower Left  ( 3368561.280, 5927132.160) (  7d 1'14.67"E, 53d27'39.41"N)
Upper Right ( 3369703.680, 5928333.120) (  7d 2'14.77"E, 53d28'19.26"N) 
Lower Right ( 3369703.680, 5927132.160) (  7d 2'16.56"E, 53d27'40.43"N) 
Center      ( 3369132.480, 5927732.640) (  7d 1'44.71"E, 53d27'59.33"N)

Es importante que tal información sea controlada y escudriñada de forma precisa y que esté disponible y completa de la mejor manera posible. Pequeñas variaciones, un Datum (DATUM) ó un Esferoide (SPHEROID) incorrectos, pueden producir enormes desviaciones en la posición de los datos.


Capítulo 2 Completito del Manual de Grass6.0 de Hannover

Pues como no he aprendido a utilizar el subversión, el trabajo me trae todo ocupado y ya me siento desdeperado, por todo eso y mucho más, empezaré publicando parte del capítulo 2 del manual de grass de Hannover versión 1.2 sólo en lo que todo se tranquiliza. Que seguramente dicha tranquilidad me llevará lograrla por lo menos dos meses, ya que si Dios quiere y la vaquita pinta tendré trabajo suficiente en ese perido para apenas revisar siquiera mi correo.

Alclaración: Yo solo traduje, no soy autor de absolutamente nada de lo que aquí muestro y no tiene proceder ningín fin de lucro si no más bien la divulgación de la información. Aclarado este punto pues comienzo. Ah, por cierto, si alguien tiene algun comentario o quiere modificar el contenido de este mensaje pues que mejor. Y si además puede albergar en algún sitio esta información en algún sitio wiki para que todos le metamos mano pues muchísimo mas mejor.

Ahora, en el capítulo 20 del manual el cuestion dice lo siguiente:

20 GNU Free Documentation License

Version 1.2, November 2002

Copyright © 2000,2001,2002 Free Software Foundation, Inc. 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed.

Así que espero no estar incurriendo en alguna falta. Si es así, pues no sean gachos y avisen.

2 Diseño y Estructura

GRASS es GIS híbrido y con estructura modular con funciones raster y vectoriales orientadas. Cada función del GIS es conducida por su propio módulo. Así el GRASS GIS esta claramente estructurado y luce bastante transparente. Otra ventaja de esta estructura modular es que solamente están funcionando los módulos necesarios, lo cual mantiene los recursos de la computadora.

2.1 Datos Geográficos

El GIS se caracteriza de cuatro componentes principales (1):

  • Entrada
  • Administración
  • Análisis
  • Presentación

Los tipos de datos de este modelo de cuatro componentes se clasifican en tres categorías tales como: datos geométricos, datos atributo y datos gráficos, los cuales tienen las siguientes propiedades:

Datos geométricos: Estos datos describen la situación espacial de objetos acerca de su forma y su relativa situación en el espacio. Usualmente la relación de puntos individuales, líneas ó áreas se hace por medio de la integración de estos en un sistema de coordenadas, dando como resultado la relación métrica y con el mundo real. Los datos geométricos pueden estar disponibles como datos raster (píxel) y datos vectoriales (polígonos/áreas, líneas, sitios) (ver Figura 2).

Los datos raster están datos separados de forma continua en el espacio, además están estructurados en forma de matriz con celdas generalmente cuadradas y del mismo tamaño. Cada celda contiene un atributo (característica, fecha del atributo), que representa un fenómeno (e.g. temperatura o valor del color). El almacenamiento de las celdas se realiza en función de sus coordenadas. Se ajustan en renglones y columnas. Los datos geométrico son accesados por medio de coordenadas geográficas o especificando el renglón y/o la columna. Trabajar con datos raster permite el uso y análisis de datos de percepción remota (teledetección) tales como imágenes infrarrojas de operaciones aéreas, fotografías o imágenes satelitales y otras más. Los requerimientos de memoria y la alta demanda de recursos de cómputo (tiempo de cpu), que aumenta exponencialmente con el incremento de la resolución, son vistos como una desventaja de los datos raster. Aunque debido al aumento constante en el poder de los CPU y a mayores capacidades de almacenamiento esta desventaja ha llegado a ser menos importante en los últimos años. Adicionalmente, los datos raster no están asociados con las llamadas relaciones de vecindad ya que cada píxel está definido por su propia situación en el sistema de coordenadas.

Figura 2: Datos geométricos y datos de atributo en un Sistema de Información Geográfica.

Los datos vectoriales se utilizan para el almacenamiento de la información de una línea y/o para el almacenamiento de áreas homogéneas como líneas cerradas (polígonos). Una línea conecta dos puntos finales (nodos) los cuales también tienen coordenadas. A cada objeto vectorial se le puede asignar ninguno, uno o varios atributos (propiedades). Para la administración en GRASS, el formato de los datos utilizado por defecto es el dBase. También están disponibles diferentes interfaces externas SMBD (Sitemas Manejadores de Bases de Datos) como por ejemplo PostgreSQL, MySQL, Oracle y otras tantas también disponibles. En comparación con los datos raster, los datos vectoriales se caracterizan de requerir recursos de memoria y tiempos de cálculo relativamente más bajos para su análisis. A diferencia de los datos raster, los datos vectoriales tiene una topología, lo que significa que las líneas y áreas “saben” cuales nodos poseen y/o de cuales áreas son bordes.


Los datos punto (Sitios) pueden ser considerados como una forma especial de datos vectoriales. Estos se utilizan para salvar selectivamente información de extensión espacial. Este tipo de datos puede salvarse como vector sitio en GRASS 6.0 pero no en la versión 5.4. Por consiguiente, tiene las características de un dato vectorial.

Datos Atributo (categorías): son cualidades que se interconectan con los tipos de datos antes mencionados. Estos datos se guardan con el GIS o dentro de un sistema de bases de datos junto con el GIS por medio de una IMDB (Interfase Manejadora de Bases de Datos).

Datos Gráficos: eventualmente describen el método de cómo un objeto espacial es desplegado bajo un cierto tópico en un cierto dispositivo de salida (monitor, plotter, etc.).


Los GIS son ajustados cuantitativa y cualitativamente en relación al objeto de estudio por medio de la combinación de los tipos de datos antes descritos. Estos fenómenos y objetos (entidades) son salvados en el GIS en dos estructuras básicas:

  • de apariencia continua.- laminares e ilimitados en el espacio
  • de apariencia discreta.- áreas definidas y objetos como líneas

Cuando es diseñado un GIS, la “correcta” selección de la estructura de datos que se utilizará depende de los estándares espaciales, de la cantidad de datos, de los datos originales y del análisis planeado entre otras cosas.

En el GRASS GIS diferentes módulos permiten la conversión entre estructuras de datos individuales. Las líneas de contorno se pueden almacenar como líneas vectoriales, por ejemplo, en un modelo laminar de terreno (en formato raster). De manera semejante, un mapa que consiste en líneas de contorno digitales (en formato vectorial) puede ser transformado en una superficie cerrada de terreno en formato raster por medio de una interpolación. En este caso la calidad de la conversión dependerña de la resolución origina de los datos (ver Figura 3).




Figura 3: Comparación de datos raster y datos vectoriales de un área idéntica

2.2 Dimensión de los Datos en los GIS

Los datos espaciales están disponibles regularmente como datos laminares o datos en dos y media dimensiones (2.5D). Siempre que exista un tercer parámetro (por ejemplo: elevación), nosotros le llamaremos dos y media dimensiones. Sólo la descripción de los lados de un cuerpo (por ejemplo: las superficies de una construcción) son el único tipo de dato salvado como un sistema en 3D. (ver Figura 4).


Figura 4: Dimensión de los datos en los GIS

2.3 La Base de Datos de GRASS

Los geodatos son salvados internamente por GRASS en un subdirectorio estándar llamado GRASS database. En la mayoría de los casos es creada una carpeta nueva (por ejemplo: grassdatabase) en el directorio Home del usuario antes de ser instalado GRASS por primera vez:

cd              # Linux cambia automáticamente al directorio Home del 
                # usuario
mkdir grassdata # Compilando el subdirectorio para la base de datos de
                # GRASS

Un árbol de subdirectorios (Location) se creará automáticamente en GRASS por cada región proyecto definido en GRASS. Todos los datos del proyecto se salvan en el subdirectorio Location. La Location se puede subdividir más todavía en subdirectorios los llamados subdirectorios del mapa (mapsets). Así es como GRASS controla la organización y el acceso a los datos (ver capítulo 2.3.1 y 2.3.2).

Una vez que diversos componentes (datos geométricos, atributos y gráficos) de capas (layers) individuales son almacenados en diferentes subdirectorios, toda la administración de los datos del proyecto debe hacerse usando los comandos de GRASS, es decir, todas las operaciones de archivo (copiar, borrar, renombrar) serán ejecutadas apropiadamente con los comandos de GRASS (g.copy, g.remove, g,rename).

2.3.1 El mapset PERMANET

Toda la información relativa a la proyección, resolución y extensión del área de proyecto es almacenada dentro de una locación compilada dentro del mapset PERMANENT, el cual es generado automáticamente por GRASS. En caso de ser necesario los datos esenciales del proyecto (mapas originales) pueden ser almacenados en este sitio ya que únicamente aquel usuario que creó el nuevo proyecto tiene permiso de escritura. Debido a la estructura interna está garantizado que estos datos no podrán cambiarse por cualquier otro usuario.

Otros usuarios de GRASS y naturalmente aquella persona con permisos sobre el mapset PERMANET deben crear mapsets adicionales para la crear, salvar y cambiar sus propios archivos y análisis de resultados basados en los datos esenciales del mapset PERMANET.

Archivos dentro del mapset PERMANENT

El acceso a un mapset en particular puede ser controlado de manera individual para cada proyecto (Location) en GRASS. Si no hay mapas (datos esenciales) guardados en PERMANENT este solo contendrá archivos con información acerca del área de proyecto:

The access to a single mapsets can be controlled individually for each project (Location) in GRASS. If no maps (core data) are saved in PERMANENT it will only contains files with information about the project area:

DEFAULT_WIND

Especificaciones del las coordenadas, extension y resolución del entorno PERMANENT



MYNAME

Nombre del proyecto -> e.g.: hanover



PROJ_INFO

Especificaciones sobre la proyección cartográfica -> e.g. tmerc (Proyección Transversa de Mercator), bessel (elipsoide), potsdam (date)



PROJ_UNITS

Especificaciones sobre las unidades utilizadas e.g.: metros



WIND

Especificaciones sobre la REGION actual y de la proyección MAPSET



VAR

Especificaciones sobre el manejador y la ruta del manejador de la base de datos.


2.3.2 Diseño de otros mapsets

Cada usuario de GRASS puede crear uno o varios mapsets en los cuales él mismo administre los datos del proyecto, ya sea en su totalidad o en menor grado.

Esta característica de la estructura de la base de datos de GRASS permite que varios usuarios trabajen al mismo tiempo en un mismo proyecto, por ejemplo, en una red de computadoras sin correr el riesgo de alterar o destruir datos de otros usuarios. Los mapsets de otros usuarios pueden ser integrados específicamente en los 'proyectos propios' de los usuarios otorgando permiso de solo lectura. Los mapas resultantes de cualquier análisis son guardados en el mapset de los usuarios que se encuentran en sesión de GRASS.

Estructura del archivo Mapset

cats/

Valores de categoría (e.g. valores de color y temperatura) y atributos (classes with caption) de mapas raster indivuduales.


cell/

Mapas raster induviduales


cellhd/

Columnas principales de cada mapa raster


cell_misc/

Datos estadísticos de cada mapa raster


colr/

Información sobre el color de cada mapa raster


dbf/

Contiene los atributos internos vectoriales en formato DBASE


fcell/

Mapas raster con números de punto flotante (f: floating point)


hist/

'Desarrollo histórico' de cada mapa raster


vector/

Contiene datos vectoriales (geometría, topología, etc.)


WIND

DAtos de la REGION actual y de la proyección MAPSET


GRASS 6.0 un usuario para iniciar varias sesiones GRASS en paralelo

2.4 Estructura de comandos en GRASS

En GRASS los comandos siguen una estructura bastante clara. El tipo de comando puede reconocerse por la abreviatura del prefijo al inicio del nombre del comando. Los comandos son programas independientes y en GRASS son llamados módulos. Estos comandos tienen nombres autodescriptivos. De esta manera, el módulo para la digitalización de mapas raster se llama r.digit. Para convertir datos de formato vectorial a raster se utiliza el módulo v.to.rast. La Tabla 1 describe detalladamente la estructura de los nombres de comandos y módulos GRASS.

Módulos y programas en GRASS

Aparte de los módulos existentes en GRASS se dispone de todos los programas de Unix/Linux. Estos pueden invocarse por medio del Shell, el intérprete de comandos. Esto es particularmente útil si se está interesado en la programación, de tal suerte que se pueden integrar módulos confeccionados por uno mismo y/o modificar los módulos de GRASS y/o integrarlos con los propios. Aún cuando al recién iniciado en GRASS esto le parezca complicado, la posibilidad de los usuarios de poder programar en GRASS provee de posibilidades casi sin restricciones para resolver sus propias necesidades y de realizar lo que su imaginación les dicte dentro del GIS. Además aprender a crear scripts en Unix/Linux es muy fácil.

Tabla 1: Estructura de los nombres de los módulos de GRASS

Prefijo

Clase de función

Significado de los comandos

d.*

Display

Para la exhibición gráfica y la consulta visual en el monitor

r.*

raster

Para el procesamiento de datos raster

i.*

imagery

Para el procesamiento de imágenes

v.*

vector

Para el procesamiento de datos vectoriales

g.*

general

Comandos para operaciones de archivos en general

p.*

paint

Comandos para el diseño de mapas

ps.*

postscript

Comandos para del diseño de mapas de tamaño postcript

db.*

database

Módulos para la administración de la base de datos

r3.*

voxel raster

Para el procesamiento de datos raster en 3D

2.5 Ayuda para el uso de los módulos de GRASS

Está disponible un archivo de ayuda en el cual se describen los comandos y la sintaxis de alrededor de 400 módulos de GRASS. Se dispone de una ayuda breve para la utilización de los comandos usando el parámetro “-help”.

d.rast -help

Por medio del comando g.manual nombre del módulo puede desplegarse una descripción detallada y con ejemplos del comando en cuestión; esta información proviene de la página web de GRASS.

g.manual d.rast

De esta manera un navegador es iniciado y en él se desplegará el texto de ayuda. También está integrado un índice completo en la ayuda, el cual está disponible al final de este libro (ver capítulo 21)

2.6 Variables de GRASS

Algunas variables son ajustadas durante una sesión de GRASS. Estas variables pueden imprimirse y modificarse por medio del módulo g.gisenv.

Si se introduce el módulo sin parámetros, GRASS despliega las variables de entorno establecidas actualmente.

g.gisenv
GISDBASE=/home/holl/grassdata
GRASS_DB_ENCODING=utf-8
MAPSET=PERMANENT
LOCATION_NAME=spearfish
GRASS_GUI=tcltk

Para que el módulo muestre cual el mapset actual es necesario acompañarlo del parámetro “MAPSET”: g.gisenv MAPSET

Para modificar una variable utilizamos las siguiente sintaxis:
g.gisenv set='OVERWRITE=1'

Esto ajustará la variable OVERWRITE al modo sobrescribir, el cual está desactivado por defecto.

Puede encontrar una lista detallada de variables específicas de GRASS en las páginas de ayuda:
g.manual variables

Nota: Además de la variable recién mencionada 'OVERWRITE', también es posible forzar a los módulos raster y vectoriales para sobrescribir mapas utilizando los interruptores –o ó -overwrite (con dos signos menos (--)). Así es posible forzar a sobrescribir durante el uso de cada comando individualmente ya que por defecto los mapas se encuentran protegidos contra escritura.