O Sistema de Informações Geográficas da Transpetro teve início no ano de 2001, originalmente concebido em uma base de dados Microsoft Access, armazenando informações de coordenadas em duas dimensões (latitude e longitude), utilizando-se atributos do tipo binário. No ano seguinte, o Microsoft Access foi substituído pelo Oracle 8i, já agregando os recursos do cartucho espacial (Oracle Spatial).

A Transpetro vem acompanhando a natural evolução do produto, passando por uma longa temporada de desenvolvimento e aprimoramento das técnicas utilizando a versão Oracle 9i, até os dias atuais, onde todo o desenvolvimento está focado nas novas características espaciais do Oracle 10g.

Metadados e Armazenamento
No período de transição para o Oracle, foi fundamental a compreensão do funcionamento do Oracle Metadata. Uma tabela que contém um atributo espacial possui algumas particularidades no seu tratamento, o que a difere das demais tabelas que possuem apenas atributos literais.

Ao ser instalado o cartucho espacial, o Oracle cria um Database Schema denominado MDSYS. Esse Schema é o proprietário de todas as funções e características espaciais dos objetos a serem criados, funciona como uma espécie de dicionário de dados espacial. No momento da criação de uma nova tabela que contenha um atributo espacial, é necessário que seja informado (alimentado) ao dicionário de dados, que estamos criando um novo objeto que irá assumir características espaciais.

A criação de tabelas no Oracle, provenientes de um modelo de dados relacional, está dividida em dois grupos: tabelas literais e tabelas espaciais. As tabelas literais irão armazenar apenas informações textuais e numéricas (char, number, float, date, etc.), e as tabelas espaciais irão armazenar geometrias (mdsys.sdo_geometry).

Espacialização de Dutos e Equipamentos
A Transpetro recebe das empresas contratadas os relatórios com os dados estruturados referentes às passagens de PIG Instrumentado (equipamento utilizado para inspeção em dutos). Esses relatórios descrevem toda a geometria de um duto junta-a-junta, informa a localização dos equipamentos instalados ao longo do duto, e descreve todas as anomalias encontradas referentes à corrosão interna e externa. Em geral, essas informações vêm em planilhas no formato Microsoft Excel e bases de dados em formato Microsoft Access, denominada Pipetally. O processo de filtragem e adequação dos dados faz com que as colunas da planilha se tornem compatíveis com as tabelas literais que irão armazenar as informações no banco de dados.

Após o tratamento dos dados, é efetuada uma exportação dos mesmos para um arquivo em formato texto, com as colunas separadas por vírgulas. Após a geração desse arquivo, utilizamos a técnica de estrutura externa para fazermos com que o Oracle passe a “enxergar” esse arquivo como sendo uma tabela, e nos permita executar operações SQL sobre ele.

Diferente do Oracle Loader, a técnica da estrutura externa permite que os dados do arquivo texto sejam manipulados sem a necessidade de serem carregados previamente para a base.

Após o mapeamento da estrutura externa, os dados do arquivo texto serão carregados para a tabela literal. À medida em que os dados forem sendo inseridos, será disparado automaticamente (trigger) um código SQL que irá transformar os dados de coordenadas geográficas em uma geometria, e essa geometria será armazenada na tabela espacial. Ao final desse processo, a geometria do duto e todos os pontos relevantes já estarão prontos para serem visualizados no mapa.

A geometria de um duto é obtida através das suas triplas de coordenadas e mais a distância absoluta a partir do ponto zero (hodômetro), o que nos permite gerar uma linha contendo a geometria do duto em quatro dimensões (X, Y, Z e M).

Medidas e Projeções
A partir de um duto espacializado em quatro dimensões, podemos projetar e obter o local (quilometragem do duto) de qualquer equipamento ao longo da linha. Para isso basta termos apenas o valor do hodômetro do equipamento que desejamos projetar. Primeiro, a função Oracle sdo_lrs.project_pt( ) encarrega-se de localizar o ponto onde o equipamento se encontra, e em seguida a função sdo_lrs.get_measure( ) obtém a medida do ponto zero até o equipamento localizado.

Uma outra técnica de projeção bastante útil é a da busca de um ponto de off-set, que consiste em projetar em linha reta um ponto no duto, e obter a geometria do ponto projetado ao centro, tanto no sentido normal quanto no invertido. Um técnico de faixa pode informar ao terminal a sua localização (GPS) com relação a uma propriedade (sítio, fazenda, via, etc), e a distância aproximada de uma suposta anomalia em um duto que passa próximo do local onde ele está.

Projeção e localização de um ponto de off-set
-> Projeção e localização de um ponto de off-set

Através da função Oracle sdo_aggr_centroid( ) localizamos as coordenadas do ponto de off-set, que corresponde a localização do técnico. Em seguida utilizamos a função Oracle sdo_lrs.project_pt_3d( ) para projetarmos essas coordenadas em uma linha reta, até atingirmos o duto e obtermos as coordenadas do ponto projetado.

Por fim, utilizamos a função Oracle sdo_lrs.locate_pt_3d( ) com a distância aproximada fornecida pelo técnico, e efetuamos essa busca nos dois sentidos, normal e invertido. Dessa forma, poderemos obter um raio bastante aproximado da ocorrência da anomalia.

Relação Dutos x Municípios
Uma das novas características implantadas recentemente no GIS Transpetro foi um utilitário para calcular a metragem dos dutos que cortam os vários municípios que compõem a faixa.

Anteriormente à implantação da geometria em quatro dimensões (LRS), esse cálculo só era possível ser realizado de forma visual no mapa através de ferramentas para cálculo de medidas, porém sem a precisão de todo o traçado do duto. A técnica para efetuar tal cálculo consiste em obter a metragem da interseção da projeção entre as geometrias dos dutos e as geometrias dos municípios. Para isso, iremos combinar as funções Oracle sdo_geom.sdo_length( ) e sdo_geom.sdo_intersection( ). Com o duto espacializado em quatro dimensões, o cálculo é realizado considerando o traçado completo da geometria, incluindo a profundidade.

Interseção da projeção da geometria dos dutos com as geometrias dos municípios
-> Interseção da projeção da geometria dos dutos com as geometrias dos municípios

Hoje, a ferramenta Oracle Spatial é um instrumento fundamental para o desenvolvimento e o processo de melhoria contínua do GIS Transpetro. Com a migração para a versão 10g, poderemos implementar novos recursos para cada vez melhor atendermos os nossos usuários.

Cláudio Cuoco
DBA Oracle do GIS Transpetro
claudiocuoco.tecnosolo@petrobras.com.br