GEOPROCESSAMENTO: criação de um modelo tridimensional em tons de cinza das edificações de Belo Horizonte

índice

  1. 1. RESUMO
  2. 2. INTRODUÇÃO
  3. 3. CONCEITOS DE CARTOGRAFIA
    1. 3.1 Conceito e ciências de apoio
    2. 3.2 Representação cartográfica do planeta terra
    3. 3.3 Modelo forma e dimensão da terra
    4. 3.4 Datum Horizontal
    5. 3.5 Datum Vertical
    6. 3.6 Sistema de coordenadas tridimensionais (X, Y, Z)
    7. 3.7 Sistema de coordenadas planas cartesianas
    8. 3.8 Sistema de projeção cartográfica
      1. 3.8.1 A projeção universal transversa de Mercator – UTM
    9. 3.9 Conceito de escala
      1. 3.9.1 Escala gráfica
      2. 3.9.2 Precisão Cartográfica
  4. 4. LEVANTAMENTO DE DADOS
    1. 4.1 Levantamento topográfico
    2. 4.2 Instrumentos de medição 
    3. 4.3 Funcionamento básico do teodolito
    4. 4.4 Funcionamento básico do distanciômetro
    5. 4.5 Funcionamento básico do GPS
    6. 4.6 Levantamento de dados através do GPS
    7. 4.7 Levantamento fotogramétrico
    8. 4.8 Diferença entre dado Raster e Vetorial
    9. 4.9 Vetorização de dados a partir de uma ortofoto
    10. 4.10 Funcionamento básico do Laser Scanning
    11. 4.11 Modelos Digitais de Terreno e Elevação
    12. 4.12 Modelos Digital de Terreno com as bases das edificações trianguladas
  5. 5. ORACLE SPATIAL
    1. 5.1 Introdução
    2. 5.2 Introdução e conceitos básicos sobre dados espaciais.
    3. 5.3 Estrutura de armazenamento de dados vetoriais no Oracle Spatial.
    4. 5.4 Funções espaciais do Oracle Spatial utilizadas no algoritmo.
      1. 5.4.1 Sdo_centroid
      2. 5.4.2 Sdo_cs.transform
      3. 5.4.3 Sdo_difference
      4. 5.4.4 Sdo_distance      
      5. 5.4.5 Sdo_geom.sdo_buffer
      6. 5.4.6 Sdo_geom.sdo_relate e sdo_relate 
      7. 5.4.7 Sdo_intersection
      8. 5.4.8 Sdo_mbr   
      9. 5.4.9 Sdo_Util.GetVertices
      10. 5.4.10 Sdo_geom.sdo_area
      11. 5.4.11 Sdo_filter
    5. 5.5 Modelo digitais de Terreno e Elevação armazenados no Oracle Spatial
  6. 6. ALGORITMO PARA CRIAÇÃO DO MODELO 3D
    1. 6.1 Introdução           
    2. 6.2 Encontrando os números das articulações  
    3. 6.3 Corrigindo problemas de “bolo de noiva”  
    4. 6.4 Encontrando a altura média das edificações        
    5. 6.5 Definindo um telhado para as edificações
    6. 6.6 Realizando a conversão de projeção
    7. 6.7 Calculando uma área de visualização para os lotes
    8. 6.8 Obtendo-se informações não espaciais
    9. 6.9  Criando arquivos Keyhole Markup Language(KML)
  7. 7. ALGORITMO PARA VISUALIZAÇÃO DO MODELO 3D
    1. 7.1 Introdução
    2. 7.2 Criando um dado vetorial delimitador para o Google Earth
    3. 7.3 Função de inicialização do Google Earth
    4. 7.4 Adicionando e removendo Layers no Google Earth
    5. 7.5 Adicionando pesquisas
      1. 7.5.1 Pesquisa por lote
      2. 7.5.2 Pesquisa por índice cadastral
      3. 7.5.3 Pesquisa por endereço
    6. 7.6 Abrindo arquivos KML no Google Earth
  8. 8. CONCLUSÃO
  9. 9. REFERÊNCIAS
Imprimir Texto -A +A
icone de alerta

O texto publicado foi encaminhado por um usuário do site por meio do canal colaborativo Monografias. Brasil Escola não se responsabiliza pelo conteúdo do artigo publicado, que é de total responsabilidade do autor . Para acessar os textos produzidos pelo site, acesse: https://www.brasilescola.com.

1. RESUMO

Esse trabalho originou de um projeto realizado na Empresa de Informação e Informática do Município de Belo Horizonte (PRODABEL) chamado 3D Urbano no período de 2010, esse projeto tinha o objetivo gerar uma camada tridimensional das edificações de Belo Horizonte em tons de cinza a partir dos dados Light Detection And Ranging (LIDAR).

Essa informação serviria para promover uma visualização 3d de todas as edificações da cidade de Belo Horizonte. Isso foi feito a partir dos dados recolhidos no levantamento aerofotogramétrico e perfilamento a laser.

Com essa camada construída, e armazenada em arquivos Keyhole Markup Language (KML) e por fim exibida no Google Earth, tomadas de decisões estratégicas em relação à cidade ficariam mais fáceis, algumas dessas ações poderiam ser: 1) visualizar onde existem maiores concentrações de edificações em locais de riscos de alagamento ou desabamento, para que os moradores dessas edificações possam ser realocados. 2) saber qual é a área construída de uma edificação(calculada com o dado LIDAR) e qual é sua área construída declarada pelo seu dono , para que um fiscal de IPTU possa averiguar inconsistências.

Antes de explicar como foi desenvolvido o algoritmo de criação e exibição da camada 3d, serão vistos alguns conceitos importantes de cartografia que nos possibilitam entender as diferenças entre os dados usados pelo Google Earth e os dados utilizados pela Prodabel. Depois disso será explicado como foi realizado o levantamento de dados realizado pelo Prodabel, que incluem levantamento de dados bidimensionais através de teodolito, distanciometro, Global Positioning System(GPS), aerolevantamentos para obtenção de ortofoto e vetorização de dados a partir de uma ortofoto. Para o levantamento de dados tridimensionais será explicado o processo perfilamento a laser, e como foram obtidos os Modelos digitais de elevação, terreno, e de terreno com as bases trianguladas a partir desse perfilamento.

Terminada essa etapa será dado uma pequena introdução sobre banco de dados espaciais, estrutura de armazenamento de dados vetoriais no Oracle Spatial, que é o Sistema Gerenciador de Banco de Dados(SGBD) espacial utilizado na Prodabel e depois, será explicado como funcionam as funções do Oracle Spatial utilizadas no algoritmo.

Após essa etapa, será explicado todo o processo de desenvolvimento dos algoritmos de criação e visualização da camada 3d, e por fim dar parecer se os resultados obtidos foram os esperados.

ABSTRACT

This work originated from a project carried out in Empresa de Informação e Informática do Município de Belo Horizonte (PRODABEL) called 3D Urban in the period of 2010. The project was intended to generate a layer of three-dimensional grayscale buildings of Belo Horizonte data from Light Detection And Ranging (LIDAR) data.

This information would promote a 3D visualization of all buildings in the city of Belo Horizonte. This has been made from data collected in the aerophotogrammetric survey and laser profiling.

With this layer built and stored in files Keyhole Markup Language (KML) and finally displayed on Google Earth, strategic decision making would be easier, some of these actions could be: 1) see where there are higher concentrations of local buildings in danger of flooding or collapse, so that residents of these buildings can be relocated 2) know the constructed area of a building (as measured by the LIDAR) and the owner’s declared area builted, so that a supervisor may determine inconsistencies.

Before explaining how the algorithm of creating and displaying 3D layer were developed, there are some important concepts of cartography that enable us to understand the differences of the data used by Google Earth and the data used by Prodabel.

After that, it will be explained how the survey was conducted by Prodabel, which include data collection through theodolite, distance log, Global Positioning System (GPS), aerial surveys to obtain orthophoto and vectoring data from an orthophoto. For the three-dimensional data collection process, it will be explained The laser scanner, and how the digital elevation model, digital surface model and digital surface model with bases triangulated were obtained from this profiling.

Once this step is done, an explanation about spatial database and how to store vector data in Oracle Spatial will be made. Oracle Spatial is the Management System Database (DBMS) space used in Prodabel. After that a demonstration about how to operate the functions of Oracle Spatial used in the algorithm will be shown.

At last, the developing of the creating and viewing 3d layer algorithms will be explained, and an opinion if the results were as expected will be given.

2. INTRODUÇÃO

Esse trabalho tem como objetivo geral realizar uma análise critica em relação a um projeto realizada no Prodabel chamado 3d urbano, esse por sua vez tinha o intuito de melhorar algumas tomadas de decisões estratégicas em relação à cidade através de uma visualização tridimensional das edificações de Belo Horizonte e da identificação de áreas de risco relacionadas a alagamento ou desabamento, além disso, também existiu a possibilidade de averiguar inconsistências relacionadas ao Imposto Predial e Territorial Urbano (IPTU) por meio da identificação de áreas construídas que foram informadas incorretamente.

Para entender melhor sobre o projeto realizado na Prodabel é necessário entender alguns conceitos básicos de cartografia, como foi feito o levantamento de dados pela Prodabel, como os dados espaciais são modelados e armazenados em bancos de dados, compreender um pouco sobre algumas funções espaciais do Sistema Gerenciador de Banco de Dados(SGBD) espacial Oracle Spatial, para então dar inicio a explicação do algoritmo de criação da edificações tridimensionais em tons de cinza. Esse algoritmo foi desenvolvido com a linguagem Java.

Depois de entender como a camada tridimensional foi criada, será dada uma explicação sobre o algoritmo de visualização da camada 3d, esse por sua vez utiliza a Application Programming Interface(API) do Google Earth. Para a criação desse algoritmo foram utilizadas a linguagem Java, a linguagem JavaScript e o Servlet Container[1] Apache Tomcat versão 6.28.

3. CONCEITOS DE CARTOGRAFIA

3.1. Conceito e ciências de apoio

Para entender as diferenças entre os dados geográficos do Google e os dados geográficos utilizados pela Empresa de Informação e Informática do Município de Belo Horizonte (PRODABEL) serão abordados conceitos fundamentais de cartografia, e o primeiro fundamento será o conceito de cartografia, que segue abaixo:

Cartografia é a Ciência e Arte que se propõem a representar através de mapas, cartas e outras formas gráficas (computação gráfica) os diversos ramos do conhecimento do homem sobre a superfície e o ambiente terrestre. Ciência quando se utiliza do apoio científico da Astronomia, da Matemática, da Física, da Geodésica, da Estatística e de outras Ciências para alcançar exatidão satisfatória. Arte, quando recorre às leis estéticas da simplicidade e da clareza, buscando atingir o ideal artístico da beleza (TIMBÓ, 2001, p.4).

A cartografia utiliza de várias ciências de apoio para cumprir seus objetivos, algumas delas são astronomia, topografia e agrimensura, geodésica, posicionamento global por satélites, fotogrametria e sensoriamento remoto e a ciência da computação.

3.2. Representação cartográfica do planeta terra

Segue abaixo três etapas fundamentais para se representar a terra em um plano de uma maneira plausível:

Para representar a superfície da Terra (esferóide) através de mapas (planos) é necessário antes de tudo abordar os três aspectos fundamentais, a saber: 1) definir sua forma matemática para permitir medidas e cálculos; 2) estabelecer um sistema de conversão (projeção) das medidas feitas ou calculadas na superfície curva do planeta para o plano cartográfico (mapa) e; 3) adotar uma escala de representação para os objetos e feições, no caso de documentos impressos, tendo em vista não ser possível a representação em verdadeira grandeza. (TIMBÓ, 2001, p.8).

3.3. Modelo forma e dimensão da terra

O homem sempre tentou representar a terra de várias maneiras ao longo do tempo, abaixo serão mostradas algumas formas de representação da terra:

SUPERFÍCIE TOPOGRÁFICA:

Forma verdadeira da Terra com suas montanhas, vales, oceanos e outras incontáveis saliências e reentrâncias geográficas. É a superfície física (de existência real) onde são executadas as medições e observações cartográficas. (TIMBÓ, 2001, p.9).

FIGURA 1 – Superfície topográfica
Fonte: TIMBÓ, 2001, p.9.

Essa é a forma mais realista de se representar a terra, porém ela não será utilizada na cartografia pelo simples fato de não existir uma fórmula matemática que consiga representar esse sólido de gigantesca complexidade com precisão satisfatória.

E mesmo que houvesse uma fórmula, essa teria que ser ajustada constantemente, pois a topografia terrestre muda constantemente devido a fenômenos naturais. Com isso medidas e cálculos também seriam impossíveis e o primeiro aspecto fundamental para se representar a terra num plano não poderia ser atendido.   

GEÓIDE

Forma verdadeira da Terra subtraída das montanhas e vales, considerando que estes elementos são muito pequenos (máximo 10 km) em relação ao diâmetro da Terra (13.000 km). A superfície do geóide não tem definição matemática, é aproximadamente esférica com suaves ondulações e achatada nos pólos, sendo o diâmetro equatorial cerca de 43 km maior que o diâmetro polar. O Geóide é definido como sendo a superfície do nível médio das águas tranqüilas dos mares prolongada sob os continentes. É utilizada como a referência padrão para as medidas de altitudes. (TIMBÓ, 2001, p.9).

FIGURA 2 – Geoide
Fonte: TIMBÓ, 2001, p.9.

Essa é a forma da Terra utilizada no perfilamento a laser para levantamento de dados tridimensionais, já que as medidas de altitudes são as mais importantes nesse caso. O processo de levantamento de dados Light Detection And Ranging (LIDAR) será explicado posteriormente.  

ESFERA

É a forma da Terra definida matematicamente como sendo uma simplificação do Geóide, considerando que o achatamento da Terra é muito pequeno (43 km em relação a 13.000 km de diâmetro). É a forma considerada algumas vezes pela Geodésia para cálculos auxiliares e trabalhos simplificados. (TIMBÓ, 2001, p.10).

Essa é a forma da Terra menos realista de todas citadas até aqui, em contrapartida ela é forma mais fácil de representar a terra num mapa plano.

Ela atende os três aspectos fundamentais da maneira mais simplificada possível. Sua forma matemática é bem simples, o que facilita bastante em cálculos e medidas. Essa forma era muito utilizada antigamente em mapas de papel, já que o auxílio computacional para cálculos era pequeno ou inexistente.

ELIPSÓIDE DE REVOLUÇÃO

O Elipsóide de Revolução é definido como sendo o sólido geométrico gerado por uma elipse que gira em torno do seu eixo menor (eixo polar). Constitui a forma definida matematicamente que mais se aproxima da forma verdadeira da Terra, portanto é, dentre todas, a forma que permite a maior precisão de representação da Terra. Os mapas e cartas topográficas, o sistema GPS e a grande maioria dos sistemas e processos envolvidos em cartografia e navegação, trabalham sobre o modelo elipsóidico terrestre. Esta é a forma padrão considerada pela Geodésica para trabalhos de precisão. Elipse é a curva definida pelo lugar geométrico dos pontos do plano onde a soma dos raios vetores que partem dos focos é uma constante de valor igual ao dobro do semi-eixo maior da elipse (r1 + r2 = 2a) a equação da elipse é dada por X2/a2 + Y2/b2 =1 onde Raios vetores r1, r2 Semi-eixo maior a Semi-eixo menor b Achatamento f = (a-b)/a Excentricidade e = [(a2 - b2 )/ a2 ]. (TIMBÓ, 2001, p.10).

FIGURA 3 – Elipsoide
Fonte: TIMBÓ, 2001, p.10.

Essa forma é a mais utilizada hoje em dia, pois possui uma representação mais realista do que a esférica. Não é tão complexa quanto à topográfica e não se foca nas medidas de altitude como a representação do geóide.

PLANO

É a forma mais simplificada de todas, servindo apenas para representação local até um raio aproximado de 50 km, considerando que a curvatura da Terra é muito pequena em relação a esta extensão. Neste caso, todas as medidas feitas no terreno são simplesmente projetadas em um plano horizontal tangente à superfície terrestre local (Plano Topográfico). (TIMBÓ, 2001, p.11).

Essa forma é utilizada para simplificar cálculos matemáticos em pequenas áreas. Caso fosse necessário calcular a distância entre dois pontos P1 e P2 em uma superfície esférica, teríamos que calcular o comprimento do “segmento de curva” entre esses dois pontos, dada pela lei dos cossenos e descrita da seguinte maneira: cos(S) = sen(latP2).sen(latP1) + cos(latP2).cos(latP1).cos(lonP2-lonP1). O valor desse cosseno ainda deveria ser convertido para radianos e multiplicado pelo raio da terra.

Se convertermos essa pequena área esférica em uma superfície plana, o cálculo dessa distância seria simplificado para a distância euclidiana, que possui um custo de cálculo computacional bem inferior à fórmula citada acima.

3.4. Datum Horizontal

Ao longo dos anos foi constatado que a melhor maneira de se representar a terra é através de um elipsóide de revolução. Mas cada país criou seu próprio Datum Horizontal, com o objetivo de ganhar precisão nas coordenadas, ou seja, o Datum Horizontal usado pelo Brasil é diferente do Datum usado pelos Estados Unidos. É essencial que todos os dados de um projeto de geoprocessamento sejam armazenados no mesmo Datum para que não haja nenhum problema de incompatibilidade.

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[2] 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. O WGS-84 é dito um datum global e geocêntrico, pois o elipsóide adotado (GRS80) ajusta-se a Terra como um todo e a origem dos seus eixos coordenados são 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). (TIMBÓ, 2001, p.12-13). 

O Datum horizontal utilizado pela Prodabel é o SAD-69[3] e seu ponto geodésico de origem está localizado em Chuá – Minas Gerais. O Google Earth e o Global Positioning System (GPS) utilizam o WGS-84 como Datum horizontal e seu ponto geodésico de origem estão localizados no geocentro[4] do elipsóide terrestre. Existem vários Datum horizontais diferentes, e eles são usados para obter uma maior precisão para os pontos mais próximos da origem, já que os pontos mais próximos do centro possuem distorções quase nulas.

Essas distorções ocorrem devido à curvatura da terra. Sendo assim o Datum WGS-84 não prioriza nenhum local do mundo e o Datum SAD-69 tem como objetivo ter mais precisão para coordenadas situadas no Brasil.  

CONVERSÃO DE DATUM HORIZONTAL

Conhecendo-se os parâmetros de transformação, é possível converter posições de um datum para outro e vice-versa, através de equações simples. A maioria dos Softwares de Geoprocessamento trazem facilidades para conversão entre os datum mais conhecidos e utilizados no mundo. Cabe ressaltar que, salvo numa aproximação grosseira, não tem sentido falar em posição geográfica (latitude, longitude ou coordenada plana cartesiana X e Y ou N e E) sem mencionar o datum horizontal. (TIMBÓ, 2001, p.13).  

Tanto no algoritmo de criação quanto no de visualização será necessário converter coordenadas do Datum WGS84 para o Datum SAD-69 e vice-versa. Para realizar essa tarefa será utilizada uma função do Oracle Spatial chamada SDO_CS.TRANSFORM, o uso da função será explicado no capitulo três.

3.5. 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. Porém, 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 altímetros de um mesmo projeto estejam referenciados ao mesmo Datum para evitar incompatibilidades. Cabe ressaltar que, salvo numa aproximação grosseira, não tem sentido falar em altitude sem mencionar o datum vertical de referência. (TIMBÓ, 2001, p.13).  

Para realização do processo de perfilamento a laser foi adotado como critério o nível do mar brasileiro segundo dados do Instituto Brasileiro de Geografia e Estatística (IBGE).  

3.6. Sistema de coordenadas tridimensionais (X, Y, Z)

Constitui um sistema de três eixos cartesianos ortogonais (X, Y, Z) muito utilizado pelos satélites artificiais (GPS) para cálculo de posições, utilizando geometria tridimensional. As principais características do sistema são: Origem dos eixos no centro de massa da Terra (Geocentro) Eixo X coincidente com o traço do meridiano de Greenwich no plano do Equador Eixo Y ortogonal a X no plano do Equador 90 anti-horário Eixo Z coincide com o eixo de rotação da Terra. (TIMBÓ, 2001, p.17).

Após a realização do processo de perfilamento a laser foi obtido uma nuvem de pontos tridimensionais contendo um Modelo Digital de Terreno (MDT) e um Modelo Digital de Elevação(MDE) de toda região de Belo Horizonte. Todos esses dados foram armazenados através da estrutura de dados SDO_GEOMETRY do Sistema Gerenciador de Banco de Dados (SGBD) espacial Oracle Spatial.

3.7. Sistema de coordenadas planas cartesianas

O sistema de coordenadas esféricas, apesar de localizar pontos inequivocamente na superfície episódica, se mostrou pouco prático para trabalhar com mapas planos, e assim foram estabelecidos sistemas de coordenadas planas cartesianas associadas às projeções cartográficas, conforme será visto no próximo tópico. Os sistemas de coordenadas planas cartesianas têm a origem dos eixos coordenados estabelecidas em certos paralelos e meridianos terrestres e as coordenadas do sistema são medidas em metros, e não em graus. A coordenada X é chamada Este (E) e a coordenada Y é chamada Norte (N). Cabe ressaltar que as coordenadas planas estão estritamente associadas ao sistema de projeção do mapa, cada coordenada plana corresponde a uma coordenada geográfica que foi transformada pelas equações do sistema de projeção. Não tem nenhum sentido falar em coordenada plana sem o mencionar o sistema de projeção que lhe deu origem. (TIMBÓ, 2001, p.19).

A Prodabel armazena seus dados a partir do Datum horizontal SAD69, porém seus dados não são gravados no sistema geodésico (coordenadas em graus) e sim no sistema de coordenadas planas cartesianas (coordenadas em metros). No caso do Google, seus dados geográficos são salvos no sistema geodésico e a partir do Datum horizontal WGS84.  

3.8. Sistema de projeção cartográfica

Existe uma enorme necessidade de se converter a terra de uma superfície esferoidal para o formato plano, porque essa é a forma como todo ser humano está acostumado a ver um mapa, para isso existem vários modelos matemáticos, que geram o menor número de deformações possíveis. Essas deformações podem estar relacionadas ao comprimento, forma ou área.

Não existe uma projeção cartográfica ideal, pois uma projeção que não deforma o comprimento, certamente irá deformar a área e vice-versa. Sendo assim a escolha da projeção cartográfica depende exclusivamente do objetivo.

Existem inúmeras formas de classificação das projeções cartográficas. Um critério bastante utilizado pelos cartógrafos é a divisão segundo os tópicos abaixo (Richardus e Adler, 1972).
1) Quanto às propriedades que conserva: equidistantes, equivalentes, conformes e afiláticas.
2) Quanto à natureza da superfície de projeção: planas, cilíndricas e cônicas.
3) Quanto ao tipo de contato entre o elipsóide e a superfície de projeção: tangentes, secantes e poli superficiais.
4) Quanto à posição da superfície de projeção em relação ao elipsóide terrestre: normal, transversa e oblíqua. (TIMBÓ, 2001, p.19-20).

O texto acima mostra quatro critérios importantes para se converter um sistema geodésico para um sistema plano cartesiano, para realizar esse processo será utilizado o Sistema Universal de Mercator (UTM) que será explicado abaixo.

3.8.1. A projeção universal transversa de Mercator – UTM

A projeção adotada pela Prodabel e pelo Mapeamento Sistemático Brasileiro é o Sistema Universal Transverso de Mercator (UTM), que é também um dos mais utilizados no mundo inteiro para cartografia sistemática e recomendado pela União de Geodesia e Geofísica Internacional (UGGI). A projeção UTM é um subtipo da Projeção Transversa de Mercator possui as seguintes características:

1) A superfície de projeção é um cilindro cujo eixo é perpendicular ao eixo polar terrestre. É uma projeção conforme, portanto mantém os ângulos e a forma das pequenas áreas.
2) O cilindro de projeção é secante ao elipsóide de revolução, segundo dois meridianos, ao longo dos quais não ocorrem deformações de projeção (K=1). As áreas entre os meridianos de secância sofrem reduções de escala (K<1), enquanto as áreas fora dos meridianos de secância apresentam escalas ampliadas (K>1). Desta forma permite-se que as distorções de escala sejam distribuídas ao longo do fuso de 6°. (TIMBÓ, 2001, p.21).

Observando-se a figura 4 abaixo, pode se ver uma faixa que cobre o eixo latitudinal no centro do elipsóide, as duas linhas dessa faixa são os meridianos de secância, e as áreas dentro desses meridianos sofrem aumentos de tamanho. Para as áreas fora desse meridiano, essas sofrem diminuição de tamanho.

3) O elipsóide terrestre é dividido em 60 fusos parciais com 6° de amplitude cada um. O coeficiente de redução máxima ocorre ao longo do meridiano central do fuso (MC) e tem o valor constante K0 = 0.9996 (1 m para cada 2500 m). Os meridianos centrais são múltiplos de 6° acrescidos de 3° MC = 6° x N + 3°, (N à 0... ± 29). (TIMBÓ, 2001, p.21).

A citação acima mostra que a maior distorção de área possível para essa projeção é de 1m para cada 2500m e ela está localizada no meridiano central.

4) O Equador é uma linha reta horizontal, o Meridiano Central é uma linha reta vertical, os paralelos são curvas de concavidade voltada para os pólos e os meridianos são curvas de concavidade voltadas para o MC.
5) A origem do sistema cartesiano de coordenadas é formada pelo meridiano central do fuso (eixo Y) cujo valor é E=500.000,00 metros, e pelo Equador (eixo X) que tem valor N=0,00 metros, para coordenadas no hemisfério norte e N=10.000.000,00 metros, para coordenadas no hemisfério sul. As coordenadas são designadas pelas letras E e N, acrescidas do Fuso e Hemisfério.
6) As constantes de E=500.000 m e N=10.000.000 m chamadas, respectivamente, de Falso Este e Falso Norte visam evitar coordenadas negativas).
7) O coeficiente de deformação de escala (K) em um ponto qualquer é dado por K
K0 (1 + y2/2R2) onde y é o afastamento do ponto ao MC e R o raio médio da Terra no ponto considerado.
 (TIMBÓ, 2001, p.21).

O item 7 acima nos mostra uma informação interessante, que é uma fórmula para se calcular a deformação de escala de um ponto qualquer. Abaixo segue uma imagem do cilindro secante ao elipsóide terrestre:

FIGURA 4 – Cilindro Secante
Fonte: TIMBÓ, 2001, p.21.

A projeção universal transversa de Mercator é uma projeção de natureza cilíndrica, conserva os ângulos e têm pequenas reduções de escala, essa projeção divide a terra em 60 fusos de 6 graus e essas reduções de escala podem ser divididas entre esses fusos.

O contato entre o elipsóide e a superfície de projeção é secante. A posição da superfície de projeção em relação ao elipsóide terrestre é transversa. No caso de dados geográficos localizados em Belo Horizonte, esses não sofrerão nenhuma distorção de ângulo, terão pequenas reduções de escala e estarão contidos no 23º fuso de Mercator, assim como mostra a figura abaixo:

FIGURA 5 – O Brasil dividido em fusos de 6º
Fonte: TIMBÓ, 2001, p.21.

3.9. Conceito de escala

ESCALA

Em cartografia a escala é a relação existente entre a representação gráfica de um objeto na carta[5] (d) e sua dimensão real no terreno (D). E = d/D. A escala é sempre dada em forma de uma fração (1:25000, por exemplo) e a escolha da escala de uma carta, mapa ou planta geralmente obedece a 3 preceitos básicos:

1) Minúcia de detalhes desejada. Uma casa, por exemplo, pode ser desenhada apenas como um símbolo (escala pequena) ou com jardins e muitos detalhes (escala grande).

2) Espaço disponível ou conveniente no papel. Formatos A0, A1, A2, A3, A4 etc.

3) Limitação gráfica de 0.2 mm, considerado o limite da acuidade visual humana. Nenhum elemento poderá ser representado em escala com menos de 0.2 mm (TIMBÓ, 2001, p.36).

O conceito de escala ajudará a entender a precisão dos dados, no caso do levantamento aerofotogramétrico, tanto a ortofoto como o processo de perfilamento a laser foram realizados utilizando a escala 1:2000, ou seja, os dados estão precisos apenas para escalas iguais ou inferiores a esta. Caso seja utilizado um zoom com uma escala maior que 1:2000 no Google Earth, poderá haver erro de posicionamento de qualquer coordenada. 

3.9.1. Escala gráfica

Escala Gráfica

É uma régua impressa no rodapé e na mesma escala da carta que garante a facilidade de obter medidas sem uso de régua ou escalímetro, mesmo quando ocorre redução ou ampliação da planta original ou em caso de deformação do papel. (TIMBÓ,2001,p.36).

A escala gráfica será apresentada no Google Earth, e fica localizada no canto inferior esquerdo do mapa.

3.9.2. Precisão Cartográfica

As medidas planimétricas extraídas de uma carta impressa em papel estão sujeitas a pelo menos dois tipos de imprecisões bem caracterizadas. O Erro gráfico geralmente aceito como sendo 0.2 mm, correspondente ao limite da acuidade visual humana e o Padrão de Exatidão Cartográfica (PEC) – que é o Indicador de dispersão relativo a 90% de probabilidade que define a exatidão de trabalhos cartográficos. O Decreto 89.817, de 20/07/1984 dá a seguinte classificação para cartas impressas segundo o PEC.
Todas as cartas topográficas do mapeamento sistemático brasileiro executadas pelo método aerofotogramétrico são classificadas no padrão “A”. Assim qualquer coordenada obtida estará sujeita a uma composição de incertezas de 0.2mm na sua identificação e 0,5 mm na sua posição geográfica. Em uma carta topográfica de escala
1:100.000, por exemplo, as incertezas seriam 20 m e 50 m respectivamente. Já as medidas altimetrias estão sujeitas ao PEC altímetrico que é de meia eqüidistância das curvas de níveis o que numa carta de 1:100.000 (Eq = 50 m) daria uma incerteza de 25 m. (TIMBÓ,2001,p.50).

FIGURA 6 – Padrão de Exatidão Cartográfica (PEC)
Fonte: TIMBÓ, 2001, p.50.

Como a escala do vôo foi realizado com a escala 1:2000, a incerteza para dados planimétricos ficaria entre 40 cm e 1 metro e a incerteza para dados altimétricos ficaria em 50 cm, classificando o vôo então como classe B.

4. LEVANTAMENTO DE DADOS

4.1. Levantamento topográfico

A recolha de dados necessários à elaboração de uma planta ou carta topográfica de uma dada parcela da superfície terrestre é designada por levantamento topográfico. A aquisição da informação topográfica para a elaboração de cartas ou plantas é feita com o recurso a dois métodos: o método topográfico ou clássico e o método fotogramétrico. (ANTUNES, 1995 , p.2).

A escolha do método depende do tamanho da área e da escala do levantamento, o levantamento clássico é indicado para áreas com escala maiores que 1:1000, pois esse tipo de método depende de operações em campo e isso pode levar muito tempo para áreas muito grandes. O método fotogramétrico é recomendado para áreas com escala inferiores a 1:1000 e não é usado em escalas maiores por ter uma limitação de altura mínima do vôo.

4.2. Instrumentos de medição 

Em relação ao equipamento a utilizar nas medições do levantamento, há os instrumentos de medição propriamente ditos e os acessórios que possibilitam a concretização da medição com os seus requisitos. Os instrumentos de medição dividem-se essencialmente em três classes, os que medem ângulos - teodolitos ou goniómetros, os que medem distâncias – distanciómetros electrónicos e taqueómetros, e os que medem desníveis - níveis. (ANTUNES, 1995 , p.9).

A respeito do instrumentos de medição utilizados, serão citados apenas o teodolito e o distanciômetro. A Prodabel possui tabelas de curvas de níveis armazenadas em banco de dados, levantadas através do instrumento níveis, mas no caso desse trabalho só foram utilizados dados altimétricos obtidos a partir do processo de perfilamento a laser.

4.3. Funcionamento básico do teodolito

Os teodolitos são os aparelhos utilizados para medir os ângulos horizontais (azimutais) e verticais (zenitais). São constituídos essencialmente, por uma base que contém o limbo horizontal (círculo graduado de 0º a 360º que permite as leituras angulares) e uma alidade (parte giratória que roda em torno do eixo principal do aparelho) na qual se encontra a luneta que gira em torno do eixo dos munhões ou eixo secundário, sendo este por sua vez, suportado por dois montantes, num dos quais se encontra o limbo vertical. (ANTUNES, 1995 , p.16).

O teodolito deve ser posicionado de forma que fique totalmente nivelado com o eixo de gravidade do local e ele deve possuir uma bússola. O local onde ficará o teodolito é chamado de ponto estação[6]. O teodolito irá calcular o ângulo do aparelho com o ponto a qual se quer obter o ângulo, mas para isso o ele precisa de um ponto de apoio para realizar o calculo, pois não existe angulo entre dois pontos.

Esse ponto será o norte absoluto, caso o aparelho esteja mais próximo do pólo norte ou o sul absoluto, caso o aparelho esteja mais próximo do pólo sul. O calculo  é feito a partir de um triângulo formado entre o esse ponto presente no eixo latitudinal terrestre, o ponto estação e o ponto desejado.

4.4. Funcionamento básico do distanciômetro

Essencialmente os instrumentos eletro-ópticos de medição de distâncias são compostos por um transmissor que enviam uma onda contínua, refletida num refletor de espelhos situado no extremo do segmento a ser medido, e um receptor colocado junto do emissor que capta a onda refletida. Existem também aparelhos em que o emissor e o receptor são dois instrumentos distintos e colocados nos extremos do segmento a medir. A onda emitida, designada por onda portadora, é modulada e irá permitir a medição da distância por comparação de fase entre o estado de emissão e recepção. (ANTUNES, 1995 , p.16).

Essa técnica de medida entre dois pontos é utilizados quando a distancia é superior a 10m, o que torna inviável o uso de trenas. Ela funciona colocando-se um emissor de onda no ponto de origem e um receptor de onda no ponto de destino e o distancia entre os pontos é calculada através do tempo que a onda demora a chegar ao receptor, já que distância é igual a velocidade dividida pelo tempo. Depois de se obter os ângulos e distâncias (coordenadas polares) de todos os pontos necessários, conseguiremos obter as coordenadas cartesianas desses pontos através das formulas:

x = r.cosθ

y = r.senθ

FIGURA 7 - Coordenadas Polares
Fonte: http://pt.wikipedia.org/wiki/Coordenadas_polares

4.5. Funcionamento básico do GPS

O GPS (Global Positioning System) é um sistema de posicionamento de cobertura global, isto é, possível de ser utilizado em qualquer ponto à superfície da Terra ou nas suas imediações atmosféricas, e que se baseia na medição de distâncias através de tempos de percurso e diferença de fase de sinais electromagnéticos emitidos por uma constelação de satélites artificiais. (ANTUNES, 1995 , p.39).

O sistema GPS é divido em 3 partes: segmento espacial, segmento de controle e segmento do usuário. O segmento espacial é composto por 24 satélites em orbita sendo 21 ativos e 3 reservas, esses satélites estão posicionados a 20.000 metros de altitude, possuem um período de revolução de 12 horas e tem inclinação de 55 graus em relação ao nível do equador. O segmento usuário é basicamente o aparelho do usuário, composto de hardware e software necessários para enviar e receber sinais dos satélites do segmento espacial e assim calcular seu posicionamento através da distancia do satélite-receptor. Esses cálculos são feitos segundo as leis de Kepler com algumas modificações feitas por Newton, que falam sobre as leis das orbitas de satélites. O terceiro segmento é o de controle que é composto por satélites auxiliares, localizados em vários locais estratégicos da orbita terrestre, eles servem de interface entre o sinal do usuário e o sinal do satélite de controle, seu objetivo é de calcular dados relativos a orbita e ajustar a diferença de tempo entre os relógios dos demais satélites.     

4.6. Levantamento de dados através do GPS

Para se realizar um levantamento via GPS é necessário que a pessoa responsável pelo levantamento visite o local a qual se quer obter os dados geográficos. Supondo que se queira salvar as informações geográficas da casa da figura abaixo em uma tabela de edificações, para isso a pessoa responsável irá se posicionar de frente para a primeira aresta da edificação com o GPS em mãos e obter o valor da coordenada informada pelo GPS, depois de obter esse valor a pessoa irá anotar essa coordenada no papel ou na memória do aparelho, feito isso a pessoa irá repetir todo processo da segunda coordenada até a última, até que todas as coordenadas do polígono tenham sido obtidas.

Outro detalhe importante é que a pessoa deverá salvar as coordenadas na ordem anti-horária, pois é dessa maneira que o SGBD Oracle Spatial armazenada os dados geográficos. Será necessário repetir a primeira coordenada, depois do último ponto para que aquele dado geográfico seja considerado como um polígono e não uma linha. Outra observação importante é que o aparelho de GPS possui um erro de 10 metros e isso significa que qualquer ponto salvo, na realidade pode estar em qualquer lugar num raio de 10 metros desse ponto. 

FIGURA 8 - Georreferenciamento de uma edificação
Fonte: Google Maps

4.7. Levantamento fotogramétrico

Os mapas topográficos são elaborados pelo Método Aerofotogramétrico que consiste em utilizar um avião equipado com uma câmara métrica que toma fotografias seqüenciais parcialmente sobrepostas, em faixas paralelas, recobrindo toda a área a mapear.(TIMBÓ,2001, pg. 33).

Um processo de aerolevantamento é divido em seis partes, a primeiro parte seria a de planejamento e execução do vôo, segundo Marco Antônio Timbó: "Definir a distância focal da câmara aérea, a altura de vôo, a superposição longitudinal e lateral, o número de fotos por faixa, o número de faixas do vôo, o total de fotos, a quantidade de filmes” (TIMBÓ,2001, pg.33).

A segunda parte seria revelar as fotos e armazená-las no computador , para que essas possam ser utilizadas nas duas etapas seguintes. A terceira etapa seria de levantamento de pontos de apoio terrestre, esses pontos são lugares fáceis de identificar tanto na visão terrestre quanto na visão aérea. A quarta etapa seria a de aerotriangulação fotogramétrica, seu objetivo é de aumentar o número de pontos de controle sem a utilização de trabalho de campo.

A quinta etapa seria a de reambulação das fotos, que consistes em anotar informações importantes sobre o local que não estão visíveis na imagem. A sexta etapa seria a de restituição fotogramétrica, que consiste em transformar a projeção das imagens de cônica para ortogonal. Para entender melhor veja figura abaixo:

FIGURA 9 - Restituição fotogramétrica
Fonte: Google Maps

A figura acima não mostra imagens em projeções cônicas, mas nos dá uma noção de como funciona a restituição, se imaginarmos o avião tirando uma foto da esquerda para direito e focarmos nosso olhar em uma edificação, perceberemos que a imagem nos mostrará mais as laterais esquerdas de uma edificação, caso a imagem seja tirada da direita para esquerda, a imagem nos mostrará mais as laterais direitas da edificação e assim por diante para os demais sentidos. A restituição irá selecionar uma área de sobreposição entre as imagens de todos os sentidos. No caso do aerolevantamento realizado para Prodabel em 2008, a porcentagem de sobreposição das imagens foi de 60%.

4.8. Diferença entre dado Raster e Vetorial

O mapa digital consiste em uma base de dados computacional finita e discreta, tornando-se necessário converter a realidade geográfica complexa em número finito de registros de acordo com um modelo de estrutura de dados (Goodchild, 1993). Quanto aos modelos de estrutura de dados, os dois tipos básicos equivalem à representação raster ou matricial e a representação vetorial. A representação vetorial representa um conjunto georreferenciado de coordenadas que descrevem a localização do objeto no espaço geográfico. Ou seja, um elemento único e distinto pode ser representado por um conjunto de dados geométricos em um mapa (coordenadas e informação topológica) e pelos seus atributos descritivos, os quais são informações referente às propriedades não espaciais. Esta representação vetorial consiste então em uma coleção de segmentos de linhas que identificam os limites de pontos, linhas e áreas. Já, na abordagem raster, a informação espacial é traduzida por um arranjo matricial bidimensional, onde cada célula corresponde a uma unidade elementar do espaço geográfico, recebendo um rótulo ou valor. As células possuem uma dimensão específica e cada uma representa uma localização singular. Conjuntos de células de igual valor ou atributo representam a expressão no plano cartográfico de feições pontuais, lineares ou de áreas (Fig. 7b). Em suma, a representação raster ou matricial pode ser considerada como uma representação explícita, posto que nesta um conjunto de células deva ser sempre explicitado para se definir a localização, forma e área de uma entidade geográfica, enquanto que a vetorial armazena informações apenas sobre os vértices dos limites externos de um objeto, implicando na sua forma e área interior. (SOARES-FILHO,2000, p.7-9).

A Prodabel possui dados vetoriais e raster armazenados em banco de dados. Para a realização do trabalho foram utilizados dados raster do Google e dados vetoriais da Prodabel (Tabelas lote_ctm, endereço, edificação, mde, mdtb e outras), a justificativa para o uso de imagens apenas do Google é pelo fato de que suas imagens são mais atuais (segundo semestre de 2009) do que as da Prodabel, que são do primeiro semestre de 2008. A justificativa para o uso de dados vetoriais apenas da Prodabel, é devido ao fato de que seus dados são bem mais precisos que os do Google, já que seu foco é apenas em informações de Belo Horizonte e o Google possui informações geográficas do mundo inteiro. A figura abaixo irá ilustrar com facilidade a diferença entre o dado raster e o dado vetorial, sendo que os dados raster seriam as imagens ao fundo e o dados vetoriais seriam os contornos da regionais.

FIGURA 10 - Regionais de Belo Horizonte exibidas no Google Earth.|
Fonte: Google Earth/Prodabel

4.9. Vetorização de dados a partir de uma ortofoto

Para se criar dados vetoriais a partir de uma ortofoto na Prodabel são utilizados dois softwares , um deles chamado Map Info que é um Desktop Mapping e o outro chamado ArcGis que é considerado um Sistema de Informações Geográficas(SIG). Esses dois softwares dão a possibilidade ao usuário de criar pontos, linhas e polígonos em cima de uma imagem georreferenciada[7]. Essas figuras geométricas servem para representar objetos no espaço.

Edificações seriam polígonos por exemplo, trechos de ruas seriam considerados linhas, árvores poderiam ser consideradas como pontos caso o nível de detalhamento de representação não necessite ser grande.

Feitas as representações é necessário georreferenciar esse objeto, ou seja saber em qual lugar do mundo esse objeto se encontra, isso é feito salvando-se todas as coordenadas do objeto. Depois de fazer um desenho e o georreferenciamento de um objeto é aconselhável agregar algum dado não espacial ao objeto, para que esse possa agregar algum valor. Um lote poderia ser armazenado com o número do lote por exemplo. Terminadas as três etapas , basta salvar os dados em algum banco de dados geográfico, como o Oracle Spatial ou então salvar os dados em formatos proprietário seja do Map Info ou do ArcGis. Para os dados usados no trabalho foram utilizados apenas dados armazenados em banco de dados.

 Em relação as formas de levantamento de dados, essa se mostra a forma mais eficiente para áreas muito grandes, como Belo Horizonte, pois não é necessária nenhuma operação de campo. Caso fosse necessário realizar um levantamento de todas as edificações de Belo Horizonte e fossem utilizados métodos topográficos por exemplo, seriam necessárias milhares de visitas a vários locais, algo que tomaria muito tempo.

FIGURA 11 - Representação vetorial a partir de uma ortofoto.
Fonte: Google Earth

Na figura acima temos 3 representações vetoriais a partir de uma ortofoto, em que os pontos azuis representam árvores, o polígono vermelho representa uma quadra e os polígonos verdes representam edificações.

4.10. Funcionamento básico do Laser Scanning

Uma tecnologia emergente para a obtenção de informação altimétrica é o laser scanning. Este sistema de sensoriamento remoto ativo utiliza plataformas aéreas (aeronaves, helicópteros) para obter dados a respeito da altura dos objetos e da superfície do terreno utilizando feixes de laser (LASER–Light Amplification by Stimulatied Emission of Radiance). Para se obtiver a posição altimétrica e planimétrica com precisão dos pontos contidos no terreno e nas elevações (árvores, edificações etc), é necessário o apoio com informações de GPS diferencial (dGPS) e ainda de um sistema que fornecem dados a respeito da orientação da plataforma durante a aquisição da imagem. Este sistema é a unidade de medição de inércia (IMU-Inertial Measurement Unit) a qual é encarregada de determinar os ângulos de inclinação do sensor em três direções (CENTENO, 2000). A tecnologia laser scanning foi desenvolvida para melhorar os levantamentos altimétricos a partir de plataformas aéreas. Esta tecnologia abre um grande leque de perspectivas no estudo do ambiente urbano, onde é necessário conhecer tanto a projeção horizontal da área como a altura dos objetos (WEHR;LOHR, 1999).

O processo de laser scanning é um tipo de aerolevantamento, que tem como principal objetivo calcular a altimétrica de um determinado local, ele funciona através da emissão de raios laser que saem da aeronave e vão em direção a superfície do local, como o avião sempre voa na mesma altitude e emite sempre a mesma freqüência, é possível calcular a altura de um determinado ponto a partir do tempo que o laser gasta para refletir no solo e voltar para aeronave. Outra observação importante é que todo ponto que tem sua altitude calculada, é também georreferenciado, ou seja suas coordenadas x e y são calculadas através de um aparelho GPS, sendo assim o processo do laser scanning, gera uma nuvem de pontos tridimensionais como saída. Além de obter as coordenadas x,y,z de um ponto, um processo de laser scanning também é capaz obter a cor do um ponto qualquer, através do processo de reflexão da luz. O aparelho de laser utilizado pela empresa Esteio foi o ALS50 da marca Leica Geosystems e ele é capaz de obter até 150.000 coordenadas por segundos.

4.11. Modelos Digitais de Terreno e Elevação

A partir da nuvem de pontos tridimensionais geradas pelo processo de perfilamento a laser é possível se obter um MDE (Modelo Digital de Elevação) que é um modelo tridimensional de todo ambiente (possui coordenadas e alturas das edificações, vegetações, rodovias) e um MDT (Modelo Digital de Terreno) que é um modelo tridimensional apenas do terreno (não possui casas, prédios e árvores) , esse segundo é usados principalmente em áreas urbanas e é gerado a partir de um algoritmo que consegue identificar e classificar objetos de acordo com suas cores e alturas.

FIGURA 12 - Classificação de objetos a partir de altura e cor.
Fonte: (HAALA, 1999, p.336).

A figura acima mostra que casas possuem altos valores de altura e cores próximas de laranja, prédios possuem altos valores de altura e têm as cores próximas de cinza. Ruas possuem baixos valores de altura e cores próximas do cinza. No caso da vegetação, as árvores possuem altos valores de altura e cores próximas do verde, para áreas gramadas, as cores são próximas do verde e a altura é pequena. Para um modelo digital de terreno, casas, prédios e árvores seriam desconsiderados. A figura também mostra outro dado interessante, que é a diferença de precisão do dado se considerar apenas as cores, e depois se considerarmos cores e alturas para diferenciação dos objetos.

4.12. Modelos Digital de Terreno com as bases das edificações trianguladas

Esse modelo é conhecido como Modelo Digital de Terreno com as Bases (MDTB), tem como objetivo encontrar a altura dos pontos das bases da edificação, seu processo de criação se dá pela triangulação de pontos vizinhos das edificações a partir do MDT, ou seja, é possível encontrar a altura de qualquer ponto contido na base da edificação. O método de triangulação utilizado foi a Triangulação de Delaunay, que será explicado abaixo:

O critério utilizado na triangulação de Delaunay é o de maximização dos ângulos mínimos de cada triângulo. Isto é equivalente a dizer que, a malha final, deve conter triângulos o mais próximo de eqüiláteros possível evitando-se a criação de triângulos afinados, ou seja, triângulos com ângulos internos muito agudos. Uma forma equivalente de se implementar a triangulação de Delaunay utiliza o critério do circum círculo. Esse critério, esquematizado na figura abaixo, diz que uma triangulação é de Delaunay se: O círculo que passa pelos três vértices de cada triângulo da malha triangular não contém, no seu interior, nenhum ponto do conjunto das amostras além dos vértices do triângulo em questão. (FELGUEIRA; CAMARA, 2001, p. 7-15).

 


FIGURA 13 - Triangulação de Delaunay.
Fonte: (COMBA, p.3).

FIGURA 14 - Critério do circum círculo.
Fonte: (COMBA, p.4).

Para entender como foi utilizada a triangulação de Delaunay no MDTB, veja a figura abaixo:

FIGURA 15 - Triangulação do modelo MDTB.
Fonte: do autor.

A figura acima mostra uma nuvem de pontos tridimensionais do modelo digital de terreno em volta da edificação e um triângulo de Delaunay dentro da edificação. A partir desse triângulo é possível obter as coordenadas x, y de qualquer ponto interno, ligando-se esse ponto aos dois vértices inferiores do triângulo de Delaunay e assim criando um triângulo interior que é proporcional ao triângulo de Delaunay. Com isso é possível calcular os valores x e y desse ponto através de semelhança de triângulos. Para se obter a altura do ponto basta calcular a média ponderada entre as alturas dos três pontos de Delaunay, onde o peso é calculado pela distância euclidiana do ponto a qual se quer obter a medida para os três pontos do triângulo Delaunay. Isso é feito porque quanto mais próximo de um ponto, maior a influencia do mesmo para o calculo da altura, do que para os demais pontos mais distantes. A figura acima só mostra um triângulo de Delaunay, mas na prática, a edificação é totalmente coberta por triângulos de Delaunay e todos os pontos dentro da edificação tem sua altura calculada.

5. ORACLE SPATIAL

5.1. Introdução

No capitulo anterior foi explicado como foram obtidos todos os dados espaciais utilizados para criação do algoritmo. Antes de explicar como foi realizado o mesmo, será dada uma explicação básica sobre banco de dados espaciais, isso servirá para entender como os dados geográficos são modelados de maneira geral, após essa explicação o foco será o Oracle Spatial que é o SGBD (Sistema Gerenciador de Banco de Dados) espacial utilizado na Prodabel para armazenar dados geográficos, sua utilidade neste capitulo será de mostrar como os dados espaciais são armazenados e quais foram as funções espaciais utilizadas no algoritmo. Após essas explicações será dado o inicio da explicação do algoritmo de criação do modelo 3d.

5.2. Introdução e conceitos básicos sobre dados espaciais.

Segundo Gatrel: “O  espaço geográfico é o meio físico onde as entidades geográficas coexistem. Uma entidade geográfica  é qualquer entidade identificável do mundo real, possuindo características espaciais e relacionamentos espaciais com outras entidades geográficas”. (GATREL, 1991, p.119). Ou seja o espaço geográfico é composto por entidades geográficas georeferrenciados que se relacionam entre si de diversas maneiras. Abaixo segue o conceito de dado espacial:

Dado espacial é qualquer tipo de dado que descreve fenômenos aos quais esteja associada alguma dimensão espacial. Dados geográficos ou georreferenciados são dados espaciais em que a dimensão espacial está associada à  sua localização na superfície da terra, num determinado instante ou período de tempo [CCHM96]. (BORGES, 2002, p.5).

O período de tempo de um dado espacial é importante para realizar projeções futuras de algum fato ou então analisar algum dado específico do passado, imaginemos dados espaciais correspondentes ao desmatamento da floresta amazônica atualmente, de 20 anos atrás, e uma projeção 20 anos a frente, esses três dados representam o mesmo lugar, mas em tempos diferentes.

Os dados geográficos possuem três características fundamentais: características espaciais, não-espaciais e temporais [Dang90, MePi94,  LaTh92]. As características espaciais informam a posição geográfica do fenômeno e sua geometria. As características não-espaciais descrevem o fenômeno e as características temporais informam o tempo de validade dos dados geográficos e suas variações sobre o tempo. A representação espacial de uma entidade geográfica é a descrição da sua forma geométrica associada à posição geográfica. (BORGES, 2002, p.5).

Para exemplificar as características de um dado espacial, será dado o exemplo da tabela de lotes do cadastro técnico municipal, ela possui uma coluna de características espacial que é a geometria do lote armazenada na estrutura de dados sdo_geometry, que será explicada posteriormente.

Uma característica não espacial é o numero do lote que é armazenada em um varchar[8]. A característica temporal não é armazenada diretamente na tabela, mas  é sabido que esses dados foram gerados a partir da vetorização das ortofotos de Belo Horizonte de 2008.

Os dados geográficos possuem propriedades geométricas e topológicas. As propriedades geométricas são propriedades métricas. A partir de feições geométricas primitivas, tais como pontos, linhas e polígonos, os quais representam a geometria das entidades, são estabelecidos os relacionamentos métricos. Esses relacionamentos expressam a métrica das feições com referência a um sistema de coordenadas. De acordo com a geometria são estabelecidas algumas propriedades geométricas tais como, comprimento, sinuosidade e orientação para linha; perímetro e área da superfície para polígonos, volume para entidades tridimensionais, e forma e inclinação tanto para linhas quanto para polígonos. (BORGES, 2002, pg.5).

Relações métricas entre geometrias são realizadas através das funções sdo_geom.sdo_distance,sdo_geom.within_distance e sdo_nn_distance no Oracle Spatial, e relações topológicas são feitas através das funções sdo_relate e sdo_geom.sdo_relate, todas essas funções serão explicadas posteriormente. Assim como já foi explicado anteriormente no capitulo 2, dados espaciais podem estar na forma vetorial ou raster e as relações geométricas e topológicas são válidas para as duas formas de dados, sendo incomuns de seriam usadas para o formato raster.

5.3. Estrutura de armazenamento de dados vetoriais no Oracle Spatial.

Dados geográficos vetoriais são armazenados na estrutura de dados sdo_geometry no Oracle Spatial, essa estrutura é um objeto complexo não atômico. Para adotar essa estrutura o SGBD deve ser considerado orientado a objetos, já que a coluna que armazena dados geográficos não é um dado atômico. A estrutura sdo_geometry armazena a localização e a forma do objeto geográfico, essa forma pode ser um ponto, uma linha, um polígono, um multiponto, uma multilinha, um multipolígono ,uma coleção[9],um sólido e multisólido. Esse objeto também armazena o número de dimensões de um dado geográfico, que pode ser de 2, 3 ou 4 dimensões. A estrutura de dados é descrita da seguinte maneira:

Nome do atributo

Tipo do atributo

SDO_GTYPE

NUMBER

SDO_SRID

NUMBER[10]

SDO_POINT

SDO_POINT_TYPE

SDO_ELEM_INFO

SDO_ELEM_INFO_ARRAY

SDO_ORDINATES

SDO_ORDINATE_ARRAY

FIGURA 16 - Estrutura de dados sdo_geometry
Fonte: (KOTHURI, et all, 2007, p.60).

O atributo sdo_gtype define o tipo da geometria e sua dimensão. Ela é armazenada com quatro dígitos no formato D00T, onde D representa a dimensão da geometria. T representa o tipo da geometria que pode ser 0 - tipo não interpretado pelo Oracle; 1 - ponto; 2 - linha; 3 - polígono/superfície; 4 - coleção; 5 - multiponto; 6 - multilinha; 7 - multipolígono; 8 - sólido; e 9 - multisólido. O atributo sdo_srid define a projeção e o datum de uma geometria, um valor 8192 seria considerado como o datum horizontal WGS84 no formato geodésico que é a projeção e o datum usados pelo Google Earth. Um valor 82301 representaria o datum SAD69 no formato plano cartesiano, que é o datum e a projeção utilizadas pela Prodabel. O atributo sdo_point é do tipo sdo_point_type que é um vetor de number de três posições. Ele armazena os valores x, y e z de um ponto. Caso a geometria seja um ponto é recomendado que as coordenadas do ponto fiquem aqui, caso a geometria seja um polígono é recomendado que o centroide do polígono seja armazenado aqui para que futuras consultas espaciais sejam otimizadas. O atributo sdo_elem_info é do tipo sdo_elem_info_array , e esse é um vetor de number de até 1.048.576 posições, ele define como se deve interpretar as coordenadas armazenadas no atributo sdo_ordinates, cada três elementos desse vetor são chamados de tupla descritora e eles descrevem um elemento ou uma parte de um elemento da geometria. A tripla descritora é da seguinte forma <offset, element-type, interpretation>.Offset define o índice inicial do elemento no atributo sdo_ordinates. Element-type indica o tipo do elemento. A Interpretation define o gênero de um objeto, linhas podem ser retas ou curvas e polígonos podem ser retângulos ou círculo. Essa definição de Interpretation é válida somente para geometrias não-compostas, no caso de polígonos compostos a Interpretation mostra quantos sub elementos estão contidos nesse elemento.   

FIGURA 17 - Valores da tripla descritora
Fonte: (KOTHURI, 2007, p.76).

A figura acima mostra três tipo de elementos, pontos que tem element-type igual a 1; linhas que tem element-type igual a 2;polígonos que tem element-type igual a 1003. Linhas podem ter interpretation igual a 1 para retas e 2 para arcos. Polígonos podem ser retângulos ou círculos e possuem interpretation iguais a 3 e 4 respectivamente.

FIGURA 18 - Valores da tripla descritora para polígonos compostos.
Fonte: (KOTHURI, 2007, p.85).

A figura acima mostra como especificar a tripla descritora para polígonos simples com vazios internos. O polígono externo terá element-type igual a 1003 e o seu polígono interno terá element-type igual a 2003, esse segundo polígono marcará a área vazia do polígono externo. Linhas composta possuem element-type igual a 4 e o terceiro valor de sua tripla descritora demonstra quantos sub elementos pertencem a ela.

Para polígonos compostos internos ou externos que possuem seus element-type terminando com 5, o terceiro valor de sua tripla descritora demonstra quantos sub elementos pertencem a esse polígono.

O atributo sdo_ordinates é do tipo sdo_ordinate_array ,esse por sua vez é um vetor de number até 1048576 posições e ele armazena os valores de todas as coordenadas da geometria. Uma linha que conecta uma ponto A(XaYa) a um ponto B(XbYb) teria o campo sdo_ordinates preenchido da seguinte ordem (XaYaXbYb), caso a geometria tenha três dimensões, Za seria armazenado depois de Ya e Zb seria armazenado depois de Yb e assim sucessivamente para quatro dimensões.

5.4. Funções espaciais do Oracle Spatial utilizadas no algoritmo.

5.4.1. Sdo_centroid

Matematicamente falando, o centróide de um objeto geométrico é definido pela posição média de todos os pontos da geometria. Se o numero de pontos é finito, assim como o conjunto de pontos, o valor de x do centróide é a media de todos os valores x da geometria, e o valor y do centróide é a media de todos os valores y da geometria. Para um número infinito de pontos como curvas e polígonos, é usada a integral equivalente. (KOTHURI, et all, 2007, pg.335).

Em outras palavras o centróide de uma geometria é o seu ponto de gravidade ou baricentro. No Oracle Spatial o centróide de um ponto sempre retorna o próprio ponto, no caso de uma linha retorna nulo, e para um polígono, o centróide pode estar fora do mesmo, assim como mostra a figura abaixo:

FIGURA 19: Centróide.
Fonte: (KOTHURI, 2007, p.336).

Essa função terá a utilidade de otimizar algumas consultas espaciais de relacionamento topográfico. Um exemplo de seu uso seria:
select SDO_GEOM.SDO_CENTROID(geoloc, 0.5) from lote_ctm where num_lote_ctm =  ’190722200050’. Essa função passa como parâmetro, uma geometria e um inteiro contendo a tolerância de erro para o calculo e retorna uma geometria que é um ponto. Outra observação importante é que geoloc é nome da coluna sdo_geometry da tabela de lotes.

5.4.2. Sdo_cs.transform

Essa função terá a utilidade de converter o datum de uma geometria de SAD69 para WGS84, isso será feito antes de gravar as coordenadas dos pontos tridimensionais das edificações em arquivos KML(Keyhole Markup Language), já que o Google Earth só lê coordenadas no sistema de coordenadas WGS84. Será necessário realizar o processo reverso para calcular quais edificações estarão visíveis para o usuário no algoritmo de visualização.

Exemplo de query[11] que converte Sad69 para WGS84: select SDO_CS.TRANSFORM(geoloc, 8192) from lote_ctm_ sad69 where num_lote_ctm = ’190722200050’.Exemplo de query que converte WGS84 para Sad69:

Select SDO_CS.TRANSFORM(geoloc,82301) from lote_ctm_ wgs84 where num_lote_ctm = ’190722200050’;

A função passa como parâmetro uma geometria e o srid da a qual se quer realizar a conversão e retorna uma geometria transformada.

5.4.3. Sdo_difference

Essa função subtrai a segunda geometria da primeira, ela retorna a região exclusiva a primeira geometria. Essa função será útil nas seguintes situações:
*Ambas geometrias possuem áreas(são polígonos ou multipoligonos).
*A segunda geometria é um polígono ou uma linha e a primeira geometria é uma linha.
*A primeira geometria é um ponto.
Se não for possível realizar o calculo a função retorna a primeira geometria passada por parâmetro. (KOTHURI, 2007, p.324).

Essa função passa como parâmetro duas geometrias e um valor de tolerância de erro para o calculo e retorna uma geometria que contém a diferença entre as duas. Essa função servirá para corrigir problemas de “bolo de noiva” que são sobreposições de polígonos e acarretam em cálculos incorretos da altura de edificações. Abaixo segue

um exemplo de query com um uso da função:

select SDO_GEOM.SDO_DIFFERENCE(select1.geoloc,select2.geoloc,0.5) from (select geoloc from lote_ctm where num_lote_ctm = ’ 190722200050’) select1,
(select geoloc from lote_ctm where num_lote_ctm = ’ 190722200051’) select2

Essa consulta espacial calcula a diferença entre as geometrias de dois lotes quaisquer com uma tolerância de 50 centímetros.

FIGURA 20 - Diferença entre polígonos.
Fonte: (KOTHURI, 2007, p.320).

5.4.4. Sdo_distance      

Essa função calcula a menor distancia entre todos os pontos da primeira geometria com todos os pontos da segunda. O calculo da distancia leva em conta todos os vértices e curvas interpoladas de cada geometria. No exemplo da linha abaixo, o segundo vértice da linha é mais próximo do ponto do que o primeiro vértice. No exemplo do polígono abaixo uma das curvas é mais próximo do ponto do que as demais. (KOTHURI, 2007, p.311). 

FIGURA 21 - Distância entre geometrias.
Fonte: (KOTHURI, 2007, p.310).

Essa função passa como parâmetro duas geometrias , a tolerância de erro para o calculo, e um quarto parâmetro opcional que indica a unidade de medida do retorno da função, se esse quarto parâmetro não for especificado, é escolhida a unidade de medida utilizada na projeção. Exemplo de query com um uso da função:
select SDO_GEOM.SDO_DISTANCE (select1.geoloc,select2.geoloc,0.5) from
(select geoloc from lote_ctm where num_lote_ctm = ’ 190722200050’) select1,
(select geoloc from lote_ctm where num_lote_ctm = ’ 190722200051’) select2

Essa função irá retornar a distância em metros entre esses dois lotes com uma tolerância de erro de 50 centímetros. A distância é retornada em metros porque essa é a unidade de medida do datum Sad69 projetado a partir da projeção universal transversa de Mercator.

5.4.5. Sdo_geom.sdo_buffer

Essa função calcula uma área em volta de uma geometria caso a distância passada por parâmetro seja positiva. Caso essa distância seja negativa, essa função retorna uma área interna ao polígono. São passados por parâmetro uma geometria, o tamanho do buffer e a tolerância de erro. Essa função servirá para encontrar o buffer interno de uma edificação. Exemplo de query com um uso da função: select SDO_GEOM.SDO_BUFFER(l.geoloc,-.5,.5) from lote_ctm l where num_lote_ctm = ’ 190722200051’.

A função acima retorna o buffer interno de um lote e pode ser observada na figura abaixo.

FIGURA 22 - Buffer Interno.
Fonte: do autor.

5.4.6. Sdo_geom.sdo_relate e sdo_relate 

Essa função calcula qual é o relacionamento topológico entre duas geometrias, essas relações podem ser as seguintes: inside,coveredby,on,contains,covers,overlapbdyintersect,touch,equal,overlapbdydisjoint,anyinteract,disjoint.

FIGURA 23 - Relacionamentos topológicos no Oracle Spatial.
Fonte: (KOTHURI, 2007, p.276).

O relacionamento Inside mostra que a geometria A está totalmente dentro de Q, o relacionamento Coverdby mostra que A está totalmente dentro de Q, porém sua borda sobrepõe uma margem de Q. O relacionamento On mostra que A está totalmente contida na margem de Q. O relacionamento Contais é o inverso de Inside e o relacionamento Covers é o inverso Coverdby. O relacionamento Overlapbdyintersect mostra que que apenas uma parte de A intercepta a geometria Q e essa parte não é somente uma margem. O relacionamento Touch mostra que A toca a margem de Q.

O Relacionamento Equal mostra que as duas geometrias são idênticas e obviamente se sobrepõem por completo. O relacionamento Overlapbdydisjoint acontece se o interior de A intercepta o interior e a margem de Q, mas suas margens não se interceptam. E por ultimo o relacionamento de Disjoint que mostra que duas geometrias estão completamente disjuntas.  Essa função possui duas formas de uso, em uma das formas são passados como parâmetro as duas geometrias, um varchar contendo 'DETERMINE', e um valor contendo a tolerância do erro, o retorno dessa função será um varchar contendo qual é o tipo de relacionamento entre as duas geometrias.
Exemplo de query com o primeiro uso da função: select sdo_relate(select1.geoloc, 'DETERMINE', select2.geoloc, 0.5)  from (select geoloc from lote_ctm where num_lote_ctm = ’190722200050’) select1, (select geoloc from lote_ctm where num_lote_ctm = ’190722200051’) select2.

A consulta acima mostra qual é o tipo de relacionamento entre dois lotes distintos, sendo assim as duas únicas relações aceitáveis são de disjoint ou touch, caso os lotes sejam vizinhos. O segundo uso da função serve para saber se uma determinada relação topológica é verdadeira ou falsa, a função recebe três parâmetros, as duas geometrias e um varchar contendo qual tipo de relacionamento se quer descobrir.

Exemplo de query com o segundo uso da função: select e.geoloc from edificacao e, croqui.lote_ctm l where l.num_lote_ctm = ‘080403100690’ and sdo_relate(e.geoloc, l.geoloc, 'INSIDE') = 'TRUE'.

A consulta acima mostra como encontrar todas as edificações contidas dentro de um determinado lote, a mesma foi utilizada no algoritmo, porém de uma forma mais eficiente.

A função sdo_relate se diferencia da função sdo_geom.sdo_relate pelo fato de que a primeira função só permite o uso de geometrias indexadas e a segunda não tem restrições, sdo_geom.sdo_relate existe para determinar relacionamentos topológicos entre dois dados sintéticos[12] ou entre um dado sintético e outro analítico[13].

5.4.7. Sdo_intersection

Essa função tem o objetivo de  calcular a interseção entre duas geometrias. São passadas como parâmetro duas geometrias, o valor da tolerância de erro e é retornada uma geometria contendo a interseção entre os polígonos, caso não haja interseção é retornado null. Exemplo de query com um uso da função:

select SDO_GEOM.SDO_INTERSECTION( select1.geoloc,select2.geoloc,0.5) from
(select geoloc from lote_ctm where num_lote_ctm = ’ 190722200050’) select1,
(select geoloc from lote_ctm where num_lote_ctm = ’ 190722200051’) select2

A query acima irá retornar null caso os lotes sejam disjuntos ou então uma linha caso os lotes sejam vizinhos.

FIGURA 24 - Interseção entre polígonos.
Fonte: (KOTHURI, 2007, p.320).

5.4.8. Sdo_mbr   

A significado da função mbr é Mininum Boundary Rectangle que quer dizer menor retângulo envolvente, e é exatamente isso que a função calcula. A função recebe apenas uma geometria como parâmetro e retorna uma geometria contendo seu retângulo envolvente. Caso a geometria seja um ponto, o próprio ponto é retornado. Se a geometria for uma linha paralela ao eixo x ou y, a própria reta é  retornada.

Exemplo de query com um uso da função: select SDO_GEOM.SDO_MBR(l.geoloc) from croqui.lote_ctm l where num_lote_ctm = ’190722200051’. A função acima calcula o retângulo envolvente de um determinado lote. Abaixo seguem exemplos de retângulos envolventes de algumas geometrias.

FIGURA 25 - Retângulo Envolvente.
Fonte: (KOTHURI, 2007, p.331).

A figura acima mostra estrelas no pontos inferior esquerdo e no ponto superior direito do retângulo envolvente. Isso acontece porque a geometria retornada é sempre um retângulo e esse por sua vez possui uma peculiaridade, que é de armazenar apenas esses dois pontos para evitar redundância de dados. Isso é feito já que a partir desses dois pontos é possível obter os demais pontos do retângulo.

5.4.9. Sdo_Util.GetVertices

Essa função tem a utilidade de extrair as coordenadas de um conjunto de geometrias, e quando usada juntamente com a função Table, retorna todas as coordenadas em forma de uma tabela com o número de colunas baseado no número de dimensões das geometrias selecionadas. Essa função só recebe um parâmetro que é uma geometria. A seguir segue um exemplo do uso da função: select t.x,t.y from (select geoloc from lote_ctm num_lote_ctm = ’190722200051’ )lotes, TABLE(SDO_UTIL.GETVERTICES(lotes.geoloc)) t

O exemplo acima retorna todos os valores x e y de todas as coordenadas de um determinado lote. O uso dessa função será útil para obter todas coordenadas z de uma edificação, já que para o calculo da altura média de uma edificação, as demais informações contidas nas geometrias são desnecessárias.

5.4.10. Sdo_geom.sdo_area

Essa função calcula a área de um objeto sdo_geometry. Por exemplo, se temos um retângulo com 10 metros de altura e 20 de largura, a área calculada será 10*20 = 200 m². Da mesma forma, para outros objetos geométricos, essa função retorna a área abrangida por eles.
(KOTHURI, 2007, p.327).

Essas função calcula a área de um polígono, passando-se como parâmetro uma geometria, a tolerância de erro e retorna um number, com o valor da área retornado na unidade de medida usada pela projeção da geometria, como a unidade de medida usada na projeção universal transversa de Mercator é metros, o valor retornado sempre estará em metros quadrados. A seguir segue um exemplo do uso da função:  select sdo_geom.sdo_area (geoloc) from croqui.lote_ctm  where num_lote_ctm = ’190722200051’. A função acima retorna a área de um lote qualquer em metros quadrados.

5.4.11. Sdo_filter

O operador sdo_filter identifica quais geometrias de uma tabela, tem seus respectivos retângulos envolventes interceptando os  retângulos envolventes de outras geometrias de outra tabela. Este operador retorna sempre um super conjunto de resultados , em relação a outros operadores de interação. Exatamente por isso , este operador é uma aproximação de outros operadores. (KOTHURI, 2007, p.269).

Esse operador tem o objetivo de otimizar consultar espaciais de relacionamento topológico, a seguir serão mostradas duas consultas, uma que não usa esse operador e outra que usa:

1) select e.geoloc from edificacao e, lote_ctm l where l.num_lote_ctm = ’190722200051’ and sdo_relate(e.geoloc, l.geoloc, 'MASK=INSIDE') = 'TRUE'.

2) select e.geoloc from edificacao e, lote_ctm l where l.num_lote_ctm = ’190722200051’and SDO_relate(l.geometria,SDO_GEOM.SDO_CENTROID(E.geoloc, .5),'MASK=CONTAINS+COVERS')='TRUE' and SDO_FILTER(E.geoloc, l.geometria) = 'TRUE'.

As duas consultas fazem exatamente a mesma coisa, que é encontrar as edificações contidas dentro de um lote, porém a primeira é extremamente ineficiente, sendo assim é recomendável utilizar sempre a segunda forma devido a otimização do filtro.

5.5. Modelo digitais de Terreno e Elevação armazenados no Oracle Spatial

Assim como já foi explicado os modelos digitais de elevação e terrenos geram uma nuvem de pontos tridimensionais como saídas de dados e estes por sua vez foram armazenadas em várias tabelas diferentes no Oracle Spatial, e a estrutura de armazenamento utilizada foi o sdo_geometry. Todos os dados foram armazenados como geometrias disjuntas e cada tabela foi dividida em áreas de escala 1:2000. Ao todo são 960 tabelas para o MDE (Modelo digital de Elevação),MDT(Modelo Digital de Terreno), MDTB (Modelo Digital de Elevação com as Bases) , sendo 320 tabelas para cada modelo. Em média cada uma dessas tabelas possui 30 milhões de pontos.

Para o desenvolvimento deste trabalho só foram utilizados dados das tabelas MDTB e MDE. Além dessas tabelas, existe uma tabela de controle chamada geo_metadados, que facilitou na consultas de dados, essa tabela contém duas colunas importantes para o desenvolvimento do algoritmo, que são ur_num_articulacao que contém o número de todas as articulações e ur_cubo_envolvente que possui o cubo envolvente de todas as articulações.    

         

FIGURA 26 - Articulações de Belo Horizonte em escalas de 1:2000.
Fonte: Prodabel.

6. ALGORITMO PARA CRIAÇÃO DO MODELO 3D

6.1. Introdução           

O primeiro passo do algoritmo é obter uma lista com todos os números dos lotes de Belo Horizonte que estão contidas na tabela lote_ctm(cadastro técnico municipal) e salva-las em um arquivo de texto. Os dados serão buscados através da seguinte consulta no banco de dados: “select num_lote_ctm from lote_ctm;”.

A coluna num_lote_ctm é a chave primária da tabela, e isso será feito porque cada arquivo KML[14](Keyhole Markup Language) gerado será nomeado com o número de um lote_ctm e nesse arquivo estarão contidas informações espaciais e não espaciais de todas as edificações contidas dentro desse lote. O próximo passo do algoritmo é ler esse arquivo e iterar por todos os lotes até o final do arquivo.

6.2. Encontrando os números das articulações  

Para cada lote_ctm, é necessário encontrar qual a tabela de articulações MDE ele está contido. É possível que um lote tenha suas partes contidas em até 4 articulações diferentes, caso exista mais de uma, poderão ser retornados até 4 nomes de tabelas, assim como mostra a figura abaixo:

FIGURA 27 - Edificação/Articulações.
Fonte: do autor.

Abaixo segue a consulta para se buscar o número de todas as articulações de um determinado lote que estão contidas no cubo envolvente correspondente.
select DISTINCT meta.ur_num_articulacao from lote_ctm lote, geo_metadados meta where sdo_relate(meta.ur_cubo_envolvente, lote.geoloc, 'MASK=ANYINTERACT') = 'TRUE' and lote.num_lote_ctm = 'numero do lote'.

O próximo passo do algoritmo é encontrar quais edificações estão contidas dentro de um determinado lote, isso foi realizado através da seguinte consulta:
select e.geoloc from edificacao e, lote_ctm l where l.num_lote_ctm = “numeroDoLote” and sdo_geom.relate(sdo_geom.sdo_centroid(e.geoloc, .005), 'INSIDE', l.geoloc.005) = 'INSIDE' and sdo_relate(e.geoloc, l.geoloc, 'MASK=ANYINTERACT') = 'TRUE'

Como não existe o número do lote na tabela de edificações, é possível encontrar a relação acima com uma consulta espacial, que pergunta quais edificações possuem seus centróides contidos dentro do lote com precisão de 5 milímetros, como já foi falado antes, as geometrias das edificações são armazenadas com o centróide salvo no atributo sdo_point da estrutura sdo_geometry, sendo assim não é necessário calcular o centróide da geometria e a consulta se torna muito mais rápida, pois não é necessário comparar todos os pontos de das edificações com todos os pontos do lote. A consulta sdo_relate inferior é bem mais rápido que a superior, porém bem menos precisa e ela busca qualquer relação topológica entre as geometrias, essa por sua vez funciona como filtro de busca e tem a utilidade de otimizar a consulta.

6.3. Corrigindo problemas de “bolo de noiva”  

Antes de falar sobre o calculo de altura das edificações, é necessário checar se alguma edificação do lote sobrepõe alguma outra edificação, caso isso ocorra é necessário substituir a área da edificação, pela diferença da área da edificação da área da outra edificação que a sobrepõe. Esse problema é chamado de “bolo de noiva” e o primeiro passo para corrigir esse problema é montar uma matriz relacional da edificação com todas as demais contidas no mesmo lote, isso é feito através da função sdo_geom.relate(geom1,’DETERMINE’,geom2,tolerance) do Oracle Spatial, essa função retorna qual é o tipo de relação topológica entre duas geometrias e caso a relação seja de contains ou covers, isso significa que existem partes de uma edificação sobrepondo uma outra geometria, após descobrir quais geometrias se sobrepõem é calculada a diferença através da função SDO_GEOM.SDO_DIFFERENCE(geom1,geom2,tolerance) e a área da edificação é substituída por essa área de subtração.

FIGURA 28 - Sobreposição parcial de edificações.
Fonte: do autor.

A imagem acima mostra que a edificação 2 em vermelho sobrepõe parcialmente a edificação 1 em preto, para que não haja influência no cálculo da altura da edificação 2 sobre a edificação 1 é necessário substituir a área da edificação 1, pela diferença de área da edificação 1 com a edificação 2.

Fazendo essa correção, a área da edificação 1 seria descrita da seguinte maneira:

FIGURA 29 - Bolo de noiva corrigido.
Fonte: do autor.

6.4. Encontrando a altura média das edificações        

O próximo passo do algoritmo é encontrar a altura média das edificações. A primeira etapa para fazer isso é encontrar média aritmética dos valores de altura (eixo Z) dos pontos MDE contidos na área da edificação, depois disso é necessário realizar o mesmo processo para os pontos MDTB.

Depois de encontrada a altura média MDE e MDTB, basta subtrair o valor do segundo do valor do primeiro, e a altura média da edificação será encontrada.

A idéia básica é subtrair a altura do todo (MDE) da altura do solo (MDTB), para assim encontrar a altura da edificação. Abaixo segue o exemplo de uma consulta que encontra a altura média do MDE de uma edificação:

select sum(t.z)/count(*) media from (select mde.geoloc from mde_5056 mde, edificacao edif where edif.mi_prinx = 1 and sdo_relate(mde.geoloc, edif.geoloc, 'MASK=INSIDE') = 'TRUE')mde,TABLE(SDO_UTIL.GETVERTICES(mde.geoloc)) t

A consulta acima busca a altura média de uma edificação através do identificador único da edificação, e caso a edificação esteja dividida em várias articulações é necessário realizar uma junção entre todas as tabelas de articulações. Depois de fazer isso é preciso necessário fazer uma consulta análoga para os dados MDTB e subtrair os valores.

Uma observação importante é que as edificações com problema de “bolo de noiva” têm suas áreas corrigidas apenas para o calculo de sua altura média, para o desenho da edificação sempre é utilizada a área integral da edificação.                                               

6.5. Definindo um telhado para as edificações

A primeira coisa a se fazer é verificar se a edificação possui mais de 7 metros de altura, em caso afirmativo a edificação é considerada como prédio e seu telhado será definido como plano. Em caso negativo todas as etapas abaixo serão seguidas.

A próxima etapa consiste em encontrar os 20 pontos MDE mais altos contidos num buffer interno de 50 centímetros da edificação. O uso desse buffer interno serve para tentar evitar a influência de árvores na descrição do telhado. A captação dos 20 pontos mais altos tem a utilidade de tentar encontrar a coluna principal do telhado, para telhados muitos complexos (com muitas colunas), só será obtida a coluna mais alta do telhado.

A seguir é necessário definir o desvio padrão de todos os valores X e Y de todas coordenadas da edificação, para saber se a edificação está “tombada” na horizontal ou na vertical, assim como mostra a figura abaixo:

FIGURA 30 - Desvio padrão.
Fonte: do autor.

Abaixo segue o conceito de desvio padrão e sua fórmula:

O desvio padrão é a raiz da média dos quadrados dos desvios em relação à média do conjunto e é uma medida do desvio dos valores individuais em relação ao valor central do conjunto de dados ou a raiz quadrada da variância.
Fórmula da variância → S² y= Σ (Yi - média de Y)²/n
Fórmula do desvio padrão → Sy = √S²y
 (DINIZ, 2000, pg.9).

Feito isso será calculada a regressão linear desses 20 pontos mais altos, e a partir da reta gerada, e serão extraídos seus extremos. O conceito de regressão linear e sua fórmula são descritos da seguinte maneira:

A quantidade de mudança em uma variável dependente (Y), fomentada pela mudança em uma variável independente (X) é indicada pelos parâmetros da equação da regressão, indicada pela fórmula: Yi = ayx + byxXi onde, Yi é o valor estimado de Y para a iésima observação;Xi é o valor de X para a iésima observação; ayx é o termo interceptor (ponto da linha de regressão que cruza o eixo dos Y) byx é a inclinação da reta mudança em Y a cada incremento em unidades de X. O objetivo é prever os valores de Y. A regressão linear traça através dos pontos marcados no diagrama de dispersão das variáveis X e Y, uma linha que minimiza as distâncias entre os pontos plotados e minimiza a soma dos quadrados de todos os desvios verticais dos valores reais em relação à linha. (DINIZ, 2000,pg.17).

Assim como foi dito acima a fórmula tenta prever os valores de Y, sendo assim essa será a fórmula utilizada para calcular a regressão linear para edificações com desvio padrão em Y, para edificações com desvio padrão maiores em X, será utilizada a mesma formula só que em função de Y, para que a regressão tente prever os valores de X. Sendo assim a fórmula para desvio maior em X, ficaria da seguinte maneira:
Xi = ayx + byxYi.
Para desvios padrões idênticos quaisquer uma das fórmulas funcionarão.

FIGURA 31 - Regressão linear.
Fonte: http://pt.wikipedia.org/wiki/Regressão_linear.

Depois de obtidos os dois extremos da regressão é necessário prolongar essa reta até seu ponto encontro com a edificação, caso o telhado seja quatro águas ou três águas.

Isso será feito por motivos de limitação do Google Earth, pois a principio seriam utilizados 4 tipos de telhados: plano, duas águas, três águas e quatro águas.

FIGURA 32 - Tipos de telhado.
Fontes: http://construindominhacasa.com;http://engeplas.com.br e Google Earth

Devido a essas limitações, serão utilizados telhados duas águas para casas e plano para prédios. Para prolongar a reta de regressão é necessário calcular a inclinação e o ponto em que essas retas tocam o eixo X de todas retas da edificação. Feito isso é necessário calcular os pontos de interseção entre todas as retas da edificação com a reta da regressão linear, caso exista mais de um ponto de interseção, aquele que tiver a menor distância euclidiana em relação ao ponto extremo da regressão será o escolhido, depois de obtido esse ponto, basta trocar o extremo da regressão por esse ponto. Caso o telhado seja quatro águas o processo é realizado para os dois extremos da regressão. A seguir seguem todas as fórmulas de geometria analítica utilizadas:

Equação de uma reta → y = ax + b, onde a é a inclinação da reta e b é ponto em que a reta toca o eixo x. Os valores a e b são obtidos a partir dos dois pontos da reta.
Ponto de interseção entre duas retas → é obtida igualando-se a função das duas retas, através de um sistema linear, da seguinte forma:

{ a1x + y + b1 = 0

{a2x+y+b2=0

Distância euclidiana → é a distância entre dois pontos, é dada pela fórmula:

D=√(x2-x1)²+(y2-y1)²

Encontrados os dois pontos extremo do telhado é necessário encontrar a altura desses pontos, esses valores são encontrados calculando-se a distância euclidiana desses pontos extremos com todos os demais pontos MDE contidos na edificação, aquele ponto que for mais próximo do extremo terá sua altura copiada. Por motivos de limitações[15] do Google Earth o ponto extremo não pode ter uma variação de altura muito maior que os demais pontos da geometria, e por isso essa altura é diminuída em alguns casos.

Depois de encontrados os dois extremos com os valores x,y e z, é necessário encaixar esses dois pontos na geometria da edificação e reordená-la. Para fazer isso é necessário calcular qual ponto da geometria é o mais próximo do extremo.

Após encontrar esse ponto, basta colocar o extremo depois deste ponto. Outra observação importante é que o algoritmo de detecção de telhado não é perfeito e em alguns casos, como de uma edificação com menos de sete metros de altura e que possua uma caixa d’água mais alta que o telhado, o algoritmo irá desenhar uma reta aleatória sem sentido algum, pois ele não é capaz de detectar esse tipo de problema. Abaixo será mostrado o desenho de uma edificação, com seu buffer interno, os 20 pontos mais altos e a coluna principal do telhado.

FIGURA 33 - Montagem do telhado.
Fonte: do autor

6.6. Realizando a conversão de projeção

Depois de realizar todos os cálculos necessários e montar toda geometria da edificação, é necessário converter o datum de SAD69 para WGS84 e a projeção de plano cartesiana para geodésica, para que essas edificações possam ser exibidas no Google Earth. Isso é feito através da seguinte consulta:
select SDO_CS.TRANSFORM(geoloc,8192) geoloc from lote_ctm where num_lote_ctm = ’190722200051’;

Essa função transforma a projeção da geometria de um lote qualquer, do datum SAD69 para o datum WGS84.

6.7. Calculando uma área de visualização para os lotes

Para que o Google Earth não renderize edificações que já foram abertas, mas que não estão mais visíveis ao usuário é necessário calcular uma área de visualização dos lotes. Uma vantagem de se fazer isso é evitar processamento e uso desnecessário de memória. Para fazer isso é calculado o retângulo envolvente do lote com sua projeção convertida de SAD69 para WGS84, isso é feito através da seguinte consulta: select SDO_CS.TRANSFORM(SDO_GEOM.SDO_MBR(geoloc),8192) from lote_ctm where num_lote_ctm = ’190722200051’.

Depois são realizadas quatro etapas: 1- Subtrair 1 segundo nas coordenadas X dos vértices superior e inferior esquerdo do retângulo. 2- Somar 1 segundo nas coordenadas X dos vértices superior e inferior direito do retângulo. 3-Somar 1 segundo nas coordenadas Y dos vértices superior esquerdo e superior direito do retângulo. 4- Subtrair 1 segundo nas coordenadas Y dos vértices inferior esquerdo e direito do retângulo. Para entender melhor o que é feito basta observar a imagem abaixo:

FIGURA 34 - Área de visualização.
Fonte: Google Earth

Uma observação interessante é que além de escolher um retângulo de visualização, também é preciso escolher uma escala máxima de visualização, e a escala máxima escolhida foi de 1:500. Ou seja, a edificação só estará visível se o centro da câmera do Google Earth estiver contido no retângulo de visualização e se a escala[16] for maior que 1:500.

6.8. Obtendo-se informações não espaciais

A próxima etapa é de buscar informações não-espaciais relacionadas aos lotes e as edificações. Duas informações não-espaciais já foram obtidas, essas são o número do lote e a altura média da edificação. Outra informação que será obtida é índice cadastral, que é a chave primária da tabela iptu_ctm, e ela servem para identificar o IPTU (Imposto Predial e Territorial Urbano) de um determinado lote[17]·. Também será obtida a área construída do IPTU declarada pelo seu dono. Essa informação está contida na coluna area_construida que é um dado do tipo number.

Para realizar uma comparação será buscada a “area_construida_geo” que é um dado sintético obtido a partir do somatório das áreas de todas as edificações de um lote.

Com ambos os dados selecionados, será possível calcular o percentual de diferença entre as duas áreas e averiguar inconsistências no valor do IPTU. Outra informação obtida será o Código de Endereçamento Postal (CEP), este por sua vez também está contido na tabela iptu_ctm e pode ser obtido através do número do lote, a seguir segue a consulta para buscar todos esses dados de uma vez só:

SELECT icg.indice_cadastral,icg.cep,icg.NULOTCTM,icg.area_construida,

ROUND(sum(SDO_GEOM.SDO_AREA(E.geoloc,.5)),2) AREA_CONSTRUIDA_GEO,

ROUND(sum(SDO_GEOM.SDO_AREA(E.geoloc, .5)) / icg.area_construida*100-100, 2) PERCENTUAL FROM ctm.lote_ctm L, croqui.EDIFICACAO E,

(SELECT indice_cadastral,NULOTCTM,area_construida,cep

FROM tributario.iptu_ctm_geo WHERE NULOTCTM = '210321800050') icg

WHERE SDO_relate(l.geometria,SDO_GEOM.SDO_CENTROID(E.geoloc, .5),'MASK=CONTAINS+COVERS') = 'TRUE' and SDO_FILTER(E.geoloc, l.geometria) = 'TRUE'  and L.NULOTCTM = '210321800050'

GROUP BY icg.NULOTCTM, icg.indice_cadastral, icg.area_construida,icg.cep

6.9.  Criando arquivos Keyhole Markup Language(KML)

Depois de obtidas todas as informações espaciais e não espaciais, basta criar um arquivo KML e salvar todas essas informações, o primeiro passo para isso é criar o cabeçalho do arquivo e adicionar a tag Region com as informações do retângulo de visualização e o valor da escala, que sempre será 500.

O próximo passo é criar um Style para as edificações, essa tag e suas filhas armazenam informações de cores, espessura da linhas, ícones e outros. As informações importantes serão: espessura das linhas igual a 1, cor da linhas preta e cor das edificações cinza. É necessário também criar um identificador para o estilo.

As cores são descritas no formato hexadecimal ABGR(Alpha Blue Green Red), onde alpha representa a opacidade , blue a quantidade de azul, green a quantidade de verde e red a quantidade de vermelho. A próxima etapa é criar a tag Placemark que é o local onde ficaram as informações não espaciais e espaciais, essa tag possui uma filha chamada description que é onde ficam as informações não espaciais da edificação. Dentro dessa tag é possível usar uma tag chamada cdata para que serve para incluir códigos Html[18] dentro da descrição.

Outra tag filha de Placemark é a tag Polygon, que juntamente com suas filhas armazenam informações espaciais. Uma tag importante contida dentro de Polygon é a tag altitudeMode que sinaliza se as coordenadas de altitude serão ignoradas, ou se elas serão relativas a altura do solo ou absolutas, para este trabalho será usado relativeToGround  pois a altura do solo calculada pelo Google Earth não nos interessa, e sim a altura das edificações. A próxima tag importante a ser especificada é outerBoundaryIs, que serve para indicar quais são os polígonos externos dessa geometria, no caso deste trabalho só haverão polígonos externos, e nenhum interno. A próxima tag é LinearRing que indica quais são as linhas do polígono. A tag filha de LinearRing é coordinates que mostra quais são as coordenadas das linhas do polígono, essas coordenadas são armazenadas no formato x,y,z  e são separadas por vírgula. Abaixo segue um exemplo de um arquivo KML de uma edificação tridimensional:

<?xml version="1.0" encoding="UTF-8"?>

<kml xmlns="http://www.opengis.net/kml/2.2">

<Document>

<Region>

<Lod>

<minLodPixels>128</minLodPixels>

</Lod>

<LatLonAltBox>

<north>-19.89</north>

<south>-19.892</south>

<east>-43.931</east>

<west>-43.934</west>

<minAltitude>0</minAltitude>

<maxAltitude>500</maxAltitude>

<altitudeMode>relativeToGround</altitudeMode>

</LatLonAltBox>

</Region>

 <Style id="estilo">

 <LineStyle>

 <color>ff000000</color>

<width>1</width>

</LineStyle>

<PolyStyle>

<color>ffbebebe</color>

</PolyStyle>

</Style>

<Placemark>

<description><![CDATA[<H1>ALTURA MÉDIA:12,96m<br/>CEP: 31140280<br/>INDICE CADASTRAL: 384003A014 0051<br/>LOTE_CTM:040296100360]]></description>

<Polygon>

<extrude>1</extrude>

<altitudeMode>relativeToGround</altitudeMode>

<outerBoundaryIs>

<LinearRing>

<coordinates>

-43.9326395991152,-19.890476947231,12.96,

-43.932665004359,-19.8903999510632,12.96,

-43.9326395036711,-19.8903148806039,12.96,

-43.9326261765567,-19.8902702641444,12.96,

-43.932575576091004,-19.8902753809943,12.96,

-43.9324617638088,-19.8902869844236,12.96,

-43.9324685702232,-19.8903526105001,12.96,

-43.9324397251533,-19.8903552379822,12.96,

-43.932453265265,-19.8904855863205,12.96,

-43.9324623287713,-19.8904847372982,12.96,

-43.9324699445906,-19.8905471160663,12.96,

-43.9325251950403,-19.8905415754466,12.96,

-43.9326215093592,-19.8905318544935,12.96,

-43.9326395991152,-19.890476947231,12.96

</coordinates> 

</LinearRing>

</outerBoundaryIs>

</Polygon>

<styleUrl>#estilo</styleUrl>

</Placemark>

</Document>

</kml>

7. ALGORITMO PARA VISUALIZAÇÃO DO MODELO 3D

7.1. Introdução

Para visualizar as edificações tridimensionais armazenadas em arquivos KML será utilizada a Application Programming Interface(API) do Google Earth, que foi desenvolvida na linguagem JavaScript. O uso dessa API necessita que seja registrado um nome de domínio que utilizará a API, e a partir desse domínio é gerada uma chave de utilização, que deve ser inserida no código fonte para que o Google Earth possa ser utilizado em uma página World Wide Web(WEB), essa chave é adicionada na página a partir do seguinte código:

<script src="http://www.google.com/jsapi?key=códigodakey"></script>. Na página de cadastro da chave consta a licença de uso com todas as restrições de uso, e a única restrição de uso importante encontrada foi que o serviço deve ser de uso gratuito, caso alguém queria cobrar pelo uso de alguma aplicação que utiliza a API, o pacote Premier deverá ser comprado.

Outra observação importante é que para visualizar o Google Earth em páginas WEB, é necessário baixar o plug-in[19] WEB do Google Earth, caso esse não tenha sido baixado, uma solicitação para baixá-lo aparecerá na tela do browser[20].

7.2. Criando um dado vetorial delimitador para o Google Earth

Para que o usuário possa saber até onde existem edificações tridimensionais, será colocada uma camada de dados vetoriais contendo as regionais de Belo Horizonte, que irão delimitar essa área. Essa camada será criada e armazenada em um arquivo KML, esse arquivo KML terá as seguintes informações de estilo: cor das linhas azuis, espessura da linha igual a 3 pixels. Esse arquivo não terá a tag Region, já que ele estará sempre visível, independente de onde a câmera do Google Earth esteja focada. As regionais não irão armazenar nenhuma informação não-espacial, e haverá um placemark para cada regional.  

As informações espaciais das regionais serão buscadas do banco de dados através da seguinte consulta: select SDO_CS.TRANSFORM(geoloc,8192) from regional. Essa consulta busca todas as geometrias de cada regional já convertidas para WGS84. Para cada regional retornada por essa consulta serão extraídos todos seus pontos e armazenados dentro da tag coordinates do seu respectivo placemark. Feito isso será salvo um arquivo KML contendo todas as informações espaciais das regionais de Belo Horizonte.

7.3. Função de inicialização do Google Earth

Para se inicializar o Google Earth em uma página WEB deve-se chamar uma função de inicialização que tenha o seguinte comando: google.earth.createInstance('map3d', initCB, failureCB); Esse comando recebe três parâmetros, o primeiro é o nome da DIV[21] onde ficará a tela do Google Earth, o segundo é uma função que serve para definir tudo que será inicializado junto com o Google Earth e o terceiro é um função que determina o que fazer em caso de erro. Para este trabalho a função de erro, apenas alerta na tela o erro ocorrido e a função de inicialização realiza as seguintes etapas: 1)setar a visualização do globo para verdadeiro, através do seguinte comando: ge.getWindow().setVisibility(true); onde a variável ge é uma instância de Google Earth. 2)Dar liberdade ao usuário de controlar a câmera como ele quiser, através do seguinte comando: ge.getNavigationControl().setVisibility(ge.VISIBILITY_AUTO); 3)Adicionar o arquivo KML contendo todas as regionais de Belo Horizonte através dos seguintes comandos: var networkLink = ge.createNetworkLink("");var link = ge.createLink(""); link.setHref('caminho do arquivo regionais.kml'); networkLink.setLink(link); ge.getFeatures().appendChild(networkLink); O primeiro comando cria uma instância de um networklink e o segundo de um link, o terceiro adiciona o caminho do arquivo KML das regionais ao link, o quarto comando adiciona o link ao networklink e o quinto faz com que o Google Earth interprete o arquivo KML e visualize seus dados. 4) Adicionar um posicionamento inicial da câmera através dos seguintescomandos:varlookAt=ge.getView().copyAsLookAt(ge.ALTITUDE_RELATIVE_TO_GROUND);lookAt.setLongitude(-43.94280624);lookAt.setLatitude(-19.97232818);lookAt.setRange(350.0);lookAt.setTilt(70.0);ge.getView().setAbstractView(lookAt); O primeiro comando cópia os parâmetros de visualização iniciais do Google Earth para a variável lookAt, o segundo e o terceiro comando setam o valor de longitude e latitude para onde a câmera deve ser focada, o quarto determina a distância entre o foco da câmera e a câmera, que será de 350 metros, o quinto comando determina a angulação vertical da câmera, que será de 75 graus. 4)Adicionar três listeners[22], que ouviram três tipos de evento: mousemove(movimento do mouse), viewchangeend(mudança de visão), mouseup(zoom para dentro). A utilidade desses três listeners será explicada posteriormente.

7.4. Adicionando e removendo Layers no Google Earth

Um layer é uma camada de visualização, para o algoritmo de visualização, existem três layers diferentes na aplicação, um deles seria o conjunto de edificações tridimensionais, o segundo layer seria das regionais, e o terceiro seria das imagens aéreas do Google.

Ambos os layers produzidos a partir dos dados da Prodabel estarão por cima das imagens do Google, e a importância de se adicionar e remover um layer é de poder visualizar as imagens do Google sem que as edificações tridimensionais as sobreponham. Outro razão seria de ver se as edificações se encaixam nas imagens ou se o desenho do telhado está fiel.

Para adicionar um layer no Google Earth API foi usado o seguinte comando: ge.getFeatures().appendChild(networkLink); onde a variável networkLink, representa um objeto que contém o link do arquivo KML. Para remover um layer o comando é : ge.getFeatures().removeChild(networkLink);

Ao se adicionar o layer de regionais foi adicionado o seguinte comando: ge.getView().setAbstractView(regionais.getAbstractView()); Esse comando calcula qual é o centroide de todas as geometrias de um arquivo KML, e aponta a câmera do Google Earth para esse centróide. Isso é feito para que o usuário possa encontrar Belo Horizonte facilmente, já que nesse trabalho todos os layers vetoriais do Google foram removidos, pois esses não interessam para o trabalho. Caso o usuário fique “perdido pelo mundo” basta ele remover e adicionar o layer de regionais.   

7.5. Adicionando pesquisas

Para facilitar o encontro dos dados, foram adicionados três tipos de pesquisas, uma delas pelo número do lote, outra pelo índice cadastral e outra por endereço. Cada uma das pesquisas foi feita em servlets[23] diferentes, já que a aplicação visualizadora foi desenvolvida em Java, utilizando o Apache Tomcat versão 6.28 como servlet container.

7.5.1. Pesquisa por lote

Essa pesquisa é feita através de uma requisição assíncrona que chama um servlet chamado LocalizaLote_ctm. Esse servlet realiza a seguinte consulta no banco de dados: select SDO_CS.TRANSFORM(SDO_GEOM.SDO_CENTROID(geoloc,0.5), 8192) from lote_ctm where num_lote_ctm =  lote_ctm; onde lote_ctm representa o número do lote passado por parâmetro pelo usuário, caso o lote não seja encontrado é retornado uma mensagem de erro no browser para o usuário, caso o lote exista, a câmera do Google Earth é apontada para o centróide da geometria do lote, com uma distância de câmera correspondente a uma escala de 1:100.

7.5.2. Pesquisa por índice cadastral

Essa pesquisa é feita através de uma requisição assíncrona que chama um servlet chamado LocalizaIptu. Esse servlet realiza a seguinte consulta no banco de dados: select SDO_CS.TRANSFORM(SDO_GEOM.SDO_CENTROID(l.geometria,0.5),8192) from lote_ctm l, iptu_ctm_geo i where l.nulotctm = i.nulotctm and i.indice_cadastral = "indiceCadastral"; como não existe dado espacial na tabela de IPTU é realizada uma junção com a tabela de lotes, para encontrar qual o número de lote corresponde ao índice cadastral passado por parâmetro, caso o índice cadastral não seja encontrado é retornado uma mensagem de erro no browser para o usuário, caso o índice cadastral exista, a câmera do Google Earth é apontada para o centróide da geometria do lote correspondente ao índice cadastral, com uma distância de câmera correspondente a uma escala de 1:100.

7.5.3. Pesquisa por endereço

Essa pesquisa é feita através de uma requisição assíncrona que chama um servlet chamado LocalizaEndereco. Esse servlet realiza uma consulta no banco de dados que realiza uma junção entre quatro tabelas que são: tipo_logradouro, logradouro, endereço_basico_ctm e bairro popular. A figura abaixo mostra a relação entre as tabelas.

FIGURA 35 - Relações entre tabelas de endereço.
Fonte: do autor.

Primary Key(PK) representa a chave primária de uma tabela, ela serve de identificador único de uma tabela. Foreign Key(FK) significa chave estrangeira, ela tem como objetivo criar uma relação entre duas tabelas, uma FK é sempre PK em outra tabela. Um endereço completo é formado pelo tipo do logradouro[24]·, pelo nome do logradouro, pelo número do logradouro, e o nome do bairro. Para o endereço: Rua Cobre 200 – Bairro Cruzeiro; rua determinaria o tipo do logradouro, Cobre representaria o nome do logradouro, 200 seria o número do logradouro e Cruzeiro determinaria o nome do bairro.

A consulta para buscar o endereço é da seguinte maneira: select SDO_CS.TRANSFORM(b.geometria,8192) from bairro_popular a inner join endereco_basico_ctm b on (a.id_bairro_popular = b.id_bairro_popular) inner join logradouro c on(c.id_logradouro = b.id_logradouro) inner join tipo_logradouro d on (c.id_tipo_logradouro = d.id_tipo_logradouro) where a.nome_bairro_popular = bairro and d.sigla = tipo and b.numero_imovel = numero and c.nome_logradouro = nome; onde bairro significa o nome do bairro que foi passado por parâmetro pelo usuário, tipo representa o tipo do logradouro, numero significa o número do logradouro e nome representa o nome do bairro.

Não é necessário calcular o centróide da geometria, porque as geometrias contidas na tabela endereco_basico_ctm são todas pontos. Caso o endereço passado pelo usuário seja inválido, uma mensagem de erro é retornada, caso o endereço seja válido, a câmera do Google Earth é apontada para geometria do endero_basico_ctm, com uma distância de câmera correspondente a uma escala de 1:100.

7.6. Abrindo arquivos KML no Google Earth

Ao se abrir uma enorme quantidade arquivos KML, deve-se ter cautela, pois o Google Earth não conseguirá renderizar uma enorme quantidade arquivos KML de uma vez só. Para resolver isso, só serão abertos os arquivos KML que o usuário está vendo. Isso é feito através da captura dos eventos ouvidos pelos listeners já citados no item 5.3. A cada captura desses eventos é verificado se o centro da câmera está dentro de Belo Horizonte, para isso deve-se verificar  se o centro da câmera está contido no retângulo envolvente de uma geometria resultante da união de todas as regionais, além disso, também é verificado se escala é maior que 1:500, pois se o usuário posicionar a câmera muito longe do solo ela não conseguirá visualizar nenhuma edificação.

Caso o centro da câmera tenha um posicionamento válido, é realizada uma requisição assíncrona para o servlet Kml_Range, esse servlet irá verificar quais são os números de lote que possuem suas geometrias contidas dentro do retângulo envolvente de uma área num raio de 150 metros desse ponto. Para fazer isso a seguinte consulta é realizada: select NUM_LOTE_CTM from croqui.lote_ctm where sdo_relate(geoloc, SDO_CS.TRANSFORM(SDO_GEOM.SDO_MBR(SDO_GEOM.SDO_BUFFER(MDSYS.SDO_GEOMETRY(2001,8192,MDSYS.SDO_POINT_TYPE(longitude,latitude,null),null,null),150,1)),82301) , 'MASK=INSIDE') = 'TRUE'. Como esse ponto teve sua coordenada capturada pelo Google Earth, seu ponto deve ter seu datum convertido para SAD69. Também é calculado o retângulo envolvente do buffer, porque o buffer de um ponto sempre retorna uma área circular e a área de visualização do Google Earth é uma área retangular. Feito isso todos os números do lote encontrados são retornados para página.

FIGURA 36 – Visualização inicial.
Fonte: do autor.

A figura acima mostra todas as edificações que serão abertas para posição inicial da aplicação, o polígono em vermelho representa o buffer circular de 150m em volta do centro inicial da câmera, o polígono verde representa o retângulo envolvente da área de buffer e os polígonos em preto são as edificações contidas dentro desse retângulo envolvente.
Antes de abrir todos esses arquivos KML, é checado se esses arquivos já foram abertos anteriormente, essa verificação é feita através de um vetor que contém os números dos lotes de todas as edificações já abertas anteriormente. A figura abaixo mostra algumas edificações 3d no Google Earh:

FIGURA 37 - Edificações 3d no Google Earth.
Fonte: do autor.

8. CONCLUSÃO

O objetivo proposto pela Prodabel foi de facilitar as tomadas de decisões estratégicas em relação à cidade, a partir da visualização das edificações que estão contidas em áreas de alagamento ou desabamento e das identificações de IPTUs cobrados de maneira incorreta.

Sendo assim, nenhum desses objetivos foi alcançado, porque a Prodabel não possui nenhuma informação relativa às áreas de alagamento ou desabamento, para que esse problema seja solucionado, basta a Prodabel levantar esses dados e disponibilizá-los em sua base de dados para que aplicação visualizadora possa exibi-los.

Outro problema é que, quando o algoritmo gerador de KML criou as edificações não havia sido especificado que seriam utilizadas informações relativas ao IPTU, e por isso nenhuma das edificações possui informações não espaciais correspondentes ao IPTU. Para solucionar esse problema, basta que seja adicionado ao algoritmo gerador de KML, uma agregação de informações correspondentes ao IPTU em cada edificação.

Depois disso será necessário rodar o algoritmo novamente, e esperar que o mesmo gere todos os arquivos KML novamente, e isso pode levar semanas, pois a quantidade de informação analisada é enorme.

Ainda existe outro problema, que compromete a confiabilidade da aplicação, que é o fato de que as informações espaciais das edificações são de 2008, e de 2008 até 2011, houve muita mudança em relação à construção e demolição de edificações.

Esse problema seria complicado de resolver, pois a base de dados da Prodabel é atualizada freqüentemente, e não há nenhum rastreamento de mudança, sendo assim é quase impossível determinar quais edificações foram atualizadas dentro de um determinado período para que não seja necessário gerar todos os arquivos KML novamente.

9. REFERÊNCIAS

ANTUNES, Carlos Manuel Correia. Levantamentos Topográficos - Apontamentos de Topografia. [Lisboa]:Departamento de matemática da Universidade de Lisboa,1995. Disponível em:< http://br.monografias.com/trabalhos914/levantamentos-topograficos-apontamentos/levantamentos-topograficos-apontamentos.pdf>. Acesso em: 15 mar. 2011.

BORGES, Karla Albuquerque de Vasconcelos. Modelagem de Dados Geográficos. 2002.

Disponível em: <http://www.csr.ufmg.br/geoprocessamento/publicacoes/Modelagem%20de%20dados%20geografico. PDF>. Acesso em: 15 mar. 2011.

CAMERA CONTROL. Disponível em: < http://code.google.com/intl/pt-BR/apis/earth/documentation/camera_control.html>. Acesso em: 15 mar. 2011.

COMBA, João. Triangulações de Delaunay. Disponível em: < http://www.inf.ufrgs.br/~comba/cmp189-files/class22-23.pdf>. Acesso em: 15 mar. 2011.

DINIZ, Alexandre Magno Alves. Estatística Básica. [Belo Horizonte]: Departamento de Cartografia da Universidade Federal de Minas Gerais, 2000. Disponível em: < http://www.csr.ufmg.br/geoprocessamento/publicacoes/estatistica1.pdf>. Acesso em: 15 mar. 2011.

EVENTS. Disponível em: < http://code.google.com/intl/pt-BR/apis/earth/documentation/events.html>. Acesso em: 15 mar. 2011.

FELGUEIRAS, Carlos Alberto; CAMARA, Gilberto. Modelagem Numérica de Terreno: Introdução à Ciência da Geoinformação, São José dos Campos, 2001. Disponível em: < http://www.dpi.inpe.br/gilberto/livro/introd/cap7-mnt.pdf>. Acesso em: 15 mar. 2011.

GATRELL, A. C. Concepts of space and geographical data. In:MAGUIRE, D. J., GOODCHILD, M. F., RHIND, D. W. Geographical Information Systems: principles and aplications. Longman Scientific & Technical, 1991. Cap.9, p.119-134.

HAALA, Norbert.  Combining Multiple Data Sources for Urban Data Acquisition: Photogrammetric Week ‘99’, Heidelberg, 1999. Disponível em: < http://www.ifp.uni-stuttgart.de/publications/phowo99/haala99.pdf>. Acesso em: 15 mar. 2011.

HAALA, Norbert; BRENNER, Claus. Extraction of buildings and trees in urban environments. [Stuttgart] : Instituto de fotogrametria da Universidade de Stuttgart, 1999. Disponível em: < http://www.lidar.com.br/trabalhos/urbano/ExtractBuildTreeUrbanEnv.pdf>. Acesso em: 15 mar. 2011.>. Acesso em: 15 mar. 2011.

IAVARONE, Alberti; VAGNERS, Dainav. Sensor Fusion: Gererating 3d by combining airborne and tripodmounted LIDAR data: International Archives of the Photogrammetry, Remote Sensing and Spatial Information Sciences, Vol. XXXIV-5/W10. Toronto, 2003. Disponível em: <http://www.lidar.com.br/trabalhos/urbano/Laser-3DCityModels.pdf>. Acesso em: 15 mar. 2011.

KML. Disponível em: < http://code.google.com/intl/pt-BR/apis/earth/documentation/kml.html>. Acesso em: 15 mar. 2011.

KOTHURI, Ravi; GODFRIND, Albert; BEINAT, Euro. Pro Oracle Spatial for Oracle Database 11g, New York, 2007.

LISBOA FILHO, Jugurta. Modelagem de Bancos de Dados Geográficos. Porto Alegre, 2000. Disponível em: < http://www.dpi.ufv.br/~jugurta/papers/erico2000cap5.pdf>. Acesso em: 15 mar. 2011.

LOHR, Uwe. High Resolution Laserscanning, not only for 3D-City Models. : Photogrammetric Week ‘99’, Heidelberg, 1999. Disponível em: <http://www.lidar.com.br/trabalhos/urbano/Laser-3DCityModels.pdf>. Acesso em: 15 mar. 2011.

REFERÊNCIA DO KML. Disponível em: < http://code.google.com/intl/pt-BR/apis/kml/documentation/kmlreference.html>. Acesso em: 15 mar. 2011.

ROTTENSTEINER,Franz ; BRIES, Christian. Building Extraction from LIDAR Data, [Vienna] : Instituto de Fotogrametria e Sensoriamento Remoto da Universidade de Tecnologia de Vienna,2002. Disponível em: < Disponível em: < http://www.ifp.uni-stuttgart.de/publications/phowo99/haala99.pdf>. Acesso em: 15 mar. 2011.>. Acesso em: 15 mar. 2011.

SOARES-FILHO, Britaldo Silveira Soares. Cartografia assistida por computador – conceitos e métodos. [Belo Horizonte]:Departamento de Cartografia da Universidade Federal de Minas Gerais,2000. Disponível em: < http://www.csr.ufmg.br/geoprocessamento/publicacoes/cartodigital.pdf>. Acesso em: 15 mar. 2011.

TAO, Guo; YASUOKA,Yoshifumi. Combining high resolution satellite imagery and airborne laser scanning data for generating bareland demin urban areas. [Tóquio] : Instituto da Indústria e Ciência da Universidade de Tóquio, 2002. Disponível em: < Disponível em: < http://www.isprs.org/proceedings/XXXIV/5-W3/download/GuoTao.pdf>. Acesso em: 15 mar. 2011.>. Acesso em: 15 mar. 2011.

TIMBÓ, Marcos Antônio. Elementos de Cartografia. [Belo Horizonte]:Departamento de Cartografia da Universidade Federal de Minas Gerais,2001. Disponível em: <  http://www.csr.ufmg.br/geoprocessamento/publicacoes/elementoscart.pdf>. Acesso em: 15 mar. 2011.

TIMBÓ, Marcos Antônio. Levantamento Através do Sistema GPS. [Belo Horizonte] :Departamento de Cartografia da Universidade Federal de Minas Gerais,2000. Disponível em: < http://www.csr.ufmg.br/geoprocessamento/publicacoes/Lev_gps.pdf>. Acesso em: 15 mar. 2011.


[1] Servidor WEB responsável por distribuir páginas de internet para o cliente. (Nota do autor).

[2] É o ângulo formado entre e a direção Norte-Sul e uma direção terrestre. O azimute é sempre contado a partir do Norte, no sentido horário e varia de 0° até 360°. O azimute entre dois pontos na esfera é dado por cosAz = (senb - sena.cosd )/(cosa.send). (TIMBÓ, 2001, p.20).  

[3]O Decreto Lei 242 de 28/02/1967, estabelece um sistema plano altimétrico único de pontos geodésicos materializados no terreno que constitui o referencial inequívoco para determinação de coordenadas (latitude e longitude e altitudes) em todo o território brasileiro. Este referencial que serve para dar suporte aos trabalhos de natureza Cartográfico/Geodésica é chamado de SISTEMA GEODÉSICO BRASILEIRO sendo constituído por duas redes independentes. A REDE GEODÉSICA HORIZONTAL Constituída de pontos com latitude e longitude de alta precisão e que formam o referencial planimétrico, tendo como Datum Horizontal o South American Datum de 1969 (SAD69). Este datum utiliza Elipsoide Internacional de 1967, definido pela Associação Geodésica Internacional ocorrida em Lucerne, no ano de 1967, cujos parâmetros são: a = 6.378.160,00m e f = 1/298,25. O datum SAD69 tem como Ponto Geodésico de Origem o vértice geodésico CHUÁ da cadeia de triangulação do paralelo 20°S, cujas coordenadas são: Lat = 19°45’41,6527”S, Lon = 48°06’04,0639”W, N=0,0 m. (TIMBÓ, 2001, p.26-27).

[4]O geocentro terrestre é o encontro da linha do equador com o Meridiano de Greenwich. (Nota do Autor)

[5]Carta é um documento cartográfico mais complexo, ou mais detalhado de caráter geográfico mais científico, apresentando maior precisão e maior detalhamento. (TIMBÓ, 2001, p.32).

[6]O ponto estação, como o nome indica, é o ponto onde é localizado o instrumento de medida. (ANTUNES, 1995 , p.8).

[7] Para a Prodadel esse imagem seria uma ortofoto de alguma região de Belo Horizonte. (Nota do autor).

[8] Estrutura de dados alfanuméricos em bancos de dados. (Nota do autor).

[9] Coleções são utilizadas geralmente para armazenar conjuntos heterogêneos de geometrias, como uma linha e polígono armazenados em uma única geometria. (Nota do autor).

[10] Estrutura de dados de ponto flutuantes em bancos de dados. (Nota do autor).

[11] Consulta no banco de dados. (Nota do autor).

[12] Dado sintético é um dado que não está armazenado em uma tabela, mas ele foi gerado a partir de um dado analítico. (Nota do autor).

[13]Dado analítico é dado que está presente em uma tabela. (Nota do autor).

[14]Arquivo Extensible Markup Language(XML) utilizado pelo Google Maps e Google Earth para visualizar dados geográficos. Um arquivo XML é um arquivo de texto que contém informações estruturadas por tags. (Nota do autor).

[15]Quando a variação de altura é muito grande a edificação é renderizada sem o telhado. (Nota do autor).

[16]A barra de escala está localizada com canto inferior esquerdo no Google Earth. (Nota do autor).

[17] Essa tabela possui a chave estrangeira num_lote_ctm, que por sua vez é chave primária na tabela lote_ctm, sendo assim é possível encontrar o índice cadastral, o cep e a área construída através do número do lote. (Nota do autor).

[18] HyperText Markup Language significa Linguagem de Marcação de Hipertexto. É uma linguagem de marcação utilizada para produzir páginas na Web. (Nota do autor).

[19] É um programa de computador usado para adicionar funções a outros programas maiores, provendo alguma funcionalidade especial ou muito específica. Geralmente pequeno e leve, é usado somente sob demanda.(Nota do autor).

[20]Navegador utilizado para visualizar páginas de internet. (Nota do autor).

[21] Elemento HTML que representa uma divisão de área de tela em uma página WEB. Essa por sua vez deve ser definida no HTML da página, caso contrario a função createInstance retornará um erro. (Nota do autor).

[22]Um listener seria um função que fica aguardando algum determinado evento acontecer, e quando ele acontece, o listener aciona algum determinado evento. (Nota do autor).

[23]Classe Java que roda do lado do servidor e tem o objetivo de responder as requisições de um cliente. (Nota do autor).

[24]Tipo do logradouro pode ser uma rua, avenida, praça, rodovia, trevo, viaduto, estrada, via de pedestre, via, alameda ,beco, elevado, acesso, rodovia federal, caminho, espaço livre de uso público, largo, quarteirão fechado, rua de manilhas, retorno, trincheira, travessia, túnel, passarela. (Base de dados da Prodabel).  


Publicado por: Henrique Meireles Valadares

icone de alerta

O texto publicado foi encaminhado por um usuário do site por meio do canal colaborativo Monografias. Brasil Escola não se responsabiliza pelo conteúdo do artigo publicado, que é de total responsabilidade do autor . Para acessar os textos produzidos pelo site, acesse: https://www.brasilescola.com.