TerraLib: Tecnologia para construção de SIGs Outubro/2005 Gilberto Ribeiro de Queiroz – [email protected] (Time TerraLib) Divisão de Processamento de Imagens (www.dpi.inpe.br) Existe desde 1984 com uma equipe multi-disciplinar Linhas de atuação: Geoinformação Processamento de Imagens Uso da Terra na Amazônia GEOMA - Modelagem Amazônia História em desenvolvimento de sistemas para geoinformação SITIM, SGI, SPRING e atualmente TerraLib e TerraView Geotecnologia na DPI: A Experiência SPRING SISTEMA DE PROCESSAMENTO DE INFORMAÇÕES GEOREFERENCIADAS: Sistema nacional, desenvolvido pelo INPE, disponível na Internet como “freeware” (www.dpi.inpe.br/spring); GIS monolítico: • • • • • • Funções de entrada de dados análise espacial processamento de imagens modelagem numérica de terreno consulta/manipulação de dados cadastrais geração de documentos cartográficos; Arquitetura dual Público alvo: Usuários de GIS TerraLib (www.terralib.org) É uma biblioteca de classes escritas em C++ para o desenvolvimento de aplicativos geográficos de arquitetura integrada. Busca atender aos usuários desktop, usuários coorporativos e centros de dados geográficos. Código fonte aberto, distribuído via Web. Permite construir aplicativos customizados de acordo com o interesse do usuário TerraLib: Motivação Novas tendências no desenvolvimento de GIS Aplicativos Geográficos • transição dos atuais sistemas monolíticos para sistemas dedicados Arquitetura Integrada • uso de Sistemas de Banco de Dados (SGBDs) extensíveis para armazenar, manipular e gerenciar os dados geográficos A falta de tecnologias “free” na área de Sistemas Geográficos (GIS) SPRING X TerraLib SPRING TerraLib Arquitetura Dual Arquitetura Integrada SIG SIG atributos atributos SGBD SGBD Arquivos Estrutura da TerraLib Interface PHP Interface Java Interface COM Interface C++ Serviços OGIS Funções kernel Controle de Visualização Estruturas de dados espaço-temporais Acesso a arquivos e SGBD Drivers E/S Arquivos Externos SGBD Estrutura da TerraLib Kernel Estruturas de dados vetoriais e matriciais Containeres de dados geográficos (geometrias + atributos) Tratamento de sistemas de referência espacial Interface genérica de acesso a SGBD’s Operações topológicas (a matriz 9-I) Drivers SGBD ADO (Access, SQLServer) MySQL Oracle e Oracle Spatial PostgreSQL e PostGIS Estrutura da TerraLib Controle de Visualização e Processamento Vista: definir uma projeção comum Tema: seleção sobre os objetos a serem visualizados. Visual de apresentação e Agrupamento de objetos Conversão de Dados MID/MIF, Shapefile, SPRING, BNA para dados vetoriais GeoTIFF (TIFF + tfw), JPEG (+jgw) e raw para dados matriciais Estrutura da TerraLib Funções Biblioteca de funções de estatística espacial Funções de análise espaço-temporal Álgebra de Mapas Biblioteca de algoritmos de processamento de imagens Geocodificação de endereços Modelagem dinâmica TerraLib – Parceiros e Usuários TerraLib tem usuários em diferentes áreas de atuação: Meio Acadêmico Corporativo TerraLib tem também uma rede de parcerias que trabalha junto no desenvolvimento da biblioteca: TecGraf-RJ FUNCATE Prefeitura de Santos FUNCATE, www.funcate.org.br, 2004 Palm-top Nexus www.nexusbr.com.br Enalta SIG para as usinas de cana-de-açúcar de São Paulo EcosConsult Coleta de lixo em Angola Distribuição de produtos de geoprocessamento para Linux InfoPae Sistema de tratamento de emergências em dutos de óleo para Petrobras TerraStat LESTE – UFMG: construção de uma biblioteca de algoritmos de estatística espacial aRT ESTE – UFPR: Integração entre o R e TerraLib Fluxos e Redes: DPI-INPE/IBGE/SUS/FIOCRUZ Classificação da rede baseado na metodologia de Rabino e Occelli (1997) TerraME Ambiente para a construção de modelos RondôniaModel São Felix Model Amazon Model TerraME Language Hydro Model TerraME Compiler TerraME Virtual Machine TerraLib TerraME Framework C++ Signal C++ Processing Mathematical librarys librarys C++ Statistical librarys TerraLib Fonte: Tiago Senna Carneiro Deter e Proarco Demandas institucionais que o INPE tem que atender TerraView (www.dpi.inpe.br/terraview) É um aplicativo construído sobre a biblioteca TerraLib: Visualizador de dados geográficos com recursos de consulta a análise destes dados Exemplifica a utilização da biblioteca TerraLib O TerraView manipula dados vetoriais (pontos, linhas e polígonos) e matriciais (grades e imagens) Armazenados em SGBD relacionais ou geo-relacionais como o ACCESS, PostgreSQL, MySQL e Oracle e OracleSpatial Versão 3.0.3 TerraView Cada seção de TerraView trabalha em um banco de dados TerraLib Importa dados vetoriais em formato Shapefile, MID/MIF, SPRING e BNA (TabWin) Importa dados matriciais em formato GeoTIFF, Tiff+twf, JPEG (+jgw), raw TerraView - Visualização TerraView - Consulta TerraView – Consulta Espacial TerraView - Análise TerraView - Análise TerraView – Operações Geográficas TerraView – Superfície de Kernel Disseminação Web TerraLib está criando alternativas para a disseminação de um banco na Web Disseminação Web Servidor WMS para bancos TerraLib TerraPHP + Extensão da Linguagem PHP: Habilita desenvolvedores PHP a usarem recursos da TerraLib: • Visualização e consultas a bancos de dados geográficos • Extensão escrita em C++ • Código fonte aberto e gratuito como tudo na TerraLib Uso de diversas bibliotecas open-source: • FreeType, IJG JPEG, GD, lib PNG, zlib Exemplo de aplicação: • TerraWeb TerraPHP TerraPHP – Como fica o script PHP <? /* Conecta com um banco de dados MySQL e exibe o mapa do Brasil agrupado por algum atributo */ $t = TerraWeb(); // Conecta-se a um banco MySQL if(!$t->connect("localhost", "root", "", "terraweb", 3306, 1)) { echo("Nao foi possivel conectar-se ao banco de dados<BR>"); echo($t->errorMessage()); exit(); } // Torna a vista BRASIL a vista corrente if($t->setCurrentView("BRASIL") == false) { echo($t->errorMessage() . "<BR>"); exit(); } TerraPHP – Como fica o script PHP ? ... // Pega o retângulo envolvente de todos os temas da vista $box = $t->getCurrentViewBox(); // Ajusta a visão do canvas onde os dados geográficos serão // desenhados: PNG de 800x600 $t->setWorld($box[0], $box[1], $box[2], $box[3], 800, 600); // Seta o tema corrente $result = $t->setTheme("municipios", 0); $rampColors = array("RED", "GREEN", "BLUE"); // Plota o tema corrente, sem restrições de atributo, agrupando // o mapa pelo atributo LATITUDE em 5 classes usando quantil // e com os tons de cores RED/GREEN/BLUE $result = $t->plotVector("", "LATITUDESE", "", 5, 0, $rampColors); TerraPHP – Como fica o script PHP ? ... $imagemSaida = $t->getPNG(); if($imagemSaida == false) { echo($t->errorMessage() . "<BR>"); exit(); } header("Content-type: image/png"); echo($imagemSaida); ?> TerraPHP Integração MapServer e TerraLib - layerObj - rectObj - shapeObj maplayer.c mapserver.c main() mapshape.c mappostgis.c mapsde.c - layerInitItemInfo() - layerFreeItemInfo() - msLayerOpen() - msLayerWhichShapes() - msLayerNextShape() - msLayerGetShape() - msLayerClose() - msLayerGetItems() - msLayerGetExtent() mapterralib.c maporacle.c Exemplo: MapServer com TerraLib Exemplo: MapServer com TerraLib TerraHidro Framework para Modelagem de recursos hídricos Funcionalidades básicas: Delimitação de Bacias Extração automática de drenagem Morfometria Estudos de inundação Estudos de dinâmica de água no solo Conclusões DPI /INPE apoiamos e fazemos software livre Sustentamos o desenvolvimento da TerraLib e do TerraView Promovemos o desenvolvimento de recursos humanos Promovemos treinamento em geoinformação Incentivamos empresas na área de desenvolvimento de software para geoinformação Conclusões Buscamos uma rede de parcerias E é o que pretendemos continuar fazendo... Fim!!!