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'.
Abra a Caixa de Ferramentas disponíveis através do menu Processar. Na área de busca, procure pelo módulo v.to.rast.attribute.
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).
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.
A seguir, acesse novamente o menu Processar. Desta vez procure pelo módulo r.surf.contour na Caixa de Ferramentas.
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.
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.
Logicamente, podemos alterar os aspectos visuais do nosso MDE gerado com base nas isolinhas. Veja este exemplo:
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:
- ArcGIS: Geração de Curvas de Nível a partir de um MDE
- Como gerar Curvas de Nível no Kosmo SIG a partir de um SRTM
- Saiba como Gerar Isolinhas no Spring
Agora, aguardamos seus comentários.
20 respostas
Boa tarde. Estou com um mapa no QGIS com curvas de nível em preto e branco. Se puder me ajudar, explicando como deixo colorido, eu agradeço desde já.
Muito bom o seu trabalho de divulgação dessas ferramentas tão úteis presentes no QGIS.
Minha dúvida é o seguinte, existe algum “Teste de Aderência” para avaliar o MDE gerado a partir de cotas de altitude?
Eu gostaria de consultar a eficiência da geração do modelo.
Abraços
Não estou conseguindo passar da parte do r.surf.contour… o QGIS sempre trava por pelo menos umas 2 horas e o computador fica muito lento. Não sei se o arquivo está muito pesado ou se os parâmetros são inadequados, mas utilizei as mesmas que foram utilizadas no tutorial (tbm busco fazer um mapa hipsométrico com base em curvas de nível a cada 1 metro).
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?
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?
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.
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
obrigado por compartilhar essa informação! Há tempos estava tentando descobrir como que fazia isso .
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?
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?
Danilo, tudo bem?
Apareceu alguma mensagem de erro? Qual?
Abraço!
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.
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!
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
Muito obrigado!Tentarei agora!
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
Oi João,
Você deve fazer a instalação completa, como ensinei neste vídeo:
http://www.andersonmedeiros.com/qgis-160-capiapo/
Abraço!