Adicionando ferramentas GRASS

Módulos de GRASS podem ser executados a partir de QGIS GRASS Tools. Se QGIS foi iniciado a partir de um shell GRASS ou se um mapset GRASS foi aberto a partir QGIS. Os módulos de trabalham apenas com dados GRASS.

É fácil modificar o menu e adicionar novos módulo porque o menu e os módulos são definidos em ficheiros de configuração XML. Em baixo é descrito como escrever novos módulos e modificar a árvores do menu.

Configuração do módulo

Background

as opções de cada módulo que aparecem no separador _*Opções_* do módulo são criados de acordo com a combinação da definição no ficheiro QGM (módulo QGIS GRASS). Cada opção no QGM está ligado a um (ou mais) GMO, muitas vezes é útil se não for necessário para ver o GMO. O GMO são ficheiro de saída dos módulo GRASS se for executado com a opção _*–interface-description_*, o ficheiro de saída é em formato XML, por exemplo:

r.to.vect --interface-description

Alguns módulos GRASS tem muitas opções que pode ser confuso para iniciantes. Em QGM é possível definir apenas alguns deles e, possivelmente, definir alguns valores padrão e / ou esconder algumas opções com determinado valor. Isso significa que mais módulos QGIS-GRASS podem ser definidos para cada módulo GRASS. Por exemplo, o módulo r.to.vect foi dividido em três módulos QGIS-grama com opção pré-definida “feature”. A definição QGM é escrito em arquivo de formato XML com extensão .qgm, um para cada módulo QGIS-GRASS. Os arquivos de configuração são armazenados no diretório _*qgis/src/plugins/grass/modules*_ e instalado no diretório _*share/qgis/grass/modules*_. O nome do arquivo deve começar com o nome do módulo GRASS + uma palavra que descreve a tarefa específica. Por exemplo, o módulo que extrai linhas de vetor raster é chamado r.to.vect.line.qgm.

Aqui está um exemplo de um arquivo de configuração:

<?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

  • label — descrição usada na árvore do menu
  • module — nome do módulo ou script executável do GRASS.

Etiquetas opcionais

Cada etiqueta qgisgrassmodule pode contem um ou mais etiquetas opcionais:

  • option — corresponde à etiqueta do parâmetro GMO, exemplo:
<option key="elevation" />
  • flag — corresponde à etiqueta do GMO flag, exemplo:
<flag key="o" answer="on" hidden="yes" />
  • field — para camadas vetoriais define campo de atributo, a opção é criada como combobox com os campos disponíveis. Por exemplo (v.to.db.qgm):
<field key="column" layer="map" type="integer,double" label="Attribute field" />
  • selection — este é um tipo de opção bastante interessante e útil. Ele permite definir a lista de categorias de vetor GRASS usando a interface QGIS. Recursos (e suas categorias, GRASS feature ID equivalente) pode ser seleccionada com a ferramenta “Select Features” ou na tabela de atributos. A lista de categorias é atualizada dinamicamente. Exemplo (v.extract.list.qgm):
<selection key="list" layerid="input" label="Cats" />

Opção comum/ sinalizar etiquetas de atributos

  • key — nome da opção do módulo no GMO.
  • answer — valor padrão (reescreve o valor GMO padrão); o valor “on” irá trocar ao sinalizar.
  • hidden — a opção não irá aparecer na janela do diálogo, mas o módulo irá ser executado com esta opção (hidden=”yes”).
  • label — opção do rótulo
  • advanced — “yes” or “no”, por defeito é “no”. Se definir como “yes” a opção/flag é adicionado para inicializar no painel escondido de opções avançadas e o botão “Exibir opções avançadas>>” é exibido nas opções simples (básico, padrão)
  • version_min — versão mínima do GRASS para a que a opção/flag seja válida
  • version_max — versão máxima do GRASS para a que a opção/flag seja válida

Opções específicas da etiqueta atributos

  • typeoption — esta opção pode ser usada com a camada vetorial para definir o nome da opção do tipo de entrada, quando o módulo é acionado, o tipo de camada vectorial selecionado será usado para essa opção. Por exemplo (v.overlay.or.qgm):

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

    Isso significa que, se uma camada de caixa de combinação é selecionada a partir da opção _*_*ATYPE*_ a opção ajusta automaticamente o tipo da camada, e, assim, _*_*ATYPE*_ não tem que ser adicionada a todos.

  • layeroption — equivalente ao typeoption da camada.

  • typmask — define os tipos permitidos para camadas vetoriais. Apenas as camadas de um tipo definido são exibidas na entrada. Ver v.overlay.oppure.qgm como um exemplo.

Atributos específicos para o campo de rótulo

  • layer — o atributo chave da opção que define o vector deste campo que deve usar

  • type — define os tipos de campos de atributos que devem ser adicionados à caixa de seleção, por exemplo,

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

    Isso significa que apenas os campos de atributo do tipo inteiro e em precisão dupla aparecerá na caixa de seleção. Veja v.what.vect por exemplo (2 vetores diferentes).

Nos bastidores

A idéia de implementação de módulos QGIS-GRASS é usar o máximo de informações a partir de OGM e só simplificar a interface. Aqui são descritas algumas regras de como as informações vindas de OGM são usadas e em que ordem, se não todos eles são definidos em OGM.

  • label — se este atributo é definido em QGM, ele é usado como uma opção de etiqueta, ou como uma etiqueta de rótulo de opção.
  • tooltip — (appeares on mouseover the option) if label is defined (either in QGM or GMO) and description is defined in GMO (thus label and description differ) the GMO description tag is used for tooltip
  • Etiqueta multiple values — Se uma opção é de tipo múltiplo com uma lista definida de possíveis valores (tais como a opção de carregar v.distance) e a descrição é definido para o valor OGM, é usado como uma caixa de verificação.

Imagem

Cada módulo deve ser representado também por uma imagem / ícone que simboliza a funcionalidade módulos. As imagens também são armazenados em plugins/grass/modules em arquivos SVG (.svg) ou PNG (.png).

Atualmente são suportados 3 esquemas para a imagem:

  • 1 imagem
  • 2 imagens — O QGIS irá criar um ícone: 1 -> 2
  • 3 imagens — O QGIS irá criar um ícone: 1 + 2 ->3

O nome da imagem começa com nome do módulo QGIS-GRASS ao qual está ligado número de imagem, por exemplo: v.overlay.and.1.svg, v.overlay.and.2.svg, v.overlay.and.3. SVG. É possível combinar imagens SVG e PNG.

Imagens SVG e PNG podem ser gerados a partir de QGIS usando Map Composer. O tamanho das imagens PNG devem ser maior do que o tamanho do ícone esperado, porque é esperado para ser usado mais tarde na documentação gerada automaticamente, onde as imagens serão utilizadas em tamanho maior.

Scripts GRASS QGIS

Como as vezes pode levar muito tempo até que um novo script seja adicionado a versão estável do GRAMA e pelo fato de alguns scripts serem úteis apenas para a interface GUI do QGIS é possível adicionar um script ‘GRAMA’ ao QGIS. Os scripts devem seguir os requisitos gerais para os scripts GRASS e que estão localizados em qgis/src/plugins/grass/scripts.

Gerar regras para novos módulos

Ferramentas GRASS são normalmente para novos usuários e não muito para usuário avançados. As regras básicas são:

  • Cada módulo deve ter 3 ou menos opções; se for necessário adicionar mais opções, deverá ser discutido antecipadamente
  • As definição de módulo deve ser robustas para evitar que um usuário execute um módulo com opção errada. Se ainda não há suporte para certo tipo de opção do módulo ela não deve ser adicionada ao menu

Regras específicas para a descrição do módulo

  • Evite a 3.º pessoa para verbos, ex.: “Exportar raster” em vez de “Exporta raster”
  • Evite usar desnecessariamente as palavras “mapa”, “camada” e “Arquivo”, por exemplo, “Exportar Raster” em vez de “Exportar camada de mapa Raster”
  • Evite usar desnecessariamente a palavra “GRASS”, por exemplo, “Exportar Raster” em vez de “Exportar Raster GRASS”
  • Evite “a | um”, por exemplo, “Exportar Raster” em vez de “Exportar um raster”
  • Evite frases extensas, use, por exemplo, “Exportar Raster” em vez de “Permite a exportação de um raster”
  • Evite “Converter”: use “Exportar” ou “Importar” em seu lugar. Converter deve ser usado para conversões internas no GRASS (por exemplo, de raster para vetor)
  • As siglas devem ser maiúsculas, por exemplo, ASCII em vez de ascii
  • Em caso de dúvida, verifique os plugins semelhantes existentes para manter a consistência

Opções que não podem ser utilizados atualmente

Tecnicamente, qualquer opção pode ser utilizada. Alguns tipos de opções, no entanto, ainda não são bem suportados, por exemplo, aquelas que dependem de outra opção. Aqui está uma lista (provavelmente incompleta) de opções que ainda não são bem suportados e por isso não deve ser usado no momento:

  • Ficheiro de entrada OGR dsn/layer (v.in.ogr)

Módulos que podem ser adicionados

Foram adicionados a maioria dos módulos. Se necessita de adicionar mais, entre em contacto com a lista de discussão de desenvolvimentos do qgis, e indique os módulos que acha que são mais importantes para serem adicionados.

Você deve publicar o nome de um novo módulo QGIS-GRASS, o nome do módulo de GRASS e as opções que você deseja usar. Por exemplo:

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

Veja também a discussão na lista de módulo relevante GRASS-QGIS.

Módulos a serem obsoletos

Lista a seguir os módulos que devem ser removidos, com uma justificativa para essa sugestão (por exemplo: alguns módulos relacionados às projeções são difíceis de entender, e de nenhuma utilidade geral). Atenção: alguns módulos não foram completamente testados. Por favor, testá-los, e se você encontrar qualquer problema de denunciá-lo à redmine (melhor ainda: corrigi-lo sozinho e enviar o patch).