Adición de herramientas GRASS

Los módulos GRASS pueden ser ejecutados desde las GRASS Tools de QGGIS si QGIS fue iniciado desde una shell GRASS o si un mapset GRASS fue abierto desde QGIS. Los módulos solo trabajan con datos GRASS.

Es fácil modificar el menú y adicionar nuevos módulos porque tanto el menú como los módulos están definidos en archivos de configuración XML. Se describe abajo como escribir nuevos módulos y modificar el árbol de menú.

Módulo de configuración

Antecedentes

Las opciones de cada módulo que se muestran en la pestaña module_ Options_ se crean según la combinación de la definición en el archivo QGM (módulo QGIS GRASS) y la definición de opciones en el módulo GRASS o el script GRASS — GMO (opciones del módulo GRASS). Debido a que cada opción en QGM está vinculada a un GMO (o más), a menudo es útil si no es necesario ver GMO . Los GMO son emitidos por el módulo GRASS si se ejecuta con la opción _*-interface description_*, la salida está en formato XML, por ejemplo:

r.to.vect --interface-description

Algunos módulos de GRASS tienen demasiadas opciones que pueden ser confusas para los principiantes. En QGM es posible definir solo algunos de ellos y posiblemente establecer algunos valores predeterminados y/u ocultar algunas opciones con cierto valor. Eso significa que se pueden definir más módulos QGIS-GRASS para cada módulo GRASS. Por ejemplo, el módulo r.to.vect se dividió en tres módulos QGIS-GRASS con la opción «entidad» predefinida. La definición de QGM está escrita en un archivo de formato XML con extensión .qgm, uno para cada módulo QGIS-GRASS. Los archivos de configuración se almacenan en el directorio _*qgis/src/plugins/grass/modules*_ y se instalan en el directorio _*share/qgis/grass/modules*_. El nombre del archivo debe comenzar con el nombre del módulo GRASS + una palabra que describa la tarea específica. Por ejemplo, el módulo que extrae líneas vectoriales del ráster se llama r.to.vect.line.qgm.

Aquí tiene un ejemplo de un archivo de configuración:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE qgisgrassmodule SYSTEM "http://mrcc.com/qgisgrassmodule.dtd">
<qgisgrassmodule label="Generate aspect map from DEM" module="r.slope.aspect">
       <option key="elevation" />
       <option key="aspect" />
</qgisgrassmodule>

qgisgrassmodule tag attributes

  • etiqueta – descripción usada en árbol de menú
  • module — nombre del ejecutable o script del módulo GRASS

Pestañas de opción

Cada pestaña del módulo de grass en qgis puede contener una o más de una opción:

  • opción — corresponde a la etiqueta de parámetro GMO, por ejemplo:
<option key="elevation" />
  • flag — corresponde a la etiqueta de bandera GMO, ejemplo:
<flag key="o" answer="on" hidden="yes" />
  • field —para las capas vectoriales define el atributo de campo , la opción se crea como cuadro combinado con campos disponibles. Por ejemplo (v.to.db.qgm):
<field key="column" layer="map" type="integer,double" label="Attribute field" />
  • selection — Este es un tipo de opción bastante interesante y útil. Permite definir la lista de categorías de vectores de GRASS utilizando la interfaz QGIS. Las entidades (y sus categorías, equivalente de ID de entidad de GRASS) se pueden seleccionar con la herramienta “Seleccionar entidades” o en la tabla de atributos. La lista de categorías se actualiza dinámicamente. Ejemplo (v.extract.list.qgm):
<selection key="list" layerid="input" label="Cats" />

Atributos comunes de etiqueta opción/bandera

  • key — nombre de la opción módulo en GMO.
  • answer — valor predeterminado (sobrescribe el valor predeterminado de GMO); el valor «on» activará una bandera.
  • hidden — la opción no aparecerá en el cuadro de diálogo, pero el módulo se ejecutará con esta opción (hidden = «yes»).
  • etiqueta — opción etiqueta
  • advanced — «yes» o «no», el valor predeterminado es «no». Si se establece en «sí», la opción/indicador se agrega al panel de opciones avanzadas inicialmente oculto y el botón «Mostrar opciones avanzadas >>» se muestra bajo opciones simples (básicas, estándar)
  • version_min — versión GRASS mínima para la cual esta opción/bandera es válida
  • version_max — máxima versión GRASS para la cual esta opción/bandera es válida

Opción etiqueta atributos específicos

  • typeoption — esta opción se puede usar con la capa vectorial para definir el nombre de la opción de tipo de entrada vectorial, cuando se ejecuta el módulo, el tipo de capa vectorial seleccionada se usará para esa opción. Por ejemplo (v.overlay.or.qgm):

    <option key="ainput" typeoption="atype" layeroption="alayer" typemask="area,line" />
    

    Significa que si se selecciona una capa del cuadro combinado de esta opción, la opción _*atype*_ se establece automáticamente en el tipo de capa y, por lo tanto, _*atype*_ no tiene que agregarse en absoluto.

  • layeroption — equivalente de typeoption para capa.

  • typmask — La opción de entrada vectorial define los tipos permitidos. Solo las capas de uno de los tipos definidos se muestran en la entrada. Ver v.overlay.or.qgm por ejemplo.

Atributos específicos de la etiqueta de campo

  • layer — El atributo clave de la opción que define el vector del que este campo debe depender

  • type — define los tipos de campos de atributos que deben agregarse al cuadro combinado de campos, por ejemplo

    <field key="column" layer="map" type="integer,double" label="Attribute field" />
    

    Significa que sólo los campos atributos de tipo entero y doble precisión aparecerán en el combobox. Vea v.what.vect para ejemplo (2 vectores diferentes).

Detrás de escena

La idea de la implementación de los módulos QGIS-GRASS es utilizar la máxima información de GMO y solo simplificar la interfaz. A continuación se describen algunas reglas sobre cómo se usa la información de GMO y en qué orden, si no todas, están definidas en GMO.

  • label — Si el atributo está definido en QGM este es usado como opción de etiqueta, si no está definido es usada la opción de indicador de etiqueta GMO y si no está definido es usada la opción de descripción en la etiqueta
  • tooltip — (aparece al pasar el mouse sobre la opción) si la etiqueta está definida (ya sea en QGM o GMO) y la descripción está definida en GMO (por lo tanto, la etiqueta y la descripción difieren) la etiqueta de descripción GMO se utiliza para la información detallada
  • multiple values label — si una opción es de tipo múltiple con una lista definida de valores posibles (como la opción de carga de v.distance) y la etiqueta de descripción se define para la etiqueta de valor en GMO, entonces se usa como etiqueta de casilla de verificación

Imagen

Cada módulo debe estar representado también por una imagen/icono que simbolice la funcionalidad de los módulos. Las imágenes también se almacenan en plugins/grass/modules como archivos SVG (.svg) o PNG (.png).

Actualmente existen 3 esquemas soportados para la imagen:

  • 1 imagen
  • 2 imágenes — QGIS creará ícono: 1 -> 2
  • 3 imágenes — QGIS creará ícono: 1 + 2 -> 3

El nombre de la imagen comienza con el nombre del módulo QGIS-GRASS al que se agrega el número de imagen, por ejemplo: v.overlay.and.1.svg, v.overlay.and.2.svg, v.overlay.and.3.svg. Es posible combinar imágenes SVG y PNG.

Las imágenes SVG y PNG se pueden generar a partir de QGIS usando Map Composer. El tamaño de las imágenes PNG debe ser mayor que el tamaño de icono esperado, porque se espera que luego se use en la documentación generada automáticamente, donde las imágenes se usarán en un tamaño más grande.

scripts QGIS GRASS

Debido a que puede llevar mucho tiempo hasta que se agregue un nuevo script a la versión estable de GRASS y porque algunos scripts pueden ser útiles solo para la interfaz GUI de QGIS, es posible agregar un script “GRASS” a QGIS. Los scripts deben seguir los requisitos generales para los scripts de GRASS y están ubicados en qgis/src/plugins/grass/scripts.

Reglas generales para nuevos módulos

Las herramientas GRASS están destinadas principalmente a principiantes y usuarios poco experimentados. Las reglas básicas son:

  • Cada módulo debe tener 3 o menos opciones; Si parece necesario agregar más opciones, se debe discutir de antemano
  • La definición del módulo debe ser robusta para que no permita que un usuario ejecute un módulo con una opción incorrecta. Si aún no hay soporte para cierto tipo de opción, el módulo no debe agregarse al menú

Reglas específicas para descripciones de módulo

  • Evite 3ra persona para verbos, e.g. «Exportar ráster» en vez de «Exporta ráster»
  • Evite «mapa», «capa» y «archivo» innecesario, e.g. «Exportar ráster» en vez de «Exportar capa ráster del mapa»
  • Evite «GRASS» innecesario, por ejemplo «Exportar ráster» en vez de «Exportar ráster GRASS»
  • Evite «a|an», e.g. «Exportar ráster» en vez de «Exporta ráster»
  • Evite las palabras de relleno, p.ej. «Exportar ráster» en lugar de «Permite la exportación de un ráster»
  • Evite «Convertir»: en vez, use «Exportar» o «Importar». Convertir debería usarse para conversiones internas de GRASS (ej.: de ráster a vector)
  • Los acrónimos deberían estar en mayúsculas, por ej. ASCII en vez de ascii
  • En caso de duda, por favor revise los complementos similares existentes para mantener consistencia

Opciones que no pueden usarse actualmente

Técnicamente, se puede usar cualquier opción. Sin embargo, algunos tipos de opciones aún no son compatibles, por ejemplo, aquellos que dependen de otra opción. Aquí hay una lista (probablemente incompleta) de opciones que aún no están bien soportadas y, por lo tanto, no deberían usarse en este momento:

  • entrada dsn/capa OGR (v.in.org)

Módulos que pueden ser adicionados

La mayoría de los módulos se han agregado. Si necesita otros adicionales, escriba a la lista de correo de desarrollo de qgis y enumere a continuación los módulos que considera más importantes a agregar.

Debe publicar el nombre de un nuevo módulo QGIS-GRASS, el nombre del módulo GRASS y las opciones que desea utilizar. Por ejemplo:

r.to.vect.area: r.to.vect input output feature=area

Vea aquí también la discusión sobre la lista de módulos relevante a GRASS-QGIS.

Módulos a darse como obsoletos

Enumere a continuación los módulos que deben eliminarse, con una justificación de esta sugerencia (por ejemplo: algunos módulos relacionados con las proyecciones son difíciles de entender y no tienen un uso general). Tenga en cuenta que algunos módulos no han sido probados exhaustivamente. Por favor, pruébelos y, si encuentra algún problema, infórmelo a la redmine (mejor aún: corríjalo usted mismo y envíe el parche).