Geração de MDE usando Curvas de Nível no QGIS

Como Gerar no QGIS um MDE

Os Modelos Digitais de Elevação (MDE) possuem inúmeras aplicações na área de Geotecnologias. Como obtemos um MDE? Existem várias formas de se gerar um raster deste tipo. Neste tutorial vamos aprender como criar um MDE a partir de um vetor de curvas de nível, também chamadas de isolinhas.

MDE, CURVAS DE NÍVEL E SIG

Em nosso portal temos bastante conteúdo sobre conceitos e aplicações práticas dos MDE. Um deles é um tutorial onde aprendemos a extrair curvas de nível a partir de um raster SRTM:

No presente tutorial podemos dizer que vamos apresentar o processo inverso. Aqui teremos uma camada vetorial no formato shapefile que representa curvas de nível com equidistância de 1 metro.

ISOLINHAS PARA GERAÇÃO DE MDE NO QGIS

A imagem a seguir representa o arquivo vetorial aberto no ambiente do QGIS. Estamos trabalhando nesse exemplo com a versão 2.8.2 ‘Wien’.

Curvas de Nível no QGIS

Abra a Caixa de Ferramentas disponíveis através do menu Processar. Na área de busca, procure pelo módulo v.to.rast.attribute.

Caixa de Ferramentas de Processamento

Este módulo escolhido (que é uma ferramenta do GRASS) converte para raster o valor do atributo disponível na tabela do shapefile. Preencha a janela a seguir conforme os dados abaixo exemplificados.

Em Input vector layer indique a camada que será usada para o processamento (ou seja, o layer que contém as curvas de nível).

Usando o Módulo v.to.rast

Não esqueça de indicar em Name of column for ‘attr’ parameter qual é a coluna que possui os valores das cotas. Neste caso é o campo “ELEV”.

Lembre também de indicar um tamanho de célula compatível com suas curvas de nível (exemplo: 30 ou 90 metros). Neste tutorial, como já mencionado, estamos trabalhando com isolinhas de 1 metro.

Na figura a seguir temos um exemplo, com algum nível de zoom, do arquivo gerado. Como mostrado na imagem anterior, trata-se de um arquivo no formato TIF.

Raster com valores de Cotas

A seguir, acesse novamente o menu Processar. Desta vez procure pelo módulo r.surf.contour na Caixa de Ferramentas.

Convertendo Raster para Modelo Digital de Elevação

Na janela a seguir, no parâmetro Raster layer with rasterized contours escolha o arquivo gerado na etapa anterior.

Vale lembrar que é muito importante que se indique o valor da resolução do raster a ser gerado. Em seguida, rode o processamento.

Processamento do MDE no QGIS

Dentro de alguns instantes (isso varia dependendo de vários fatores) você terá a visualização do novo MDE criado a partir das curvas de nível.

Geração de MDE usando Curvas de Nível no QGIS

Logicamente, podemos alterar os aspectos visuais do nosso MDE gerado com base nas isolinhas. Veja este exemplo:

Como Gerar no QGIS um MDE usando Curvas de Nível

O que você achou deste tutorial? Já conhecia estes procedimentos?

Leia mais sobre geração de curvas de nível em vários programas de Geoprocessamento:

Agora, aguardamos seus comentários.

Assine nosso FeedAssine nosso Feed e receba nossas atualizações por e-mail. Curta nossa página no Facebook [PortalClickGeo] e siga nosso Twitter [@ClickGeo] para continuar atualizado sobre o Mundo das Geotecnologias.

Sobre Anderson Medeiros 986 Artigos
Em 2017 foi reconhecido como o Profissional do Ano no Brasil no setor de Geotecnologias. Graduado em Geoprocessamento, trabalha com Geotecnologias desde 2005. Já ministrou dezenas de cursos de Geoprocessamento com Softwares Livres em diversas cidades, além de outros treinamentos na modalidade EaD. Desde 2008 publica conteúdo sobre Geoinformação e suas tecnologias como QGIS, PostGIS, gvSIG, i3Geo, entre outras.

17 Comentário

  1. Alan Marcelo Polacchini de Oliveira disse:

    Buenas,

    Estou obtendo a seguinte resposta no log do algorítimo:

    Algoritmo v.to.rast.attribute – Converts (rasterize) a vector layer into a raster layer. iniciando…
    g.proj -c proj4=”+proj=utm +zone=22 +south +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs”
    v.in.ogr min_area=0.0001 snap=-1 input=”/home/alano/Downloads/Bola/kml/Lagoa da Serra” layer=Lagoa da Serra output=tmp1522163311849 –overwrite -o
    g.region n=7179325.92896 s=7178562.57456 e=698674.625234 w=698038.272892 res=5
    v.to.rast input=”tmp1522163311849″ use=attr attribute_column=”Z1″ output=”output95b141625fcd4d1b998881a02cb02499″ –overwrite
    g.region raster=output95b141625fcd4d1b998881a02cb02499
    r.out.gdal –overwrite -c createopt=”TFW=YES,COMPRESS=LZW” input=output95b141625fcd4d1b998881a02cb02499 output=”/home/alano/Downloads/Bola/kml/Lagoa da Serra/lagoadaserra.tif”
    Starting GRASS GIS…
    Executing …
    Default region was updated to the new projection, but if you have multiple mapsets `g.region -d` should be run in each to update the region from the default
    Projection information updated
    Imports vector data into a GRASS vector map using OGR library.

    Usage:
    v.in.ogr [-flc2tojrewi] input=string [layer=string[,string,…]]
    [output=name] [spatial=xmin,ymin,xmax,ymax[,xmin,ymin,xmax,ymax,…]]
    [where=sql_query] [min_area=value] [type=string[,string,…]]
    [snap=value] [location=name] [columns=name[,name,…]]
    [encoding=string] [key=string] [geometry=name] [–overwrite] [–help]
    [–verbose] [–quiet] [–ui]

    Flags:
    -f List supported OGR formats and exit
    -l List available OGR layers in data source and exit
    -c Não limpar polígonos (operação não recomendada)
    -2 Force 2D output even if input is 3D
    -t Do not create attribute table
    -o Override projection check (use current location’s projection)
    -j Perform projection check only and exit
    -r Limit import to the current region
    -e Extend region extents based on new dataset
    -w Change column names to lowercase characters
    -i Create the location specified by the “location” parameter and exit. Do not import the vector data.

    Parameters:
    input Name of OGR datasource to be imported
    layer OGR layer name. If not given, all available layers are imported
    output Nome do mapa vetor de saída
    spatial Import subregion only
    where Cláusula WHERE do comando SQL sem palavra-chave ‘where’
    min_area Minimum size of area to be imported (square meters)
    padrão: 0.0001
    type Optionally change default input type
    opções: point,line,boundary,centroid
    padrão:
    snap Snapping threshold for boundaries (map units)
    padrão: -1
    location Nome da nova locação a criar
    columns Lista de nomes de colunas para usar no lugar dos nomes originais, o primeiro será usado para a coluna categoria
    encoding Encoding value for attribute data
    key Name of column used for categories
    geometry Name of geometry column

    ERROR: Sorry is not a valid option
    ERROR: Sorry is not a valid option
    ERRO:Mapa vectorial não encontrado
    ERRO:Mapa raster não encontrado
    ERRO:Raster map or group not found
    Execution of finished.
    Cleaning up temporary files…
    Starting GRASS GIS…
    Executing …
    ERRO:Mapa raster não encontrado
    ERRO:Raster map or group not found
    Execution of finished.
    Cleaning up temporary files…
    Converting outputs
    Carregando camada resultante

    The following layers were not correctly generated.
    Rasterized
    You can check the log messages to find more information about the execution of the algorithm

    O que tenho feito de errado?

  2. Mesma coisa aconteceu comigo. Quando gero o raster ele cria uma camada Rasterized em preto escrito nan e em branco 600 ou 40, dependendo do shapefile que insiro, criando um quadrado preto do tamanho do shape. O campo COTA possui todas as informações necessárias e insiro 20 na célula do GRASS que é a equidistância das curvas de nível informada na carta. O que pode ser?

  3. Daniel Almeida Papa disse:

    Olá Anderson! Obrigado por essa e muitas outras explicações sobre o QGIS. Tenho utilizado diariamente. Bem… tive um problema nessa etapa para gerar o MDT.
    O Qgis roda tudo, mas o produto final de ambas as etapas é um raster com limites nan e 257 (metros).
    Ao entrar nas propriedades do raster, ele trava. Não há valores de altimetria no raster de saída.
    Tentei com as curvas de nível (extraídas com as elevações de um raster SRTM) e tentei também direto com a SRTM.
    Alguma sugestão?
    Grato

    • Bom dia! isso é erro de reprojeção de coordenadas!
      geralmente as linhas costumam virem na projeção wgs84:4326(lat/long).
      Neste caso, precisa ser convertido para UTM, para que o processo seja gerado corretamente.

  4. Anderson Medeiros, por favor, me ajuda.
    Fiz exatamente como consta neste tutorial, porém resultou em um mapa preto.
    O que eu posso ter errado?
    obrigada

    • O meu também ficou preto, não estou conseguindo solucionar

  5. obrigado por compartilhar essa informação! Há tempos estava tentando descobrir como que fazia isso .

  6. Gilberto Pires Gayer disse:

    Parabéns Anderson. Em um caso em que importo um levantamento planialtimétrico em DXF, a coluna de elevação não é válida na tabela de atributos. Desta forma criei uma nova coluna com todos os valores das secções de curvas que denominei coluna ELEV, agora como faço para atribuir a geometria de elevação para esta coluna toda afim de rodar o v.to.rast.attribut e gerar um raster MDE?

  7. Anderson, tentei acessar os módulos pela aba processar mas não consegui. Estou usando a versão 2.12.3 (Lyon) sabe qual caminho fazer?

  8. Gilberto Gayer disse:

    Bom dia Anderson,
    Utilizei um arquivo shape de parte da cidade onde moro com cotas de 5 em 5 m, as cotas variam de 5 a 225m pela tabela de atributos. Porém o arquivo raster gerado não passa da cota 129,96, as curvas dos topos dos morros desaparecem como se tivessem “nuvens” e quando tento rodar o r.surf.contour o QGis trava. Estou utilizando a versão 2.4 64 bits.

  9. Bom dia meu caro Anderson.
    A intenção de demonstrar o algoritmo foi muito boa, no entanto a linguagem só atinge a nós, que somos usuários mais avançados.
    Para atingir usuários iniciantes e até mesmo intermediários, seria necessário um PASSO-A-PASSO, mais detalhado.

    Fica como dica, para os próximos tutoriais.

    Aproveito para lhe parabenizar pelos posts, que sempre ajudam a resolver problemas específicos nessa área tão vasta que é o geoprocessamento.

    Grande abraço.

    Jânio Marcos

    • Oi Janio, agradecemos pelo comentário pertinente.
      Aqui no site temos materiais para vários níveis de usuário. Neste caso realmente o público imaginado não é o usuário básico, que se for querer começar já por aqui, ficará complicado, pois não foi tratada a etapa de inicializar o projeto (explicado em outros tutoriais). Se for detalhar demais aqui ficaria muito longo. Forte abraço!

  10. João Mendonça disse:

    Olá Anderson,obrigado pela ajuda,mas não funcionou.Cheguei a atualizar e deu erro de não conseguir carregar o provedor “Processar”,após desfazer a atualização,o erro que mencionei anteriormente continuou(tanto não abrir os módulos do GRASS,quanto rodar a linha de comando)

    Abraço

  11. João Mendonca disse:

    Olá Anderson,tudo bem?

    Obrigado pelo turorial,realmente não sabia que poderia ser feito essa conversão de vetor para raster,entretanto ao tentar fazer essa tarefa, o Qgis mostrou um erro:

    Dependência ausente. Esse algoritmo não pode ser executado 🙁
    Este algoritmo requer o GRASS para ser executado. Infelizmente, parece que o GRASS não está instalado no seu computador, ou não está corretamente configurado de forma a ser usado pelo QGIS
    Click here para saber mais como instalar e configurar o GRASS para ser usado com o QGIS

    Fui no site,e não consegui fazer o que ele sugere,pois não sei usar o msys,também tentei habilitar no menu Processar>opções e não fez diferença…instalei o Grass e mesmo assim o qgis não está realizando a operação acima… 🙁 e pra completar,quando clico em Processar>Linha de comando,da o erro:

    Um erro ocorreu enquanto executava o seguinte código Python:

    Traceback (most recent call last):
    File “C:/PROGRA~1/QGISWI~1/apps/qgis/./python/plugins\processing\ProcessingPlugin.py”, line 127, in openCommander
    self.iface.mapCanvas())
    File “C:/PROGRA~1/QGISWI~1/apps/qgis/./python/plugins\processing\gui\CommanderWindow.py”, line 47, in __init__
    self.commands = imp.load_source(‘commands’, self.commandsFile())
    UnicodeEncodeError: ‘ascii’ codec can’t encode character u’\xe3′ in position 11: ordinal not in range(128)

    Versão do Python:
    2.7.5 (default, May 15 2013, 22:44:16) [MSC v.1500 64 bit (AMD64)]

    Versão do QGIS:
    2.8.2-Wien Wien, 1b929ef

    enfim..não sei o que fazer,fico na dúvida se é alguma dependência que está faltando ou dll no win (estou usando o Win7),porém mais um vez obrigado pelos tutoriais

Faça um comentário

Seu e-mail não será divulgado.


*