quarta-feira, dezembro 19, 2012

GRASS GIS: Cálculo do comprimento do rio principal de uma Bacia Hidrográfica

O comprimento do rio principal de uma bacia é um parâmetro frequentemente utilizado em análises hidrológicas, neste tutorial demonstrarei como realizar a extração desse parâmetro utilizando o software GRASS GIS e imagens de radar SRTM. 

Nossa área de estudo compreenderá a cena da imagem SB-24-Z-C (Figura 1).

Figura 1 - Modelo Digital de Elevação da área de estudo no GRASS

#(1) Preenchimento das falhas do MDE:

r.fill.dir input=dem elevation=dem.fill direction=dem.dir     

#(2) Criação das superfícies para análises hidrológicas:

r.watershed -fma elevation=dem.fill accumulation=accum drainage=drainage convergence=5 threshold=123

#(3) Extração da rede de drenagem (ainda no formato raster)

r.stream.extract elevation=dem.fill threshold=123 d8cut=infinity mexp=0 stream_rast=streams direction=drain_dir stream_vect=streams

#(4) Delimitação da Bacia Hidrográfica para o exutório de coordenada
# x=617345.784270 y=9205935.470789 (Figura 2):

r.water.outlet drainage=drainage basin=b1 easting=617345.784270 northing=9205935.470789

#(5) Utilizando álgebra de mapas com o comando r.mapcalc,
# são recortadas as superfícies para a bacia gerada (Figura 3):

r.mapcalc'dem.clip=dem.fill*b1'
r.mapcalc 'accum.clip=accum*b1'
r.mapcalc 'drain.clip=drainage*b1'
r.mapcalc 'streams.clip=streams*b1'
r.mapcalc 'drain_dir.clip=drain_dir*b1'

#(6) Classificação da rede de drenagem de acordo com 
# strahler (Figura 4) e hack (Figura 5):

r.stream.order stream=streams.clip dir=drain_dir.clip strahler=r_strahler hack=r_hack

#(7) Determinação do rio principal

r.mapcalc 'r_mainchannel=if($r_hack==1,1,null())'

#(8) Refinamento do rio principal e conversão para vetor (Figura 6):

r.thin input=r_mainchannel output=r_mainchannel_thin

r.to.vec input=r_mainchannel_thin output=v_mainchannel feature=line

#(9) Adição da coluna length a camada v_mainchannel,
# em seguida, o cálculo do comprimento em km:

v.db.addcol map=v_mainchannel columns='length double precision'

v.to.db map=v_mainchannel type='line,boundary' layer=1 qlayer=1 option='length' units='kilometers' columns='length'

#(10) Visualizando o valor do comprimento (Figura 7):

echo "SELECT length FROM v_mainchannel" | db.select

Figura 2 - Bacia gerada com o comando r.water.outlet

Figura 3 - Superfícies recortadas em função do limite da bacia


Figura 4 - Classificação da rede de drenagem de acordo com Strahler


Figura 5 - Classificação da rede de drenagem de acordo com Hack


Figura 6 - Rio principal em destaque, já no formato vetorial

Figura 7 - Valor do comprimento do rio principal em quilômetros

Sugestões de Leitura:


  1. Manual do GRASS: http://grass.osgeo.org/grass65/manuals/index.html
  2. Add-Ons para rede de drenagem: http://grasswiki.osgeo.org/wiki/R.stream.*
  3. Delimitação de bacias no GRASS: http://grasswiki.osgeo.org/wiki/Creating_watersheds
  4. Importação de imagens SRTM: http://grasswiki.osgeo.org/wiki/SRTM



sábado, novembro 24, 2012

Geocodificação e Geocodificação Reversa no QGIS


A Geocodificação é o processo de conversão de endereços (ex: Rua Augusta, 2862 - Jardim América, São Paulo) em coordenadas geográficas (X,Y). Já a Geocodificação Reversa permite que você encontre um endereço a partir de uma coordenada informada.

Através do plugin GeoCoding no Quantum GIS é possível realizar os dois processos, da seguinte forma:

1- Abra o instalador de plugins do QGIS:




2- Digite a palavra geocoding e em seguida clique em Install plugin:



3- Se a instalação for bem sucedida, clique em OK na próxima janela:

 

4- É necessário definir o sistema de referência antes de utilizar o plugin, caso não tenha feito, digite Control+Shift+P para abrir a próxima janela. Neste exemplo, foi utilizado o EPSG:29195:




5- No menu Plugins, escolha a opção Geocode -> Geocode:



6- Digite o endereço que você quer geocodificar (ex: Av. Rio Grande do Sul, 40, Bairro dos Estados, João Pessoa):

 7- Se o endereço for encontrado, uma nova camada será criada (GeoCoding Plugin Results), contendo o ponto geocodificado:



8- Para realizar a geocodificação reversa, escolha a opção Geocode -> Reverse GeoCode no menu Plugins:




9 - Clique no local em que se deseja obter o endereço:




10- Se o endereço for encontrado, surgirá uma janela com o resultado, clique em OK:



11- Será criada uma feição pontual, contendo o endereço encontrado:




Espero que seja útil, até a próxima! o/

sábado, novembro 10, 2012

Curso de Mapserver Avançado

Olá Pessoal,

Estarei ministrando um treinamento sobre Mapserver Avançado, abordando o Framework p.mapper e a extensão espacial PostGIS pela GEOCURSOS.

O curso é voltado para estudantes e profissionais em busca de um maior conhecimento com a ferramenta Mapserver ou que possuam demandas na área de Geotecnologias.
Para participar do curso é possuir prévios conhecimentos acerca do Mapserver.

Matrículas e maiores informações no link: 



p.mapperMapserver
PostGIS

CONTEÚDO PROGRAMÁTICO:

terça-feira, novembro 06, 2012

Determinação da Curva Hipsométrica de uma Bacia Hidrográfica com o GRASS GIS

Uma curva hipsométrica representa o estudo da variação da elevação dos vários terrenos da bacia hidrográfica com referência ao nível do mar (Villela e Mattos, 1975).

 Esta curva é traçada lançando-se em sistema cartesiano a cota versus o percentual da área de drenagem com cota superior.

Através do comando r.ipso, um add-on do GRASS é possível calcular esta curva, a partir de um modelo digital de elevação de uma bacia (figura 1), como mostra o exemplo a seguir:


Figura 1 - Modelo Digital de Elevação da Bacia


GRASS 6.5.svn (Litoral):~ > r.ipso -a map=srtm.clip \
image=/home/marcello/Desktop/curva_ipsometrica.png
 100%
Tot. cells 72802.0
===========================
Ipsometric | quantiles
===========================
171 | 0.025
160 | 0.05
143 | 0.1
111 | 0.25
80  | 0.5
50  | 0.75
58  | 0.7
22  | 0.9
6   | 0.975

Done!

O comando é muito simples, é necessário informar a flag -a (para o cálculo da curva hipsométrica) e mais dois parâmetros: map, nome do MDE da bacia e image, local onde será gerada a imagem.


O resultado do gráfico pode ser visto na figura 2.



Figura 2 - Curva Hipsométrica calculada com o comando r.ipso