UNIVERSIDADE FEDERAL FLUMINENSE DIOGO DE SANTANA CANDIDO MANIPULAÇÃO DE OPERADORES ESPACIAIS

Documentos relacionados
BANCO DE DADOS GEOGRÁFICOS E WEBMAPPING. Prof. Angelo Augusto Frozza, M.Sc.

PostGIS. Lubia Vinhas

SIG SIG. WKT Postgis (SQL) Alisson Fernando Coelho do Carmo

SFS Simple Feature SQL

Palavras-chave: PostGIS. PostgreSQL. Webmapping. GeoExt. OpenLayers. GeoServer.

Operadores topológicos SQL ST_RELATE

AULA 2 Planos Vistas e Temas

Sistemas de Informação Geográfica Prof. Tiago Eugenio de Melo, MSc.

MANIPULAÇÃO DE DADOS GEOGRÁFICOS EM BANCOS DE DADOS NoSQL - resultados preliminares

Noções básicas de SIG com QGIS

Spatial Database Systems. Karine Reis Ferreira

AGENDA. Introdução Geometrias Suportadas Estrutura dos Dados Manipulação Indexação Funções Espaciais Exercícios

Banco de Dados Geográficos

Bancos de Dados Geográficos Projeto Físico de BDG. Clodoveu Davis. Clodoveu Davis

GeoDjango. Christiano Anderson

SIG Sistema de Informações Geográficas

Rápida revisão do Modelo Relacional

Sistemas de Informação Geográfica Prof. Tiago Eugenio de Melo, MSc.

Revisão de Bancos de Dados

Introdução ao PostGIS. Introdução ao PostGIS. Introdução ao PostGIS. Introdução ao PostGIS. Introdução ao PostGIS

SERVIDOR DE MAPAS PROJETO BRASÍLIA 2060

SQL Linguagem de Manipulação de Dados SQL DML SQL DML. Exemplo Modelo Relacional. Exemplo ME-R SQL DML CONTINUAÇÃO...

TUTORIAL DE CRIAÇÃO DE BANCO DE DADOS ESPACIAL

Nesta parte da aula estamos interessados na representação vetorial dos dados.

Base de Dados Georeferenciados para Estudos Urbanos no Plano Piloto de Brasília.

QGIS CONCEITOS BÁSICOS *

Banco de Dados Espaciais

Introdução ao TerraView

DDL DML DCL DTL Tipos Numéricos: INT FLOAT DOUBLE Tipos String: CHAR VARCHAR BINARY BLOB TEXT Tipos Data e Hora: DATE TIME TIMESTAMP YEAR

MAPA - Orientações. Como fazer upload de arquivos espaciais no CAR?

Geoprocessamento. Laboratório 1: Modelagem e Criação de Bancos de Dados

UNIVERSIDADE ESTADUAL PAULISTA Faculdade de Ciências e Tecnologia Campus de Presidente Prudente

3 Sistema de Informação geográfica

Sistemas de Informação Geográficos. Informação na Organização. O Valor da Informação. Sistemas de Informação Tradicionais. O Valor da Informação

TUTORIAL PARA NAVEGAÇÃO NO MAPA DO HABITASAMPA

INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DO RIO GRANDE DO NORTE INTRODUÇÃO A SQL

SER Introdução ao Geoprocessamento. Laboratório 1 Modelagem da Base de Dados

LABORATÓRIOS DIDÁTICOS DE GEOPROCESSAMENTO

Sistemas de Informações Geográficas

PMI 3331 GEOMÁTICA APLICADA À ENGENHARIA DE PETRÓLEO

Edição Vetorial de Ponto, Linha e Polígono. Prof. Herondino

Manual para geração de arquivo georreferenciado de pontos e sua transformação geográfica

Manual do Navegador Sig Cuiabá

INTRODUÇÃO AO GEOPROCESSAMENTO

Estrutura de Dados Vetoriais do Sistema Campeiro. EAD CR Campeiro7 Edição 2015

TUTORIAL DE NAVEGAÇÃO DO HABITASAMPA MAPA

DESENVOLVIMENTO DE APLICAÇÃO WEB PARA CONVERSÃO DE COORDENADAS GEOGRÁFICAS

Avisos. SQL: Visões. Roteiro SELECT. Suporte de SQL para OLAP SQL DML CONTINUAÇÃO CONSULTAS AVANÇADAS. Cronograma das próximas aulas

SREI. Sistema de Registro Eletrônico Imobiliário. Parte 5 Documentos auxiliares. D3 - Alternativas para representação de. dados de georreferenciamento

Roteiro. SQL: Visões. Suporte de SQL para OLAP SELECT. Detalhando GROUP BY SQL DML CONTINUAÇÃO CONSULTAS AVANÇADAS. Consultas Avançadas Visões

Laboratório de Banco de Dados. Prof. Luiz Vivacqua.

ÁLGEBRA E CÁLCULO RELACIONAL

Conversão de coordenadas geodésicas em coordenadas UTM utilizando a Calculadora Geográfica do INPE e visualização dos marcadores no Google Earth

IMPORTANDO ARQUIVOS SHAPEFILE PARA O POSTGIS VIA PROMPT DO DOS

Laboratório 1. Disciplina. Introdução ao Geoprocessamento SER 300. Prof. Dr. Antonio Miguel Vieira Monteiro

Operações de Vizinhança Proximidade Buffer zone

Bancos de Dados Geográficos

Bancos de Dados Notas de Aula Introdução Prof. Dr. Daniel A. Furtado

Exercício Aula Passada. SQL Linguagem de Manipulação de Dados. Exercício Aula Passada. Exercício Aula Passada. Exercício Aula Passada

Banco de Dados Profa. Dra. Cristina Dutra de Aguiar Ciferri. Banco de Dados Processamento e Otimização de Consultas

SISTEMA DE CÁLCULO DE POPULAÇÃO E VARIÁVEIS CENSITÁRIAS

TUTORIAL. Aprenda a importar um arquivo DWG no programa. ArcGIS.

CURSO DE PÓS-GRADUAÇÃO EM SENSORIAMENTO REMOTO. SER-300 Introdução ao Geoprocessamento. Relatório do Laboratório 1 ANA CAROLINA MOREIRA PESSÔA

P R O F. M E. H É L I O E S P E R I D I Ã O. Eng. Computação

P R O F. M E. H É L I O E S P E R I D I Ã O. Eng. Computação

Edição Vetorial Criação de camadas

Sistemas de Informações Geográficas Aplicações em Saúde

BANCO DE DADOS GEOGRÁFICOS SENSORIAMENTO REMOTO INPE

Banco de dados Geográficos

Consultas (filtros) no QGIS

Dados Espaciais: Uma Introdução

CONTEÚDO. Geoprocessamento COTIC DIRAF

Operadores TerraMA2 Tip T o ip s o de d Aná An lis lis 1 Utilit ilit r á ios 2 - Ope Op r e ad a o d r o es e pa p r a a Aná An lis

AULA 8. Ambientes Visuais 8.1. OBJETIVO DA AULA SQL (Structured Query Language)

Introdução ao PostgreSQL

Calc. Interface, Formatação e Cálculos

Revisando Banco de Dados. Modelo Relacional

3 Arquitetura MVC baseada em modelos

Sistemas Gerenciadores de Banco de Dados

Sistemas de Informação (SI) Gestão da informação e de banco de dados (II)

Oracle Database 10g: Fundamentos de SQL e PL/SQL

Implementação de um Sistema de Informações Georeferenciado (Geoufes) Utilizando Bibliotecas de Software Livres em Java

SUMÁRIO 1. APRESENTAÇÃO FUNCIONALIDADES COMUNS AOS USUÁRIOS... 3

REITORA Ulrika Arns. VICE-REITOR Almir Barros da Silva Santos Neto. DIRETOR DO NTIC Leonardo Bidese de Pinho

Módulo de Sistemas de Informações. Geográficas (SIG) para curso de Ensino a. Distância. Prática no Software Quantum GIS. GEOeduc

Banco de Dados I Introdução SQL

Tutorial 4. Para se obter estas estatísticas é necessário primeiramente atualizar as Tabelas de Atributos de cada Dataframe.

Laboratório 1 Modelagem e Criação de Bancos de Dados Base de Dados Georeferenciados para Estudos Urbanos no Plano Piloto de Brasília

Consulta a banco de dados no Spring

MODELAGEM DE DADOS - INTRODUÇÃO AO SQL: DML. Prof. Angelo Augusto Frozza, M.Sc.

Múltiplas Tabelas. Disciplina de Banco de Dados

3 Arquitetura do Sistema

APLICAÇÃO DA TECNOLOGIA DE BANCO DE DADOS GEOGRÁFICO NO MAPEAMENTO DE PROJETOS DE INCLUSÃO DIGITAL: CASOS BRASILEIROS

Sistemas de Informações Geográficas

Operações elementares. Operações elementares. Topologia do espaço

AULA 1 INTRODUÇÃO A BANCO DE DADOS E VISÃO GERAL DO SQL CONCEITUANDO BANCO DE DADOS MODELO RELACIONAL

BCD29008 Banco de dados

Aula 06 Sistemas Embarcados LT38C

INTRODUÇÃO AO MYSQL PROF. ME. HÉLIO ESPERIDIÃO

Transcrição:

UNIVERSIDADE FEDERAL FLUMINENSE DIOGO DE SANTANA CANDIDO MANIPULAÇÃO DE OPERADORES ESPACIAIS Niterói 2009

DIOGO DE SANTANA CANDIDO MANIPULAÇÃO DE OPERADORES ESPACIAIS Trabalho de Conclusão de Curso submetido ao Curso de Tecnologia em Sistemas de Computação da Universidade Federal Fluminense como requisito parcial para obtenção do título de Tecnólogo em Sistemas de Computação. Orientadora: Juliana Mendes Nascente Silva NITERÓI 2009

DIOGO DE SANTANA CANDIDO MANIPULAÇÃO DE OPERADORES ESPACIAIS Trabalho de Conclusão de Curso submetido ao Curso de Tecnologia em Sistemas de Computação da Universidade Federal Fluminense como requisito parcial para obtenção do título de Tecnólogo em Sistemas de Computação. Niterói, de de 2009. Banca Examinadora: Prof a. Juliana Mendes Nascente Silva, Msc. Orientador UFF - Universidade Federal Fluminense Prof. Leandro Soares de Sousa, Msc. Avaliador UFF - Universidade Federal Fluminense Prof. Diego Nunes Brandão, Msc. Avaliador UFF - Universidade Federal Fluminense

AGRADECIMENTOS A Deus, que sempre iluminou a minha caminhada. A minha Orientadora Juliana Mendes Nascentes e Silva pelo estímulo e atenção que me concedeu durante o curso. A todos os meus familiares e amigos pelo apoio e colaboração.

RESUMO O presente trabalho tem como objetivo apresentar o potencial da análise de dados espaciais em relação à tomada de decisão e a gestão de recursos utilizando o PostgreSQL que é um Sistema Gerenciador de Banco de Dados (SGBD). Este SGBD é gratuito e possui uma extensão espacial chamada PostGIS, utilizada para gerenciar os dados de aspectos geográficos. Para apresentar a manipulação dos operadores espaciais utilizando o PostGIS, neste trabalho, foi realizada a importação de um arquivo no formato shapefile para um banco de dados geográfico correspondente a região de latitude 20 a 24 sul e a longitude 42 a 48 oeste, esta região abrange parcialmente os estados de Minas Gerais, Rio de Janeiro e São Paulo. Logo, foram realizadas a análise e a descrição das tabelas e atributos do banco de dados gerado. Através das consultas sobre estes dados os operadores espaciais foram manipulados, por exemplo, diante dos dados referentes ao Rio de Janeiro foi possível recuperar quais as rodovias que cruzam a área edificada do Rio de Janeiro.. Palavras-chaves: SGDB, PostgreSQL e PostGIS.

LISTA DE ILUSTRAÇÕES Figura 1: Botão para abrir tela para consultas SQL arbitrárias...17 Figura 2: Tela de consultas SQL arbitrárias...18 Figura 3: Tabela spatial_ref_sys...20 Figura 4: Tabela geometry_columns...22 Figura 5: Tabela gerada pela importação do shape...23 Figura 6: Área de trabalho...28 Figura 7: Rodovias que intersectam a área edificada do Rio de Janeiro...31 Figura 8: Cidades que pertencem ao estado do Rio de Janeiro...32 Figura 9: Cidades que apresentam distância inferior a 50.000m das cidades do Rio de Janeiro ou São Paulo...34 Figura 10: Cidades que distam até 5000 m da rodovia BR-116...35

LISTA DE TABELAS Tabela 1: spatial_ref_sys...19 Tabela 2: geometry_columns...20 Tabela 3: Arquivo shape importado...22

LISTA DE ABREVIATURAS E SIGLAS CIM - Carta internacional ao milionésimo EPSG European Petroleum Survey Group ESRI - Environmental Systems Research Institute IBGE Instituto Brasileiro de Geografia e Estatística INPE Instituto Nacional de Pesquisas Espaciais SFS Simple Feature Specifications SGBD Sistema Gerenciador de Bancos de Dados SIG Sistema de Informações Geográficas SQL - Structured Query Language SRID - Spatial Reference Identifier UTM Universal Transversa de Mercator WKT - Well Known Text

SUMÁRIO RESUMO...5 LISTA DE ILUSTRAÇÕES...6 LISTA DE TABELAS... 7 LISTA DE ABREVIATURAS E SIGLAS...8 1 INTRODUÇÃO... 10 2 SISTEMAS DE INFORMAÇÃO GEOGRÁFICA (SIG)...11 3 APLICAÇÃO SIG: POSTGIS...14 CONCLUSÕES... 45 REFERÊNCIAS BIBLIOGRÁFICAS...47 REFERÊNCIAS BIBLIOGRÁFICAS...47

10 1 INTRODUÇÃO Nosso interesse pelo tema se deve ao fato da área de análises espaciais com SIG ter ganhado maior importância no cenário das empresas e dos órgãos do governo. Essa importância se deve ao fato da popularização deste tipo de sistema e suas variações gratuitas. A área está se tornando promissora para o mercado de trabalho e para o estudo em âmbito de pós-graduação. Entretanto, existe atualmente uma carência por profissionais especializados em análise espacial tanto em empresas quanto em órgãos do governo, se tornando um dos principais fatos para a motivação deste trabalho. Este trabalho está organizado da seguinte forma. O segundo capítulo é dedicado a apresentação do sistema computacional SIG, as características dos dados geográficos, alguns de seus possíveis clientes, as aplicações, dificuldades e a extensão espacial PostGIS do SGDB PostgreSQL. No capítulo 3 é realizada a manipulação dos operadores espaciais através da extensão espacial PostGIS do SGDB PostgreSQL. Para tanto, é necessário inserir dados geográficos para serem manipulados, gerando assim, um banco de dados geográfico, e por fim, realizar a análise e descrição do banco de dados geográfico gerado e consultas. Finalmente, segue a Conclusão e uma breve descrição de possíveis desdobramentos deste trabalho.

11 2 SISTEMAS DE INFORMAÇÃO GEOGRÁFICA (SIG) Um dado geográfico é um dado referenciado por coordenadas geométricas ou espaciais. Este tipo de dado possui atributos referentes as suas características geográficas, ou seja, além de conter informações alfanuméricas, esse tipo de dado possui informações geométricas como pontos, linhas, polígonos e suas respectivas coordenadas [1]. Um número cada vez maior de sistemas de informações vem incluindo técnicas para tratamento computacional de dados geográficos, estes sistemas são chamados de Sistemas de Informação Geográfica (SIG). Recentemente, os SIGs estão evoluindo de modo que seus dados espaciais sejam gerenciados através de Sistemas Gerenciadores de Bancos de Dados (SGBDs). Com isso, os SIGs passam a utilizar os recursos oferecidos pelos SGBDs para controle e manipulação de dados espaciais ao invés de implementá-los, tornando eficiente a entrada, o armazenamento, a manipulação, a análise, a representação e a recuperação dos dados geográficos. Os SIGs vêm despertando o interesse dos órgãos do governo e das empresas privadas. O principal interesse nesse tipo de sistema refere-se à tomada de decisão e a gestão de recursos relacionados aos aspectos geográficos. Por exemplo, o cadastro urbano feito de forma coordenada e com um adequado gerenciamento num sistema SIG permitindo que órgãos do governo municipal possam tirar uma base de cálculos para impostos de um modo mais confiável, melhorando assim, a sua arrecadação, aumentando o número de contribuintes, melhorando o conhecimento do seu território, podendo assim, planejar a área e a quantidade de investimento que certa região deve receber e prever uma arrecadação [4]. Os sistemas SIGs também possuem aplicações em outras áreas do conhecimento, como em ge-

12 omarketing, transportes, demografia, planejamento de serviços de emergência, gerenciamento de recursos naturais, ecologia, navegação, agricultura dentre outras [2]. Considera-se como uma dificuldade dos SIGs, o armazenamento do dado geográfico, pois este possui informação geométrica e alfanumérica. Assim, algumas características devem ser consideradas durante a elaboração de um SIG, como apresentadas na lista abaixo: Identificar a existência de opções de representação computacional para dados espaciais. Definir qual tipo de estrutura pode relacionar dados geométricos e dados alfanuméricos com objetos do mundo real. Definir as formas mais eficientes de representar um dado geográfico, como linha, ponto e polígonos. Atualmente, os SGBDs evoluíram e já possuem suporte aos aspectos citados acima. Alguns SGBDs proprietários já possuem muitas funcionalidades para lidar com esses tipos de dados, contudo, estes tipos de SGDBs possuem custos elevados para a maioria dos órgãos públicos e empresas. Algumas opções livres surgiram no mercado e também possuem alguma dessas funcionalidades, que dão suporte ao armazenamento, consulta e atualização de dados geográficos. Destas opções livres a mais completa e popular é a extensão espacial do SGDB chamado PostgreSQL conhecida como PostGIS, utilizada para lidar com dados geográficos. O PostgreSQL é um SGBD objeto-relacional de código aberto que começou a ser desenvolvido em 1986 na Universidade da Califórnia em Berkeley [7]. Um dos pontos fortes desse SGBD é o potencial de extensibilidade dos seus tipos de dados para dados com atributos geográficos, que possibilitou o desenvolvimento de uma extensão geográfica mais completa, quando comparado a outros SGDBs gratuitos, chamada PostGIS. Este módulo foi desenvolvido pela empresa canadense Refractions Research que segue as especificações da Simple Feature Specifications

13 for SQL (SFS-SQL), que são especificações sobre o armazenamento e recuperação dos dados espaciais [7].

14 3 APLICAÇÃO SIG: POSTGIS Para demonstrar a manipulação dos operadores espaciais utilizando a extensão geográfica PostGIS, algumas tarefas são necessárias, entre elas, inserir os dados no banco de dados geográfico para a sua manipulação, e a análise e descrição do banco de dados geográfico gerenciado pela extensão geográfica PostGIS, para o entendimento de como o dado geográfico está armazenado e para facilitar na elaboração das consultas. seguintes passos: Assim, para a manipulação dos operadores espaciais são necessários os 1. Importação de um arquivo do formato shapefile usando função do PostGIS. 2. Análise e descrição do esquema do banco de dados gerado. 3. Elaboração de consultas espaciais pelo psql e execução de operadores espaciais sobre esses dados. analisado. Nas próximas seções cada passo citado acima, será melhor descrito e

15 3.1 IMPORTAÇÃO DO SHAPEFILE PELO POSTGIS Os arquivos armazenados em shapefiles, ou arquivos shape, possuem informações geométricas e alfanuméricas. Este formato foi desenvolvido pela empresa Environmental Systems Research Institute (ESRI) para armazenar dados vetoriais e seus atributos. Os arquivos nesse formato podem ser carregados e visualizados por diversos programas tais como, o TerraView e o Quantum GIS. Para que seja possível aplicar as funções do PostGIS sobre esses dados, é preciso que eles estejam armazenados dentro do banco de dados. Para isso, deverão ser seguidos passos da sequência, apresentada nas próximas subseções. 3.1.1 PREPARAÇÃO DOS DADOS PARA IMPORTAÇÃO Todos os arquivos que compõem o shape (cujas extensões são: SHP, SHX e DBF), devem ser colocados no mesmo diretório não comprimido. 3.1.2 CONVERSÃO DOS ARQUIVOS.SHP PARA.SQL VIA SHELL DO LINUX. Este comando converte os arquivos do formato shapefile para o formato.sql, reconhecido pelo PostGIS. Os comandos no shell deverão ser realizados dentro do diretório onde estão os arquivos. O seguinte comando será adotado como exemplo: shp2pgsql s 4291 cidade.shp cidade > cidade.sql

16 Parâmetros do comando: -s é o parâmetro correspondente à localização no hemisfério sul; 4291 juntamente com o parâmetro anterior, fazem referência ao SRID (Spatial Reference Identifier ou Identificador do Sistema de Referência Espacial). O SRID utilizado nesse exemplo é relativo ao DATUM SAD69 que emprega coordenadas geográficas (Latitude/Longitude); Cidade.shp é o nome do arquivo shape que será importado; Cidade é o nome da tabela que será criada no banco de dados PostgreSQL/PostGIS; Cidade.sql é o nome do arquivo SQL que será criado no diretório onde estão os outros arquivos. 3.1.3 IMPORTANDO O ARQUIVO SQL PARA O POSTGIS Inicialmente deve-se abrir o programa pgadmin III, que é a interface com o usuário do PostgreSQL, selecionar o banco de dados no qual deseja-se adicionar os dados importados. Em seguida deve-se clicar no ícone usado para abrir a tela para uso da linguagem SQL, conforme ilustra a Figura 1.

Figura 1: Botão para abrir tela para consultas SQL arbitrárias. 17

18 Na nova janela que será aberta clicar no ícone Open File para carregar o arquivo SQL criado na etapa anterior. Após abrir o arquivo, clicar no ícone Execute Query, conforme ilustra a Figura 2. Figura 2: Tela de consultas SQL arbitrárias. Após essa operação será criada uma tabela no banco de dados contendo as informações do shape importado. Com isso, a importação do arquivo é concluída. Este mesmo procedimento poderia ser executado através do Shell do Linux através, do comando: psql f cidade.sql d template_postgis 3.2 ANÁLISE DO ESQUEMA DO BANCO DE DADOS GERADO O PostGIS armazena as informações das colunas geométricas em duas tabelas de metadados que estão conforme as especificações do OpenGIS. Uma delas é a spatial_ref_sys que guarda informações sobre o sistema de coordenadas utilizado por uma tabela com tipos geométricos. Essa tabela possui a seguinte estrutura:

19 Tabela 1: spatial_ref_sys. spatial_ref_sys Atributo Tipo Modificador srid INTEGER Chave primária Auth_name VARCHAR(256) Auth_srid INTEGER Srtext VARCHAR(2048) Proj4text VARCHAR(2048) Onde: o primeiro campo srid é um valor inteiro que identifica unicamente um sistema de referência espacial dentro do banco de dados; o segundo campo é o nome do padrão citado pelo sistema de referencia: com por exemplo EPSG ou ESRI; o campo auth_srid é um identificador definido pela entidade que define o sistema de projeção; srtext é um texto no formato WKT (Well Known Text) do OpenGIS que representa as informações sobre a projeção; O PostGIS faz uso de uma biblioteca de projeções chamada Proj4. Essa biblioteca permite que sejam feitas transformações de coordenadas. Esse campo proj4text contém a definição da string original definida e usada por essa biblioteca. A Figura 3 ilustra a tabela que contém os metadados dos diversos sistemas de coordenadas.

20 Figura 3: Tabela spatial_ref_sys. A outra tabela de metadados é a geometry_columns, que guarda informações sobre as tabelas que contém tipos geométricos. Na especificação do OpenGIS são chamadas de Tabelas com Feições. Essa tabela possui a estrutura apresentada na Tabela 2: Tabela 2: geometry_columns. geometry_columns Atributo Tipo Modificador oid INTEGER F_table_catalog VARCHAR(256) Chave primária F_table_schema VARCHAR(256) Chave primária F_table_name VARCHAR(256) Chave primária F_geometry_co- VARCHAR(256) Chave primária lumn Coor_dimension INTEGER Srid INTEGER Chave estrangeira type VARCHAR(30) Onde: oid: esse campo contém valores inteiros únicos que identificam cada linha;

21 As condições "catalog" e "schema" seguem a linha do Oracle. Não existe análogo de "catalog" no PostgreSQL de forma que a coluna corresponde a um espaço em branco; O f_table_schema armazena o nome do esquema; O f_table_name armazena os nomes das tabelas; O quarto campo f_geometry_column contém o nome da coluna com geometria; coord_dimension: corresponde a dimensão das coordenadas pode ter os valores 2, 3 ou 4; srid:é o sistema de coordenada adotado, sendo chave estrangeira de srid da tabela spatial_ref_sys; Contém o tipo de objeto espacial que pode ser: POINT; LINESTRING; POLYGON; MULTIPOINT; MULTILINESTRING; MULTIPOLYGON; GEOMETRYCOLLECTION; GEOMETRY. Como exemplo, da tabela de metadados das colunas com geometria, temos a Figura 4:

22 Figura 4: Tabela geometry_columns. Já os arquivos shapes importados usando a função do PostGIS são armazenados no banco de dados em tabelas, com estrutura apresentada na Tabela 3, a seguir. Tabela 3: Arquivo shape importado. Arquivo shape importado Atributo Tipo Modificador Gid INTEGER Chave primária The_geom GEOMETRY Onde: gid esse campo contém valores inteiros únicos que identifica cada linha; the_geom contém a geometria do arquivo. Estes dois atributos estão presentes nas tabelas de todos os arquivos shapes importados, porém, além desses, existem outros atributos particulares de cada arquivo. Os demais atributos correspondem aos do shape original, que podem ser visualizados no arquivo DBF. Um exemplo é apresentado na Figura 5, onde as três colunas centrais correspondem aos atributos relativos ao shape importado.

23 Figura 5: Tabela gerada pela importação do shape. 3.3 MANIPULAÇÃO DOS OPERADORES ESPACIAIS Nesta seção serão utilizados alguns operadores espaciais para realizar algumas consultas, que exemplificam modelos para análise espacial. 1.1.1 OPERADORES ESPACIAIS Nesta seção serão apresentadas as principais funções utilizadas para operações espaciais e uma breve descrição das suas funcionalidades. Todas essas funções e suas descrições foram coletadas em [7].

24 3.3.1.1 FUNÇÕES RELACIONADAS À GEOMETRIA As funções relacionadas à geometria são responsáveis pelas operações topológicas. A seguir as principais funções relacionadas à geometria. Equals(geometria,geometria) Retorna (VERDADEIRO) se uma geometria é igual espacialmente a outra geometria. Disjoint(geometria,geometria) Retorna (VERDADEIRO) se uma geometria é disjunta de outra geometria. Intersects(geometria,geometria) Retorna (VERDADEIRO) se uma geometria é intercepta espacialmente outra geometria. Touches(geometria,geometria) Retorna (VERDADEIRO) se uma geometria toca espacialmente, ou seja, possui uma fronteira com outra geometria. Crosses(geometria,geometria) Retorna (VERDADEIRO) se uma geometria cruza espacialmente outra geometria. Within(geometria A,geometria B) Retorna (VERDADEIRO) se uma geometria A esta dentro espacialmente, ou seja, contida em outra geometria B

25 Overlaps(geometria,geometria) Retorna (VERDADEIRO) se uma geometria sobrepõe espacialmente outra geometria. Contains(geometria A, geometria B) Retorna (VERDADEIRO) se uma geometria contém espacialmente outra geometria. Esta função possui a mesma funcionalidade da função within (geometria,geometria). 3.3.1.2 FUNÇÕES DE PROCESSAMENTO DE GEOMETRIA As funções de processamento de geometria são responsáveis pelas operações métricas e de conjunto. A seguir são apresentadas as principais funções de processamento de geometria. Distance(geometria,geometria) Retorna a distância cartesiana entre duas geometrias. Centroid(geometria) Retorna as coordenadas do centro da geometria. Area(geometria) Retorna a área da geometria. Length(geometria) Retorna o comprimento da geometria. PointOnSurface(geometria) Retorna um ponto sobre a superfície.

26 Boundary(geometria) Retorna o contorno da geometria. Buffer(geometria,double) Retorna a geometria que representa todos os pontos que possuem uma distância menor ou igual desta geometria. Intersection(geometria,geometria) Retorna uma geometria que representa a interseção entre geometrias. Difference(geometria A, geometria B) Retorna uma geometria que representa a operação de conjunto diferença entre a geometria A e a geometria B. GeomUnion(geometria,geometria) Retorna uma geometria que representa a operação de conjunto união de geometrias. 3.3.2 DADOS EMPREGADOS Para exemplificar a utilização dos SIG's os dados utilizados para realizar as operações espaciais são os arquivos shape da folha SF-23 do CIM (Carta internacional ao milionésimo) [5]. Esta folha corresponde à região definida pelas coordenadas latitude 20 a 24 sul e 42 a 48 oeste.

27 Para cada folha estão disponíveis 67 shapefiles, dos quais foram utilizados os seguintes: AREA_EDIFICADA CAPITAL_ESTADUAL CIDADE FERROVIA LIMITE_POLITICO_ADMINISTRATIVO MASSA_DAGUA_PERMANENTE RODOVIA PAVIMENTADA Os arquivos utilizam o sistema de coordenadas GCS_Assumed_Geographic_1, o qual apresenta SRID = 104000. Este SRID não está disponível na tabela spatial_ref_sys do banco de dados PostGIS. Para isso deve ser incluído nesta tabela o registro relativo a este SRID. Os dados empregados para esse sistema de coordenadas estão disponíveis [8]. O registro relativo a este SRID pode ser inserido na tabela spatial_ref_sys através do seguinte comando SQL: INSERT INTO "spatial_ref_sys" ("srid","auth_name","auth_srid","srtext","proj4text") VALUES(104000,'ESRI',104000,'GEOGCS [\"GCS_Assumed_Geographic_1\",DATUM [\"D_North_American_1927\",SPHEROID [\"Clarke_1866\",6378206.4,294.9786982]],PRIMEM [\"Greenwich\",0],UNIT [\"Degree\",0.017453292519943295]] ','+proj=longlat + ellps=clrk66 +datum=nad27');

28 A Figura 6 ilustra a representação gráfica dos dados que foram importados para o banco de dados de acordo com o procedimento descrito no item 3.1. Figura 6: Área de trabalho.

29 3.3.3 CONSULTAS As consultas foram realizadas empregando o psql. Para visualizar o resultado de algumas consultas foi necessário criar uma tabela com o resultado, pois retornam feições. Com isso, foi possível visualizar a saída da consulta através de um programa gratuito chamado Quantum GIS. o seguinte comando: Para criar uma tabela que será utilizada para visualização, foi empregado CREATE TABLE <nome_da_tabela> AS <comando da consulta> O comando acima cria uma tabela sem chave primária. Devido a isso, necessita-se definir o atributo gid como chave primária conforme a Tabela 3. Após essa operação o arquivo já pode ser visualizado no Quantum GIS. Cada consulta é apresentada neste trabalho com os seguintes itens: enunciado da mesma; comando em SQL; comentários acerca do comando; e figura ilustrando o resultado da consulta. As consultas que possuírem como resultados feições e forem visualizadas pelo programa Quantum GIS, serão apresentadas na cor azul nas figuras. Para exemplificar algumas consultas que foram geradas utilizando a lin - guagem SQL, onde cada consulta utiliza algum operador espacial. O operador espacial utilizado e cada consulta foram escolhidos de maneira que possa se aplicar formas diferentes dos operadores espaciais:

30 Exemplo de Consulta 1: Seleciona todas as rodovias que intersectam a área edificada do Rio de Janeiro. Esta consulta emprega a função de relacionamento de geometria Intersects que é interessante para verificar o resultado dá interseção entre geometrias. CREATE TABLE cs1 AS SELECT a.* FROM rodovia a, area_edificada b WHERE intersects(a.the_geom,b.the_geom) AND b.nm_nome = 'Rio de Janeiro'; Neste comando é criada a tabela cs1 que contém todos os campos da tabela rodovia que cruzam a área edificada do Rio de Janeiro. A função intersects retorna VERDADEIRO se uma geometria cruza espacialmente outra. Vale ressaltar que o nome (neste exemplo, Rio de Janeiro) deve ser rigorosamente igual ao que consta no registro da tabela. O banco de dados diferencia maiúsculas de minúsculas, bem como letras acentuadas de letras não acentuadas. A Figura 7 apresenta os dados retornados do exemplo de consulta 1. As linhas azuis são as rodovias que intersectam a área edificada do Rio de Janeiro.

31 Figura 7: Rodovias que intersectam a área edificada do Rio de Janeiro. Exemplo de consulta 2: Selecionar todas as cidades que pertencem ao estado do Rio de Janeiro. Esta consulta emprega a função de relacionamento de geometrias Contains que é interessante para verificar se uma geometria contém outra geometria. CREATE TABLE cs2 AS SELECT a.* FROM cidade a, estados b WHERE contains(b.the_geom,a.the_geom) AND b.nm_nome = 'RIO DE JANEIRO'; Neste comando é criada a tabela cs2 que contém todos os campos da tabela cidade que pertencem ao estado do Rio de Janeiro. Essa função Contains retorna VERDADEIRO se a geometria A contém espacialmente a geometria B. A Figura 8 apresenta os dados retornados do exemplo de consulta 2. Os pontos azuis são as cidades que pertencem ao estado do Rio de Janeiro.

32 Figura 8: Cidades que pertencem ao estado do Rio de Janeiro. Exemplo de consulta 3: Calcular a distância entre Rio de Janeiro e São Paulo. Esta consulta emprega a função de processamento de geometria Distance que é interessante para calcular a distância entre duas geometrias. SELECT distance(transform(a.the_geom,31998), transform(b.the_geom,31998)) FROM capital a, capital b WHERE a.nm_nome = 'SAO PAULO' AND b.nm_nome = 'RIO DE JANEIRO'; A função Distance retorna a distância cartesiana entre duas geometrias. No caso desta consulta a distância entre as cidades Rio de Janeiro e São Paulo.

33 Nessa consulta foi constatado um problema envolvendo unidades. As funções empregam como unidade de medida a unidade relacionada ao SRID. Como no caso das feições importadas a unidade é angular (graus), é necessário usar a função transform para que a função retorne o resultado em metros. A função transform transforma coordenadas de uma geometria para coordenadas de outro sistema de referência. Neste caso, foi transformado para o sistema que apresenta o SRID 31998, que corresponde à projeção UTM da zona 23 que emprega como unidade metros. Segue a saída da consulta, em metros: distance ------------------ 358542.641512428 (1 row) Exemplo de consulta 4: Selecionar todas as cidades que distam até 50 Km dos município do Rio de Janeiro ou do município de São Paulo. Esta consulta emprega a função de processamento de geometria Distance como no exemplo de Consulta 3, porém utilizando uma condição do seu valor, sendo outra aplicação desta função Distance, neste caso para determinar outras geometrias que obedeçam à condição de distância estabelecida. CREATE TABLE cs3 AS SELECT a.* FROM cidade a, capital b WHERE distance(transform(a.the_geom,31998), transform(b.the_geom,31998)) < 50000 AND b.nm_nome = 'RIO DE JANEIRO' OR b.nm_nome = 'SAO PAULO';

34 Neste comando é criada a tabela cs3 que contém todos os campos da tabela cidade que distam até 50.000 m das cidades do Rio de Janeiro ou São Paulo. A distância entre duas cidades (depois de convertido para um novo sistema de referência) é calculada, onde uma dessas cidades corresponde ao Rio de Janeiro ou São Paulo. São selecionadas as cidades que apresentam distância inferior a 50.000 metros. A Figura 9 apresenta os dados retornados do exemplo de consulta 4. Os pontos azuis são as cidades que apresentam distância inferior a 50.000 m das cidades do Rio de Janeiro ou São Paulo. Figura 9: Cidades que apresentam distância inferior a 50.000m das cidades do Rio de Janeiro ou São Paulo. Exemplo de consulta 5: Selecionar todas as cidades que distam até 5 Km da BR-116. Esta consulta combina a função de relacionamento de geometria Contains e a função de processamento da geometria Buffer, que é interessante para recuperar uma geometria que obedece algum critério de distância e com a função Contains verificar se a geometria esta contida em outra geometria.

35 CREATE TABLE cs5 AS SELECT DISTINCT a.* FROM cidade a, rodovia b, estados c WHERE contains(buffer(transform(b.the_geom, 31998), 5000), transform(a.the_geom,31998)) AND b.nm_sigla = 'BR-116'; Neste comando é criada a tabela cs5 que contém todos os campos da tabela cidade que distam até 5000 m da BR-116. Na função de processamento da geometria Buffer(geometria_A, X) retorna uma geometria que representa todos os pontos que distanciam X ou menos da geometria_a. A Figura 10 apresenta os dados retornados do exemplo de consulta 5. Os pontos azuis são as cidades que distam até 5000 m da rodovia BR-116. Figura 10: Cidades que distam até 5000 m da rodovia BR-116.

36 Exemplo de consulta 6: Calcular o comprimento da BR-116. Esta consulta combina a função SQL sum e a função de processamento de geometria lenght que é interessante para verificar o comprimento de uma geometria. SELECT sum(length(transform(the_geom,31998))) FROM rodovia WHERE nm_sigla = 'BR-116'; A função length retorna o comprimento de uma feição. No caso desta consulta, são somados os comprimentos de todas as linhas que apresentam como atributo sigla iguais a BR-116. O comando fornece a seguinte saída. sum ------------------ 855878.527886432 (1 row)

37 Exemplo de consulta 7: Calcular o número de cidades que distam até 10 Km do mar. Esta consulta combina a função SQL COUNT para quantificar o número de geometrias que obedecem aos critérios das funções empregadas no exemplo de consulta 6. SELECT COUNT (a.*) FROM cidade a, massa_agua b WHERE contains(buffer(transform(b.the_geom,31998), 10000),transform(a.the_geom,31998)) AND b.nm_nome = 'Oceano Atlantico'; A diferença nesse exemplo é o emprego da função Buffer com um polígono em vez de empregar linhas. O polígono Oceano Atlântico da tabela massa_agua é empregado para realizar o buffer, para em seguida verificar quais cidades estão contidas no mesmo. O comando acima fornece a seguinte saída: count ------- 14 (1 row)

38 Exemplo de consulta 8: Exibir o comprimento total das ferrovias por estado em quilômetros. Esta consulta combina as funções de relacionamento de geometria Contains e de processamento length que é interessante para calcular o tamanho da geometria que esta contida em outra geometria. SELECT a.nm_nome, sum(length(transform(b.the_geom, 31998))) AS total_km FROM estados a, ferrovia b WHERE contains(a.the_geom,b.the_geom) GROUP BY a.nm_nome; Nesta consulta foi atribuído o nome total_km para a soma dos comprimentos das ferrovias. Como foi feita uma agregação, é necessário definir como os dados serão agrupados. No caso os dados foram agrupados pelo nome do estado. O exemplo de consulta 8 apresenta a seguinte saída: nm_nome total_km ----------------+------------------ SAO PAULO 2455953.49927998 RIO DE JANEIRO 928662.517382389 MINAS GERAIS 2773205.69529065 (3 rows)

39 Exemplo de consulta 9: Listar as 5 cidades com maior área edificada. Esta consulta emprega a função de processamento de geometria Area que calcula a área de uma determinada geometria e ordena os seus valores em ordem decrescente. SELECT nm_nome AS nome, area(transform(the_geom, 31998))/1000000 AS area_km2 FROM area_edificada ORDER BY area_km2 DESC LIMIT 5; Nesta consulta foi alterado o nome do campo nm_nome para nome. A função área calcula a área das regiões edificadas em quilômetros quadrados. A área é exibida como area_km2. Os dados são ordenados pela área do maior para o menor (decrescente), e a exibição é limitada para 5 linhas. O comando fornece a seguinte saída. Podem-se verificar as alterações nos nomes devido ao uso de acentos nos registros do banco de dados. nome área_km2 ----------------+------------------ São Paulo 1450.49915197144 Rio de Janeiro 917.396827361816 Niterói 189.233321060059 Campinas 88.6444054047852 Ribeirão Preto 86.0586052082519 (5 rows)

40 Exemplo de consulta 10: Distância entre os centróides das áreas dos estados do Rio de Janeiro e São Paulo. Esta consulta combina as funções Distance, Transform e Centroid, onde a função de processamento Centroid é utilizada para calcular as coordenadas do centro geométrico de uma determinada região. SELECT distance(transform(centroid(a.the_geom),31998), transform(centroid(b.the_geom),31998)) FROM estado a, estado b WHERE a.nm_nome = RIO DE JANEIRO AND b.nm_nome = SÃO PAULO ; Nesta consulta a função Centroid calcula as coordenadas do centro geométrico da região do estado do Rio de Janeiro e de São Paulo. A função transform realiza a transformação das coordenadas calculada pela função Centroid, para que a função Distance calcule a distância entre os centróides dos estados do Rio de Janeiro e São Paulo em metros. Cabe ressaltar que no exemplo de consulta 3 realiza-se o cálculo da distância entre as capitais dos estados do Rio de Janeiro e de São Paulo, diferentemente do cálculo da distância entre os centróides destes estados realizado nesta consulta. Segue a saída da consulta, em metros: distance ------------------ 381167.474733 (1 row)

41 Exemplo de consulta 11: Cidades que distam até 20.000 metros do centróide da área do estado do Rio de Janeiro. Esta consulta emprega a função de processamento de geometria Distance,Transform e Centroid como no exemplo anterior, porém utilizando uma condição do valor da função Distance, neste caso para determinar outras geometrias que obedeçam à condição de distância estabelecida. CREATE TABLE cs6 AS SELECT a.* FROM cidade a, estado b WHERE distance(transform(a.the_geom,31998), Transform(centroid(b.the_geom),31998)) < 20000 AND b.nm_nome = RIO DE JANEIRO ; Neste comando é criada a tabela cs6 que contém todos os campos da tabela cidade que distam até 20.000 m do centróide do estado do Rio de Janeiro. A distância entre as cidades (depois de convertido para um novo sistema de referência) é calculada, onde são selecionadas as cidades que apresentam distância inferior a 20.000 metros do centróide do estado do Rio de Janeiro. A Figura 11 apresenta os dados retornados do exemplo de consulta 11. Os pontos azuis são as cidades que apresentam distância inferior a 20.000 m do centróide do estado do Rio de Janeiro.

42 Figura 11: Cidades que distam 20.000 m do centróide do estado do Rio de Janeiro. As cidades e a distância até o centróide do estado do Rio de Janeiro são apresentadas através do seguinte comando: SELECT a.nm_nome,distance(transform(a.the_geom,31998), transform(centroid(b.the_geom),31998)) AS distancia FROM cidade a, estado b WHERE distance(transform(a.the_geom,31998), Transform(centroid(b.the_geom),31998)) < 20000 AND b.nm_nome = RIO DE JANEIRO ;

43 Resultado do comando anterior: nm_nome distancia ----------------+------------------ PETRÓPOLIS 12557.9113681408 Guapimirim 19204.6399847948 Teresópolis 16083.870425194 (3 rows)

44 Exemplo de consulta 12: Comprimento da fronteira entre os estados do Rio de Janeiro e São Paulo. Esta consulta emprega a função SQL Sum, função de processamento de geometria Length e Intersection que é interessante para recuperar a geometria resultante da interseção entre duas geometrias. SELECT sum(length(transform(intersection(a.the_geom, b.the_geom),31998))) AS total_fronteira FROM estado a, estado b WHERE a.nm_nome = RIO DE JANEIRO AND b.nm_nome = SÃO PAULO ; Segue a saída da consulta, em metros: Total_fronteira ------------------ 242173.494743 (1 row)

45 CONCLUSÕES Este trabalho buscou enfatizar a importância de um Sistema de Informações Geográficas que pode ser considerado como uma importante tecnologia para dar subsídio a tomada de decisão e a gestão de recursos de aspectos geográficos, sendo uma importante ferramenta nas empresas e em órgãos do governo. Foi desenvolvido um insumo para dar suporte à atividade de manipulação de operadores espaciais, através da extensão geográfica PostGIS do SGDB livre PostgreSQL, sendo possível a visualização dos resultados das consultas que retornaram feições, através do programa gratuito Quantum GIS e também proporcionou a criação de cenários de pesquisa na área de banco de dados geográficos para trabalhos futuros como iniciação cientificas, trabalhos de conclusão de curso, pós-graduações e desenvolvimento de novas funcionalidades para este tipo de sistema. Atualmente existem diversos centros de pesquisa na área de banco de dados geográficos, destaca-se o Instituto Nacional de Pesquisas Espaciais (INPE), onde as pesquisas se concentram principalmente em armazenamento de dados geográficos, otimização de consultas, integração e interoperabilidade entre fontes de dados geográficos, e no estudo de aplicações multidisciplinar de um SIG. No desenvolvimento do trabalho utilizou-se uma base de dados do IBGE em que se realizaram as seguintes atividades: importação de um arquivo do formato shapefile, análise e descrição do esquema do banco de dados gerado, consultas espaciais pelo psql e execução dos operadores espaciais sobre esses dados. Um usuário, que deseje realizar alguma análise espacial para alguma aplicação especifica, pode seguir a metodologia apresentada no trabalho e de forma gratuita realizar a análise desejada, porém devemos sempre ter em mente que este

46 tipo de sistema gratuito não possui as mesmas funcionalidades de um sistema proprietário, mas dependendo da complexidade da análise este tipo de metodologia utilizando programas gratuitos pode alcançar os resultados desejados, assim realizando uma economia de custos devido ao valor dos sistemas proprietários.

47 REFERÊNCIAS BIBLIOGRÁFICAS 1. CÂMARA, Gilberto. Banco de Dados Geográfico.1.ed. Curitiba: MundoGEO, 2005. 2. DRUCK, Suzana.; CARVALHO, Marília Sá.; CÂMARA, Gilberto.; MONTEIRO, Antonio Miguel, Análise Espacial de Dados Geográficos. 1.ed. Brasília: EM- BRAPA, 2004. 3. ELMASRI, Ramez; NAVATHE, Shamkant. Sistemas de Banco de Dados. 4. ed. São Paulo: Pearson Addison Wesley, 2005. 4. UBERTI, Marlene Salete. Cadastro Técnico Municipal.1.ed.Rio de Janeiro: UFRRJ, 2004. 5. IBGE. Instituto Brasileiro de Geografia e Estatística. Carta internacional ao milionésimo. <ftp://geoftp.ibge.gov.br/mapas/topograficos/topo1000/vetor/shapefile> Acesso em 1 out. 2009. 6. PROJ.4. Cartographic Projections Library.<http://trac.osgeo.org/proj/> Acessado em 2 out 2009. 7. RAMSEY, Paul; SANTILLI, Sandro; HODGSON, Chris; LOUNSBURY, Jeff; BLASBY, Dave. Manual do PostGIS.<http://www.webgis.com.br/postgis/> Acessado em 1 out 2009. 8. ESRI. Environmental Systems Research Institute. ArcIMS Coordinate Systems, <http://edndoc.esri.com/arcims/9.1/elements/gcs.htm> Acessado em 1 out 2009. 9. POSTGRESQL, PostgreSQL Documentation, <http://www.postgresql.org/docs/> Acessado em 1 out 2009. 10. POSTGIS, PostGIS Documentation, <http://postgis.refractions.net/documentation/> Acessado em 1 out 2009.

48 11. OGC, Open Geospatial Consortium. <http://www.opengeospatial.org/standards> Acessado em 2 out 2009.