1 – Informação geográfica - IIS Windows Server

Propaganda
UNIVERSIDADE DO VALE DO ITAJAÍ
CENTRO DE EDUCAÇÃO SÃO JOSÉ
CURSO DE CIÊNCIA DA COMPUTAÇÃO
TRABALHO DE CONCLUSÃO DE CURSO
RASTREAMENTO DE VEÍCULOS
Jaque Cúnico Bernardes
São José
2004
2
JAQUE CÚNICO BERNARDES
RASTREAMENTO DE VEÍCULOS
Monografia apresentada à Banca Examinadora do
Trabalho de Conclusão de Curso de Ciência da
Computação da Universidade do Vale do Itajaí UNIVALI – São José, como requisito parcial para
obtenção do título de Bacharel em Ciência da
Computação.
Orientador: Prof. Rogério Gonçalves Bittencourt, Msc.
São José
2004
3
JAQUE CÚNICO BERNARDES
RASTREAMENTO DE VEÍCULOS
Esta Monografia foi julgada adequada para a obtenção do título de Bacharel em
Ciência da Computação e aprovada pelo Curso de Ciência da Computação da
Universidade do Vale do Itajaí, Centro de Educação de São José.
Área de Concentração: Banco de dados
São José, 17 de dezembro de 2004.
____________________________________
Prof. Msc. Rogério Gonçalves Bittencourt
UNIVALI - CE de São José
Orientador
_________________________________
Prof. Dr. Vinicius Medina Kern
UNIVALI - CE de São José
Membro de banca
_________________________________
Prof. M. Eng. Henrique Simas
UNIVALI - CE de São José
Membro de banca
4
SUMÁRIO
Sumário....................................................................................................................................... 4
Resumo ....................................................................................................................................... 7
Abstract....................................................................................................................................... 8
Lista de Figuras .......................................................................................................................... 9
Lista de Tabelas........................................................................................................................ 12
Lista de Siglas........................................................................................................................... 13
1
Introdução......................................................................................................................... 14
1.1 Apresentação .................................................................................................................. 14
1.2 Justificativa..................................................................................................................... 15
1.3 Objetivos......................................................................................................................... 16
1.3.1
Objetivo geral ................................................................................................... 16
1.3.2
Objetivos específicos........................................................................................ 16
2
Informação geográfica...................................................................................................... 17
2.1 Conceitos de cartografia ................................................................................................. 17
2.1.1
Mapas e cartas .................................................................................................. 17
2.1.2
Escala................................................................................................................ 18
2.2 Dados Geográficos ......................................................................................................... 31
2.3 Estrutura de Representação ............................................................................................ 32
2.3.1
Estrutura Raster (Matricial) .............................................................................. 34
2.3.2
Métodos de Compactação de Dados Raster ..................................................... 34
2.3.3
Vetorial ............................................................................................................. 35
2.3.4
Comparação entre Raster e Vetor..................................................................... 39
3
Banco de dados Geográfico.............................................................................................. 41
3.1 Conceitos de Básicos de BDG........................................................................................ 41
3.1.1
Identidade ......................................................................................................... 41
3.1.2
Entidade ............................................................................................................ 41
3.1.3
Objeto ............................................................................................................... 41
3.1.4
Tipo de Entidade............................................................................................... 41
3.1.5
Tipo de Objeto Espacial ................................................................................... 41
3.1.6
Classe de Objeto ............................................................................................... 42
3.1.7
Atributo............................................................................................................. 42
3.1.8
Valor de Atributo.............................................................................................. 42
3.1.9
Camada (layer) ................................................................................................. 42
5
3.2 Arquitetura de Banco de Dados Espacial ....................................................................... 42
3.2.1
Arquitetura Dual ............................................................................................... 44
3.2.2
Arquitetura em Camadas .................................................................................. 45
3.2.3
Arquitetura Integrada........................................................................................ 45
4
Indexação.......................................................................................................................... 48
4.1.1
Quad-tree .......................................................................................................... 48
4.1.2
R-tree ................................................................................................................ 52
5
Oracle Spatial ................................................................................................................... 57
5.1 Modelo Conceitual ......................................................................................................... 57
5.2 Sistemas de Coordenadas ............................................................................................... 58
5.2.1
Associando Geometrias com os sistemas de coordenadas ............................... 60
5.2.2
Adicionando informação .................................................................................. 60
5.3 Modelo de Representação............................................................................................... 61
5.3.1
Representação da Geometria ............................................................................ 61
5.3.2
Representação da Topologia............................................................................. 62
5.4 Modelo Físico ................................................................................................................. 62
5.4.1
Objeto Espacial................................................................................................. 62
5.4.2
Conjunto de Operações Implementadas ........................................................... 63
5.4.3
Semântica das operações .................................................................................. 64
5.4.4
Métodos de Indexação ...................................................................................... 65
5.4.5
Linguagens de Consulta e Ambiente de Consulta Espacial ............................. 66
5.5 Camadas Espaciais ......................................................................................................... 66
5.5.1
Objeto sdo_gtype.............................................................................................. 67
5.5.2
Modelo de Dados do LRS ................................................................................ 75
5.5.3
Definindo um segmento geométrico ................................................................ 77
5.5.4
Deslocando um segmento geométrico.............................................................. 82
5.5.5
Encontrando um ponto em um segmento geométrico ...................................... 82
5.5.6
5.5.7
5.5.8
5.5.9
5.5.10
5.5.11
5.5.12
5.5.13
5.5.14
5.5.15
5.5.16
Métodos em SDO_GTYPE .............................................................................. 88
Campo de SDO_SRID...................................................................................... 88
Campo de SDO_POINT ................................................................................... 89
Campo SDO_ELEM_INFO ............................................................................. 89
Campo de SDO_ORDINATES ........................................................................ 90
Elementos SDO_GEOMETRY ........................................................................ 90
Tipos de Elementos Sumariados ...................................................................... 90
Cadeia de linha ................................................................................................. 92
Cadeia de arco .................................................................................................. 93
Polígono............................................................................................................ 93
Arco Polígono................................................................................................... 94
6
5.5.17
5.5.18
5.5.19
5.5.20
5.5.21
5.5.22
5.5.23
5.5.24
5.5.25
5.5.26
5.5.27
5.5.28
6
Retângulo.......................................................................................................... 95
Circulo .............................................................................................................. 95
Cadeia de linhas compostas.............................................................................. 96
Polígono composto ........................................................................................... 97
Polígono com buraco ........................................................................................ 98
Polígono composto com buraco ....................................................................... 99
Elemento desconhecido .................................................................................... 99
Conjunto de pontos......................................................................................... 100
Coleção de cadeias de várias linhas................................................................ 100
Coleção de Polígonos ..................................................................................... 101
Construção de geometrias............................................................................... 101
Metadados espacial......................................................................................... 103
Inserindo dados no formato shapefile............................................................................. 106
6.1 Restrições ..................................................................................................................... 109
6.2 Convertendo arquivos Shapefile................................................................................... 109
7
Mapserver ....................................................................................................................... 111
7.1 O Arquivo de Inicialização........................................................................................... 112
7.2 O Mapfile...................................................................................................................... 113
7.3 O Arquivo Template..................................................................................................... 113
7.4 A base de dados SIG..................................................................................................... 113
8
Modelagem ..................................................................................................................... 114
8.1 Banco de dados............................................................................................................. 114
8.2 Diagrama de estados..................................................................................................... 115
8.3 Diagrama de classes ..................................................................................................... 116
8.4 Desenvolvimento .......................................................................................................... 117
9
Conclusão ....................................................................................................................... 120
10
Anexo ......................................................................................................................... 122
10.1 Oracle Spatial ............................................................................................................. 122
10.2 Mapserver ................................................................................................................... 124
11
Referencia................................................................................................................... 130
7
RESUMO
Com a popularização do GPS e mapas digitais, hoje é possível desenvolver sistemas
voltados para o rastreamento de veículos a baixo custo.
Nesse trabalho aborda o desenvolvimento de um sistema de rastreamento de veículos,
sem considerar o sistema embarcado para fazer a comunicação de dados entre o GPS e o
servidor de banco de dados. Contudo o sistema simula posições no espaço (no caso um mapa
de Florianópolis), demonstrando sua ultima posição e o rastro de um período.
O projeto explica como usar o oracle spatial (banco de dados espacial) como
dispositivo de armazenagem das posições geográficas (usando a projeção WGS-84),
juntamente com o Mapserver como ferramenta de visualização.
O trabalho esclarece porque esse sistema é muito mais eficiente usando a tecnologia
de banco de dados espacial e a razão pela qual esse tipo de banco é caracterizado por banco de
dados não convencional.
Palavras-chave: Banco de dados espacial, Oracle Spatial, Mapserver
8
ABSTRACT
With the popularizes of the GPS and digital maps, today the low cost is possible to
develop systems directed toward the tracking of vehicles.
In this work it approaches the development of a system of tracking of vehicles,
without considering the embarked system to make the communication of data between the
GPS and the server of data base. However the system simulates position in the space (in the
case a map of Florianópolis), demonstrating its it finishes position and the track of a period.
The project explains as to use oracle spatial (space data base) as device of storage of
the geographic positions (using the Wgs-84 projection), together with the Mapserver as
visualization tool.
The work clarifies because this system is much more efficient using the technology of
space data base and the reason for which this type of bank is characterized by not
conventional data base.
Key-Words: Space data base, Oracle Spatial, Mapserver
9
LISTA DE FIGURAS
Figura 1 – Escala gráfica .......................................................................................................... 19
Figura 2 - Transformação de escala.......................................................................................... 20
Figura 3 - Superfícies de Desenvolvimento ............................................................................. 22
Figura 4 – Cilindro tangente..................................................................................................... 22
Figura 5 – Cilindro secante....................................................................................................... 22
Figura 6 – Cônica tangente....................................................................................................... 23
Figura 7 – Cônica secante......................................................................................................... 23
Figura 8 – Plano tangente ......................................................................................................... 24
Figura 9 – Plano secante........................................................................................................... 24
Figura 10 – Sitema UTM.......................................................................................................... 30
Figura 11 – Estruturas básicas para representar dados espaciais.............................................. 32
Figura 12 - Tipos de modelos cartográficos ............................................................................. 33
Figura 13 - Cadeira no formato raster e vetorial ...................................................................... 33
Figura 14 – Modelo Spaghetti .................................................................................................. 37
Figura 15 – Modelo Topológico............................................................................................... 38
Figura 16 - TIN (Rede Irregular Triangularizada).................................................................... 39
Figura 17 – Arquitetura Dual ................................................................................................... 44
Figura 18 – Arquitetura em camadas........................................................................................ 45
Figura 19 – Arquitetura Integrada ............................................................................................ 46
Figura 20 – Decomposição do espaço em Quad-tree ............................................................... 48
Figura 21 - Decomposição Sucessiva....................................................................................... 49
Figura 22 – Exemplo de uma referência de objetos no índice Quad-tree ................................ 49
Figura 23 – Caminhamento na Quad-tree: Ordem proposta por Morton................................. 50
Figura 24 - Representação geométrica do Quadtree ................................................................ 51
Figura 25 - Retângulo limitando a geometria........................................................................... 53
Figura 26 – Decomposição R-tree (Árvore Balanceada).......................................................... 53
Figura 27 - Modelo de Dados do ORACLE SPATIAL. .......................................................... 58
Figura 28 – Tipos de Dados Espaciais Primitivos do Oracle Spatial ....................................... 62
Figura 29 - Objeto SDO_GEOMETRY ................................................................................... 67
Figura 30 - Representação do tipo de dado SDO_GTYPE ...................................................... 67
Figura 31 - Elementos do tipo SDO_GTYPE .......................................................................... 69
Figura 32 - Segmento Geométrico ........................................................................................... 71
Figura 33 - Descrevendo um ponto ao longo de um segmento com uma medida e um offset .72
10
Figura 34 - Medidas, distâncias, e seu relacionamento traçando. ............................................ 73
Figura 35 - Povoamento da medida de um segmento geométrico............................................ 73
Figura 36 - Medida povoada de forma desproporcional........................................................... 74
Figura 37 - Característica Linear, Segmentos Geométricos, e pontos de LRS ........................ 75
Figura 38 - Incluir Dimensão da medida de LRS em Metadados espacial............................... 75
Figura 39 - Criando um segmento geométrico ......................................................................... 76
Figura 40 – Função de LRS para formatos 3D com x, y e z .................................................... 77
Figura 41 - Função de LRS para formatos 3D com x e y......................................................... 77
Figura 42 - Definir um segmento geométrico .......................................................................... 78
Figura 43 - Redefinir um segmento geométrico....................................................................... 79
Figura 44 - Anexando, dividindo, e concatenando segmentos geométricos ............................ 80
Figura 45 - Atribuição da medida em operações geométricas do segmento ............................ 80
Figura 46 - Sentido do segmento com concatenação ............................................................... 81
Figura 47 - Escala de um segmento geométrico....................................................................... 81
Figura 48 - Deslocando um segmento geométrico ................................................................... 82
Figura 49 - Encontrando um ponto ao longo de um segmento com uma medida e um offset..83
Figura 50 - Ambigüidade na posição que referencia o offsets.................................................. 83
Figura 51 – Projeção de Múltiplos pontos................................................................................ 84
Figura 52 - Conversão do padrão para cadeia de linhas LRS................................................... 85
Figura 53 - Segmento para a operação de anexo afetada por Tolerância ................................. 86
Figura 54 - Exemplo Simplificado de LRS: Estrada ................................................................ 87
Figura 55 - Tipos do elemento sumariados .............................................................................. 92
Figura 56 - Exemplo de Cadeia de linha .................................................................................. 93
Figura 57 - Exemplo de Cadeia de Arco .................................................................................. 93
Figura 58 - Exemplo de Polígono............................................................................................. 94
Figura 59 - Exemplo de Polígono............................................................................................. 95
Figura 60 - Exemplo de Retângulo........................................................................................... 95
Figura 61 - Exemplo de Retângulo........................................................................................... 96
Figura 62 - Exemplo de Cadeia de linhas Compostas.............................................................. 97
Figura 63 - Exemplo de Polígono Composto ........................................................................... 98
Figura 64 - Polígono com Buraco ............................................................................................ 98
Figura 65 - Polígono composto com Buraco ............................................................................ 99
Figura 66 – Elemento desconhecido....................................................................................... 100
Figura 67 - Coleção de pontos................................................................................................ 100
Figura 68 - Coleção de Multipontos....................................................................................... 101
Figura 69 - Coleção de polígonos........................................................................................... 101
Figura 70 - Inserindo uma cadeia de linhas............................................................................ 102
Figura 71 - Inserindo uma cadeia de polígonos...................................................................... 103
11
Figura 72 – Arquivos Shapefile.............................................................................................. 106
Figura 73 - Exemplo de um arquivo SQL*Loader com pontos ............................................. 108
Figura 74 - Exemplo de um arquivo SQL*Loader com polígonos ........................................ 109
Figura 75 - Sintaxe para usar o shp2sdo................................................................................. 109
Figura 76 - Lógica de uma aplicação MapServer................................................................... 112
Figura 77 – Banco de dados ................................................................................................... 114
Figura 78 – Diagrama de Estados........................................................................................... 116
Figura 79 – Diagrama de Classes ........................................................................................... 117
Figura 80 – Tela inicial........................................................................................................... 117
Figura 81 – Localizar um veículo........................................................................................... 117
Figura 82 – Mapa da solicitação de “Localizar um veículo” ................................................. 118
Figura 83 – Mostrar o rastro do veículo ................................................................................. 118
Figura 84 – Mapa da solicitação de “Localizar rastro de um veículo”................................... 119
12
LISTA DE TABELAS
Tabela 1 - Vantagens e das estruturas desvantagens de representação Raster e Vetorial. .......39
Tabela 2 - Tipo de Objetos Espacial......................................................................................... 42
Tabela 3 - Vantagens e problemas das arquiteturas dual, em camadas e integrada. ................ 47
Tabela 4 - Sintaxe do MDSYS.SDO_GEOMETRY ................................................................ 63
Tabela 5 – Operadores Espaciais e Funções Espaciais............................................................. 64
Tabela 6 - Características da estrada e contrapartes de LRS.................................................... 88
13
LISTA DE SIGLAS
BD
Banco de Dados
CAD
Computer Aided Design
CGI
Commom Gateway Interface
DBA
Administrador de Banco de Dados
ESRI
Environmental Systems Research Institute
GID
Numeric Geometry Identifier
GPS
Posicionamento Global por Satélite
HTML
Hiper Text Mark-up Language
HTTP
Hyper Text Transfer Protocol
LRS
Sistema de Referencia Linear
MBR
Minimous Bounding Rectangles
MVE
Mínimo Volume Envolvente
NASA
National Aeronautics and Space Administration
OGC
Open GIS Consortium
SGBD
Sistema Gerenciador de Bancos de Dados
SGBDOO Sistema Gerenciador de Bancos de Dados Orientado a Objeto
SGBDR
Sistema Gerenciador de Bancos de Dados Relacional
SIG
Sistema de Informação Geográfica
SQL
Structured Query Language
UTM
Projeção Universal Transversal de Mercator
14
1 INTRODUÇÃO
1.1 APRESENTAÇÃO
Com a popularização do GPS, transmissão de dados por celular e com a era dos mapas
digitais das mais diversas cidades do Brasil e do mundo, tornou-se possível monitorar
veículos em tempo real, tanto particulares (automóveis, motos etc.) ou frotas inteiras
(caminhões, carros de empresas, por exemplo).
Esse monitoramento gera dados nos quais são armazenados em um banco de dados
convencional para futuras análises (de rotas, tempo, velocidade etc.). Enquanto os dados
espaciais, onde será possível localizar um objeto no espaço geográfico, ficam armazenadas
em um banco espacial, como as ruas, lotes, municípios.
De posse desses dados, podem-se gerar informações importantes para o cliente (tanto
pessoa física quanto pessoa jurídica), tais como verificar se o veículo ultrapassou velocidade
máxima permitida, localização exata do veículo (no caso de roubo, seqüestro, ou para
previsionar tempo de chegado no de ao destino) etc..
Para podermos localizar um veículo qualquer, este veículo deve ser descrito com
relação a outros objetos geográficos (rua, BR, por exemplo) cujas posições (localizações)
sejam previamente conhecidas, com sua localização determinada em um sistema de
coordenadas fixas. Identificar a posição em que ele se encontra, temos que trabalhar com
mapas na forma digita com referencias espaciais, onde serão descritas as feições geográficas
(ruas, avenidas, BR, bairros, municípios, praças etc.), conhecidas como dados geográficos.
De acordo com Aronoff (1989), as informações para uma feição geográfica possuem
quatro componentes principais: a posição geográfica (localização); os atributos (dados
alfanuméricos); relacionamentos topológicos (caracterizam relacionamentos de vizinhança ou
de conexão entre objetos geográficos). O componente tempo (se refere ao período ou época da
ocorrência do fenômeno ou fato geográfico). Estes componentes são simplesmente as
respostas as seguintes perguntas: onde, o que, qual o relacionamento com outras feições
espaciais, e quando ocorreu o fato (ou fenômeno) geográfico.
Estes dados, do ponto de vista de banco de dados, podem ser classificados em três
categorias principais:
•
Dados Convencionais - atributos alfanuméricos tradicionais, que podem ser
15
tratados por um SGBD convencional (ex.: nome e população de uma cidade);
•
Dados Espaciais - atributos que descrevem a geometria e a localização do
fenômeno geográfico. Possui propriedades geométricas e topológicas (ex.: limite
geográfico de um lago);
•
Dados Pictóricos - atributos que armazenam imagens (fotos) (ex.: fotografia aérea
de uma cidade).
Tais dados são armazenados em um banco de dados, ditos bancos de dados para
aplicações não-convencionais. Um banco de dados espacial é um banco de dados para esse
tipo de aplicação. Esses bancos de dados possuem a capacidade de armazenar não somente
dados
textuais
(convencionais),
mas
dados
geo-referenciados
(dados
geográficos
referenciados espacialmente, por meio de uma coordenada geográfica). Esta disposto no
mercado de alguns bancos de dados como Oracle Spatial, IBM DB2 Spatial Extender,
Informix Spatial Datablade e o PostGIS.
Para visualizarmos o conteúdo de um banco de dados espacial, será necessária a
utilização de uma ferramenta. Esta ferramenta lê os dados geográficos do banco de dados e
desenha na tela do usuário, no caso vai permitir a visualização do mapa junto como a
localização na WEB (navegador). Tal ferramenta será o MAPSERVER, pois além de ser
gratuita (opensource), é a mais utilizada pela comunidade científica em geoprocessamento,
pois apresenta diversas vantagens, tais como: segue a licença OSS/FS, é construído com base
em outros pacotes freeware com Shapelib, GD, Freetype, OGR, Proj.4, libTiff, regex e outros
(MapServer, 2004) e permite navegar no mapa como: leste, oeste, norte, sul, mais zoom,
menos zoom, saber dados de ruas, CEP e outras informações que os dados do mapa1
permitirem extrair.
1.2 JUSTIFICATIVA
Os sistemas comerciais disponíveis no mercado são componentes de terceiros,
proprietários, complexos e muitas vezes confusos para novas implementações e manutenções.
A expectativa não é somente visualizar o veículo, mas saber onde e como está (parada,
andando, sua velocidade, sentido norte, sul, entre outras informações).
Com a junção dessas tecnologias (MapServer e banco de dados espacial) é possível
satisfazer a necessidade de todos os usurários e prestadores de serviços, pois o
desenvolvimento é todo opensource (não contando com o banco de dados), podendo ser
1
Será adquirido por terceiros, ou seja, apenas será convertido para o banco, não sofrera nenhuma auteração.
16
alterado conforme a necessidade sem precisar construir módulos alternativos, aplicativos
aparte, a alteração é na própria aplicação, reutilizando o código, aumentando a produtividade
e diminuído custos significativamente.
1.3 OBJETIVOS
1.3.1 Objetivo geral
Desenvolver uma aplicação de monitoramento de veículos na WEB.
1.3.2 Objetivos específicos
•
Armazenar os mapas em uma base de dados digital (georeferenciamento de objetos
geográficos);
•
Criar uma base de dados espacial para poder receber os dados geográficos dos
mapas;
•
Visualizar a localização atual de um veículo, armazenando em um banco de dados
espacial;
•
Visualizar o trajeto de um veicula em um determinado tempo, armazenando em
um banco de dados espacial;
17
2 INFORMAÇÃO GEOGRÁFICA
2.1 CONCEITOS DE CARTOGRAFIA
O dicionário Contemporâneo da Língua Portuguesa define, assim, o termo cartografia:
“Arte de traçar ou gravar cartas geográficas ou topográficas”. O Novo Dicionário Brasileiro
Melhoramentos é mais sintético: “Arte de compor cartas geográficas”. E o novo Dicionário da
Língua Portuguesa, de Aurélio Buarque de Holanda Ferreira, assim explica: “Arte ou ciência
de compor cartas geográficas; tratando sobre mapas”.
Foi a Associação Cartográfica Internacional (ACI), por ocasião do XX Congresso de
Geografia, reunida em Londres, em 1964, que veio, pela primeira vez, estabelecer, em síntese,
mas com precisão, o campo das atividades intimamente ligadas a cartografia: “conjunto de
estudos e operações cientificas, artísticas e técnicas, baseado nos resultados de observações
diretas ou de analise de documentação, com vistas à elaboração e preparação de cartas,
projetos e outras formas de expressão, assim como a sua utilização”.
A cartografia não é uma ciência nem uma arte, mas sem dúvida alguma um método
científico que se destina a expressar fatos e fenômenos observados na superfície da Terra,
atreves de símbolos próprios [CCM93].
Carta topográfica explica de forma gráfica, através de traços, pontos, figuras
geométricas, cores etc., a configuração duma parte da superfície terrestre, tal como ela é,
dentro duma precisão matemática, sempre compatível do à escala.
2.1.1 Mapas e cartas
Mapas são representações gráficas de uma superfície plana em uma determinada
escala, é a representação do globo terrestre, ou de trechos da sua superfície, sobre um plano,
indicando fronteiras políticas, características físicas, localização de cidades e outras
informações geográficas, sócio-políticas ou econômicas. Os mapas, normalmente, não têm
caráter técnico ou científico especializado, servindo apenas para fins ilustrativos ou culturais e
exibindo suas informações por meio de cores e símbolos. Enquanto cartas é uma
representação da superfície terrestre sobre um plano, mas foi especialmente traçada para ser
usada em navegação ou outra atividade técnica ou científica, servindo não só para ser
examinada, mas, principalmente, para que se trabalhe sobre ela na resolução de problemas
18
gráficos, onde os principais elementos serão ângulos e distâncias, ou na determinação da
posição pelas coordenadas geográficas (latitude e longitude). As cartas permitem medições
precisas de distâncias e direções (azimutes).
Embora o mapa e a carta tenham quase tudo em comum, sendo inclusive considerados
sinônimos, no Brasil costuma-se diferenciá-los. Emprega-se a expressão mapa para as
representações mais simples, generalizadas ou de escala muito pequena. Exemplos: mapa do
Brasil (escala 1:5.000.000 ou menos), mapa da América do Sul e mapa-múndi. Já a expressão
carta é utilizada para as representações mais detalhadas, mais precisas ou de grande escala.
Exemplos: cartas topográficas, cartas cadastrais ou urbanas (escalas de 1:500 a 1:10.000) e
cartas de navegação marítima e aérea (cartas náuticas e cartas aeronáuticas).
De acordo com a finalidade ou tipo de usuário a que se destinam, os mapas ou cartas
podem ser classificados em:
•
Gerais: Quando se destinam ao público em geral, isto é, quando atendem aos
diversos tipos de usuários. Geralmente são mapas de pequena escala. Por exemplo:
mapas de grandes regiões, de países, de continentes e mapas-múndi.
•
Especiais: Quando se destina a determinadas pessoas ou grupos (profissionais),
isto é, são mapas mais específicos ou técnicos e geralmente de grande escala. Por
exemplo: mapas políticos, econômicos, científicos, cartas náuticas, aéreas e
cadastrais.
•
Temáticos: Quando se destinam ao estudo, análise e pesquisa de determinados
temas como Geologia, Pedologia, Demografia etc.
2.1.2 Escala
É a relação entre a distância de dois pontos quaisquer do mapa com a correspondente
distância na superfície da Terra. Em geral por uma fração, onde essa fração representa a
relação entre as distâncias lineares da carta e as mesmas distâncias da natureza, ou seja, é uma
fração em que o numerador (invariavelmente a unidade) representa uma distância no mapa e o
denominador a distância correspondente no terreno, tantas vezes maior, na realidade quanto
indica o valor representado no denominador.
Deve ser em função das informações que a carta contém, considerando a resolução do
dado original, o nível de detalhe desejado e o tema representado. Deve ser apresentada em
uma posição de destaque na carta em escala numérica ou gráfica.
A escala numérica vem representada pela própria fração, onde no Brasil e na maioria
dos países é representado, tomemos como exemplo, a escala 1:20.000, qualquer medida linear
19
na carta é, no terreno, 20.000 vezes maior. Se na mesma carta, tomarmos uma distância, por
exemplo, de dois centímetros, esta corresponderá, no terreno, a 40 000 centímetros, que
corresponde a 400 metros.
A escala gráfica é um segmento de reta graduado que permite medir distâncias na
carta. Como se pode observar na figura 1, de zero a quinze há uma indicação de distancias em
quilômetros, com subdivisões de cinco em cinco quilômetros, mediante uma faixa
centimétrica.
Figura 1 – Escala gráfica
Fonte: [CCM93]
Para ampliar o mapa deve-se aumentar a riqueza de detalhes. Assim, devemos
proceder da seguinte forma: Diminuir o denominador, aumentar a escala. Ex:
Num mapa de escala 1: 100.000, queremos ampliar o mapa 5 vezes. Devemos usar a escala 1:
20.000.
Para reduzir o mapa deve-se diminuir a riqueza de detalhes. Assim, devemos proceder
da
forma
a
seguir:
Aumentar
o
denominador,
dinimuir
a
escala.
Ex:
Num mapa de escala 1: 100.000 queremos reduzir o mapa 5 vezes. Devemos usar a escala 1:
500.000.
Transformando as escalas da figura 2 para numéricas, temos:
20
Figura 2 - Transformação de escala
Na utilização de mapas, surgem, alguns problemas; em geral eles se referem a três
elementos: a medida do terreno (D), a medida no mapa (d) e o denominador da escala (E). Eis
as relações:
a) conhecidas à distância no terreno e a escala (o denominador da fração), determinar a
distância no mapa, d = E
D
;
b) conhecidas à distância no mapa e a escala, determinar a distância no terreno,
D=E .
d
c) conhecidas à distância no terreno e a distância no mapa, determinar a escala,
E = D×d .
2.1.2.1 Projeções
Projeção cartográfica é a representação de uma superfície esférica (a Terra) num plano
(o mapa), ou seja, trata-se de um "sistema plano de meridianos e paralelos sobre os quais pode
ser desenhado um mapa" (Erwin Raisz. Cartografia geral. p. 58).
O grande problema da cartografia consiste em ter de representar uma superfície
esférica num plano, pois, como é sabida, a esfera é um sólido não-desenvolvível, isto é, não
planificável. Assim, sempre que achatarmos uma esfera, necessariamente ela sofrerá
alterações ou deformações.
Experimente, por exemplo, cortar uma laranja ao meio e depois pressionar (achatar)
21
uma dessas partes sobre uma superfície plana.
Isso quer dizer que todas as projeções apresentam deformações, que podem ser em
relação às distâncias, às áreas ou aos ângulos. Assim, cabe ao cartógrafo escolher o tipo de
projeção que melhor atenda aos objetivos do mapa.
O processo de produzir um mapa plano de uma superfície pode ser entendido como
uma sucessão de transformações. As irregularidades na forma da terra tornam difícil este
processo de modelagem matemática. Assim o primeiro passo no processo é modelar a Terra
como um objeto sólido mais simples que tem a mesma área de superfície.
Para mapas em grandes escalas que mostram uma porção pequena da superfície
terrestre com grande detalhe, a Terra é modelada como um elipsóide que dá uma melhor
aproximação à verdadeira forma da Terra que uma esfera perfeita.
Organismos responsáveis pela cartografia oficial nos diversos países usam elipsóides
diferentes, ajustando os raios polar e equatorial (semi-eixos) para os melhores valores da
região de interesse.
Para mapas em pequenas escalas que mostram uma área grande com pequeno detalhe,
um modelo esférico é usado por ser matematicamente mais simples e porque em escalas
pequenas, a distorção devido às irregularidades na forma da Terra pode ser considerada
desprezível.
Em termos geométricos, a Terra como um esferóide ou elipsóide (uma esfera
ligeiramente achatada nos pólos) é considerada uma superfície que não pode ser desenvolvida,
porque não importa como o esferóide ou elipsóide seja dividido, ele não pode ser planificado.
Selecionado o modelo matemático apropriado, o próximo passo é reduzir o tamanho
do modelo para a escala desejada do mapa. A escala pode ser calculada como a relação entre
o raio do modelo e o raio da Terra (aproximadamente 6.300 km). Porém, por causa da
distorção introduzida na representação de um esferóide ou elipsóide em um plano, a escala do
mapa variará de lugar para lugar.
O passo final no processo é projetar o reticulado (meridianos e paralelos) sobre a
superfície de desenvolvimento. Qualquer superfície que pode ser planificada é uma superfície
de desenvolvimento. Superfícies e métodos de projeções diferentes são usados para obter
mapas com propriedades geométricas diferentes.
A maioria das projeções é derivada de fórmulas matemáticas, mas algumas são mais
fáceis de visualizar quando projetadas em uma superfície de desenvolvimento.
Embora um número infinito de projeções seja teoricamente possível, foram descritas
aproximadamente 400 projeções na literatura cartográfica e só algumas dezenas destas são
22
extensamente usadas. Estabelecer uma classificação de projeções serve como auxílio para
entender as suas propriedades e para selecionar uma projeção apropriada para um
determinado propósito.
As projeções podem ser classificadas em termos das propriedades geométricas de
representação e pela superfície geométrica da qual elas são derivadas. Algumas das projeções
mais simples são apoiadas sobre formas geométricas que podem ser planificadas sem
deformar suas superfícies. Como exemplos de formas geométricas que refletem estas
propriedades temos cones, cilindros e planos (figura 3). Assim, temos as projeções, e
(azimutal ou zenital).
Figura 3 - Superfícies de Desenvolvimento
Fonte: [EST04]
2.1.2.2 Cilindro
A esfera com alguns dos seus paralelos e meridianos, esta sendo desenvolvido de uma
envoltória cilíndrico que a tocava unicamente ao longo de uma linha – o equador, o único
círculo máximo dentre os paralelos. Esta sendo apresentado nas figuras 4 e 5.
Figura 4 – Cilindro tangente
Fonte: [EST04]
Figura 5 – Cilindro secante
Fonte: [EST04]
De acordo com Cério de Oliveiro podem-se tirar as seguintes conclusões:
1. As linhas traçadas na esfera foram transferidas para a superfície de desenvolvimento, por
meio de projeções partidas do centro da esfera.
23
2. O equador é a única linha projetada que conserva a dimensão original.
3. Os demais paralelos já não conservam as mediadas originais. Ao contrário, guardam todos
eles iguais comprimentos – um absurdo – em relação ao equador.
4. O pólo ou mesmo as áreas próximas ao pólo não tem possibilidade, aí, de ser projetada.
5. Apenas o equador é tangente à superfície cilíndrica. Os meridianos constituem linhas retas
paralelas entre si, pois seus planos na esfera contem o eixo do cilindro, e o interceptam
segundo as suas geratrizes.
2.1.2.3 Cônica
A esfera projetando-se a partir do equador, numa tangente, em um dos paralelos (o
primeiro a partir do equador). Representada nas figuras 6 e 7.
Figura 6 – Cônica tangente
Fonte: [EST04]
Figura 7 – Cônica secante
Fonte: [EST04]
Conclusão segundo Cério de Oliveiro:
1. As linhas traçadas na esfera, a partir do equador, até o pólo, foram projetadas para a
superfície de desenvolvimento, a partir de certo ponto de interior da esfera.
2. A única linha de verdadeira grandeza é o paralelo de tangência.
3. O pólo é projetado devido à forma peculiar do cone, e, em razão disso, os mediríamos
projetados se cruzam com a esfera.
4. O vértice do cone se encontra no prolongamento do eixo da esfera (projeção cônica
normal). Ao projetarmos os paralelos e meridianos sobre a superfície cônica, concluímos
que os paralelos representados por arcos de círculos concêntricos no vértice, e os
meridianos, por retas, correspondentes às geratrizes do cone, e, portanto, concorrem em
seu vértice (as projeções cônicas podem ser consideradas cilíndricas quando o ápice do
cone se achar a uma distancia infinita da esfera).
2.1.2.4 Plano
O plano é tangente à esfera no pólo. Em conseqüência, todas as linhas traçadas na
esfera são projetadas no plano, partidas de certo ponto do interior da esfera. Veja figura 8 e 9.
24
Segundo Cério de Oliveiro conclui-se:
Figura 8 – Plano tangente
Fonte: [EST04]
Figura 9 – Plano secante
Fonte: [EST04]
1. O pólo, ponto em que a esfera é tangente, é projetado no centro do plano.
2. Os paralelos, em conseqüência, são arcos de círculos concêntricos, como a esfera
terrestre.
3. Os meridianos, irradiando-se do pólo, são projetados em linhas retas.
4. À medida que se afastam da superfície de tangencia (o pólo), não conservam as linhas
e as proporções existentes na esfera. Ao contrário, tanto o espaçamento quanto as
dimensões dos paralelos e meridianos crescem infinitamente.
2.1.2.5 Condições que devem ser cumpridas pelas projeções
Pode ser observado que todas as três projeções de linhas ou de pontos da esfera em
uma superfície plana ou na superfície de desenvolvimento, nenhuma consegue obter uma
projeção sem ter um significativo grau de anormalidade, as quais dificultam a questão
essencial em cartografia, que é a precisão métrica da representação de detalhes topográficos.
Em razão desses problemas foram estudadas outras formas de projeções, visando
resolver os problemas nos quais os três métodos não conseguiam resolver, contudo ao
resolver uma anormalidade outro aparecia, dificultando a projeção absolutamente livre de
inconveniências.
Desta maneira, não existe nenhuma projeção que elimine todos os tipos de deformação
advindas da transformação da esfera em um plano. Torna-se possível que uma carta “conserve
a mesma escala em todas as direções e em todos os pontos; em outras palavras, uma carta não
pode representar com toda precisão o tamanho ou a forma dos acidentes geográficos em todos
os pontos da carta” [DEETZ]
Assim sendo devemos escolher as propriedades que possam atender melhor nossos
objetivos na construção de uma boa carta:
1. Manutenção da verdadeira forma das áreas a serem representadas (conformidade).
25
2. Inalterabilidade das dimensões relativas das mesmas (equivalência).
3. Constâncias das relações entre as distâncias dos pontos representados e as distâncias
dos seus correspondentes (eqüidistâncias).
4. Representação dos círculos máximos para o meio de linhas retas.
2.1.2.6 Projeções equivalentes
De acordo com Aurélio Buarque de Holanda Ferreira equivalente significa “de igual
valor”. Projeções equivalentes têm a propriedade de não deformar as áreas, conservando
assim, quanto à área, uma relação constante com as suas correspondentes na superfície da
Terra.
As projeções de mapas que mantêm a área constante em toda a superfície do mapa são
chamadas de igual área ou projeções equivalentes. Foram desenvolvidas várias projeções
equivalentes na tentativa de minimizar a distorção de outras propriedades geométricas
mantendo a área constante.
As Projeções equivalentes são bastante usadas para mapas temáticos que mostram
distribuição de cenários como população, distribuição de terras agricultáveis, áreas florestadas
etc.. Também são chamadas projeções de igual área, homolográfica, ou equiareal.
As quadrículas de um mapa, formadas por paralelos e meridianos, só podem guardar,
entre si, a relação de tamanho, se modificar a forma dessas quadrículas. Ora, quaisquer destas
quadrículas, na esfera terrestre, são compostas de paralelos e meridianos que se cruzam em
ângulos retos. A deformação neste caso é logo percebida pela alteração dos ângulos. Mas
como a recíproca nem sempre é verdadeiro, também aqui se pode afirmar que sempre ama
quadricula em ângulos retos deixa de ser deforme [CCM93].
2.1.2.7 Projeções conformes
A propriedade definidora das projeções conforme é que em qualquer ponto no mapa, a
escala é a mesma em todas as direções sobre o ponto. A implicação desta propriedade é que
ângulos sobre um ponto são mostrados corretamente e assim sendo, pode-se esperar a
representação de formas corretamente.
Apesar da escala do mapa variar de ponto a ponto, a propriedade de representação
correta de ângulos só se aplica aos ângulos que têm lados pequenos. As formas de áreas
pequenas são preservadas nesta projeção, mas as formas de áreas maiores são distorcidas.
Projeções conformes são aquelas que não deforma os ângulos e em decorrência dessa
propriedade, não deforma, igualmente, a forma de pequenas áreas. Outra particularidade é que
26
a escala, em qualquer ponto é a mesma, seja na direção que for, embora, por outro lado, mude
de um ponto para outro, e permaneça independente do azimute em todos os pontos do mapa.
Ela só continuará a ser a mesma, em todas as direções de um ponto, se duas direções no
terreno, em ângulos retos entre si, forem traçadas em duas direções que, também, estejam em
ângulos retos, e ao longo das quais a escala for a mesma [CCM1993].
2.1.2.8 Projeções eqüidistantes
As Projeções eqüidistantes preservam a escala em alguma parte do mapa, não sendo
possível representar todas as distâncias corretamente em escala, porém, é possível produzir
uma projeção tal que todas as distâncias a partir de um ou dois locais sejam verdadeiras em
escala ou na quais todas as distâncias medidas perpendicularmente a uma linha sejam
verdadeiras em escala.
Não apresenta deformação linear, ou seja, os comprimentos são representados em
escala uniforme. A condição de eqüidistância só é conseguida em determinada direção e se
classifica (conforme no trabalho de Almirante De Bakker) em meridiana, transversal e
azimutal ou ortodromica.
2.1.2.9 Projeções azimutais
São executadas a partir de um plano tangente sobre a esfera terrestre; o ponto de
tangência se torna o centro dessa representação cartográfica. As áreas próximas a esse ponto
de tangência apresentam pequenas deformações; entretanto, as mais distantes são muito
distorcidas, ou então desaparecem porque elas abrangem apenas um hemisfério quando
centradas num dos pólos. Abaixo, um exemplo de projeção azimutal.
Quando a projeção azimutal é centrada num dos pólos, os meridianos são
convergentes neste centro da projeção e os paralelos são concêntricos e a superfície abrangida
é apenas a de um hemisfério (N ou S).
As projeções azimutais são as mais usadas geopoliticamente, pois podem realçar o
"status" de um país em relação aos demais da Terra. Durante a Guerra Fria, por exemplo, ora
se centrava em Washington, ora em Moscou; podiam ser controlados os mísseis e ogivas
nucleares apontados para uma ou para outra superpotência, cujas rotas passavam pela Zona
Polar Ártica. A Europa Ocidental (sob influência americana) e a Oriental (sob influência
soviética) poderiam ser visualizadas através dessa projeção.
Os agentes da globalização, como os bancos internacionais e as transnacionais, dão
preferência à projeção azimutal, colocando evidentemente o ponto de tangência em suas
27
sedes, nos países centrais.
Os mapas aeronáuticos e de navegação marítima também usam a projeção azimutal,
visto que a maior parte do comércio internacional e transportes de cargas e pessoas se fazem
no hemisfério norte, onde se concentram os países desenvolvidos.
2.1.2.10
Projeções afilático
A projeção afilática, igualmente conhecida como arbitrária, nos Estados Unidos, não
possui nenhuma das propriedades dos quatro tipos, isto é, equivalência, conformidade,
eqüidistância e azimutes certos, ou seja, as projeções em que as áreas, os ângulos e os
comprimentos não são conservados.
2.1.2.11
Datum Horizontal
Concluiu-se ao longo dos anos que o modelo matemático mais adequado para a
representação da Terra é o elipsóide de revolução, porém, vários países e continentes
adotaram elipsóides de parâmetros ligeiramente diferentes, com objetivo de que se ajustassem
localmente melhor às suas regiões específicas e produzissem resultados locais mais precisos.
Portanto, o modelo da Terra usado pelos Estados Unidos é um elipsóide diferente do elipsóide
usado pelo Brasil que é por sua vez diferente do usado pela Rússia. Assim, existem vários
modelos locais e a adoção de um modelo global, que seria ideal, esbarra nas fronteiras
políticas.
Define–se Datum Horizontal como um sistema de referência padrão adotado por um
país, uma região ou por todo o planeta ao qual devem ser referenciadas as posições
geográficas (latitude e longitude ou coordenadas cartesianas). É fundamental que os dados
geográficos de um mesmo projeto de Geoprocessamento estejam referenciados ao mesmo
Datum Horizontal para evitar incompatibilidades. Um datum é constituído pela adoção de um
ELIPSÓIDE DE REFERÊNCIA que representará a figura matemática da Terra, um PONTO
GEODÉSICO ORIGEM e um AZIMUTE inicial para fixar o sistema de coordenadas na Terra
e servir como marco inicial das medições de latitudes e longitudes. O critério para escolha do
Ponto Geodésico Origem é a máxima coincidência entre a superfície do geóide e do elipsóide.
Portanto, um mesmo ponto do terreno terá valores de coordenadas diferentes quando referidas
a diferentes Datum.
No Brasil lidamos basicamente com três datum, a saber: SAD-69, que é o datum local
oficial. Córregos Alegres, que é o datum local mais antigo, referenciados ao qual existem,
ainda, vários trabalhos e WGS-84, que é o datum mundial (global) utilizado pelo Sistema
28
GPS.
O WGS-84 é dito um datum global e geocêntrico, pois o elipsoide adotado (GRS80)
ajusta-se à Terra como um todo e a origem dos seus eixos coordenados é no geocentro. No
datum global o elipsóide é fixado a Terra pelo Equador e meridiano de Greenwich (não
necessita de Ponto Geodésico Origem nem de Azimute inicial).
2.1.2.12
Datum Vertical
As altitudes são referidas ao nível médio das águas tranqüilas dos mares, ou seja, à
superfície do geóide. Porem, como ocorre com o datum horizontal, cada país mede e adota o
seu próprio nível do mar. O nível do mar sofre influência de vários fatores tais como ventos,
atração do Sol e da Lua, densidade das massas continentais e dos fundos do oceano, correntes
marítimas etc.. Para obter um valor preciso é necessário tomar medidas da variação das marés
durante um período de aproximadamente 19 anos.
Assim, DATUM VERTICAL um sistema padrão ao qual devem ser referenciadas as
altitudes de um país ou região. Geralmente é a média das observações de um marégrafo que
tem o registro das variações de marés por um período de pelo menos 19 anos. É fundamental
que os dados altimétricos de um mesmo projeto estejam referenciados ao mesmo Datum para
evitar incompatibilidades.
2.1.2.13
Sistema de Coordenadas Geodésicas
O sistema de coordenadas geodésicas constitui um sistema eficiente para localização
inequívoca da posição de objetos, fenômenos e acidentes geográficos na superfície terrestre.
Neste sistema a Terra é dividida em círculos paralelos ao Equador chamado PARALELOS e
em elipses que passam pelos pólos terrestres (perpendiculares aos paralelos) chamadas
MERIDIANOS. Cada ponto na Terra terá um único conjunto de coordenadas geodésicas
definidas por:
Latitude Geográfica ou Geodésica (ϕ): ângulo entre a normal ao elipsóide no ponto
considerado e sua projeção no plano equatorial. É medido no plano do meridiano que contém
o ponto considerado. Positiva a Norte (0 a +90°), negativo Sul (0 a –90°).
Longitude Geográfica ou Geodésica (λ): ângulo diedro entre os planos do meridiano de
Greenwich e do meridiano que passa pelo ponto considerado. Positiva a Este (0 a +180°),
negativa a Oeste (0 a 180°)
Altitude Ortométrica (H): distância vertical que se estende do nível médio do mar (Geóide =
Datum Vertical) até o ponto considerado.
29
2.1.2.14
Norte Geográfico e Norte Magnético
Em um lugar qualquer, o Norte Geográfico é definido pela direção dos meridianos
geográficos e o Norte Magnético é definido pela direção da agulha da bússola. O Pólo Norte
Magnético descreve um lento movimento, aproximadamente circular e de período secular, em
torno do Pólo Norte Geográfico considerado fixo. Existe, portanto, um ângulo entre o Norte
da bússola e o Norte Geográfico. A magnitude deste ângulo depende da localização do
observador na Terra. Todas as medidas de azimutes feitas à bússola são magnéticas, os
azimutes obtidos nas cartas, mapas ou através de cálculos geodésicos são azimutes
geográficos. Assim, quando se trabalha com os dois processos (caso da navegação) é
necessário fazer a conversão. O ângulo de conversão é chamado Declinação Magnética e pode
ser obtido através de cartas magnéticas ou de modelos digitais do campo magnético terrestre.
É importante ressaltar que o Norte magnético sofre perturbações, é impreciso e as melhores
bússolas fornecem medidas com erro de, pelo menos, meio grau, portanto as bússolas só se
prestam para orientações aproximadas.
2.1.2.15
Sistema UTM
Na realidade, a conhecida UTM não é uma projeção, mas um sistema da projeção
transversa de Mercátor (conforme de Gauss). Surgiu o sistema em 1947, para determinar as
coordenadas retangulares nas cartas militares, em escala grande, de todo o mundo.
Estabelece o sistema que a Terra seja dividida em 60 fusos de seis graus de longitude,
os quais têm início no antimeridiano de Greenwich (180º), e que seguem de oeste para leste,
até o fechamento neste mesmo ponto de origem.
Quanto à extensão em latitude, os fusos se original no paralelo de 80ºS até o paralelo
84ºN.
Se, em relação à longitude, os fusos são número 60, no que toca à latitude, a divisão
consiste em zonas de 4º, e isto está vinculado ao tamanho da carta de 1:100.000, e não à
projeção. Os fusos são decorrentes da necessidade de se reduzirem às deformações. Além dos
paralelos extremos (80ºS e 84ºN), a projeção adotada, mundialmente, é a estereográfica polar
universal.
Se fixarmos a nossa atenção em qualquer uma dessa 1.200 quadrículas, verificaremos
que os 6 graus de longitude apresentam as seguintes características: os dois meridianos
laterais são múltiplos de 6, assim como o meridiano central é de 6 mais 3. A figura 10
assinala, a propósito, duas quadrículas localizadas na região Sudeste: a primeira, com o
meridiano central de 51º e os dois meridianos laterais de, respectivamente, 54º e 48º; a
30
segunda, com o meridiano central de 45º e os dois laterais de, respectivamente, 48º e 42º.
Quanto aos limites em latitude, temos, para ambas as quadrículas, os paralelos de 28º e 20º.
Figura 10 – Sitema UTM
Fonte: [CCM93]
Para criar o sistema foram utilizados uma superfície de projeção com 60 cilindros
transversos e secantes, à superfície de referência (elipsóide), cada uma com amplitude de 6º
em longitude. Seu uso é limitado entre os paralelos 80º S e 84º N.
Os cilindros são distribuídos na superfície de referência, de modo a abranger fusos de
6º de amplitude, compreendidos entre as longitudes múltiplas de 6º + 3º (..., 57º, 51º, 45º,...).
Sobre este meridiano central (M.C.), existe uma deformação dos cilindros com a superfície de
referência - as linhas de secância - o coeficiente de deformação linear é unitário. Não existem
deformações lineares nestas regiões.
Cada um dos fusos chama fusos UTM, tem origem na interseção do seu meridiano
central com a linha do Equador. As coordenadas UTM destes pontos são x=E
(Este)=500.000,00 m e y=N (Norte)=10.000.000,00m, no Hemisfério Sul, e y=N=0,0m, no
Hemisfério Norte.
As coordenadas UTM são obtidas a partir de coordenadas geográficas, latitude e
longitude de pontos de interesse, usando-se fórmulas complexas. O coeficiente de deformação
linear (k), que varia de 0,9996 sobre o M.C. a 1,001 nos extremos do fuso, passando pelo
31
valor unitário sobre as linhas de secância, também é obtido a partir de fórmulas, sendo função
das coordenadas E e N dos pontos em questão.
O sistema UTM é conforme, as distâncias e áreas apresentam deformações. A
deformação de área é função da posição ocupada pelos pontos dentro de um fuso UTM. Esta
variável é conhecida como coeficiente de deformação linear e representada pela letra grega
kapa (k). A orientação das figuras também pode ser considerada pseudodeformação, a não ser
no meridiano central de cada fuso, onde o Norte da quadrícula UTM (NQ) coincide com o
Norte Verdadeiro (NV). Em todas as demais regiões dos fusos esses dois eixos formam entre
si, um ângulo denominado Convergências Meridianas, representadas pela letra grega gama
(y).
Porém, este tipo de projeção pode possuir uma ou outra propriedade que justifique a
sua construção. Por exemplo, a gnômica, mesmo apresentando todas as deformações, possui a
excepcional propriedade de representar as ortodromias retas.
2.2 DADOS GEOGRÁFICOS
As informações para uma feição geográfica possuem quatro características principais:
a posição geográfica (localização); os atributos (dados alfanuméricos); relacionamentos
topológicos (caracterizam relacionamentos de vizinhança ou de conexão entre objetos); e o
componente tempo (se refere ao período ou época da ocorrência do fenômeno ou fato
geográfico) caso for trabalhar com tempo/espaço. Estes componentes são simplesmente as
respostas as seguintes perguntas: onde, o que, qual o relacionamento com outras feições
espaciais, e quando ocorreu o fato (ou fenômeno) geográfico. Uma vez dentro de um SIG,
estes dados podem ser classificados em três categorias principais:
• Dados Convencionais - atributos alfanuméricos tradicionais, que podem ser tratados
por um SGBD convencional (ex.: nome e população de uma cidade);
• Dados Espaciais - atributos que descrevem a geometria e a localização do fenômeno
geográfico. Possuem propriedades geométricas e topológicas (ex.: limite geográfico de um
lago);
• Dados Pictóricos - atributos que armazenam imagens (fotos) (ex.: fotografia aérea de
uma cidade).
Em um SIG, as estruturas básicas (figura 11) para representar objetos espaciais (dados
geográficos) são:
• Pontos - adimensionais representam entes cuja propriedade espacial mais
significativa é a sua localização pontual. As coordenadas dos objetos tipo ponto podem ser
32
armazenadas como dois atributos extras na tabela de atributos da entidade;
• Linhas - unidimensionais representam entes onde a localização, a forma e
conectividade são relevantes. Aparecem normalmente em aplicações de infra-estrutura (redes
viárias), redes de utilidade pública (gás, eletricidade, água etc.), linhas de tráfego aéreo, redes
hidrográficas etc.. As redes são formadas basicamente por dois construtores que são os nós
(junções e terminadores) e as ligações (arcos entre dois nós);
• Polígonos (áreas, regiões) - bidimensionais, representam unidades com diferentes
finalidades. Por exemplo, podem ser utilizados para representar regiões homogêneas (mapas
temáticos).O relacionamento de vizinhança entre entidades bidimensionais (áreas) é
representado através de estruturas de dados que armazenam informações sobre polígonos
adjacentes. A estratégia mais utilizada é baseada no armazenamento de atributos dos arcos,
acrescidos de dois apontadores extras, referentes aos polígonos localizados à esquerda e à
direita do arco, percorrido no sentido nó-origem-nó-destino.
• Superfícies (volumes) - tridimensionais representam objetos com comprimento,
altura e largura.
Um mesmo objeto pode ter diferentes representações em função da escala ou do nível
de detalhe. Assim, um lago pode ser representado por uma região (polígono) ou por um ponto,
em função da escala.
Figura 11 – Estruturas básicas para representar dados espaciais
Fonte: [PAR 94].
2.3 ESTRUTURA DE REPRESENTAÇÃO
Tradicionalmente, os dados geográficos têm sido representados por modelos
analógicos bidimensionais, mais conhecidos por mapas. Na figura 12, podemos ver os tipos
33
de modelos cartográficos existentes [PEU 84].
Quando da atualização do mapa (modelo analógico), um novo mapa deve ser
desenhado, ou o antigo modificado. Todo este processo é manual, ou seja, custoso, demorado.
Ele requer habilidade e precisão no desenho de cada mapa.
M odelo Analógico
M apa com curvas de nível
M odelo Vetorial
Organização do vetor
Elemento básico = linha
M odelo M atricial (Raster)
Organização da grade
Elemento básico = Célula
Figura 12 - Tipos de modelos cartográficos
Fonte: [PEU 84].
Os outros dois tipos básicos de modelos de dados geográficos armazenam e
representam a informação na forma digital; vetor e raster (figura 13).
Figura 13 - Cadeira no formato raster e vetorial
Fonte: [BUR 92].
Em ambas as estruturas, a informação espacial é representada utilizando unidades
34
homogêneas. Na abordagem raster, as unidades homogêneas são as células. É usado um
número muito grande de células relativamente pequenas, todas do mesmo tamanho. Arquivos
de dados raster contêm milhões de células e a posição de cada unidade é rigidamente definida.
Na abordagem vetorial, as unidades homogêneas são pontos, linhas e polígonos. Comparado
com a estrutura raster, estas unidades homogêneas são relativamente poucas em números, e
variáveis em tamanho. Em um arquivo vetorial, o número de elementos podem ser dez ou mil,
mas não milhões como é o caso dos arquivos raster.
2.3.1 Estrutura Raster (Matricial)
A estrutura matricial possui como unidade básica lógica uma célula de uma malha (um
pixel), O espaço é regularmente subdividido dentro de uma grade regular de células (podendo
ser irregular também) e a localização de cada célula é definida por um número da linha e da
coluna. Cada célula da grade contém um valor único. A estrutura matricial (raster) define um
espaço, que quando preenchido, define a localização das entidades. De acordo com [PAR 94],
a estrutura matricial (raster) divide o espaço geográfico em elementos discretos.
Existem três tipos básicos de modelos raster, cada um possui diferenças funcionais que
são baseadas nas diferenças geométricas do polígono. Este três tipos básicos são: quadrático,
triangular e hexagonal.
O preenchimento das células se dá numa seqüência específica, linha a linha, da
esquerda para a direita. Cada conjunto de células (grade) está associado à uma camada (layer),
ou seja, cada conjunto de células armazenam valores relativos a um variável (tema) sendo que
cada célula contém somente um tipo de valor. Tipo de solo e vegetação de uma área deve ser
armazenado em arquivos diferentes. Operações sobre múltiplos arquivos raster envolvem a
recuperação e processamento dos dados de uma célula (posição de uma célula)
correspondente em diferentes arquivos.
Para encontrarmos todas as células com floresta de Pinus e solo arenoso, cada célula
no arquivo solos (arquivo que trata o tema tipos de solos) e cada célula correspondente, de
mesma localização (mesma linha - coluna), no arquivo floresta devem ser recuperados e
avaliados. Todas aquelas células que foram codificadas como floresta de Pinus, além disso,
como solo arenoso, devem ser identificadas e poderam ser colocadas em um novo arquivo.
Este procedimento é chamado de Análise de Overlays [ARO 89].
2.3.2 Métodos de Compactação de Dados Raster
Nos SIG's, em especial aqueles que utilizam à estrutura raster, tem um problema que
35
diz respeito ao volume de dados a serem armazenados. Como no modelo raster cada célula
representa uma área da superfície terrestre, e o atributo de cada célula é armazenado como um
único valor, então o número total de valores a serem armazenados é o número de linhas vezes
o número de colunas. Quanto menor a área representada por uma célula, maior é a resolução
dos dados, e maior será o arquivo que armazena estes dados. O tamanho do arquivo aumenta
de acordo com a resolução. Por exemplo, se uma célula representa 250m x 250m de área,
então à distância de 1km deverá ser representada por 4 células, e uma área de 1km x 1km
deverá ser representada por 16 células. Se a resolução for aumentada, isto é, uma célula
representar 100m x 100m, estes mesmos 1km x 1km deverá ser representado por 100 células
[ARO 89]. Por estas razões os arquivos tendem a ser grande, e necessitam de métodos de
compactação, tais como:
•
Chain Codes (Códigos de Cadeia) - os limites de uma região são dados por sua
origem e uma seqüência de vetores unitários nas direções leste, norte, oeste e sul,
devendo o limite ser percorrido no sentido horário.
•
Run-Length
Codes
(Códigos
em
Sequência)
-
o armazenamento de
cada região é feito linha a linha, da esquerda para a direita, indicando célula inicial
e final da linha.
•
Block Codes (Códigos de Blocos) - a idéia do Run-length codes foi extendida para
duas dimensões. Blocos quadrados são utilizados para “ladrilhar” a área a ser
mapeada.
•
Quadtrees (Árvores Quaternárias) - este método de compactação se baseia em
divisões sucessivas em matrizes de 2n x 2n quadrantes, aonde a região com
atributos vai sendo delineada pela subdivisão em quadrantes.
2.3.3 Vetorial
O modelo de representação vetorial tem como primitiva principal o Ponto, porém, são
utilizados três construtores básicos: o ponto, a linha e o polígono. As coordenadas x e y de um
ponto correspondem à localização, em um sistema de coordenadas específico, de entidades
que são representadas sem dimensões espaciais. A linha, formada por uma cadeia de
segmentos de linha reta, ou mais especificamente, por uma lista de coordenadas de pontos, é o
objeto espacial usado para representar no banco de dados, as entidades da realidade que
possuem extensão linear. O polígono é o objeto espacial que representa as entidades com
extensões bidimensionais (área), através da definição do contorno da área da entidade. O
polígono é formado por uma cadeia fechada de segmentos de linha, podendo ou não, ter
36
outros polígonos embutidos em seu interior.
Existe uma enorme variedade de técnicas de armazenamento de objetos espaciais, que
são baseadas no modelo vetorial [LAU 92]. Essas técnicas podem ser classificadas de acordo
com o tipo de objeto armazenado, ou seja, ponto, linha ou polígono. Características do tipo de
aplicações a que se destinam também são importantes. Por exemplo, em um sistema de
roteamento de veículos, uma característica fundamental é a conectividade entre as arestas da
rede viária, para possibilitar operações de análise de melhor caminho.
Outra classificação existente leva em consideração se os relacionamentos topológicos
são, ou não, armazenados. Aronoff [ARO 89], divide os diversos modelos vetoriais em dois
grupos: Modelos de Dados Spaghetti e Modelos de Dados Topológicos.
Os Modelos de Dados Spaghetti utilizam estruturas de dados que armazenam os
polígonos/linhas como seqüências de coordenadas de pontos. Nestes modelos, os limites entre
duas áreas adjacentes são registrados (digitalizados) e armazenados duas vezes, uma para cada
polígono. Estes modelos são utilizados em muitos pacotes de cartografia automatizada, onde
as informações sobre os relacionamentos entre as entidades não são importantes [NCG 90].
Neste modelo, o mapa é lido linha a linha, em coordenadas XY. Pontos são
codificados como uma coordenada XY, as linhas como uma lista de coordenadas XY e as
áreas (polígonos) como um loop fechado de coordenadas XY, que definem sua fronteira.
Quando um polígono tem seu fronteiro adjacente à fronteira de outro polígono, as
coordenadas XY desta fronteira (compartilhada pelas duas áreas adjacentes) deve ser
registrada duas vezes. Os relacionamentos espaciais não são armazenados (figura 14) [ARO
89] e [PEU 84]. Possui redundância de coordenadas.
37
Figura 14 – Modelo Spaghetti
Fonte: [PEU 84]
Este modelo é, segundo [PEU 84], ineficiente para muitos tipos de análise espacial, já
que todos os relacionamentos espaciais devem ser gerados no momento da análise (não são
armazenados). Porém, o modelo spaghetti é muito bom quando utilizado para geração de
mapas (impressão), porque ele não armazena os relacionamentos espaciais, irrelevantes para a
impressão do mapa.
As maiorias dos SIG utilizam os Modelos de Dados Topológicos, os quais usam
estruturas de dados que possibilitam o armazenamento de alguns tipos de relacionamentos,
sendo que a ênfase principal é dada nos relacionamentos de conectividade entre linhas de uma
rede (contendo arestas interligadas por nós) e nos relacionamentos de vizinhança entre áreas
(representadas por polígonos) adjacentes. Outros tipos de relacionamentos entre objetos
espaciais, como por exemplo, se uma linha "cruza" uma área ou se um ponto está "dentro" de
uma área, são calculados a partir das coordenadas desses objetos.
Na figura 15 é mostrado um exemplo de utilização do modelo topológico, onde a topologia
é registrada em três tabelas, uma para cada tipo de elemento espacial, e as coordenadas dos
dados (pontos, arcos, nós, polígonos) são armazenadas numa quarta tabela. Este exemplo
ilustra um modelo topológico denominado Modelo Arco-Nó. A entidade lógica básica é o arco,
38
que possui uma série de pontos que iniciam e terminam em nós. Um nó é uma intersecção de pontos,
onde um ou mais arcos se encontram [ARO 89].
Com este modelo, o relacionamento espacial mais elementar é armazenado e pode ser
utilizado para análises espaciais. Esta informação topológica permite que definições espaciais de
entidades tipo pontos, linhas e áreas (polígonos) sejam armazenadas de forma não redundante (ao
contrário do que acontece no modelo spaghetti). Isto é vantajoso para polígonos adjacentes [PEU
84]. Com esta estrutura, também fica mais rápido o cálculo de análises espaciais. A desvantagem é
que possui uma estrutura mais complexa que a "spaghetti", leva tempo para criar uma estrutura
topológica dos dados e atualizações de mapas levam muito tempo.
Figura 15 – Modelo Topológico
Fonte: [PEU 84]
O modelo “Triangulated Irregular Network” ou TIN (Rede Irregular Triangularizada
ou Modelo de Elevação), também é um modelo topológico baseado em vetor e representa a
superfície do terreno como um conjunto de triângulos irregulares interconectados. Para cada
vértice do triângulo, existe uma coordenada XY (localização) e uma cota Z (elevação). O
maior problema esta no fato de existirem muitas triangularizações possíveis que podem ser
gerados a partir de um mesmo conjunto de pontos. Na figura 16 é ilustrada essa estrutura.
Mais detalhes sobre este modelo pode ser encontrado em [ARO 89], [PEU 84], [GOO
90] e [GOO 91].
39
Figura 16 - TIN (Rede Irregular Triangularizada)
Fonte: [PEU 84]
2.3.4 Comparação entre Raster e Vetor
Na tabela 1 estão listadas as principais vantagens e desvantagens de cada estrutura
(ARO, 1989).
RASTER
Vantagens
VETOR
Desvantagens
Vantagens
Desvantagens
A estrutura raster é quase que
Ineficaz para realizar análises
obrigatório para uma
espaciais complexas,
variabilidade espacial é
manipulação eficiente de
condicionadas por vários
ineficiente
imagens de satélite
atributos descritivos dos temas
Estrutura compacta
A representação da alta
mapeados.
SIG’s matriciais são de custo
Menos compacto que o
Boa representação de
Combinação de layers
baixo
vetorial
linhas e polígonos
complexa
Estrutura de dados mais simples
Difícil de se representar
Precisão (cálculos)
Visualização e plotagem
relacionamentos topológicos
caras
Operações de overlay são
Desempenho comprometido
Melhor descrição
Manipulação de imagens
facilmente e eficientemente
em aplicações que demandam
topológica
de satélite não pode ser
implementadas
resoluções elevadas
efetivamente feita no
domínio vetorial
Bom desempenho em operações
booleanas
Menor precisão
Suporta operações que
Estruturas de dados
requerem informações
complexas (mais que o
topológicas
modelo raster)
Reduz redundâncias
devido ao uso de
coordenadas
Alta qualidade nas saídas
gráficas
Tabela 1 - Vantagens e das estruturas desvantagens de representação Raster e Vetorial.
O modelo de representação matricial é mais adequado em aplicações voltadas às
40
áreas ambientais, enquanto que o modelo vetorial é mais adequado para aplicações
relacionadas às invenções humanas, como cadastro de propriedades, redes de infraestruturas etc..
Normalmente, as aplicações onde às operações de análise espacial necessitam de
informações topológicas, são desenvolvidas utilizando-se o formato vetorial, enquanto que
as aplicações que necessitam realizar operações de sobreposição (overlay) a partir de dois
ou mais temas, utilizam o formato matricial. Os SIG geralmente fornecem suporte para os
dois formatos, incluindo procedimentos para conversão entre eles.
Como uma grande quantidade de dados é introduzida no sistema, a partir da
digitalização de mapas disponíveis em folhas de papel, os dados muitas vezes são
armazenados no formato vetorial e convertidos para o formato matricial para serem
utilizados em operações de overlay. Os resultados dessas operações também podem ser
reconvertidos para o formato vetorial, para serem armazenados de forma mais eficiente.
41
3 BANCO DE DADOS GEOGRÁFICO
3.1 CONCEITOS DE BÁSICOS DE BDG
O conjunto de definições a seguir, é o resultado de um trabalho de padronização de
termos, que foi proposto pelo US National Digital Cartografic Standart. Estas definições
foram extraídas de [NCG 90]. Neste trabalho, procurou-se empregar os conceitos de acordo
com estas definições.
3.1.1 Identidade
Elementos da realidade modelados em um banco de dados geográfico têm duas
identidades: o elemento na realidade, denominado entidade e o elemento representado no
banco de dados, denominado objeto. Uma terceira identidade usada em aplicações
cartográficas é o símbolo usado para representar entidades/objetos como uma feição no mapa.
3.1.2 Entidade
É um fenômeno de interesse na realidade que não pode ser subdividido em fenômenos
do mesmo tipo. Por exemplo, uma floresta pode ser dividida em florestas menores, enquanto
que uma cidade se for dividida, suas partes não serão cidades e sim bairros ou distritos.
3.1.3 Objeto
É a representação digital de uma (ou parte de uma) entidade. A representação digital
varia de acordo com a escala utilizada (ex.: um aeroporto pode ser representado por um ponto
ou uma área, dependendo da escala em uso).
3.1.4 Tipo de Entidade
É a caracterização de um agrupamento de entidades similares que podem ser
representadas por objetos armazenados de maneira uniforme (ex: o conjunto das estradas de
uma região). Fornece uma estrutura conceitual para a descrição dos fenômenos.
3.1.5 Tipo de Objeto Espacial
Cada Tipo de Entidade em um Banco de Dados Espacial é representado de acordo
42
com um tipo de objeto espacial apropriado. A Tablea 2 mostra os tipos básicos de objetos
espaciais, definidos pelo US National Digital Cartografic Standart e classificados segundo
suas dimensões espaciais:
Dimensão
Tipo
Descrição
0D
ponto
Um objeto com posição no espaço, mas sem comprimento.
1D
linha
Um objeto tendo comprimento. Composto de 2 ou mais objetos 0D
2D
área
Um objeto com comprimento e largura. Limitado por pelo menos 3
objetos 1D
3D
volume
Um objeto de comprimento, largura e altura. Limitado por pelo
menos 4 objetos 2D
Tabela 2 - Tipo de Objetos Espacial
3.1.6 Classe de Objeto
Descreve um conjunto de objetos que representa um conjunto de entidades (ex.: o
conjunto de pontos que representam um conjunto de nascentes, postes etc. ou o conjunto de
áreas representando lotes urbanos).
3.1.7 Atributo
Descreve características das entidades, normalmente de forma não-espacial. Exemplos
são os nomes das cidades, diâmetro de um duto etc.
3.1.8 Valor de Atributo
Valor quantitativo ou qualitativo associado ao atributo. (ex.: nome da cidade = 'Porto
Alegre', Diâmetro do duto = 1 ½").
3.1.9 Camada (layer)
Os objetos espaciais em um BD Geográfico podem ser agrupados e dispostos
(apresentados) em camadas (ou temas). Normalmente, uma camada contém um único tipo de
entidade ou um grupo de entidades conceitualmente relacionadas (ex.: uma camada pode
representar somente as rodovias de uma região, ou pode representar também as ferrovias).
3.2 ARQUITETURA DE BANCO DE DADOS ESPACIAL
A existência de diferentes arquiteturas de banco de dados geográficos se deve à
43
necessidade de integração entre dados convencionais e dados espaciais. Essa integração é
fundamental para permitir a análise conjunta de vários tipos de informações e onde elas
ocorrem no espaço.
A integração de dados espaciais com dados convencionais foi uma preocupação
posterior ao desenvolvimento das ferramentas SIG e dos dados SGBDs convencionais. As
ferramentas SIG surgiram inicialmente com a finalidade de processar mapas. Segundo Reeve
(2001), não tinham a capacidade de armazenar dados alfanuméricos, assim, foram
desenvolvidos para prover análises espaciais, visualizações cartográficas e tecnologia de
interface gráfica, não dando tanta importância em oferecer recursos de banco de dados. Por
outro lado, as aplicações envolvendo dados convencionais, se restringiam a relatórios em
forma de tabelas e gráficos. Logo, a necessidade de integração impulsionou o
desenvolvimento de novos mecanismos computacionais de conexão entre esses dois tipos de
dados.
O estudo de alternativas para integração foi necessário devido à natureza dos dados
espaciais, que, até então, eram considerados complexos para as estruturas de dados
convencionais vigentes, baseadas no Modelo Relacional. Como primeira alternativa, as
ferramentas SIG, que inicialmente só armazenavam dados espaciais, passaram a incorporar
SGBDs relacionais em suas arquiteturas, através de uma Arquitetura Dual. na qual o SGBD
relacionai é utilizado somente para armazenar atributos, enquanto que os dados geográficos
são armazenados utilizando-se as estruturas internas da ferramenta SIG. Esta abordagem
apresentou resultados satisfatórios, sobretudo com a melhora do hardware e do software, e
para aplicações stand-alone. Mas, na medida em que foram surgindo as aplicações
distribuídas e a necessidade por segurança (proteção contra falhas), integridade, consistência,
capacidade para armazenar grandes bases de dados e controle de acesso aos dados, questões
até então não atendidas pelas ferramentas SIG, mas consideradas em estado avançado em
SGBDs
convencionais,
mais
uma
vez
foi
necessário
repensar
as
arquiteturas
existentes. À segunda opção foi levar os dados espaciais para os SGBDs convencionais, o que
ficou conhecido como Arquitetura Integrada, na qual ambos os tipos de dados (espacial e
alfanumérico) são armazenados no mesmo banco de dados. A seguir, essas abordagens e suas
implicações são apresentadas em mais detalhes. É importante lembrar que a evolução das
arquiteturas vai de encontro às necessidades do mercado e este exige flexibilidade de acordo
com os requisitos das aplicações.
44
3.2.1 Arquitetura Dual
A maioria das soluções disponíveis no mercado para geoprocessamento utiliza
SGBD’s relacionais, num ambiente dual. Os componentes espaciais e descritivos do objeto
geográfico são armazenados separadamente (figura 17), ligados por um identificador comum.
Para recuperar um objeto, os dois sub-sistemas devem ser pesquisados e a resposta é uma
composição de resultados.
A vantagem desta arquitetura é poder utilizar os SGBD's relacionais de mercado e
implementar métodos eficientes de acesso a dados espaciais. Como os dados espaciais estão
fora do controle do SGBD, esta estrutura não permite que propriedades do SGBD como
otimização de consultas, gerência de transações e controle de integridade e de concorrência
sejam utilizadas para os dados espaciais. As consultas devem ser divididas em duas partes: do
dado descritivo é tratado pelo SGBD e do dado espacial é tratado fora do banco [CÂM 94].
Figura 17 – Arquitetura Dual
O principal problema do "ambiente dual" é o controle de integridade. Podem ocorrer
situações como:
•
O arquivo gráfico correspondente à entidade foi removido (através de algum
comando do sistema operacional), mas sua descrição ainda está presente no BD;
•
Numa transação diretamente feita no SGBD, as descrições dos elementos são
alteradas, sem a mudança correspondente nos arquivos gráficos associados.
O acesso externo ao BD sempre é possível num ambiente dual [CÂM 94].
45
3.2.2 Arquitetura em Camadas
Os problemas da arquitetura dual são causados porque possui dois gerenciadores de
dados, com responsabilidades distintas. Para remediar este problema, surgiram os SGBDs
com campos longos (figura 18), que são registros binários de tamanho significativo, onde se
podem guardar informações gráficas, numéricas ou pictóricas.
Os "campos longos" possuem mecanismos de proteção de integridade física
(shadowing), mas o SGBD não possui mecanismos de acesso ao conteúdo dos campos longos,
função deixada para um subsistema de armazenamento, implementado sobre o SGBD. Não há
padronização no uso dos campos longos na tecnologia relacional. Com isto, a implementação
desta arquitetura fica dependente do SGBD escolhido [CÂM 94].
Figura 18 – Arquitetura em camadas
Fonte: [CÂM94]
O armazenamento de informações geográficas em "campos longos" pode resolver o
problema de controle de integridade física dos dados, mas continuam as questões sobre
métodos de acesso espacial, otimização de consultas e de gerência de transações.
3.2.3 Arquitetura Integrada
Quando o SGBD é aberto para extensões, pode-se adicionar novos tipos de dados e
métodos de acesso. Neste caso, o gerenciador de dados espaciais estará embutido no SGBD
(figura 19) e a arquitetura resultante é dita integrada.
46
Figura 19 – Arquitetura Integrada
Fonte [CÂM 94]
Além de possuir suporte a "campos longos", o SGBD deve possuir a possibilidade de
definir novos tipos (abstratos) de dados e métodos de acesso associados. O programador do
SIG deve implementar todas as estruturas de acesso no próprio ambiente do SGBD. O
controle de integridade física fica sobre responsabilidade do SGBD [CÂM 94].
Sistemas pós-relacionais, como POSTGRES, e orientados a objetos, como O2 e o
OBJECTSTORE, propõe-se a dar suporte a este tipo de aplicação. O SGBD deve ser
completamente extensível, para permitir que componentes como o otimizador de consultas e o
gerente de transações tenham suas funcionalidades adaptadas para lidar com dados
geográficos.
Esta nova geração de SGBD's (orientados a objetos) vem aparecendo cada vez mais
em artigos sobre SGBD's para aplicações de geoprocessamento [SOU 93].
Uma análise mais detalhada da utilização de SGBDOO para aplicações de
geoprocessamento é encontrada em [RAM 94]. Também é feita uma análise de SGBDR
Estendidos.
Comparando as vantagens e problemas das arquiteturas de SDBG para SIG têm-se a
seguinte tabela.
47
Arquitetura
Dual
Vantagens
Problemas
- Uso de SGDB’s relacionais de
- Controle de Integridade
mercado
- Otimização de Consultas
- Independência de fabricantes de
SGDB’s
Em
- Controle de Integridade
-Dependência de fabricantes de
camadas
- Uso de SGBD’s relacionais de
SGDB’s
mercado (com campos long)
- Otimização de Consultas
- Controle de Integridade
- Dependências de fabricantes
- Otimização de Consultas e Métodos
- Falta de padronização de
de Acesso
Linguagem de Consulta
Integrada
Tabela 3 - Vantagens e problemas das arquiteturas dual, em camadas e integrada.
Fonte: [CÂM94]
48
4 INDEXAÇÃO
Uma vez que os dados espaciais foram carregados em tabelas no oracle, índice espacial
pode necessitar ser criado. Os índices espaciais são construídos para a mesma razão que
outros índices são construídos em base de dados convencionais: para o acesso rápido aos
dados. No exemplo de um índice espacial, o índice é construído na coluna espacial (camada)
na tabela para fornecer o acesso rápido aos dados em uma região particular.
O oracle spatial fornece dois métodos distintos para indexação dos dados espaciais, o
Quadtree e o R-tree.
4.1.1 Quad-tree
Uma Quad-tree, segundo Oracle Spatial Training Guide [OST 04], é um mecanismo
de codificação para determinar múltiplas chaves, ou seções, para cada geometria indexada,
como mostra a Figura 20. Seções podem ser imaginadas como retângulos que definem uma
cobertura exclusiva (nenhuma seção se sobrepõe a outra) e exaustiva (as seções cobrem
completamente o objeto) de cada geometria armazenada no layer.
Figura 20 – Decomposição do espaço em Quad-tree
Fonte: Extraído de Oracle Spatial Training Guide [OST 04]
Na estrutura Quad-tree, o processo de decomposição do espaço é conhecido como
tesselação, o qual determina que seções cobrem uma dada geometria. Na tesselação, o espaço
de coordenadas é decomposto de uma maneira regular e hierárquica. No primeiro nível de
decomposição, o espaço é dividido em quatro seções. Cada seção que interage com a
geometria que está sendo decomposta, é também sub-dividida em outras quatro seções e
assim sucessivamente até que se alcance o limite estipulado de divisão representada na figura
49
21.
Figura 21 - Decomposição Sucessiva
Os resultados da tesselação são então armazenados no índice, uma árvore quaternária
cujos nodos, segundo McGill Project 32 (1999), ou são folhas (nodos sem filhos) ou têm
quatro filhos ordenados (ver Figura 22) e a cada folha pode ser associada uma página do
disco. As seções podem ser rapidamente examinadas para verificar alguma interação entre os
layers.
Figura 22 – Exemplo de uma referência de objetos no índice Quad-tree
Fonte: Adaptado [RSV 02]
As seções são linearmente ordenadas de modo a preservar a proximidade espacial.
Existem alguns algoritmos para ordenação tais como as curvas de Peano, Hilbert e Morton. A
Figura 23 mostra a curva de Morton que é utilizada na ordenação dos Quad-trees no ORACLE
SPATIAL, e que também direcionam o caminhamento na árvore.
50
Figura 23 – Caminhamento na Quad-tree: Ordem proposta por Morton
Fonte: Extraído de Oracle Spatial User's Guide and Reference [ORA 01]
4.1.1.1 Critérios de Parada para a Construção do Índice
Segundo McGill Project 32 (1999), geralmente o limite imposto de subdivisão da
Quad-tree está ligado com a capacidade de armazenamento disponível e o tempo de
processamento requerido. Segundo Rigaux, Scholl e Voisard (2002), a divisão é feita até que
o número de seções de cada quadrante seja menor que a capacidade de uma página de
memória. Segundo Oracle Spatial User's Guide and Reference (2001), o limite pode estar
relacionado com a resolução (da seção), ou seja, pode-se determinar um tamanho fixo de
resolução da seção como único fator de controle, assim, a tesselação termina quando o espaço
de coordenadas pode ser decomposto em um número específico de vezes, tendo cada seção o
mesmo tamanho. Ainda segundo Oracle Spatial User's Guide and Reference (2001), índices
espaciais utilizando seções de tamanho fixo facilitam a comparação entre duas geometrias,
que interagem quando compartilham uma ou mais seções.
4.1.1.2 Exemplo de como criar a tesselação
Os limites dados do sistema coordenado de -180 a 180 na longitude, e -90 a 90 na
latitude, o tamanho de uma telha no equador da terra no nível 32 são aproximadamente 9mm
por 4mm. É importante recordar que as telhas estão geradas somente onde há uns dados. Na
hora de criar a indexação será escolhido um nível da telha (ou o tamanho da telha) para um
índice espacial do quadtree.
No exemplo da figura 24, um DBA determinou que um nível 3 é apropriado para esta
geometria. O nível 3 é útil para finalidades ilustrativas somente. Um nível 3 é quase nunca
apropriado a um telhado de uma camada espacial.
Neste exemplo, 16 telhas do nível 3 são geradas para a geometria. As telhas que
cobrem qualquer parte da geometria que está sendo posicionada são armazenadas na coluna
de SDO_CODE da tabela espacial do índice.
Note que apesar da representação das 64 telhas apenas 16 telhas no qual estão os dados
51
são armazenadas na tabela espacial.
Figura 24 - Representação geométrica do Quadtree
Quando índice espacial do Quadtree é criado, uma tabela no oracle com três colonas
será criada:
•
SDO_CODE: onde é associada a geometria à telha;
•
SDO_ROWID: Este é um ponteiro para trás do ROWID (campo do status que
informa aproximadamente se cada telha cobre a parcela do limite da geometria).
Cada geometria pode ser associada com mais de uma telha, o ROWID de cada
geometria pode parecer na tabela espacial do índice mais de uma vez;
•
SDO_STATUS: É um marcador para se a telha é uma telha interior ou uma telha
no limite da geometria que esta associada.
4.1.1.3 Vantagens e Desvantagens
A eficiência deste método, segundo Oracle Spatial User's Guide and Reference
(2001), depende do número de níveis determinado e da variação dos tamanhos das geometrias
dos layers. Quando os mesmos tamanhos de seções são utilizados para cobrir geometrias de
tamanhos pequeno e grande, um grande número de seções será necessário no segundo caso.
Entretanto, se o tamanho da seção for muito grande, essas seções não representarão
geometrias pequenas muito bem. A escolha do tamanho da seção traz conseqüências diretas
52
nos resultados das consultas espaciais.
Segundo Daniel Abugov em Oracle Spatial Discussion Forum [ORA 04], o uso do
índice Quad-tree é indicado para casos em que ocorrem atualizações constantes no banco de
dados, pois o índice continua utilizável por bastante tempo, sem a necessidade de
reconstrução, mesmo havendo atualizações.
Uma desvantagem desse método é que, para geometrias do tipo polígono ou linha, a
duplicação das referências dos objetos ocorre em vários níveis, uma vez que esses objetos
podem ocupar mais de uma seção no espaço.
4.1.2 R-tree
Enquanto os índices do quadtree podem somente posicionar dados bidimensionais, o
indice do R-tree pode ser feito em duas, três, ou quatro dimensões.
Os índices do R-tree são baseados em retângulos limitando do mínimo dados
bidimensionais. Isto significa que um retângulo está construído em cada geometria baseada
nos valores mínimos e máximos de cada dimensão. Ao posicionar dados tridimensionais,
cada entrada de índice é baseada em um volume mínimo ao redor de cada geometria.
Depois que todos os retângulos limitando o mínimo (ou os volumes) são
construídos, os dados estão classificados em uma estrutura de árvore. O índice é
construída e escrita em uma tabela.
Exemplificando conforme a figura 25, o índice R-tree construirá um retângulo mínimo
(o limitando) em torno da geometria. No nível mais baixo de um índice da R-tree, há um
ponteiro da geometria (ROWID) e os MBR (retângulos) associados com essa geometria.
Note que ao contrário dos índices do Quadtree, os índices da R-tree pela definição
começarão somente com uma entrada de índice para cada geometria.
53
Figura 25 - Retângulo limitando a geometria
Depois que o MBR é construído em torno de cada geometria, os dados são agrupados
de tal forma que as geometrias que estão perto das extremidades uma das outras fiquem igual
ao exemplo da figura 26.
Exemplificando observe que a geometria 1 e 2 se agrupam formando a 3 e 4 forma b,
a e b agrupados forma R. 5, 6 e 7 forma S, 8 e 9 forma d e R, S e d formam root, construindo
assim o R-tree.
Figura 26 – Decomposição R-tree (Árvore Balanceada)
Fonte: Extraído de Oracle Spatial Training Guide (OST 04)
No oracle spatial a indexação R-tree é limitada em 35 nós por folhas, assim sendo
54
caso as geometrias que estejam próximas uma das outras ultrapassem esse valor o oracle ira
criar um novo nó gerando outra folha, assim sucessivamente até que todas as geometrias
estejam na arvore.
Segundo [RSV 02], diferente dos métodos apresentados anteriormente, na estrutura do
R-tree a referência de um determinado objeto aparece em apenas um nodo folha. Entretanto,
os retângulos associados com os nodos internos, não podem ser considerados como partições
exatas do espaço, uma vez que pode haver sobreposição desses retângulos.
4.1.2.1 Critérios de Parada para a Construção do Índice
O critério de parada depende do número de geometrias no layer.
4.1.2.2 Vantagens e Desvantagens
Segundo Oracle Spatial User's Guide and Reference (2001), o índice R-tree, em
comparação com o índice Quad-tree requer menos capacidade de armazenamento, são fáceis
de serem criados, são mais rápidos em consultas que levam em consideração o vizinho mais
próximo, mas não é uma boa escolha se houver grande quantidade de atualizações nos dados
espaciais, o que não afeta a performance do Quad-tree.
Segundo Daniel Abugov em Oracle Spatial Discussion Forum [Ora 04], no ORACLE
SPATIAL, para uma utilização completa das funcionalidades do sistema, o índice R-tree é o
mais indicado se os dados envolvidos na consulta forem geodésicos, pois este índice garante
uma resposta mais exata quando se leva em consideração a curvatura da Terra.
4.1.2.3 Tipo de Geometria Associado
O índice R-tree, em adição ao Quad-tree, pode ser utilizado para indexação de pontos
3D e 4D, como nos problemas críticos de exploração de óleo, arquitetura, engenharia e
aplicações científicas. No caso de objetos 3D a aproximação é em relação ao mínimo volume
envolvente (MVE), mas serão considerados neste trabalho apenas objetos 2D.
4.1.2.4 Quadtrees ou R-trees?
Alguns pontos positivos e negativos do R-Tree:
•
R-tree é mais fácil de criar, não precisa de nenhum conhecimento prévio das
geometrias para criar o índice;
•
R-tree é mais rápido em localizar seu vizinho, pois ele esta no mesmo ramo da
árvore, precisando apenas ir um nível acima para localizar seu vizinho;
•
Usa menos armazenamento, pois cada MBR é uma geometria;
55
•
Suportam mais de duas dimensões;
•
Os índices da R-tree são os únicos tipos do índice que tem a sustentação geodésica
completa;
•
Caso houver necessidade de inserir ou atualizar os dados espaciais o R-tree pode
exceder o tempo de reindexação, pode ser lenta a reconstrução do novo índice.
Talvez seja melhor excluir e criar novamente o índice;
Alguns pontos positivos e negativos do Quadtree:
•
Mantêm sua eficiência após manutenções como inserir/excluir/atualizar
•
Requer um prévio conhecimento das geometrias para que seja escolhido o nível da
telha, a fim de criar o índice;
•
É bidimensional, só suporta duas dimensões;
•
Não pode ser geodésico: Os índices geodésicos incluem uma terceira dimensão no
índice;
•
Não suporta a pergunta do vizinho o mais próximo incremental, essa pergunta
obrigara o banco a fazer cálculos de comparação que ira elevar muito a procura,
tornando essa consulta muito lenta;
4.1.2.5 Sintaxe para criar um índice
A sintaxe requerida para construir um novo índice é INDEXTYPE IS
MDSYS.SPATIAL_INDEX.
4.1.2.5.1 Criando um índice R-tree:
CREATE INDEX <index-name> ON <table-name> (<column-name>) INDEXTYPE IS
MDSYS.SPATIAL_INDEX;
•
<index-name> : nome do índice, não pode exceder 30 caracteres e tem que
começar com um caráter alfabético;
•
<table-name> : é o nome da tabela que contem a coluna espacial a ser
posicionada;
•
<column-name> : é o nome da coluna do tipo MDSYS.SDO_GEOMETRY no
qual ficam os objetos espaciais.
4.1.2.5.2 Criando um índice Quadtree:
CREATE INDEX <index-name> ON <table-name> (<column-name>)INDEXTYPE IS
MDSYS.SPATIAL_INDEX
[PARAMETERS
(
'SDO_LEVEL
=
<level>,
56
SDO_COMMIT_INTERVAL = <n>, [<storage_parameters> = <param_value> ... ')];
•
<level> : Este número define a parcela fixa do nível da telha do índice espacial,
SDO_LEVEL=1 tem telhas o tamanho de 1/4 de sistema coordenado,
SDO_LEVEL=2 tem telhas o tamanho de 1/16 de sistema coordenado, e assim por
diante;
•
<n>: SDO_COMMIT_INTERVAL=N onde os resultados da indexação são
gravados à tabela espacial logo depois que cada n fileiras da tabela subjacente foi
processado. O valor de default para SDO_COMMIT_INTERVAL é -1, que
significa gravar os resultados da indexação espacial depois que todos as
geometrias forem posicionadas;
•
<storage_parameters> : Determina os parâmetros de armazenamento usado na
construção da tabela espacial dos dados do índice.
57
5 ORACLE SPATIAL
O ORACLE é um SGBD convencional da Oracle Corporation que, através do módulo
Spatial, suporta aplicações SIG. O ORACLE SPATIAL possui Arquitetura Integrada,
implementa o Modelo Objeto-Relacional, e atualmente se encontra na versão 10g.
5.1 MODELO CONCEITUAL
Segundo Sharma (2001), o Modelo de Dados do ORACLE SPATIAL, como mostra a
Figura 27, é uma estrutura hierárquica consisti de elementos, geometrias e camadas (layers),
que correspondem à representação dos dados espaciais. Layers são compostos de geometrias,
que por sua vez são compostas por elementos. Mostra o um exemplo do Estado do Hawaii de
geometria que consiste de um conjunto de elementos (ilhas).
Um elemento é o componente básico de construção das geometrias do ORACLE
SPATIAL, ou seja, são os tipos primitivos de dados suportados pelo ORACLE e que serão
apresentados adiante. Os elementos são construídos utilizando-se coordenadas e, dependendo
do tipo do elemento, pode ter um ou vários pares de coordenadas.
Uma geometria é uma representação de um objeto espacial, modelada como um
conjunto ordenado de elementos primitivos (homogêneos ou heterogêneos). Cada geometria
possui um identificador único, conhecido como Numeric Geometry Identifier (GID), que
associa a geometria com o correspondente conjunto de atributos.
Um layer é uma coleção heterogênea de geometrias que compartilham o mesmo
conjunto de atributos.
58
Figura 27 - Modelo de Dados do ORACLE SPATIAL.
Fonte: Adaptado de Oracle Spatial Training Guide [OST 04]
5.2 SISTEMAS DE COORDENADAS
Os sistemas de coordenadas são usados para identificar onde um objeto está no espaço.
Estas posições do objeto são consideradas absolutas em relação ao sistema de coordenadas
que esta sendo usado.
São usados também para identificar onde um objeto esta em relação a outros objetos.
Os dados espaciais podem ser associados com um sistema coordenado cartesiana,
geodésico (geográfico), projetado, ou local:
•
As coordenadas cartesianas: são as coordenadas que medem a posição de um ponto
de uma origem definida ao longo da trajetória que são perpendiculares no espaço
bidimensional ou tridimensional representado.
•
As coordenadas geodésicas: (chamadas às vezes coordenadas geográficas) são
coordenadas angulares (longitude que especifica posições para o leste e o oeste do
meridiano principal e latitude que especifica posições note de sul do equador),
relacionadas próximas às coordenadas polares esféricas, e são definidas relativas a
uma referência geodésica da terra particular. (A referência geodésica de A é meios de
representar a figura da terra e é a referência para o sistema de coordenadas
geodésicas.).
•
As coordenadas projetadas: são as coordenadas cartesianas planas que resultam da
execução do traçado matemático de um ponto na superfície da terra a um plano. Há
muitos tipos de coordenadas, cada um usado para uma finalidade particular.
59
•
As coordenadas locais: são coordenadas cartesianas em um sistema coordenado da
não georeferênciado. Os sistemas coordenados locais são usados frequentemente para
aplicações do CAD e exames do local.
O oracle spatial fornece 950 (novecentos e cinqüenta) sistemas de coordenadas
predefinidas.
Todos os sistemas de coordenadas são definidos em uma tabela do dicionário do oracle,
privilégio do usuário MDSYS. O nome da tabela é CS_SRS.
A informação sobre cada sistema de coordenada é codificada usando a notação definida
pelo Open GIS Consortium (OGC). Esta informação é armazenada na coluna de WKTEXT da
tabela de CS_SRS.
Cada sistema coordenado no oracle spatial é atribuído um número original, onde fica
armazenado na coluna de SRID.
Há seis campos na tabela de CS_SRS:
•
O campo de SRID contem o número espacial original do ID da referência. O sistema
espacial da referência é o mesmo que o sistema coordenado;
•
A coluna de WKTEXT apresenta o texto como descrito pelo Open GIS Consortium;
•
O campo de CS_NAME apresenta uma descrição do texto de cada sistema de
coordenadas;
•
O campo de AUTH_NAME apresenta o nome autor do SRID. No oracle spatial, o
AUTH_NAME será sempre oracle. Pode ser usado junto com SRID como um
identificador global para sistemas de coordenadas espaciais do oracle;
•
O campo de AUTH_SRID é um número que indica como a entrada foi
derivada;
•
O CS_BOUNDS é reservado para o uso do oracle e atualmente NULO.
Eventualmente conterá uma geometria especificada em Wgs-84 (longitude/latitude)
que é o limite válido do polígono para cada projeção. Remanescerá NULO para
dados geodésicos;
•
Cada geometria individual em uma camada deve ter o campo de SDO_SRID dentro
do objeto de SDO_GEOMETRY ajustado. Cada geometria na camada deve ter o
mesmo valor de SRID no campo de SDO_SRID.
60
5.2.1 Associando Geometrias com os sistemas de coordenadas
Há duas entradas requeridas para associar geometrias com um sistema espacial da
referência:
•
Uma definida para todas as geometrias na camada do campo de SRID na visão de
USER_SDO_GEOM_METADATA;
•
Cada geometria individual em uma camada deve ter o campo de SDO_SRID dentro
do objeto de SDO_GEOMETRY. Cada geometria na camada deve ter o mesmo
SRID valor do campo de SDO_SRID;
O valor do campo de SRID na visão de USER_SDO_GEOM_METADATA deve
combinar os valores do campo SDO_SRID para cada geometria na camada. Os campos de
SRID e de SDO_SRID ambos podem ser NULOS, ou podem ser ajustados a um valor válido.
Os valores válidos podem ser encontrados na coluna de SRID da tabela de MDSYS.CS_SRS.
5.2.2 Adicionando informação
Adicionar informação do sistema de coordenadas a uma camada pode requerer diversas
etapas. Uma vista geral do processo deve fazer o seguinte:
•
Se um índice espacial existir na camada, deve ser excluído (SQL> DROP INDEX
STATES_SIDX;);
•
Adicionar um valor para o campo de SRID associado com a camada na
visão
de
(UPDATE
USER_SDO_GEOM_METADATA
USER_SDO_GEOM_METADATA
SET
SRID=8307
WHERE
TABLE_NAME='STATES' AND COLUMN_NAME='GEOM';);
•
Adicionar
um
valor
para
SDO_SRID
a
cada
geometria
na
camada
(SQL> UPDATE STATES A SET A.GEOM.SDO_SRID=8307;);
•
Atualizar os valores para a tolerância e/ou ajustar os limites do sistema de
coordenadas
para
a
camada
requerida
(SQL> UPDATE USER_SDO_GEOM_METADATA A SET A.DIMINFO =
MDSYS.SDO_DIM_ARRAY(MDSYS.SDO_DIM_ELEMENT('Longitude',180,180,0.5),MDSYS.SDO_DIM_ELEMENT('Latitude',-90,90,0.5))
WHERE
TABLE_NAME = 'STATES' and COLUMN_NAME = 'GEOM';);
•
Se
houver
um
índice
espacial
na
camada,
reconstruí-la
(SQL> CREATE INDEX STATES_SIDX ON STATES(GEOM) INDEX_TYPE IS
MDSYS.SPATIAL_INDEX;).
61
O oracle spatial requer que os limites do sistema coordenado estejam ajustados a 180° a 180° (longitude) e -90° a 90° (latitude). Adicionalmente, o valor da tolerância deve ser
especificado nos medidores para sistemas de coordenadas geodésicos.
Depois que todas as mudanças foram feitas para adicionar os sistemas de coordenadas
apropriadas, à informação deve ser passada ao metadados da geometria em questão, podendo
em seguida reconstruir o índice espacial.
5.3 MODELO DE REPRESENTAÇÃO
5.3.1 Representação da Geometria
O ORACLE SPATIAL suporta três tipos primitivos de geometrias (ponto, linha e
polígono) e uma coleção de outras geometrias compostas desses tipos primitivos, tais como:
arcos circulares, círculos, linhas compostas e polígonos compostos, como mostram na figura
28.
Pontos são elementos compostos entre dois e quatro coordenadas. Quando o ponto é
representado apenas pelo par (X, Y), freqüentemente o X corresponde à latitude do ponto e o
Y corresponde à longitude do ponto, num determinado sistema de coordenadas.
Linhas são compostas de uma seqüência ordenada de dois ou mais pontos que definem
os segmentos de linha. Auto-cruzamento de linhas são suportados, mas o polígono formado
no cruzamento não tem um interior implícito. Arcos também não têm nenhum interior
implícito. As coordenadas podem ser armazenadas seguindo-se a ordem do sentido horário ou
anti-horário.
Polígonos são compostos de linhas conectadas que formam um anel, e cujo interior do
polígono é implícito. Polígonos podem conter “buracos” que são construídos, por definição,
internos aos polígonos. Neste caso, o anel exterior e o anel interior do polígono são
considerados como dois elementos distintos que juntos formam um polígono complexo.
Ambos os tipos, exterior e interior, devem ser armazenados seguindo a ordem do sentido
horário. Auto-cruzamento de polígonos não é permitido, embora o seja para linhas. Mas, se
uma linha cruzar ela mesma, então ela não pertence a um polígono.
Uma linha composta é uma combinação de segmentos retos e curvos. Seguem as
mesmas restrições para linhas.
Nos polígonos compostos algumas extremidades podem ser formadas por linhas retas
e outras por linhas curvas. Seguem a mesma semântica do tipo polígono.
62
Figura 28 – Tipos de Dados Espaciais Primitivos do Oracle Spatial
Fonte: Oracle Spatial Training Guide (OST 04)
5.3.2 Representação da Topologia
O oracle spatial não implementa a topologia arco-nó-polígono explicitamente, tendo
dessa forma uma estrutura mais simples. Dada uma consulta espacial envolvendo elementos
de uma mesma tabela, os relacionamentos são testados com operações de geometria
computacional.
5.4 MODELO FÍSICO
5.4.1 Objeto Espacial
No ORACLE SPATIAL, um layer corresponde à tabela espacial, cuja coluna é
declarada como sendo do tipo geometria (MDSYS.SDO_GEOMETRY). Uma geometria é
uma instância do tipo MDSYS.SDO_GEOMETRY e é armazenada em uma linha e uma
coluna espacial (ou layer) particular da tabela.
A sintaxe do MDSYS.SDO_GEOMETRY é apresentada na tabela 4:
Parâmetros de SDO_GEOMETRY Object
SDO_GEOMETRY(SDO_GTYE, SDO_SRID, SDO_POINT, SDO_ELEM_INFO,
63
SDO_ORDINATES)
SDO_GTYPE
NUMBER
Define o tipo de geometria
armazenada no objeto
SDO_SRID
NUMBER
Define o Sistema de Referência
Espacial, através de um
identificador
SDO_POINT
SDO_POINT_TYPE
Utilizado para otimização do
espaço quando a geometria é
Ponto
SDO_ELEM_INFO
SDO_ELEM_INFO_ARRAY
Elemento descritor de ordem
SDO_ORDINATES
SDO_ORDINATE_ARRAY
Contém as coordenadas dos
elementos geométricos
Tabela 4 - Sintaxe do MDSYS.SDO_GEOMETRY
5.4.2 Conjunto de Operações Implementadas
As operações espaciais no ORACLE são implementadas, basicamente, através dos
operadores espaciais (spatial operators) e das funções espaciais (geometry functions). A
Tabela 5 (ORA, 2001) apresenta algumas dessas operações, agrupadas por operadores e
funções, com uma descrição sucinta de suas funcionalidades. A diferença básica entre essas
duas abordagens é que, no segundo caso (funções) não há utilização dos índices das tabelas
espaciais, caso existam. Já para os operadores, é necessária a existência de índices nas tabelas
espaciais e, 82 conseqüentemente, as consultas efetuadas com operadores são mais eficientes.
Uma outra diferença é que os operadores só podem ser utilizados na cláusula WHERE de uma
consulta SQL, enquanto que as funções podem ser utilizadas tanto na cláusula WHERE como
na cláusula SELECT.
OPERADORES ESPACIAIS
SDO_NN
Determina os vizinhos mais próximos a uma
geometria
SDO_NN_DISTANCE
Determina quão distante estão os objetos
retornados pelo operador SDO_NN de uma
dada geometria
SDO_RELAT
Determina se duas geometrias se interagem (ou
64
não) de algum modo
SDO_WITHIN_DISTANCE
Determina se uma geometria está a uma dada
distância de outra
FUNÇÕES ESPACIAIS
SDO_GEOM.RELATE
Determina como duas geometrias se interagem
SDO_GEOM.SDO_AREA
Calcula a área de um polígono de duas
dimensões
SDO_GEOM.SDO_BUFFER
Gera um buffer (em forma de polígono) ao
redor de uma geometria
SDO_GEOM.SDO_DIFFERENCE
Retorna a geometria correspondente à
diferença topológica entre duas geometrias
SDO_GEOM.SDO_DISTANCE
Calculam a distância entre duas geometrias
SDO_GEOM.SDO_INTERSECTION
Retorna a geometria correspondente à
interseção topológica entre duas geometrias
SDO_GEOM.SDO_LENGTH
Calcula o comprimento ou perímetro de uma
geometria
SDO_GEOM.SDO_UNION
Retorna a geometria correspondente à
união topológica entre duas geometrias
SDO_GEOM.VALIDATE_GEOMETRY
Determina se uma geometria é válida
SDO_GEOM.VALIDATE_LAYER
Determina se todas as geometrias armazenadas
em uma coluna espacial são válidas
SDO_GEOM.WITHIN_DISTANCE
Determina se uma geometria está a uma
distância específica (distância Euclidiana) de
outra
Tabela 5 – Operadores Espaciais e Funções Espaciais.
Além das funcionalidades apresentadas acima, o ORACLE SPATIAL ainda possui
outros recursos, como por exemplo, aqueles específicos para suportar aplicações que utilizam
redes lineares, tais como rotas de ruas (para internet), transportes, utilities e redes de
telecomunicações.
5.4.3 Semântica das operações
A seguir, são apresentados os relacionamentos topológicos utilizados no operador
SDO_RELATE e na função SDO_GEOM.RELATE, extraídos de Oracle Spatial User’s
65
Guide and Reference [ORA 01]:
•
TOUCH: dois objetos se tocam quando suas fronteiras se interceptam, mas o
interior não. Em outras palavras, suas fronteiras compartilham pelo menos um
ponto comum, mas não há nenhum ponto comum a ambos os interiores.
•
OVERLAPBDYDISJOINT: dois objetos têm um relacionamento do tipo
“OVERLAPBDYDISJOINT” (Overlap Boundaries Disjoint) quando o interior de
um objeto intercepta a fronteira e o interior do outro, mas as duas fronteiras não se
interceptam. É aplicável quando o teste é efetuado entre objetos do tipo linha e
polígono.
•
OVERLAPBDYINTERSECT: dois objetos têm um relacionamento do tipo
“OVERLAPBDYINTERSECT” (Overlap Boundaries Intersect) quando a
fronteira e o interior de ambos se interceptam. É aplicável quando ambos os
objetos testados são do tipo polígono.
•
EQUAL: dois objetos são iguais quando elas possuem a mesma fronteira e o
mesmo interior.
•
INSIDE: ocorre quando o primeiro objeto está totalmente dentro do segundo e
suas fronteiras não se tocam. É o oposto de CONTAINS.
•
CONTAINS: ocorre quando o segundo objeto está totalmente dentro do primeiro e
suas fronteiras não se tocam.
•
COVERDBY: ocorre quando o primeiro objeto está totalmente dentro do segundo
e suas fronteiras se tocam em um ou mais pontos. É o oposto de COVERS.
•
COVERS: ocorre quando o segundo objeto está totalmente dentro da primeira e
suas fronteiras se tocam em um ou mais pontos. É o oposto de CONTAINS.
•
ANYINTERACT: dois objetos têm algum tipo de interação quando não são
disjuntos.
•
DISJOINT: dois objetos são disjuntos quando nem o interior nem a fronteira de
ambos se interceptam, ou seja, não há relacionamento entre eles.
5.4.4 Métodos de Indexação
O ORACLE SPATIAL fornece duas opções de índice: o Quad-tree e o R-tree.
Segundo Sharma (2001), o índice R-tree pode ser utilizado em lugar do Quad-tree, ou em
conjunto com ele. Em adição, o R-tree pode ser utilizado para dados 3D e 4D.
66
5.4.5 Linguagens de Consulta e Ambiente de Consulta Espacial
A Linguagem de Consulta do ORACLE SPATIAL é a SQL. O ORACLE SPATIAL
possui um ambiente de Consulta Espacial muito restrito (Oracle Spatial Index Advisor), onde
é possível fazer consultas envolvendo apenas um layer. A interface de consulta espacial do
ORACLE SPATIAL está selecionada (na cor branca), os Distritos que têm alguma interação
com a janela definida pelo usuário. As consultas SQL mais elaboradas são formuladas
utilizando-se uma das interfaces SQL*PLUS ou SQLPLUS Worksheet.
Os comandos SQL podem ser embutidos na Linguagem de Programação do ORACLE
(PL/SQL) ou, ainda, em Linguagem C/C++.
Para visualização dos resultados das consultas, utiliza-se o Enterprise Manager
Console, ou outro visualizador externo, compatível com o ORACLE. O Enterprise Manager
Console é o ambiente de gerenciamento de tabelas (tanto espaciais quanto não espaciais) do
ORACLE.
5.5 CAMADAS ESPACIAIS
Uma camada é uma coleção de geometrias que têm a mesma característica geométrica.
Por exemplo, uma camada no sistema de informação geográfica pode incluir características
topográficas, quando outra descreve a densidade demográfica, e uma terceira descreve a rede
das estradas e das pontes em uma área. As geometrias índices espaciais associadas a cada
camada, são armazenadas na base de dados em tabelas especificas.
A criação de layers (camadas) se dá através de um tipo de dados, SDO_GEOMETRY.
O objeto SDO_GEOMETRY conterá uma geometria inteira em um registro, uma
única coluna de uma tabela do oracle.
O objeto SDO_GEOMETRY tem cinco campos. Dois dos do tipo numérico e outros
três do tipo de dados do objeto. O exemplo da figura 29 mostra como criar uma tabela
chamada STATES com uma coluna SDO_GEOMETRY.
•
O objeto SDO_POINT_TYPE (x, y e z do tipo number) é um tipo de dado dentro
do objeto SDO_GEOMETRY, e não deve ser usado fora do objeto
SDO_GEOMETRY (isto é, não criar tabelas com uma coluna do tipo de
SDO_POINT_TYPE).
•
SDO_ELEM_INFO_ARRAY (varray (1048576) of number) é um tipo de dado
dentro do objeto de SDO_GEOMETRY. Descreve um ou mais elemento
armazenado nesta geometria.
67
•
SDO_ORDINATE_ARRAY (varray (1048576) of number) é um tipo de dado
dentro do objeto SDO_GEOMETRY. Conterá todas as ordenadas para todos os
elementos que fazem à geometria.
Figura 29 - Objeto SDO_GEOMETRY
O objeto de SDO_GEOMETRY é de propriedade do usuário MDSYS. Este é um
usuário do oracle com todos os privilégios.
A seguir serão detalhados os campos do SDO.GEOMETRY.
5.5.1 Objeto sdo_gtype
Este é o primeiro dos cinco campos no objeto de SDO_GEOMETRY.
A composição de um valor do tipo de dado SDO_GTYPE é de quatro dígitos,
representado na figura 30.
Figura 30 - Representação do tipo de dado SDO_GTYPE
O numero de dimensões da geometria são representadas também no SDO_GTYPE. É
68
determinando no primeiro dos quatro dígitos.
Antes do tipo SDO_GTYPE a única maneira de representar as dimensões de uma
geometria, era perguntando para coluna da geometria. Adicionar a dimensão ao SDO_GTYPE
tornou possível eliminar a busca espacial do dicionário para determinar a dimensão de uma
geometria.
A geometria (último algarismo do SDO_GTYPE pode assumir valores de 0 a 7, e
identifica o tipo de geometria armazenado na figura 31) pode ser composta de um ou mais
elemento. Esse tipo de dado armazenado qual é o tipo da geometria no objeto
SDO_GEOMETRY onde os elementos estão representados na figura 31.
69
Figura 31 - Elementos do tipo SDO_GTYPE
5.5.1.1 Sistemas de referencias lineares (LRS)
Referencia linear é um meio natural e conveniente de associar atributos ou eventos às
posições ou às parcelas de uma característica linear. Foi usado extensamente em aplicações do
transporte (como estradas, estradas de ferro, e rotas de trânsito) e em aplicações como os
encanamentos do gás e de óleo.
A vantagem principal de referencia linear é sua potencialidade de encontrar atributos e
70
eventos ao longo de uma característica linear com somente um parâmetro (geralmente uma
medida) em vez de dois (tais como longitude/latitude ou x/y no espaço cartesiano).
As seções de uma característica linear podem ser referenciadas e criadas dinamicamente
indicando as posições do inicio e do fim ao longo da característica sem explicitamente
armazená-las.
A relação de programação de aplicação sistema de referencia linear do (LRS) (API) no
Oracle Spatial fornece potencialidades ao usuário de nível cartográfico. A informação linear
da medida é integrada diretamente na estrutura espacial da geometria no Oracle.
5.5.1.2 Segmentos Geométricos (LRS Segmentos)
Os segmentos geométricos são baseados nos elementos LRS dentro do Oracle Spatial.
Um segmento geométrico pode ser algum dos seguintes:
•
Cadeia de linha: uma geometria contínua (por exemplo, uma estrada simples);
•
Cadeia de varias linhas: não conectada a cadeia de linha (por exemplo, uma estrada
com uma abertura causada por um lago ou uma estrada do desvio)
•
Polígono (por exemplo, uma estrada de corrida ou uma rota de excursão que comece e
termine no mesmo ponto).
Um segmento geométrico deve conter medidas ao menos de inicio e de fim para seus
pontos. As medidas dos pontos de interesse (tais como saídas de estrada) nos segmentos
geométricos podem também ser atribuídas. Estas medidas são atribuídas por usuários ou
derivadas dos segmentos geométricos existentes. A figura 32 mostra um segmento geométrico
com quatro linhas de segmentos e um arco. Os pontos no segmento geométrico são
representados por x, y, m, onde x e y descrevem a posição e o m denota a medida (com cada
valor da medida sublinhado na figura 32).
71
Figura 32 - Segmento Geométrico
5.5.1.3 Forma de Pontos
A forma dos pontos são os pontos que são especificados quando um segmento de LRS é
construído, e que estão atribuídos à informação da medida. No oracle spatial, um segmento
de linha é representado por seus pontos de inicio e fim, e um arco é representado por três
pontos: inicio, meio, e pontos de extremidade do arco. Você deve especificar estes pontos
como forma desses pontos, mas pode também especificar outros pontos enquanto for
necessário informar a medida armazenada para estes pontos (para o exemplo, uma saída no
meio de uma reta na estrada).
Assim, as formas dos pontos podem servir a um ou mais finalidades: para indicar o
sentido do segmento (por exemplo, uma volta ou a curva), para identificar um ponto.
As formas dos pontos não puderam diretamente relacionar-se aos vários pontos ou as
referências em LRS. São usados como pontos de referência internos. A informação da
medida dos pontos da forma é povoada automaticamente quando se usa o segmento de LRS
com o procedimento SDO_ LRS.DEFINE_GEOM_SEGMENT.
5.5.1.4 Sentido de um segmento geométrico
O sentido de um segmento geométrico é indicado do ponto do começo do segmento
geométrico ao ponto da extremidade. O sentido é determinado pela ordem dos vértices (do
ponto de inicio ao ponto de fim) na definição da geometria. As medidas dos pontos em um
segmento geométrico sempre aumentam ou diminuem ao longo do sentido do segmento
geométrico.
72
5.5.1.5 Medida (Medida Linear)
A medida de um ponto ao longo de um segmento geométrico está a uma distância linear
(na dimensão da medida) ao ponto medido do ponto do começo (para valores maiores) ou do
ponto de extremidade (para valores menores) do segmento geométrico. A informação da
medida não tem que necessariamente ser da mesma escala que a distância. Entretanto, o linear
que traça o relacionamento entre a medida e a distância é sempre preservada.
5.5.1.6 Offset
O offset de um ponto ao longo de um segmento geométrico está a uma distância
perpendicular entre o ponto e o segmento geométrico. Os offsets são positivos se os pontos
estiverem no lado esquerdo ao longo do sentido do segmento e são negativos se estiverem no
lado direito.
A unidade de medida para um offset é a mesma que para o sistema coordenado
associado com o segmento geométrico. Para dados geodésicos, a unidade padrão de medida é
metros.
Na figura 33 mostra como um ponto pode ficar situado ao longo de um segmento
geométrico com informação da medida e do offset. Atribuindo um offset junto com uma
medida, é possível encontrar não somente os pontos que estão no segmento geométrico, mas
também os pontos que são perpendiculares ao segmento geométrico.
Figura 33 - Descrevendo um ponto ao longo de um segmento com uma medida e um offset
5.5.1.7 Povoando uma Medida
Todas as medidas sem valor de um segmento geométrico são povoadas
automaticamente baseadas em sua distribuição da distância. Isto é feito antes de todas as
operações de LRS para segmentos geométricos com as medidas desconhecidas (NULL no
oracle spatial). Os segmentos geométricos resultantes de todas as operações de LRS retornam
a informação da medida associada com os segmentos geométricos. A medida de um ponto no
73
segmento geométrico pode ser obtida baseada em um relacionamento traçando linearmente
entre suas medidas ou posições sabidas precedentes e seguintes. Ver a reapresentação do
algoritmo na figura 34 e no exemplo da figura 35.
Figura 34 - Medidas, distâncias, e seu relacionamento traçando.
Figura 35 - Povoamento da medida de um segmento geométrico
As medidas são espaçadas uniformente entre as medidas atribuídas. Entretanto, as
medidas atribuídas aos pontos de interesse em um segmento geométrico não necessitam ser
espaçadas uniformente.
Além disso, as medidas atribuídas não necessitam mesmo refletir distâncias reais (por
exemplo, podem refletir a evolução do tempo); podem ser todos os valores válidos dentro da
escala da medida. Figura 36 mostra a população da medida que resultam os valores atribuídos
da medida quando não forem proporcionais e não refletirem extensamente a distância.
74
Figura 36 - Medida povoada de forma desproporcional
Em todos os casos, à medida povoada é feita em uma forma incremental ao longo do
sentido do segmento. Isto melhora o desempenho de operações atuais e subseqüentes do LRS.
5.5.1.8 Escala de medida de um segmento geométrico
As medidas do inicio e do fim de um segmento geométrico definem a escala linear da
medida do segmento geométrico. Todas as medidas válidas do LRS de um segmento
geométrico devem cair dentro de sua escala da medida linear.
5.5.1.9 Projeção
A projeção de um ponto ao longo de um segmento geométrico é o ponto no segmento
geométrico com a distância mínima ao ponto especificado. A informação da medida do ponto
resultante é retornada também na geometria do ponto.
5.5.1.10
Ponto de LRS
Os pontos de LRS são pontos com informação linear da medida ao longo de um
segmento geométrico. Um ponto válido de LRS é uma geometria do ponto com informação
da medida.
Todos
os
dados
do
ponto
de
LRS
devem
ser
armazenados
no
SDO_ELEM_INFO_ARRAY e no SDO_ORDINATE_ARRAY, e não podem ser
armazenados no campo de SDO_POINT na definição da geometria de SDO_ do ponto.
5.5.1.11
Características Lineares
As características lineares são todos os objetos espaciais que puderem ser tratados como
um jogo lógico de segmentos lineares. Os exemplos de características lineares são estradas em
aplicações do transporte e encanamentos em aplicações de serviço público da indústria. O
relacionamento de características lineares, de segmentos geométricos, e de pontos de LRS é
mostrado em figura 37, onde uma única característica linear consiste em três segmentos
75
geométricos, e três pontos de LRS são mostrados no primeiro segmento.
Figura 37 - Característica Linear, Segmentos Geométricos, e pontos de LRS
5.5.2 Modelo de Dados do LRS
O modelo espacial dos dados do oracle LRS incorpora a informação da medida em sua
representação da geometria no nível do ponto. A informação da medida é integrada
diretamente no modelo espacial do oracle. Para realizar isto, uma dimensão adicional da
medida deve ser adicionada ao metadados espacial do oracle.
A sustentação espacial do oracle LRS afeta o metadados e os dados espaciais (as
geometrias). A figura 38 mostra como uma dimensão da medida pode ser adicionada às
geometrias bidimensionais no metadados espacial. A dimensão da medida deve ser o último
elemento do SDO_DIM_ARRAY em uma definição espacial do objeto.
Figura 38 - Incluir Dimensão da medida de LRS em Metadados espacial
Após ter adicionado a dimensão nova da medida, as geometrias com informação da
medida, tal como segmentos geométricos e pontos de LRS podem ser representados.
Um exemplo de criar um segmento geométrico com três segmentos de linha é
mostrado em figura 39.
76
Figura 39 - Criando um segmento geométrico
Sempre que um segmento geométrico é definido, suas medidas de inicio e de fim
devem ser definidas ou derivado de algum segmento geométrico existente. As medidas não
definidas o serão povoadas automaticamente.
5.5.2.1 Indexação de dados de LRS
Se os dados de LRS tiverem quatro dimensões (três mais a dimensão de M) e se você
necessitar posicionar todas as três dimensões mais a não medida, você deve usar uma
indexação
espacial
R-tree
para
os
dados,
e
deve
especificar
PARAMETERS('sdo_indx_dims=3') na indicação do CREATE INDEX para assegurar-se de
que as primeiras três dimensões estejam posicionadas.
Nota-se, entretanto, que se for
especificado um valor maior ou igual 3 no sdo_indx_dims, o único operador espacial que
pode ser usado nos geometrias posicionados é SDO_FILTER (o valor padrão para a palavra
chave dos sdo_indx_dims é 2, que fariam com que somente as primeiras duas dimensões
fossem posicionadas.) Por exemplo, se as dimensões forem X, Y, Z, e M, especificar
sdo_indx_dims=3 para posicionar as dimensões de X, de Y, e de Z, mas não a dimensão da
medida (M). Não incluir a dimensão da medida em um índice espacial, pois isto causa um
processando adicional no qual não produzir nenhum benefício.
5.5.2.2 Funções de LRS para formatos 3D
A maioria das funções de LRS têm os formatos que terminam em _ 3D: por exemplo, o
DEFINE_GEOM
_
SEGMENT_3D,
o
CLIP_GEOM_SEGMENT_3D,
o
FIND_MEASURE_3D, e o LOCATE_PT_3D.
Os formatos 3D são suportados somente para a cadeia de linha e geometrias de cadeia
de varias linhas. Os formatos 3D devem ser usados somente quando o objeto da geometria
tem quatro dimensões e a quarta dimensão é a medida (o X, o Y, o Z, e o M), e somente
77
quando se deseja que a função considere as primeiras três dimensões (o X, o Y, e o Z). Se o
formato padrão de uma função (isto é, sem _ 3D) for usado em uma geometria com quatro
dimensões, a função ira considerar somente as primeiras duas dimensões (o X e o Y).
Por exemplo, na figura 40, o seguinte formato considera o X, Y, e as dimensões de Z
do GEOM.
Figura 40 – Função de LRS para formatos 3D com x, y e z
Entretanto na figura 41, o seguinte formato considera as dimensões somente de X e de
Y, e ignora a dimensão de Z, do objeto especificado de GEOM.
Figura 41 - Função de LRS para formatos 3D com x e y
Os parâmetros para o padrão e os formatos 3D de toda a função são os mesmos, e as
notas do uso aplicam-se a ambos os formatos.
Os formatos 3D não são suportados para o seguinte:
•
Dados geodésicos;
•
Polígonos, arcos, ou círculos.
5.5.3 Definindo um segmento geométrico
Há duas maneiras de criar um segmento geométrico com a informação da medida:
1. Construir um segmento geométrico e atribuir medidas explicitamente;
2. Definir um segmento geométrico com começo especificado e terminá-lo, e/ou todas
as outras medidas, em uma ordem ascendente ou descendente. As medidas dos
pontos da forma com medidas sem descrição, desconhecidas, valores nulos no
78
segmento geométrico serão povoadas automaticamente de acordo com suas posições
e distribuição da distância.
A figura 42 mostra maneiras diferentes de definir um segmento geométrico.
Figura 42 - Definir um segmento geométrico
Um segmento de LRS deve ser definido (ou deve já existir) antes que todas as
operações de LRS possam prosseguir. Isto é, o começo, a extremidade, e todas as outras
medidas atribuídas devem ser apresentados para derivar a posição de uma medida
especificada. A informação da medida de pontos intermediários da forma será povoada
automaticamente se os valores da medida não forem atribuídos.
5.5.3.1 Redefinindo um segmento geométrico
Você pode redefinir um segmento geométrico para substituir as medidas existentes de
todos os pontos da forma entre o começo e o ponto de final com as medidas automaticamente
calculadas. Redefinir um segmento pode ser útil se os erros estiverem feitos em um ou mais
atribuição explícita da medida, e se quiser começar com as medidas proporcionais atribuídas.
79
Na figura 43 mostra que a redefinição de um segmento onde, antes, os valores
atribuídos existentes da medida não eram proporcionais.
Figura 43 - Redefinir um segmento geométrico
5.5.3.2 Anexando, dividindo ou concatenando um segmento geométrico.
Para anexar, criar um novo segmento, fora de um segmento geométrico já existente,
como mostrado na figura 44.
No item a, um segmento criado a partir de um segmento maior. O novo segmento tem
seus próprios pontos do inicio e fim, e o sentido é o mesmo que no segmento original.
No item b, mostra a possibilidade de dividir um segmento em duas partes. O sentido
de cada segmento novo segue o do segmento original. Note que as aberturas pequenas entre
segmentos são usadas nas ilustrações de divisão e concatenação. Cada abertura reforça
simplesmente o fato que dois segmentos diferentes são envolvidos. Entretanto, os dois
segmentos (tais como o segmento 1 e o segmento 2, nos itens b e c) são conectados realmente.
A tolerância é considerada em determinar se ou não os segmentos estão conectados.
O item c demonstra que os segmentos geométricos não necessitam ser conectados
espacialmente, embora sejam conectados as medidas do segundo segmento geométrico são
deslocadas de modo que a medida do fim do primeiro segmento seja a mesma como a medida
do começo do segundo segmento. O sentido do segmento que resulta da concatenação está o
mesmo que nos dois segmentos originais.
80
Figura 44 - Anexando, dividindo, e concatenando segmentos geométricos
Medir as atribuições para anexar, dividir ou concatenar operações dentro da figura
13xx é mostrado na figura 45. Sentido da informação e do segmento da medida é preservado
em uma maneira consistente. A atribuição é feita automaticamente quando as operações
terminarem.
Figura 45 - Atribuição da medida em operações geométricas do segmento
81
O sentido do segmento geométrico que resulta da concatenação é sempre o sentido do
primeiro segmento como mostra a figura 46.
Figura 46 - Sentido do segmento com concatenação
Além de explicitamente concatenar dois conectaram segmentos usando a função
SDO_ LRS.CONCATENATE_GEOM_SEGMENTS, você pode executar o agregado
concatenação: isto é, você pode concatenar todos os segmentos geométricos conectados em
uma coluna (camada) que usa a função agregada espacial de SDO_AGGR_LRS_CONCAT.
5.5.3.3 Escala um segmento geométrico
Você pode criar um novo segmento geométrico executando uma operação linear da
escala em um segmento geométrico. Figura 47 mostra o relacionamento traçando para essa.
Figura 47 - Escala de um segmento geométrico
82
Escalar em um segmento geométrico envolve somente rearranjar medidas do segmento
geométrico recentemente criado. Entretanto, se o fator de escala for negativo, a ordem dos
pontos da forma necessita ser invertida de modo que as medidas aumentem ao longo do
sentido do segmento geométrico (que é definido pela ordem dos pontos da forma).
Uma operação da escala pode executar toda a combinação das seguintes operações:
•
Traduzindo a informação da medida (deslocar). (Por exemplo, adicionar o mesmo
valor a Ms e Me para começar M’s e M’e.);
•
Invertendo a informação da medida. (Deixado M’s = Me, M’e = Ms, e Mdeslocar =
0.);
•
Executando a escala simples da informação da medida. (Deixado Mdeslocar = 0.).
5.5.4 Deslocando um segmento geométrico
Você pode criar um segmento geométrico novo executando uma operação de
deslocamento em um segmento geométrico. A figura 48 mostra o relacionamento traçando
para o deslocamento geométrico do segmento.
Figura 48 - Deslocando um segmento geométrico
Na operação de deslocamento mostrada na figura 48, o segmento geométrico
resultante é deslocado por 5 unidades das medidas especificadas do começo e do fim do
segmento original.
5.5.5 Encontrando um ponto em um segmento geométrico
É possível encontrar a posição de um ponto descrito por uma medida e por um offset em
um segmento geométrico (ver figura 49).
83
Figura 49 - Encontrando um ponto ao longo de um segmento com uma medida e um offset
Há sempre uma posição original com uma medida específica em um segmento
geométrico. A ambigüidade levanta-se quando os offsets são dados e os pontos descritos pelas
medidas caem em pontos da forma do segmento geométrico (ver figura 50).
Figura 50 - Ambigüidade na posição que referencia o offsets
Como mostrado na figura 50, um arco offset de da forma de um ponto em um
84
segmento geométrico é um arco em que todos os pontos têm a mesma distância mínima. Em
conseqüência, todos os pontos no arco offset são representados pelo mesmo (medida, offset)
par. Para resolver estes um-para-muitos o problema traça o ponto médio no arco offset ao
inicio.
5.5.5.1 Projetando um ponto em um segmento geométrico
O ponto a ser projetado pode estar dentro ou fora do segmento. Se o ponto estiver no
segmento, o ponto e seu ponto da projeção são o mesmo.
A projeção é uma operação reversa da operação encontrando um ponto (mostrada na
figura 49). Similar a uma operação encontrando um ponto, todos os pontos do arco offset de
um ponto da forma terão o mesmo ponto da projeção (isto é, o ponto próprio da forma),
medindo e deslocando (ver figura 50). Se houver múltiplas projeções, aponta para o primeiro
ponto do inicio (ponto 1 da projeção em ambas as ilustrações na figura 51).
Figura 51 – Projeção de Múltiplos pontos
5.5.5.2 Converter Geometria em LRS
É possível converter geometrias do formato padrão de cadeias de linha no formato de
LRS, e vice-versa. O uso principal dessa função de conversão ocorrerá provavelmente se
houver uma quantidade grande de linha, em que a conversão nesse caso é uma alternativa,
criar todos os segmentos em uma LRS manualmente. Entretanto, se você necessitar converter
um segmento de LRS a uma cadeia de linha padrão para determinadas aplicações, isso
também é possível.
As funções fornecidas para conversão são:
•
Linha individual cadeias ou pontos: Para a conversão do formato padrão ao formato de
LRS, uma dimensão da medida (nomeada M por padrão) é adicionada, a informação
da medida é fornecida para cada ponto. Para a conversão do formato de LRS ao
85
formato padrão, a dimensão e a informação da medida são removidos. Em ambos os
casos, o metadados da informação dimensional (DIMINFO) na vista de
USER_SDO_GEOM_METADATA não é afetado;
•
Camadas (todas as geometrias em uma coluna): Para a conversão do formato padrão
ao formato de LRS, uma dimensão da medida (nomeada M por padrão) é adicionada,
mas nenhuma informação da medida é fornecida para cada ponto. Para a conversão do
formato de LRS ao formato padrão, a dimensão e a informação da medida são
removidos. Em ambos os casos, o metadados da informação dimensional (DIMINFO)
na vista de USER_SDO_GEOM_METADATA é modificado conforme a necessidade;
•
Informação dimensional (DIMINFO): O metadados da informação dimensional
(DIMINFO) na vista de USER_SDO_GEOM_METADATA é modificado conforme a
necessidade. Por exemplo, converter uma disposição dimensional padrão com
dimensões de X e de Y (SDO_DIM_ELEMENT) a uma disposição dimensional de
LRS faz com que uma dimensão de M (SDO_DIM_ELEMENT) seja adicionada.
A figura 52 mostra a adição da informação da medida quando uma cadeia de linha padrão
for
convertida
a
uma
linha
corda
de
LRS
(que
usa
a
função
de
SDO_LRS.CONVERT_TO_LRS_GEOM). Os valores da dimensão da medida são
sublinhados na figura 52.
Figura 52 - Conversão do padrão para cadeia de linhas LRS
Para conversões da geometria de ponto, o atributo SDO_POINT na geometria
retornada é afetado como segue:
•
Se um ponto padrão for convertido a um ponto de LRS, informação do atributo de
SDO_POINT na geometria da entrada é usada para ajustar os atributos de
SDO_ELEM_INFO e de SDO_ORDINATES na geometria resultante, e o atributo
de SDO_POINT na geometria resultante são ajustados a null;
•
Se um ponto de LRS for convertido a um ponto padrão, a informação dos atributos
SDO_ELEM_INFO e SDO_ORDINATES na entrada a geometria é usada para
86
ajustar a informação do atributo de SDO_POINT na geometria resultante, e os
atributos de SDO_ELEM_INFO e de SDO_ORDINATES na geometria resultante
são ajustados a null.
5.5.5.3 Valores da tolerância com funções de LRS
Muitas funções de LRS requerem que seja especifica um valor de tolerância ou um ou
mais disposições dimensionais. Assim, é possível todas as dimensões da não-medida ou usar a
tolerância associada a cada dimensão da não-medida na disposição dimensional ou nas
disposições. A tolerância é aplicada somente à parcela da geometria dos dados, não à
dimensão da medida. O valor da tolerância para dados geodésicos está nos medidores, e para
dados não-geodésicos está na unidade de medida associada com os dados.
Se os resultados de funções de LRS parecer impreciso ou incorreto, você pode
necessitar especificar um valor menor da tolerância.
Para operações de anexo e operações offset, se o segmento retornado tiver quaisquer
pontos da forma dentro do valor da tolerância do segmento geométrico da entrada que seria de
outra maneira o ponto de começo e/ou de extremidade do segmento retornado. Isto é feito
para assegurar-se de que a geometria resultante não contenha nenhum vértice redundante, que
faz com que a geometria fosse inválida. Por exemplo, suponha que a tolerância associada com
o segmento geométrico (dados não-geodésicos) é 0.5 (mostrado na figura 53).
Figura 53 - Segmento para a operação de anexo afetada por Tolerância
Se uma operação de anexo pedir para retornar o segmento entre a medida avaliado 0
(Inicio Ponto) e 61.5 (figura 53), e se a distância entre os pontos associar com os valores 61.5
e 61.257 da medida, for menor do que o valor da tolerância 0.5, o ponto de extremidade do
segmento retornado é (35, 10, 61.257).
5.5.5.4 Exemplo de funções de LRS
Este exemplo usa a estrada que é ilustrada na figura 54.
87
Figura 54 - Exemplo Simplificado de LRS: Estrada
A estrada (a rota 1) começa no ponto 2.2 e termina no ponto 5.14, segue o trajeto
mostrado na figura 51, e tem seis pontos de entrada a saída (saída 1 a saída 6). Cada unidade
no gráfico representa uma unidade de medida, e assim à medida do começo termina em 27 (o
segmento da saída 5 à saída 6 que é a hipotenusa de um triângulo da direita 3-4-5).
Cada fileira da tabela 6 mostra característica estrada e a característica de LRS que lhe
correspondem ou que podem ser usadas:
Característica da Estrada
Rota, estrada, ou rua nomeada.
Característica de LRS
Segmento de LRS, ou característica linear
(jogo lógico dos segmentos).
Marcador da milha ou do quilômetro
Medida
Relatório de acidente e seguir da posição
Função SDO_LRS.LOCATE_PT
Zona da construção (parcela de uma
Função
estrada)
SDO_LRS.CLIP_GEOM_SEGMENT
Extensão da estrada (que adiciona no
Função
começo ou extremidade) ou combinação
SDO_LRS.CONCATENATE_GEOM_
(que designa ou que rebatiza duas estradas
SEGMENTS
88
que se encontram com como uma estrada)
Reconstrução ou divisão da estrada (tendo
Procedimento
por resultado duas estradas nomeadas de
SDO_LRS.SPLIT_GEOM_SEGMENT
uma nomeada estrada)
Encontrando o ponto o mais próximo na
Função SDO_LRS.PROJECT_PT
estrada a um ponto fora da estrada (tal como
um edifício)
Trilho ou cerca do protetor ao lado de uma
Função
estrada
SDO_LRS.OFFSET_GEOM_SEGMENT
Tabela 6 - Características da estrada e contrapartes de LRS
5.5.6 Métodos em SDO_GTYPE
Os métodos disponíveis para analisar gramaticalmente a informação fora do
SDO_GTYPE são:
•
GET_DIMS () retorna a dimensão dos retornos da geometria. Exemplo: select
a.geom.get_dims() state_dims from states s where a.state = ‘Delaware’;
•
GET_GTYPE () retorna o GTYPE que descreve o tipo da geometria que está
sendo armazenado. Exemplo: select s.geom.get_gtype state_gtype from states s
where s.states = ‘Delaware’;
•
GET_LRS_DIM () retorna a posição de LRS da geometria (se a consulta retorna 0,
a geometria não é conhecida para ser referenciada como linear).Exemplo: select
s.geom.get_lrs_dim() state_lrs_dim from states s where s.state = ‘Delaware’;.
Muitas vezes é melhor analisar gramaticalmente o SDO_GTYPE em sua aplicação em
vez de usar os métodos de GET_DIMS ou GET_LRS_DIM. Estes métodos retornarão o
mesmo valor para cada geometria na camada. Por exemplo, cada geometria em uma camada
deve ter a mesma dimensão, GET_DIMS retornará o mesmo valor para cada fileira em uma
camada. Para reduzir o tráfego da rede (isto é, menos colunas em sua lista selecionada),
analisar gramaticalmente o SDO_GTYPE em sua aplicação rápido do que usar GET_DIMS
ou GET_LRS_DIM na lista de seleção.
5.5.7 Campo de SDO_SRID
Este é o segundo campo no objeto de SDO_GEOMETRY. É como se associa os dados
com um sistema de coordenadas. O oracle spatial tem uma tabela do dicionário chamada
MDSYS.CS_SRS que lista todos os sistemas de coordenadas suportados. O valor que você
89
ajusta o campo de SDO_SRID deve combinar com um valor na coluna de SRID na tabela de
MDSYS.CS_SRS, ou seja não NULO. Todas as geometrias em uma coluna devem ter o
mesmo SDO_SRID.
5.5.8 Campo de SDO_POINT
Este é o terceiro campo do objeto de SDO_GEOMETRY. Esta é uma maneira otimizada de
armazenar um único ponto no objeto de SDO_GEOMETRY. O atributo de SDO_POINT é
definido usando o tipo do objeto de SDO_POINT_TYPE, onde tem os atributos X, Y, e Z,
todos do tipo NÚMERO. Se o SDO_ELEM_INFO e o SDO_ORDINATES são ambas null, e
o atributo de SDO_POINT é não nulo, então o X e o Y são as coordenadas de uma geometria
do ponto. Se não, o atributo de SDO_POINT é ignorado por Oracle Spatial. Você deve
armazenar as geometrias do ponto dentro do atributo SDO_POINT para o armazenamento
opcional; e se você tiver somente o ponto geométrico em uma camada, recomenda-se
fortemente que você armazena o ponto geométrico no atributo de SDO_POINT.
5.5.9 Campo SDO_ELEM_INFO
Este é o quarto campo no objeto de SDO_GEOMETRY. Uma geometria pode conter
um ou mais elemento. Se a geometria não for um único ponto armazenado no campo de
SDO_POINT, então uma descrição de cada elemento da geometria está armazenada no campo
de SDO_ELEM_INFO.
O campo de SDO_ELEM_INFO é um VARRAY de NUMBER. As entradas no
campo de SDO_ELEM_INFO devem ser consideradas nos grupos de três números:
1. Ordenada deslocada: Uma geometria pode ser composta de um ou mais elemento.
Este é um índice no campo de SDO_ORDINATES, descrito mais adiante. O valor
do índice corresponde à primeira ordenada de um elemento. O primeiro elemento
de uma geometria começará sempre na posição 1.
2. Tipo do elemento: Este é o tipo do elemento (ponto, linha, polígono, e outros). O
tipo do elemento é chamado também do TYPE.
3. Interpretação: A interpretação possui um significado diferente, dependendo do
valor do tipo do elemento. Podem significar que todos os pontos para este
elemento estão conectados com as linhas retas, arcos circulares, ou pôde significar
que este valor é um encabeçamento para um elemento composto.
90
5.5.10 Campo de SDO_ORDINATES
Este é o quinto campo no objeto de SDO_GEOMETRY. Este campo é um VARRAY
de NUMBER. Contém todas as ordenadas dos elementos descritos pelo campo de
SDO_ELEM_INFO.
5.5.11 Elementos SDO_GEOMETRY
Um exemplo para armazenar um único ponto no campo de SDO_POINT (Se você
estiver armazenando um ponto 2D no campo de SDO_POINT, ajustar o valor de z para null):
INSERT
INTO
TELEPHONE_POLES
MDSYS.SDO_GEOMETRY
VALUES
(2001,
null,
(attribute_1,
attribute_n,
MDSYS.SDO_POINT_TYPE(-
75.2,43.7,NULL), null, null));
Se você usar uma indexação espacial quadtree, o índice spatial será 2D (isto é,
somente x e y são posicionados). Os filtros preliminares de Quadtree são 2D. Se for usado
índices espaciais do R-tree, pode posicionar até 4 dimensões. Não obstante do tipo do índice
escolhido, o oracle spatial tem como filtros secundários sempre 2D (isto é, as comparações
volumétricas não são suportadas). Se você tiver um algoritmo volumétrico para comparar
geometrias, você pode executar este como um PL/SQL ou um procedimento armazenado em
Java, e chama-o nos resultados de um filtro preliminar da R-tree (na mesma indicação do
SQL).
Para gerar índices espaciais no campo de SDO_POINT, os campos de
SDO_ELEM_INFO e de SDO_ORDINATES devem ser nulos. O campo de SDO_POINT
será ignorado pelo Oracle Spatial se os campos de SDO_ELEM_INFO e de
SDO_ORDINATES não forem nulos.
5.5.12 Tipos de Elementos Sumariados
Representa um elemento no campo de SDO_ELEM_INFO do objeto de
SDO_GEOMETRY.
Uma geometria pode ser composta de um ou mais elementos. Se a geometria não for um
único ponto armazenado no campo de SDO_POINT, cada elemento terá uma entrada no
terceiro campo da disposição de SDO_ELEM_INFO (ordenada deslocada, tipo do elemento,
interpretação).
O offset da ordenada é um número que representa onde o elemento começa na
disposição de SDO_ORDINATES. A figura 55 descreve somente outras duas partes do
terceiro campo (tipo, interpretação do elemento).
91
Não confundir com o tipo SDO_GTYPEs, pois o tipo de elemento descreve o elemento
enquanto o SDO_GTYPEs representa que tipo de geometria é armazenado, onde uma
geometria é composta de um ou mais elemento.
O tipo 3 do elemento é substituído com o 1003 (anel exterior) ou o 2003 (buraco), e o
tipo 5 do elemento é substituído com o 1005 (anel exterior) ou o 2005 (buraco). O tipo do
elemento de quatro dígitos para polígonos esteve introduzido para fazê-lo mais fácil de
determinar se um elemento do polígono fosse um anel exterior ou um buraco.
Os tipos de elementos ficam da seguinte forma:
1. Para armazenar pontos ou vários pontos. O campo da interpretação descreve como
muitos pontos são armazenados.
2. Para armazenar as cadeias de linhas. A interpretação 1 representa uma linha
convencional cadeia conectada com as linhas retas. A interpretação 2 representa
uma linha circular cadeia do arco composta de um ou mais arco da circular.
3. 1003 representa um polígono exterior do anel, 2003 representam um anel interno (ou
o buraco).
•
Interpretação 1: Polígono convencional conectado com as linhas retas;
•
Interpretação 2: Polígono do arco, conectado com os arcos circulares;
•
Interpretação 3: O retângulo simples requer somente uns pontos direitos esquerdos,
superiores e inferior para representar o retângulo;
•
Interpretação 4: Círculo simples (não verdadeiramente um polígono, mas
categorizado com polígono porque tem a área).
4. Cadeia de linha composta, elemento contíguo que contem linhas retas e arcos
circulares.
O campo da interpretação determina quantos subelementos (isto é,
terceiro valor no campo de SDO_ELEM_INFO);
5. 1005 representa um polígono exterior do composto de anel (um elemento contíguo
que contenha linhas retas e arcos circulares). 2005 representam um polígono
composto que seja um anel interno (ou buraco). O campo da interpretação determina
quantos subelementos (isto é, terceiro valor no campo de SDO_ELEM_INFO).
92
Figura 55 - Tipos do elemento sumariados
5.5.13 Cadeia de linha
Na tabela desenhada na figura 56 está o terceiro valor (offset da ordenada, tipo do
elemento, interpretação) você armazena o campo de SDO_ELEM_INFO. A maioria dos
ordenada do offsets esta no começo da tabela (ordinate offset), no exemplo o valor esta em 1
porque descreve geometria com um único elemento.
O elemento tipo 2 do elemento corresponde a uma linha elemento da cadeia, onde é
feita de um ou mais segmentos contíguos.
O campo da interpretação para um elemento tipo 2 definirá como conectar os segmentos
que fazem a cadeia de linha. Neste exemplo, a interpretação é 1, e corresponde a uma cadeia
de linha cujos segmentos sejam conectados com as linhas retas (uma linha convencional).
A cadeia de linha pode até apresentar uma forma, pode até se cruzarem umas com as
outras, mas não tem nenhuma área.
O SDO_GTYPE para representar essa geometria é 2002 (única linha do elemento da
cadeia).
93
Figura 56 - Exemplo de Cadeia de linha
5.5.14 Cadeia de arco
O campo da interpretação para o elemento tipo 2 (figura 57) definirá como conectar os
segmentos da linha. Neste exemplo, a interpretação é 2, e corresponde a uma linha cujos
segmentos estão conectados com os arcos circulares. Um arco circular é definido por três
pontos distintos na circunferência de um círculo, o primeiro ponto, o último ponto e o ponto
distinto dentro o meio, o raio. O último ponto de um arco circular é o primeiro ponto do arco
circular seguinte.
A cadeia de linha pode até apresentar uma forma, um arco pode se cruzar umas com as
outras, mas não tem nenhuma área.
O SDO_GTYPE para representar essa geometria é 2002 (única linha do elemento da
cadeia).
Figura 57 - Exemplo de Cadeia de Arco
5.5.15 Polígono
O elemento tipo 3 corresponde um polígono, representado na figura 58. Um polígono
implica em área. Os polígonos exteriores do anel são representados como o elemento tipo
1003, e os polígonos (buracos) internos do anel são representados como elemento do tipo
2003.
94
Os polígonos exteriores do anel devem ser armazenados com uma rotação anti-horária.
Os polígonos (buracos) internos do anel devem ser armazenados com uma rotação sentida
horário.
Reforçar que rotação permite uns cálculos mais rápidos da área. Ao determinar a
rotação, o lado esquerdo recebe os valores do sistema de coordenadas.
O último ponto de um polígono deve ser igual ao primeiro ponto. Mesmo que este ponto
poderia ser derivado, deve-se repetir conforme a Open GIS Consortium (OGC) Standard.
O campo da interpretação definirá como conectar os segmentos que fazem parte do
polígono.
Neste exemplo, a interpretação é 1, e corresponde a um polígono cujos segmentos sejam
conectados com as linhas retas (um polígono convencional).
Os segmentos das linhas dos polígonos não podem cruzar-se.
O SDO_GTYPE para esta geometria é 2003 (único elemento do polígono).
Figura 58 - Exemplo de Polígono
5.5.16 Arco Polígono
No exemplo da figura 59, a interpretação é 2, e corresponde a um polígono cujos
segmentos sejam conectados com os arcos circulares. Um arco circular é definido por três
pontos na circunferência de um círculo.
95
Figura 59 - Exemplo de Polígono
5.5.17 Retângulo
O elemento tipo 3 corresponde a um polígono. Polígonos exteriores do anel são
representados como o elemento tipo 1003, e os polígonos internos (buracos) do anel são
representados como elemento do tipo 2003.
No exemplo da figura 60, a interpretação é 3, e corresponde a um retângulo simples
para o armazenamento.
Somente o ponto direito superior e esquerdo inferior do retângulo é armazenado.
O SDO_GTYPE para esta geometria é 2003 (único elemento do polígono).
Figura 60 - Exemplo de Retângulo
5.5.18 Circulo
O elemento tipo 3 do elemento corresponde a um polígono. Polígonos exteriores do anel
96
são representados como o elemento tipo 1003, e os polígonos internos (buracos) do anel são
representados como elemento do tipo 2003. Os polígonos exteriores do anel devem ser
armazenados com uma rotação sentido anti-horário. Os polígonos internos (buracos) do anel
devem ser armazenados com uma rotação sentida horário. Reforçar a rotação permite uns
cálculos mais rápidos da área.
No exemplo da figura 61, a interpretação é 4, e corresponde a um círculo. O círculo é
representado por todos os três pontos distintos na circunferência.
Figura 61 - Exemplo de Retângulo
5.5.19 Cadeia de linhas compostas
O elemento do tipo 4 corresponde a uma cadeia de linha composta. Linhas compostas (
tipo do elemento 2) foram conectadas todas com as linhas retas ou todas conectadas com os
arcos circulares.
Com uma cadeia de linha composta, você pode definir uma única linha contígua, cadeia
que seja composta de linhas retas e de arcos circulares.
A cadeia de linha composta tem as mesmas propriedades que uma cadeia de linha. As
linhas podem se cruzar, mas não suportam nenhuma área, mesmo se pelo cruzamento a reta
ou arco se fecharem, dando forma a um anel.
Uma cadeia linha composta é definida por uma série de subelementos contíguos. Cada
subelemento será uma linha reta, ou um arco circular.
Todos os subelementos devem ser do tipo 2 (a interpretação 1 ou 2), e deve ser
contíguo (isto é, o último ponto de um subelemento é o primeiro ponto do subelemento
seguinte). A observação no exemplo da figura 62, as ordenadas do offsets de cada
subelemento são diferente, e corresponde a onde o subelemento começa na disposição da
97
ordenada.
O SDO_GTYPE para esta geometria é 2002 (elemento de cadeia de linha).
`
Figura 62 - Exemplo de Cadeia de linhas Compostas
5.5.20 Polígono composto
O elemento do tipo 5 corresponde a um polígono composto. O polígono (elemento do
tipo 3) foi conectado por linhas retas ou conectado com os arcos circulares.
Com um polígono composto, pode se definir um único polígono com linhas retas
contíguas e arcos circulares.
Os polígonos compostos têm as mesmas propriedades que polígonos (isto é, não pode se
cruzarem). Polígonos exteriores do composto de anel são representados como o tipo 1005 do
elemento, e polígonos compostos internos do anel (buraco) são representados como o tipo
2005 do elemento.
Os polígonos exteriores do composto de anel devem ser armazenados com uma rotação
sentida anti-horário. Os polígonos compostos internos do anel (buraco) devem ser
armazenados com uma rotação sentido horário.
Todos os subelementos devem ser do elemento tipo 2 (a interpretação 1 ou 2), e deve
ser contíguo (isto é, o último ponto de um subelemento é o primeiro ponto do subelemento
seguinte). A observação no exemplo da figura 63, as ordenadas do offsets de cada
subelemento é diferente, e corresponde a onde o subelemento começa na disposição da
ordenada.
O SDO_GTYPE para esta geometria é 2003 (único elemento do polígono).
98
Figura 63 - Exemplo de Polígono Composto
5.5.21 Polígono com buraco
Na figura 64 esta representada um polígono com um buraco. O anel exterior tem um
tipo do elemento de 1003, e o anel interno tem um tipo do elemento de 2003.
Os buracos podem conter áreas, e as áreas podem conter buracos. A área é computada
como a diferença entre polígonos exteriores e interiores.
A rotação de elementos exteriores dos anéis deve ser sentido anti-horário, e os
elementos internos do anel devem ser no sentido horário.
Um elemento exterior do anel deve ser seguido por todos seus elementos internos do
anel antes que um outro elemento exterior do anel possa ser especificado como a parte da
geometria.
O SDO_GTYPE desta geometria é 2003 (polígono 2D). Um polígono com um ou o
mais buracos pode ainda ser considerado um único polígono (isto é, não categorizado como
vários polígono).
Figura 64 - Polígono com Buraco
99
5.5.22 Polígono composto com buraco
No exemplo da figura 65 temos um anel exterior do tipo de elemento 1005 (polígono
composto), e o anel interno do tipo de elemento de 2003 (retângulo simples).
O polígono composto tem 3 entradas no terceiro campo de SDO_ELEM_INFO. O
primeiro dos três é um encabeçamento (1.1005.2). A interpretação de 2 definiu os
subelementos compostos do polígono (1.2.1) e (7.2.2).
Observe que o terceiro valor desta geometria (17.2003.3) não é parte do polígono
composto. Define um buraco, nesse caso é um retângulo.
O SDO_GTYPE desta geometria é 2003 (polígono 2D).
Figura 65 - Polígono composto com Buraco
5.5.23 Elemento desconhecido
Se for necessário modelar algo que o oracle spatial não suporta (por exemplo, uma
curva ou uma ranhura, ver figura 66), você pode usar um tipo 0 do elemento (elemento
desconhecido).
A geometria com um tipo 0 do elemento deve conter ao menos um elemento do tipo 1,
2, 1003, 2003, 4, 1005, ou 2005. O elemento do tipo 0 é uma aproximação do elemento não
suportado. A aproximação é posicionada e perguntada para o Oracle Spatial.
O SDO_GTYPE desta geometria é 2003 (polígono 2D).
100
Figura 66 – Elemento desconhecido
5.5.24 Conjunto de pontos
Uma coleção é uma geometria que contem mais de um elemento. Na figura 67, a
coleção são vários pontos. Elemento é do tipo 1, e a interpretação corresponde ao número dos
pontos na coleção.
O SDO_GTYPE para esta geometria é 2005 (vários pontos 2D).
Figura 67 - Coleção de pontos
5.5.25 Coleção de cadeias de várias linhas
Para uma cadeia de várias linhas, cada elemento na coleção contém um valor no terceiro
campo de SDO_ELEM_INFO. No exemplo da figura 68, a linha reta da cadeia é (1.2.1) e o
circular da cadeia do arco é (7.2.2).
O SDO_GTYPE para esta geometria é 2006 (cadeia de várias linhas 2D).
101
Figura 68 - Coleção de Multipontos
5.5.26 Coleção de Polígonos
Na figura 69, a coleção são vários polígono, onde cada elemento da coleção contém um
valor no campo de SDO_ELEM_INFO. No terceiro campo do elemento do polígono
pentágono é (1.1003.1) e o círculo é (13.1003.4).
O SDO_GTYPE para esta geometria é 2007 (vários polígonos 2D).
Figura 69 - Coleção de polígonos
5.5.27 Construção de geometrias
A indicação da inserção usa um construtor de SDO_GEOMETRY, ajusta o SRID, e
campos
de
SDO_POINT
null,
e
usos
SDO_ELEM_INFO_ARRAY
e
construtores de SDO_ORDINATE_ARRAY para povoar os campos da disposição.
. O exemplo da figura 70 esta inserindo uma cadeia de linhas, onde attibute_1, ..., .
attribute_n, representam as colonas convencionais de um banco de dados relacional. O
MDSYS.SDO_GEOMETRY (objeto sdo_gtype representa o tipo e a dimensão da geometria,
objeto sdo_srid tipo da coordenada, objeto sdo_point se for ponto usar esse objeto,
102
sdo_elem_info_array mostra quais serão o tipo da geometria um a um, no caso temos inicio 1
uma linha (representado por 2) conectado por uma linha reta (representada por 1 conforme
figura 55). Como não é mencionado outra geometria todos o pares de pontos são considerado
uma linha reta conectada ponto a ponto. O mdsys.sdo_ordinate_array caracteriza os pontos da
geometria.
Figura 70 - Inserindo uma cadeia de linhas
Um outro exemplo representado na figura 71 armazena a informação nos campos da
disposição (SDO_ELEM_INFO e SDO_ORDINATES) do objeto de SDO_GEOMETRY.
Este exemplo está introduzindo os polígonos compostos com um exemplo de buraco.
A indicação da inserção usa um construtor de SDO_GEOMETRY, ajusta o SRID, e
campos
de
SDO_POINT
null,
e
usos
SDO_ELEM_INFO_ARRAY
e
construtores de SDO_ORDINATE_ARRAY para povoar os campos da disposição.
O SDO_GTYPE desta geometria (figura 71) é 2003 (polígono 2D). Um polígono com
um ou mais elementos (com buraco) pode ainda ser considerado um único polígono (isto é,
não categorizado como vários polígonos).
103
Figura 71 - Inserindo uma cadeia de polígonos
5.5.28 Metadados espacial
Para cada coluna de SDO_GEOMETRY, deve-se povoar o metadados em uma visão do
dicionário chamada USER_SDO_GEOM_METADATA. Esta visão já é criada quando é
instala do oracle spatial.
O metadados da geometria que descreve as dimensões, limites inferiores, superiores, e
tolerância em cada dimensão são armazenados em uma tabela global possuída por MDSYS
(onde os usuários nunca devem diretamente fazer atualização). Cada usuário do banco tem as
seguintes visões disponíveis no schema (usuário SYS) associado com esse usuário:
•
USER_SDO_GEOM_METADATA contem a informação do metadados para
todas as tabelas espaciais com usuário (schema). Esta é a única visão que você
pode atualizar, e é esse em que os usuários espaciais devem introduzir o
metadados relacionado às tabelas espaciais.
•
ALL_SDO_GEOM_METADATA contem a informação do metadados para todas
as tabelas espaciais em que o usuário tem a permissão SELECT.
Os usuários espaciais são responsáveis por povoar estas visões. Para cada coluna
espacial,
você
deve
introduzir
uma
fileira
apropriada
na
visão
de
USER_SDO_GEOM_METADATA. O oracle spatial assegura-se de que a visão de
ALL_SDO_GEOM_METADATA esteja atualizada também para refletir as fileiras que você
104
introduzir em USER_SDO_GEOM_METADATA.
Cada visão do metadados tem a seguinte definição:
(
TABLE_NAME VARCHAR2(32),
COLUMN_NAME VARCHAR2(32),
DIMINFO
SRID
SDO_DIM_ARRAY,
NUMBER
);
5.5.28.1
TABLE_NAME
A coluna de TABLE_NAME contem o nome de uma tabela característica, tal como
COLA_MARKETS, que tem uma coluna do tipo SDO_GEOMETRY.
O nome da tabela é armazenado na visão espacial do metadados com todos os
caracteres em caixa alta.
COLUMN_NAME
A
coluna
de
COLUMN_NAME
contem
o
nome
da
coluna
do
tipo
SDO_GEOMETRY.
O nome da coluna é armazenado na visão espacial do metadados em todos os
caracteres em caixas alta.
5.5.28.2
DIMINFO
A coluna de DIMINFO é uma disposição variando do comprimento de um tipo do
objeto, requisitada pela dimensão, e tem uma entrada para cada dimensão. O tipo de
SDO_DIM_ARRAY é definido como segue:
Criar o tipo SDO_DIM_ARRAY como VARRAY(4) de SDO_DIM_ELEMENT;
O tipo de SDO_DIM_ELEMENT é definido como:
Create Type SDO_DIM_ELEMENT as OBJECT (
SDO_DIMNAME VARCHAR2(64),
105
SDO_LB NUMBER,
SDO_UB NUMBER,
SDO_TOLERANCE NUMBER);
O exemplo de SDO_DIM_ARRAY é do tamanho n se houver umas dimensões de n.
Isto é, DIMINFO contem 2 exemplos de SDO_DIM_ELEMENT para geometrias
bidimensionais, 3 exemplos para geometrias tridimensionais, e 4 exemplos para geometrias
com quatro dimensões. Cada exemplo de SDO_DIM_ELEMENT na disposição deve ter
valores (not null) válidos para os atributos de SDO_LB, de SDO_UB, e de
SDO_TOLERANCE.
A disposição variando do comprimento de DIMINFO deve ser requisitada pela
dimensão na mesma maneira que as ordenadas para os pontos na disposição variando do
comprimento de SDO_ORDINATES são requisitadas. Por exemplo, se a disposição variando
do comprimento de SDO_ORDINATES contiver {X1, Y1…, X n, Y n}, então a primeira
entrada de DIMINFO devem definir a dimensão de X e a segunda entrada de DIMINFO deve
definir a dimensão de Y.
5.5.28.3
SRID
A coluna de SRID deve conter qualquer um do seguinte: o valor de SRID para o
sistema coordenado para todas as geometrias da coluna, ou NULL se nenhum sistema
coordenado específico for associado com a geometria.
5.5.28.4
Exemplo
INSERT INTO USER_SDO_GEOM_METADATA
(TABLE_NAME,COLUMN_NAME,DIMINFO,SRID)
VALUES
('posicao','GEOM',MDSYS.SDO_DIM_ARRAY
(MDSYS.SDO_DIM_ELEMENT('X',-180.000000000,180.000000000,0.500000000),
MDSYS.SDO_DIM_ELEMENT('Y',-90.000000000,90.000000000,0.500000000)),8307);
106
6 INSERINDO DADOS NO FORMATO SHAPEFILE
Um shapefile é um formato de arquivo de dados introduzido pela ESRI para armazenar
características geográficas no formato vetorial. Isso significa que as características de um
mapa são representadas como conjuntos de coordenadas X e Y. As coordenadas em shapefiles
usam o sistema de coordenadas cartesianas.
A geometria de cada característica é armazenada como uma figura (shape) que inclui
um conjunto de coordenadas vetoriais. Os atributos de cada característica são armazenados
como um registro em uma tabela dBASE associada com o shapefile. Há um registro na tabela
dBASE para cada característica no arquivo principal.
Um shapefile é armazenado na forma de três arquivos no sistema de arquivos do
computador, como mostra a figura 72. O arquivo principal contém a geometria para as
figuras. O arquivo de índices contém um índice seqüencial de offsets das figuras. A tabela
dBASE contém os atributos para cada figura. Pode-se modificar as definições dos campos
(adicionando, retirando ou alterando campos) numa tabela dBASE.
Figura 72 – Arquivos Shapefile
Cada shapefile contém um tipo de figura. Usa-se múltiplos shapefiles para representar
múltiplos tipos de figuras. Essas figuras podem ser qualquer uma descrita no tópico de
Elementos SDO_GEOMETRY.
Nesse capitulo será descrito como carregar os dados usando comandos padrão do
oracle (SQL*Loader, importação, inserção), como usar uma ferramenta (shp2sdo) no qual
converte um arquivo ESRI shapefiles para comandos SQL do oracle spatial para ser inserido
em uma tabela. conceito
107
Duas etapas2 são envolvidas para mover todos os dados, de modo que possa ser feita
consulta de forma eficientemente:
1. Converter os arquivos ESRI shapefiles usando o programa shp2sdo;
2. Usar o arquivo .sql para criar a tabela no banco e posterior mente usar o
SQL*Loader (sqlldr login/senha .ctl) para importar o mapa propriamente dito que
esta com a extensão .crt.
O SQL*Loader tem a seguinte funcionalidade:
•
Adicionar dados à tabela existente, ou substituir dados na tabela existente;
•
Manipular campos de dados com funções do SQL antes de introduzir os dados em
colunas da base de dados;
•
Gerar chaves primarias, chaves seqüenciais, valores em colunas especificas;
•
Importar os dados convertidos para o banco de dados;
•
Relatar todos os erros de modo que seja possível facilmente ajustar e carregar
todos os registros.
SQL*Loader não reconhece formatos de dados espaciais proprietários de outros
vendedores. Ou usa o arquivo ESRI shapefiles para que o programa desenvolvido pela própria
oracle (shp2sdo) faça as converções ou usa o programa FME da Safe Software
(www.safe.com.br) ou o GIS/Spatial.
2
Esse processo será descrito com detalhes
108
Figura 73 - Exemplo de um arquivo SQL*Loader com pontos
Na figura 73 está um exemplo de um arquivo de controle do SQL*Loader. Observar o
seguinte:
•
INFILE * significa que os dados a serem inseridos estão logo após o comando
BEGINDATA;
•
INTO TABLE cities significa que a tabela cities é quem estará sendo carregada;
•
FIELDS TERMINATED BY ‘|’ significa que cada campo estará terminado com
uma barra vertical (os campos não são de comprimento fixo);
•
TRAILING NULLCOLS ajustar-se a NULL caso o campo preenchido conter
apenas um ou mais espaço branco. Representado por NULLIF coluna=BLANKS;
•
Vem em seguida à coluna da posição do tipo SDO_GEOMETRY. A sintaxe
mostrada (isto é, COLUMN OBJECT) é específica para objetos; a sintaxe não é
específica ao oracle spatial;
•
É obrigatório o comando EXTERNAL depois de cada tipo de dados.
Logo após o BEGINDATA observe que CITY é o primeiro dado a ser inserido e caso
conter somente espaços ele será preenchido com NULL, depois vem STATE_ABRV que
também não aceita espaço em branco, me seguida vem POP90, RANK90 e finalmente os
tipos de objetos, SDO_GYTPE e SDO_POINT.
Todas as partes dos SDO_GEOMETRY que não forem especificados ira receber
NULL, por exemplo, SDO_SRID, SDO_ELEM_INFO e SDO_ORDINATES.
109
Figura 74 - Exemplo de um arquivo SQL*Loader com polígonos
O exemplo da figura 74 é muito similar ao exemplo da figura 73. Há algumas
diferenças. A primeira diferença é:
•
CONTINUEIF NEXT(1:1) = ‘#’ Esta sintaxe faz com que o SQL*Loader olhe o
primeiro caráter de cada registro de entrada. Se for # continuará lendo como se
fosse uma única linha. Uma das exigências quando usar esta sintaxe é que nunca se
deve usá-lo na primeira posição de um registro. O SQL*Loader olhará sempre a
primeira posição de caráter e se for a # tratará o registro como uma continuação do
registro precedente, causando um erro, pois o programa ira pensar que é
continuação do BEGINDATA;
•
Nesse exemplo o registro, que é um polígono, é terminado por barra vertical (|);
•
A maneira que o SQL*Loader tem de representar o final dos tipos de dado
SDO_ELEM_INFO e SDO_ORDINATES varray é colocando ‘|/’.
6.1 RESTRIÇÕES
O SQL*Loader não suporta arquivos com mais de 64k, caso isso ocorra será necessário
quebrar o arquivo em dois ou mais arquivos com menos de 64k.
Quando houver importação de vários dados é aconselhável criar o índice somente
depois que todos os dados forem importados, dessa forma os índices serão construídos com
mais facilidade e integridade.
6.2 CONVERTENDO ARQUIVOS SHAPEFILE
O conversor de arquivos Shapefile é uma ferramenta externa ao Oracle e pode ser
encontrada no site www.oracle.com/technology/software/products/spatial/index.html.
No exemplo da figura 75 mostra como invocar o shapefile ao conversor espacial do oracle.
Figura 75 - Sintaxe para usar o shp2sdo
110
O primeiro parâmetro <shapefile> é o nome do shapefile. O conversor usará a entrada
do .shp, .dbf e do .shx.
O segundo parâmetro <table-name> é o nome da tabela espacial a ser criada. Seguindo
o mesmo padrão que o oracle suporta.
O terceiro parâmetro –g seguido do <geometry-col> especificam o nome da coluna da
geometria a ser criado na tabela. É do tipo MDSYS.SDO_GEOMETRY.
O quinto parâmetro –i seguido do <id-col> é um parâmetro opcional, onde cria uma
coluna numérica que possa ser usada para armazenar um campo de identificador. O oracle
espacial não tem nenhuma exigência que este campo existe, mas muitas ferramentas requerem
um campo com uma chave numérica.
O sétimo parâmetro –n é um parâmetro usado para povoar o campo chaves numéricas,
criadas pelo parâmetro -i. Se um <id-col> for fornecido os números vão começar a ser gerada
a partir desse valor. Se não, os números começam em 0.
O oitavo parâmetro -d é usado para especificar que os dados devem ser incluídos
diretamente no arquivo de controle. Se não, um arquivo de dados separado é usado.
O nono parâmetro – x seguido do décimo (Xmin, Xmax) é usado para dizer ao oracle
os limites (ou a extensão) da primeira dimensão de o sistema coordenado que vai ser usado.
Se não especificado, os limites são extraídos do arquivo shapefile. A oracle recomenda usar
este parâmetro os maiores do sistema coordenado. Como por exemplo, para os dados
armazenados como Longitude/Latitude, os valores de Xmin e Xmax devem ser ajustados aos
valores menores e maiores da longitude, isto é, -180, 180.
O décimo primeiro parâmetro - y décimo segundo (Ymin, Ymax) é usado para dizer ao
oracle os limites (ou a extensão) da segunda dimensão de o sistema coordenado que vai ser
usado. Se não especificado, os limites são extraídos do arquivo shapefile. A oracle recomenda
usar este parâmetro os maiores do sistema coordenado. Como por exemplo, para os dados
armazenados como Longitude/Latitude, os valores de Ymin e Ymax devem ser ajustados aos
valores menores e maiores da latitude, isto é, -90, 90.
O décimo quarto parâmetro -s seguido do décimo quinto <srid> é usado especificar o
sistema coordenado (sistema espacial de referência) associado com os dados. Por default,
nenhuma informação do sistema de coordenada é carregada (NULL para SDO_SRID na
coluna
de
SDO_GEOMETRY
e
NULL
para
SRID
dentro
USER_SDO_GEOM_METADATA)
O décimo sexto -t <tolerance> deve ser especificado se o valor da tolerância a ser
carregado na disposição de DIMINFO é um valor de 0.00000005.
111
7 MAPSERVER
O MapServer foi originalmente desenvolvido pela University of Minnesota
(UMN) ForNet, projeto em cooperação com a NASA e com o Minnesota Department of
Natural Resources (MNDNR). Alguns aprimoramentos foram feitos pelo MNDNR e pelo
Minnesota Land Management Information Center (LMIC). O atual desenvolvimento é
financiado pelo projeto TerraSIP, um projeto patrocinado pela NASA entre o UMN e o
Consortium of Land Management Interests.
O MapServer não é um sistema GIS completo, nem pretende ser. Porém, ele fornece
funcionalidades suficientes para sustentar uma ampla variedade de aplicações web. Além da
leitura de dados GIS, o MapServer permite a você criar "imagens de mapas geográficos", isto
é, mapas que conseguem mostrar o conteúdo claramente para os usuários. Por exemplo, a
Minnesota DNR "Recreation Compass“ fornece mais de 10,000 páginas web, notícias e
mapas através de um simples aplicativo. O mesmo aplicativo serve como um "map engine"
para outras partes do site, fornecendo o contexto espacial necessário.
O MapServer normalmente é executado como uma aplicação CGI a partir de um
servidor HTTP. Essa forma de implementação resolve na maioria dos casos, a menos que
você queira desenvolver uma aplicação mais avançada usando o MapScript, que acessa a API
do MapServer diretamente.
As aplicações CGI MapServer usam os seguintes recursos:
1. Um servidor HTTP como Apache, IIS;
2. O software MapServer;
3. Um arquivo de inicialização, que define a primeira visão da aplicação MapServer
(opcional);
4. Um Mapfile, que define como o MapServer manipulará os dados;
5. Um arquivo template, que define a interface de usuário da aplicação MapServer na
janela do browser;
6. A base de dados SIG.
O MapServer é normalmente instalado no diretório "cgi-bin" de um servidor HTTP, e
os arquivos gerados pelo MapServer e a base de dados SIG são armazenados em diretórios do
servidor HTTP.
112
A lógica de uma aplicação típica MapServer é descrita no diagrama da figura 76.
Figura 76 - Lógica de uma aplicação MapServer
Fonte: http://mapserver.gis.umn.edu
7.1 O ARQUIVO DE INICIALIZAÇÃO
Este arquivo pode fazer parte de outro arquivo HTML, porém, para simplificar é
interessante que seja um arquivo separado.
O Arquivo de Inicialização utiliza um formulário para enviar uma consulta inicial ao
servidor HTTP, que retornará um resultado do MapServer. O MapServer não conserva
estados entre solicitações e respostas (sessões).
O MapServer é iniciado e executado cada vez que uma solicitação de consulta é
recebida, portanto o arquivo de inicialização é apenas uma forma de passar parâmetros ao
MapServer, sem que os mesmos fiquem expostos em código HTML.
O arquivo de inicialização é um arquivo HTML comum, com extensão .htm ou .html.
113
Também é possível iniciar a aplicação através de um link (sem usar um formulário), porém
este link deve conter os parâmetros básicos requeridos pela aplicação CGI MapServer.
7.2 O MAPFILE
O Mapfile define a origem dos dados que são usados na aplicação, bem como as
formas de apresentação destes dados ou parâmetros de consulta. Em outras palavras, é o
arquivo de configuração da aplicação. O Mapfile também contém informações sobre como
desenhar o mapa, a legenda, barra de escala e os mapas resultantes de uma consulta. Mapfiles
normalmente possuem a extensão .map.
7.3 O ARQUIVO TEMPLATE
O Arquivo Template define como mapas, legendas etc.. gerados pelo MapServer serão
apresentados em uma página HTML; funciona como qualquer arquivo HTML normal, exceto
pelo fato de que tags especiais são manipuladas/geradas pelo MapServer. O arquivo template
permite posicionar o mapa e/ou seus componentes na página e determinar como o usuário
poderá interagir com a aplicação (ex.: browse, query, zoom etc....). O Mapserver processa o
arquivo template e substitui palavras reservadas neste arquivo com informações relativas ao
seu estado corrente ou à base de dados SIG para produzir o resultado em HTML que será
enviado ao browser do usuário. Normalmente, utiliza-se arquivos templates terminados com a
extensão .html. Veja o Guia de Referência do Arquivo Template para uma documentação
mais detalhada.
7.4 A BASE DE DADOS SIG
O Mapserver utiliza shapefiles ESRI como formato padrão para dados vetoriais. Dados
matriciais podem ser lidos de diversos formatos, isto apenas depende de como o MapServer
foi compilado. Por padrão, o MapServer suporta arquivos geoTiff e arquivo Tiff com world
file. Outros formatos podem ser usados, mas isto é um pouco mais complicado. Os arquivos
da base de dados SIG devem estar localizados no diretório referenciado pelo Mapfile.
114
8 MODELAGEM
8.1 BANCO DE DADOS
Figura 77 – Banco de dados
Na tabela Fpolis_Logradouro não tem chave primária por não precisar identificar
(exclusivamente) um registro, nessa aplicação
a tabela funciona como um repositório,
contudo o índice (fpolis_logradouro_ipx) esta no atributo GEON, onde é o objeto espacial.
Essa tabela contém os dados espaciais do mapa de Florianópolis, somente os dados físico
representando as ruas, não foi obtido o nome das mesmas.
Na tabela Fpolis_Logradouro não foi construída chave primária para mostrar como o
sistema gera a tabela, os campos foram criados a partir do arquivo shapefile, claro que nada
impede de ser manipulada, criar novos campos (os dados espaciais estão no atributo GEON só
isso não pode ser mudado de forma alguma), contudo nessa aplicação o objetivo não exige
nenhuma alteração.
As demais tabelas já estão normalizadas e respeitando as regras de relacionamento.
A tabela posicao também foi indexada (posicao_idx) pelo GEON e como pode ser
115
observado tem chave primária, esses pontos são individuais e cada registro é único e precisa
ser identificado exclusivamente.
8.2 DIAGRAMA DE ESTADOS
No diagrama da figura 78 demonstra dois sistemas. Um onde o cliente logo no sistema
com um login e senha. Esses dados são recuperados no banco e verificado se estão corretos e
se esta ativo. Caso afirmativo o sistema libera a próxima tela.
Confirmado os dados a próxima tela apresenta um menu no qual o cliente vai poder
escolher qual ou quais veículos ele pretende localizar.
Através de um radio button o cliente vai definir como o mapa ira aprensetar a
localização, ou seja, caso seja selecionado um veículo o sistema ira habilitar a possibilidade
de criar seu rastro ou localizar a ultima posição. Caso selecionado vários veículos somente
será apresentado a ultima posição de cada veículo selecionado.
A apresentação do mapa será possível fazer uma navegação, aproximando, afastando,
indo para direita, esquerda, para cima ou para baixo. Assim é possível ver mais detalhes do
mapa caso seja necessário.
O modulo é um programa residente no linux que fica de tempo em tempo verificando
novas posições. Como o objetivo não é criar esse comunicador o programa residente já pega
os dados processados e coloca no banco de dados espacial de forma que o sistema consiga
fazer as devidas projeções solicitadas. Não será detalhado esse sistema pelo fato dos dados
serem sigilosos e essa apresentação é uma simulação para tornar mais real o projeto.
116
Figura 78 – Diagrama de Estados
8.3 DIAGRAMA DE CLASSES
Na figura 79 esta modelado o diagrama de classes, onde a classe modulo pega dos
dados da posição do veículo e coloca no banco de dados na tabela posicao. Não será detalhado
por esses dados serem sigilosos.
A classe cliente verifica os dados, confirmando ele pergunta para classe veliculo quais
são os veículos pertencentes ao cliente confirmado.
Retornando a lista de veículos o cliente escolhe se deseja localizar um ou vários
veículos, caso deseja um ele pode localizar por período, gerando com isso um rastro.
As camadas do mapa serão criadas pelo Oracle e o Mapserver, ou seja,
dinamicamente o sistema constroe a consulta e em conjunto as ferramentas criam o mapa e
apresentam na tela.
117
Figura 79 – Diagrama de Classes
8.4 DESENVOLVIMENTO
O sistema de rastreamento tem como objetivo mostrar a ultima posição veículo, ou em
um período mostrar seu rastro, ou seja, as posições do período solicitado.
Devido à ausência da camada de logradouro, o sistema se limita em mostrar a posição no
mapa, não disponibilizando o nome da rua.
A primeira tela (figura 80) pede o login e senha do usuário. Esses dados alem de autorizar
o uso do sistema, será feita uma pesquisa no banco mostrando todos os veículos cadastrados
para esse usuário.
Figura 80 – Tela inicial
Confirmado a login e a senha o sistema permite o usuário escolher o veiculo a ser
rastreado ou localizado (figura 81).
Figura 81 – Localizar um veículo
118
Uma vez escolhido o veiculo e que tipo de informação deseja (no caso figura 81), é só
apertar o botão enviar para que o servidor possa montar o mapa e mostrar a ultima3 posição
do veiculo, mostrado na figura 82.
Figura 82 – Mapa da solicitação de “Localizar um veículo”
Para mostrar o rastro do veículo é necessário colocar uma data de inicio e de fim para
limitar as posições e apresentar o rastro pertinente ao período desejado (figura 83).
Figura 83 – Mostrar o rastro do veículo
O rastro é representado por vários pontos por onde o veiculo passou durante o tempo
escolhido (data inicial e final). Esse mapa é demonstrado na figura 84.
3
Essa posição vem de equipamentos embarcado, onde não foi descrito nesse projeto, leva-se em conta que esses
dados estão no banco de dados.
119
Figura 84 – Mapa da solicitação de “Localizar rastro de um veículo”
120
9 CONCLUSÃO
O banco de dados espacial é uma ferramenta para armazenar objetos no espaço,
facilitando a manipulação (inserir novos objetos, excluir ou alterar), bem como possibilitando
dar características a esses objetos, como por exemplo, definir sentido de ruas, mapearem áreas
de risco, entre outras informações respeitando as características de um banco relacional.
Esses objetos espaciais agrupados entre si, permitem a criação de mapas ou cartas,
contudo o banco de dados não foi projetado para fazer essa visualização, para essa tarefa foi
usada outra ferramenta que é o Mapserver.
O oracle contém inúmeras funções para manipular os dados, nos quais não foram
descritos nem a metade neste trabalho, como o objetivo era mostrar como usar o oracle e o
Mapserver para rastreamento de veículos, o trabalho se limitou em integrar as duas
ferramentas e montar algumas camadas para possibilitar a visualização do objeto veículo.
Como a Mapserver não tem o oracle como um banco nativo, foi criado um drive
especifico para possibilitar o desenvolvimento de um trabalho de rastreamento de navios pelo
CTTMAR (www.cttmar.univali.br), onde houve problemas com a integração, pois a
interpretação de múltiplos polígonos não é possível até o presente momento. Assim sendo o
mapa precisou ser montado usando apenas linhas.
Como a elaboração do mapa necessita de várias técnicas de geoprocessamento, esses
dados foram adquiridos por terceiros e posteriormente inseridos no banco (os procedimentos
foram descrito no capitulo 8).
Para simular os dados chegando por um sistema embarcado contendo gps e um
comunicador de dados qualquer foi usado um agente que capturada dados reais e joga no
banco de dados espacial como pontos espaciais propriamente dito. Poderiam ser gerados esses
pontos a partir dos dados de longitude e latitude em uma tabela relacional convencional e
convertido a dados espaciais posteriormente, contudo o objetivo era mostrar como trabalhar
com o banco de uma forma já conhecida, ou seja, são apenas novos comandos, com novas
funções.
Com o banco de dados espacial (no caso o oracle) que tem uma arquitetura dual, os
profissionais de banco de dados não precisam ter um grande conhecimento cartográfico para
conseguir modelar o banco, necessita apenas de conceitos para saber o que seria um dado
121
espacial, podendo facilmente integrar o modelo relacional ao atributo objeto espacial.
Existem vários formatos de mapas digitais, dfx, dgn, mid, mif, info, entre outras, contudo
em banco de dados geográfico observou-se uma tendência a padronização, onde só existem
ferramentas para inserir no banco se o formato do mapa estiver no padrão shipefile. Isso foi
claramente observado no Oracle Spacial, todavia o PostoGis a acontece a mesma coisa.
A espacialização dos dados facilita a extração de informações e o processo de tomada de
decisão.
Um exemplo disso seria encontrar a melhor rota. Se tivéssemos somente a camada de
ruas teríamos uma falsa rota, agora se tivermos as camadas de ruas pavimentadas, ruas sem
pavimento e o sentido de cada uma poderíamos traçar uma rota real, levando em conta o
sentido de cada uma. Ainda seria possível colocar mais uma camada de parada para
descarregar ou carregar (clientes no caso), obrigando o sistema fazer uma outra rota.
Com isso fica claro que a espacialização ajuda a visualização do problema, pois na
medida em que os dados vão sendo inseridos a visualização fica mais clara. Um caso seria
assalto a caminhões em um trecho. Poderia marcar esse trecho como evitar a passar e caso
seja obrigatório o usuário pode tomar algumas providências a título de prevenção.
Outro bom exemplo seria estatísticas de violência, índice de saúde, loteamento e
urbanização, entre outras.
Para continuação do projeto poderia ser implementado com o banco de dados PosGis,
tornando totalmente opensorce.
O rastro poderia ser usado com Sistema de Referencias Lineares, onde no lugar de fazer o
rastro com o posicionamento de pontos, usaria o LRS para criar segmentos de retas
melhorando o visual e corrigindo possíveis erros do GPS. Dessa forma impossibilita a má
impressão de falhas na rota, como o ponto esta longe da rua.
122
10 ANEXO
A instalação foi feita na distribuição Fedora Core 1 do Linux. Será descrito todos os
passos da instalação do banco de dados e da ferramenta de visualização.
10.1 ORACLE SPATIAL
A
versão
do
oracle
foi
o
10g
(10.1.0.2)
encontrado
no
endereço
http://otn.oracle.com/software/products/database/oracle10g/index.html.
Ao baixar o arquivo ship.db.cpio.gz, descompacte (gunzip ship.db.cpio.gz) e em
seguida desagrupe (cpio -idmv < ship.db.cpio).
No arquivo /etc/hosts deve conter um nome identificando o servidor.
No arquivo /etc/sysctl acrescente os seguintes comandos:
•
kernel.shmall = 2097152
•
kernel.shmmax = 2147483648
•
kernel.shmmni = 4096
•
# semaphores: semmsl, semmns, semopm, semmni
•
kernel.sem = 250 32000 100 128
•
fs.file-max = 65536
•
net.ipv4.ip_local_port_range = 1024 65000
Execute /sbin/sysctl –p
No arquivo /etc/security/limits.conf acrescete:
•
*
soft
•
*
hard nproc 16384
•
*
soft
•
*
hard nofile 65536
nproc 2047
nofile 1024
No arquivo /etc/pam.d/login acrescente:
•
session required
/lib/security/pam_limits.so
Depois de completo os passos descrito acima instalar os seguintes pacotes:
# From Fedora Core 1 Disk 1
cd /mnt/cdrom/Fedora/RPMS
setarch-1.0-1.i386.rpm
123
# From Fedora Core 1 Disk 2
cd /mnt/cdrom/Fedora/RPMS
openmotif-2.2.2-16.1.i386.rpm
# From Fedora Core 1 Disk 3
cd /mnt/cdrom/Fedora/RPMS
compat-libstdc++-7.3-2.96.118.i386.rpm
compat-libstdc++-devel-7.3-2.96.118.i386.rpm
compat-db-4.0.14-2.i386.rpm
compat-gcc-7.3-2.96.118.i386.rpm
compat-gcc-c++-7.3-2.96.118.i386.rpm
Criar grupo e usuário:
groupadd oinstall
groupadd dba
groupadd oper
useradd -g oinstall -G dba oracle
passwd oracle
Crie o diretório:
mkdir -p /u01/app/oracle/product/10.1.0/db_1
chown -R oracle.oinstall /u01
No arquivo .bash_profile acrescente as seguintes linhas de comandos:
# Oracle Settings
TMP=/tmp; export TMP
TMPDIR=$TMP; export TMPDIR
ORACLE_BASE=/u01/app/oracle; export ORACLE_BASE
ORACLE_HOME=$ORACLE_BASE/product/10.1.0/db_1; export
ORACLE_HOME
ORACLE_SID=TSH1; export ORACLE_SID
ORACLE_TERM=xterm; export ORACLE_TERM
PATH=/usr/sbin:$PATH; export PATH
124
PATH=$ORACLE_HOME/bin:$PATH; export PATH
LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib; export
LD_LIBRARY_PATH
CLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_
HOME/rdbms/jlib; export CLASSPATH
#LD_ASSUME_KERNEL=2.4.1; export LD_ASSUME_KERNEL
if [ $USER = "oracle" ]; then
if [ $SHELL = "/bin/ksh" ]; then
ulimit -p 16384
ulimit -n 65536
else
ulimit -u 16384 -n 65536
fi
fi
Edite o arquivo /etc/redhat-release para redhat-3.
Depois desses passos completos entrar no diretório Disk1 e digitar ./runInstaller. Siga
as instruções da caixa de diálogo. Após a instalação executar as seguintes tarefas:
•
Editar /etc/redhat-release e voltar para Fedora Core release 1 (Yarrow)
•
Editar /etc/oratab e colocar TSH1:/u01/app/oracle/product/10.1.0:Y
10.2 MAPSERVER
•
Apache - 2.0.48
Devem estar instalado --> glibc-devel glibc-devel-static
Editar o arquivo config.layout acrescentar o texto abaixo:
<Layout optweb>
prefix:
/opt/apache
exec_prefix: ${prefix}
bindir:
${exec_prefix}/bin
sbindir:
${exec_prefix}/sbin
125
libdir:
${exec_prefix}/lib
libexecdir:
${exec_prefix}/libexec
mandir:
${prefix}/man
sysconfdir:
datadir:
/etc${prefix}
/home/apache
installbuilddir: ${datadir}/build
errordir:
${datadir}/error
iconsdir:
${datadir}/icons
htdocsdir:
${datadir}/htdocs
manualdir:
cgidir:
includedir:
${datadir}/manual
${datadir}/cgi-bin
${prefix}/include
localstatedir: /var/apache
runtimedir:
logfiledir:
${localstatedir}/run
${localstatedir}/logs
proxycachedir: ${localstatedir}/proxy
</Layout>
•
Configurar com freetds
./configure --enable-module=so --enable-layout=optweb --with-mpm=worker --enable-modsshared="access actions alias asis auth auth_anon auth_dbm auth_digest autoindex cern_meta
cgi deflate dir env expires ext_filter headers imap include info log_config mime mime_magic
negotiation proxy proxy_connect proxy_ftp proxy_http rewrite setenvif speling ssl status
suexec unique_id userdir usertrack vhost_alias"
•
Configurar sem o freetds
./configure --enable-layout=optweb --with-mpm=worker --enable-mods-shared="access
actions alias asis auth auth_anon auth_dbm auth_digest autoindex cern_meta cgi deflate dir
env expires ext_filter headers imap include info log_config mime mime_magic negotiation
proxy proxy_connect proxy_ftp proxy_http rewrite setenvif speling ssl status suexec
unique_id userdir usertrack vhost_alias"
•
Freetds - 0.62
126
tar -xzvf freetds-0.62.tgz
cd freetds-0.62/
./configure --prefix=/usr/local/freetds --with-tdsver=7.0
make && make install
•
Bison - 1.875
./configure --prefix=/usr
make
make install
•
Geos - 1.0
./configure --prefix=/usr
make
make install
•
GD - 2.0.22
Instalar os pacotes "-devel" das biblitecas gráficas, freetype2, libjpeg, libpng e xpm ( presente
no XFree86-devel )
Apage libgd.so.1 de /usr/lib/libgd.so.1
./configure --prefix=/usr
make
make install
faça um link de nome libgd.so.1 para a libgd.so.2
ln -s /usr/lib/libgd.so.2 /usr/lib/libgd.so.1
•
Tiff - 3.6.1
Apage libtiff* de /usr/lib
./configure --prefix=/usr
make
127
make install
•
PROJ - 4.4.7
./configure --prefix=/usr
make
make install
•
LIB geotiff - 1.2.1
Tome o devido cuidado de ter instalado proj antes se quiser esse suporte, de pref, soga a
ordem colocada aqui
./configure --prefix=/usr
make
make install
•
LIB Grass - 1.0.0
./configure --prefix=/usr
make
make install
•
GDAL - 1.1.9
./configure --prefix=/usr --with-grass=/usr/include
make
make install
•
CURL - 7.11.0
Apagar libcurl.so.2* de /usr/lib
./configure --prefix=/usr
make
128
make install
•
PDF LITE - 5.0.3
./configure --prefix=/usr
make
make install
•
PHP 4.3.9 CGI para Mapserver
•
Com oracle
./configure --enable-shared --with-regex=system --with-jpeg-dir=/usr/lib --with-pngdir=/usr/lib --with-zlib --with-gd --with-freetype-dir=/usr/lib --enable-force-cgi-redirect -enable-dbase --with-pdflib --with-mysql --with-config-file-path=/etc/mphp/ -prefix=/home/mphp --with-readline --with-openssl-dir=/usr/lib --exec-prefix=/opt/mphp -with-oci8--enable-sigchild --with-xpm-dir=/usr/lib/X11/ --with-tiff-dir=/usr/lib --with-curl -with-thread-safety
•
com oracle e mssql
./configure --enable-shared --with-regex=system --with-jpeg-dir=/usr/lib --with-pngdir=/usr/lib --with-zlib --with-gd --with-freetype-dir=/usr/lib --enable-force-cgi-redirect -enable-dbase --with-pdflib --with-mysql --with-config-file-path=/etc/mphp/ -prefix=/home/mphp --with-readline --with-openssl-dir=/usr/lib --exec-prefix=/opt/mphp -with-oci8--enable-sigchild --with-xpm-dir=/usr/lib/X11/ --with-tiff-dir=/usr/lib --with-curl -with-thread-safety --with-sybase=/usr/local/freetds --enable-track-vars
•
MapServer 4.0.1
./configure --exec-prefix=/opt/mapserver --prefix=/home/mapserver --with-jpeg --with-zlib -with-freetype --with-png --with-xpm --with-libiconv --with-gd --with-pdf --with-tiff --witheppl --with-proj --with-threads --with-ogr --with-gdal --with-postgis --with-wfs --withwmsclient --with-wfsclient --with-curl-config=/usr/bin/curl-config --withphp=/home/oracle/Intalacao/tar-gz/php-4.3.9/ --with-httpd=/opt/apache/sbin/httpd --withoraclespatial
make
129
Copiar php_mapscript.so da pasta mapscript/php3 do mapserver para a pasta de extensões do
php
cp mapscript/php3/php_mapscript.so /opt/mphp/lib/php/extensions/
Copiar o executável mapserv que está na raiz da pasta de compilação do mapserver, para o
diretório cgi-bin do php.
130
11 REFERENCIA
[ARO 89]
ARONOF,
S.
Geographic
Information
Systems:
a
management
perspective. Canada: WDL Publications, 1989.
[CCM 93]
OLIVEIRA, Cêurio de. Curso de cartografia modena /Cêurio de Oliveira. – 2.
ed. –Rio de Janeiro: IBGE, 1993.
[CÂM 94]
CÂMARA, Gilberto. Análise de Arquiteturas para Bancos de Dados
Geográficos Orientados-a-Objetos. São Jóse dos Campos, SP : Instituto
Nacional de Pesquisas Espaciais, abr. 1994. Tese de Doutorado.
[DEETZ]
DEETZ, Charles H., ADAMS, Oscar S. Elements of map projection.
[EST 04]
ESTEIO ENGENHARIA E AEROLEVANTAMENTOS S.A.. Disponível
em:<http://www.esteio.com.br/newsletters/paginas/006/orientacao.htm>
Acesso em: Setembro. 2004.
[GOO 91]
GOODCHILD, Michael F. Integrating GIS and Environmental Modeling at
Global Scales. In GIS/LIS, 1991, Atlanta. Proceedings... Atlanta, Georgia :
[s.n.], 1991. v.1.
[GOO 90]
GOODCHILD, Michael F. ; KEMP, Karen K. (Eds.) NCGIA Core
Curriculum : Issues in GIS. Santa Barbara, CA : National Center for
Geographic Information and Analysis (NCGIA), University of Califórnia, July
1990.
[LAU 92]
LAURINI,
Robert;
THOMPSON,
Derek.
Fundamentais
of
Spatial
Information Systems. San Diego: Academic Press, 1992.
[NCG 90]
NATIONAL
CENTER
FOR
GEOGRAPHIC
INFORMATION
AND
ANALYSIS, NCGIA Core Curriculum. Edited by Michael F. Goodchild and
Karen K Kemp (Eds.), Santa Barbara: University of California, 1990.
[ORA 01]
ORACLE COORPORATION. Oracle spatial user’s guide and reference:
release
9.2,
June
2001.
Part.
No.
A88805-01.
Disponível
em:
<http://www.oracle.com>. Acesso em: Abril. 2004.
[ORA 04]
ORACLE COORPORATION. Oracle spatial discussion forum. Disponível
em: <http://otn.oracle.com/forums/database.html (Spatial)> Acesso em: Jun.
2004.
131
[ODL 04]
Oracle
DataBse
Document
Library.
Disponível
em
<http://www.oracle.com/pls/db10g/portal.portal_demo3?selected=3> Acessado
em: Nov 2004
[IOF 04]
Oracle Database 10g (10.1.0.2) Installation On Fedora Core 1. Disponivel em <
www.oracle-base.com/articles/10g/OracleDB10gInstallationOnFedora1.php>
Acessado em: Nov 2004
[OST 04]
ORACLE COORPORATION. Oracle spatial training guide: release 9.2, Jan.
2004. Disponível em <http://www.oracle.com>. Acesso em: Nov. 2004.
[PAR 94]
PAREDES, E. A. Sistema de Informação Geográfica - Princípios e
Aplicações: Geoprocessamento, São Paulo: Ed. Érica, 1994.
[PEU 84]
PEUQUET, Donna J. A conceptual framework and comparison of spatial data
models. Cartographica, [S.I.], v.21, n.4, p. 66-113, 1984.
[RAM 94]
RAMIREZ, Milton Ramos. Sistemas Gerenciadores de Banco de Dados para
Geoprocessamento. Rio de Janeiro, RJ : COPPE/UFRJ, abr. 1994. Dissertação
de Mestrado.
[SOU 93]
SOUZA, Jano Moreira de ; RAMIREZ, Milton ; FERRARI, Roberto et ai.
Uma Arquitetura Organizacional para Sistemas de Informação Geográfica
Orientados
a
Objetos.
In:
SIMPÓSIO
BRASILEIRO
DE
GEOPROCESSAMENTO, 2., [S.l.]. Anais... [S.I.], 1993.
[SHAR 01]
SHARMA, J. Oracle Spatial: an Oracle technical white paper. May 2001.
Disponível em: <http://www.oracle.com>. Acesso em Jun. 2004.
Download