domingo, dezembro 30, 2012

Acessando Dados do PostGIS no R

Banco de Dados Geográficos aliados a softwares estatísticos possibilitam as mais complexas análises, isso pode ser feito através da biblioteca rgdal no R. Dessa forma é possível fazer a leitura das tabelas espaciais do PostGIS neste ambiente, veja o exemplo:

1 - Para abrir uma sessão do R, abra o terminal e digite R (Figura 1):

Figura 1 - Sessão do R no Terminal

2 - Dentro da sessão, instale os pacotes abaixo: 
install.packages("sp")
install.packages("gstat")
install.packages("rgdal")

3 - Agora execute os comandos abaixo:

# carregando a biblioteca rgdal
library(rgdal)
# criando o objeto streams, a partir da leitura da tabela streams
# no banco de dados ghydroweb
streams <-readOGR("PG:dbname=ghydroweb", "streams")
# vendo os dados, através da plotagem do gráfico 
plot(streams, axes="true", col="blue")
# adicionando uma grade ao gráfico
grid()

4 - O resultado pode ser conferido na Figura 2:

Figura 2 - Gráfico dos dados da tabela streams


Fiquem de olho nas próximas publicações sobre o R! Um abraço e até o ano que vem :)




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