sábado, março 01, 2014

Mapas de relevo com a biblioteca GDAL

Elaborei um script utilizando as bibliotecas gdal e imagemagick para criar mapas de relevo com o efeito Hillshade. Para rodá-lo, basta colocá-lo em uma pasta (como mostra a Figura 1) com os arquivos SRTM baixados da site da Embrapa, junto com o shapefile contendo o limite da sua área de interesse e esta palheta de cores. Em seguida, é só digitar ./mosaic.sh

Figura 1 - Pasta contendo os arquivos necessários

Em função das cores definidas para cada cota no arquivo my_classes.ctp, o script cria um novo raster através do comando gdaldem (Figura 2).


Figura 2 - Imagem SRTM colorida

Em seguida é gerado o arquivo Hillshade (Figura 3).

Figura 3 - Relevo sombreado (Hillshade)

E os arquivos anteriores são unidos, como mostra a Figura 4.

Figura 4 - União do relevo sombreado com a imagem SRTM colorida

Por último, em função do limite do shapefile, o arquivo é "clipado". A Figura 5 mostra o resultado da utilização do script para o estado do Mato Grosso do Sul.

Figura 5 - Resultado da utilização do script para o MS.

Lembrando que para utilizar o script, é necessário lhe dar permissões de execução após baixá-lo, através do comando abaixo:
$ sudo chmod +x mosaic.sh

Referências:

quinta-feira, janeiro 16, 2014

Conversão de Tabelas Espaciais para o Formato GeoJSON Utilizando PHP

Neste exemplo irei utilizar o CodeIgniter para realizar a conversão de uma tabela espacial (rodovias) para o formato GeoJSON, utilizando MVC.

Primeiro deve-se criar um Model. Com a função geojson_output(), observem que a geometria da tabela é convertida para GeoJSON e reprojetada para WGS-84:


Em seguida o Controller, que vai receber os dados do Model e enviar para a View:


Por último a View, que renderiza os dados no formato GeoJSON:


Para ver os dados da tabela neste formato (Figura 1), é necessário acessar a url que contém o "controller/método" utilizado, no meu caso:
http://localhost/sirh/rodovias/geojson_link

Figura 1 - Resultado da conversão







Seguindo a documentação do Leaflet é bastante simples carregar os dados neste formato. O resultado pode ser conferido na Figura 2.

Figura 2 - GeoJson exibido na interface do Leaflet

terça-feira, dezembro 03, 2013

Caracterização Morfométrica de Bacias Hidrográficas utilizando o GRASS

A caracterização morfométrica tem como objetivo esclarecer várias questões associadas ao relevo e a dinâmica do escoamento superficial de uma bacia hidrográfica. Tal caracterização é feita com base nas principais medidas físicas e serve de instrumento para diversas aplicações relacionadas aos recursos hídricos.

Utilizando a extensão r.basin do GRASS, é possível extrair os atributos hidrológicos que compõem a caracterização morfométrica, para tanto, é necessário que o usuário informe a coordenada do exutório da bacia hidrográfica. Neste exemplo irei utilizar a imagem SRTM SB-24-Z-C como área de estudo.

1 - Convertendo o sistema de projeção da imagem SRTM para UTM


Utilizando o terminal, entre na pasta que contém a imagem e digite o seguinte comando:
$ gdalwarp -s_srs "EPSG:4326" -t_srs "EPSG:31984" SB-24-Z-C.tif dem.tif

Desta forma o raster será reprojetado para a projeção UTM Fuso 24 Sul (Datum SIRGAS 2000).

2 - Configurando a Location e o Mapset do GRASS


Abra o GRASS na janela do terminal (digitando "grass") e siga os próximos passos:

  • Escolha Location Wizard:

  • Defina o nome da Location e clique em next:

  • Na próxima tela, escolha a opção indicada abaixo:

  • Clique em "Browse" e procure o raster dem.tif:

  • Será exibida a tela de sumário, clique em "Finish"

  • No próximo passo, clique em "Yes":

  • Defina o nome do mapset e clique em "Start GRASS":



3 - Modificando as cores do Raster:


No terminal onde a sessão do GRASS está aberto, digite:
$ r.colors map=dem color=elevation

Para visualizar o resultado no  "Map Display", adicione esta camada através da opção "Add rast map layer" (Control + Shift + r):


4 - Preparando o MDE para a análise morfométrica:


Com o comando r.fill.dir são removidos os "sinks" (células cercadas por outras com maiores elevações), que produzem a descontinuidade do escoamento superficial descendente para uma célula vizinha.
$ r.fill.dir input=dem elevation=dem.filled direction=filled.dir


O próximo passo consiste em criar duas superfícies para análises hidrológicas através do comando r.watershed, são elas: a superfície de fluxo acumulado (accumulation) e a rede de drenagem matricial (streams).
$ r.watershed -fa elevation=dem.filled accumulation=accumulation \
stream=streams convergence=5 threshold=62

OBS: O threshold define o tamanho mínimo a ser considerado como uma área de contribuição para a bacia hidrográfica.
Para áreas de 0,5 km2 (500.000 m2) foi utilizado um valor igual a 62  (500.000 / 90x90), onde 90x90 é a resolução espacial de uma imagem SRTM).

5 - Instalando as extensões necessárias:


Instale uma a uma, as extensões a seguir:
$ g.extension extension=r.stream.angle
$ g.extension extension=r.stream.basins
$ g.extension extension=r.stream.del
$ g.extension extension=r.stream.distance
$ g.extension extension=r.stream.extract
$ g.extension extension=r.stream.order
$ g.extension extension=r.stream.pos
$ g.extension extension=r.stream.preview
$ g.extension extension=r.stream.stats
$ g.extension extension=r.ipso
$ g.extension extension=r.wf

E por último, a extensão r.basin:
$ g.extension extension=r.basin


6 - Realizando a caracterização morfométrica:


Deve-se escolher como coordenada do exutório um ponto que toque a rede de drenagem matricial, neste caso a coordenada escolhida foi a seguinte: (619.241,988946 E || 9.207.668,119428 N)
$ r.basin map=dem.filled prefix=out \ 
easting=619241.988946 northing=9207668.119428 threshold=62

7- Resultados:


O comando r.basin gera os seguintes resultados:

  • Layers: limite da bacia hidrográfica, rio principal, exutório e rede de drenagem da bacia:
  • Gráfico: Curva hipsométrica:

  • Planilha: é gerado um arquivo csv contendo o resultado da análise:


  • Saída no terminal:


quarta-feira, outubro 16, 2013

Instalação do PostGIS 2.0 no Ubuntu via Terminal

Este tutorial é uma atualização da postagem:

 

1 - Atualizando a Distribuição:

 

Antes de começar a instalação do PostGIS 2.0, é importante atualizar a lista de pacotes e realizar a atualização do sistema. Também é necessário adicionar os repositórios indicados pelo Wiki do PostGIS:
$ sudo apt-get install python-software-properties
$ sudo apt-add-repository ppa:sharpie/for-science
$ sudo apt-add-repository ppa:sharpie/postgis-stable
$ sudo apt-add-repository ppa:ubuntugis/ubuntugis-unstable
$ sudo apt-get update && sudo apt-get upgrade -y

 

2 - Instalando o PostgreSQL, PostGIS e o PgAdmin:

 

$ sudo apt-get install postgresql-9.1 postgresql-9.1-postgis-2.0 pgadmin3

 

3 - Criando o banco de dados postgis:

 

Troque o seu usuário para o usuário postgres com os comandos:
$ sudo su
$ su postgres
E crie o banco de dados postgis:
$ createdb postgis
Em seguida, crie um usuário para acessar o SGBD com o comando createuser nome_do_usuario, onde nome_do_usuario pode ser o seu usuário Ubuntu, no meu caso o comando ficou assim:
$ postgres@ubuntu:/home/marcello$ createuser marcello -P
Enter password for new role: 
Enter it again: 
Shall the new role be a superuser? (y/n) y
No ambiente de desenvolvimento é mais prático que esta senha seja a mesma do seu usuário, porém isso é opcional. Agora troque o usuário postgres para o seu usuário, no meu caso:
$ su marcello

 

4 - Carregando as funções espaciais no banco postgis:


Acesse o banco e digite a instrução CREATE EXTENSION postgis;
$ psql postgis
psql (9.1.10)
Type "help" for help.

postgis=# CREATE EXTENSION postgis;

Ou se preferir, carregue individualmente os módulos da extensão, da seguinte forma:


Navegue até a pasta /usr/share/postgresql/9.1/contrib/postgis-2.0/:
$ cd /usr/share/postgresql/9.1/contrib/postgis-2.0/
E carregue os arquivos SQL a seguir:
$ psql -f postgis.sql -d postgis
$ psql -f spatial_ref_sys.sql -d postgis
$ psql -f legacy.sql -d postgis
$ psql -f rtpostgis.sql -d postgis
$ psql -f topology.sql -d postgis

5 - Criando um banco de dados espacial a partir do banco postgis:

 

Para criar novos bancos de dados espaciais a partir do banco postgis criado anteriormente, utilize o comando createdb com a flag -T (template), exemplo:
$ createdb bd_espacial -T postgis

 

6 - Acessando o banco criado com o PgAdmin:

 

Abra o PgAmin e acesse o menu "file > Add Server...", configure-o como mostra a figura abaixo, lembrando de adicionar o seu usuário:


A instalação foi concluída, é possível ver a versão do PostGIS no banco "bd_espacial" utilizando: SELECT postgis_version(); , como mostra a figura abaixo:


sexta-feira, setembro 27, 2013

Krigagem Ordinária no R

O código abaixo exemplifica a utilização da Krigagem Ordinária utilizando o R dentro de uma sessão do GRASS. O intuito desta postagem é mostrar a codificação básica necessária para se chegar a um primeiro resultado e não será abordado aqui como realizar o ajuste do variograma.



Foram utilizados 300 pontos cotados para gerar a superfície mostrada na Figura 1.

Figura 1 - Resultado da Krigagem