Aplicativo Integrado a um Sistema CAD para Geração do Modelo Digital do Terreno Mário A. Oliveira1, Yury J. M.Camargo1, Antônio C. Baleeiro Alves1,2 Escola de Engenharia Elétrica e de Computação, UFG1, Departamento de Computação, UCG2 Praça Universitária, Goiânia, Brasil [email protected], [email protected], [email protected] Resumo. Os programas de modelamento digital de terreno utilizados na atualidade são elaborados em sistemas CAD próprios e específicos e são orientados a determinados campos de aplicação. Com o intuito de demonstrar a viabilidade de elaborar aplicativos portáveis e confiáveis, de fácil manuseio pelo usuário, este trabalho apresenta os principais passos para a implementação de um programa que permite a análise completa dos elementos topográficos de uma superfície definida por suas coordenadas. A principal vantagem da implementação reside no fato de utilizar o mesmo ambiente de programação do AutoCAD. Abstract. The programs of digital modeling of land used at the present time are elaborated in systems own and specific CAD, besides they are guided to certain application fields. With the aim of showing the feasibility of elaborating applications carried and reliable, of easy handling for the user, this work presents the principal steps for the implementation of software that allows the complete analysis of the topographical elements of a land surface defined from its coordinates. The main advantage of this implementation resides in the fact of using the same programming environment of the AutoCAD system. 1 Introdução Desde meados da década de sessenta havia uma preocupação em se criar modelos para representar superfícies através da computação gráfica, objetivando rapidez, precisão e versatilidade. A IBM, por exemplo, em 1965 implementou um algoritmo para criar mapas de contorno. Entretanto, no Brasil, apenas a partir da década de noventa, o uso de ferramentas capazes de gerar o modelo digital do terreno (MDT) tornou-se popular entre os profissionais de engenharia, apesar de existirem no país pesquisas relacionadas com MDT e representação gráfica de superfícies desde o início dos anos oitenta. A referência [1], datada de 1983, é um exemplo do esforço acadêmico nessa área. Atualmente é difícil se pensar em simular e analisar dados geográficos sem o uso de ferramentas computacionais, porém, apesar de existirem programas que geram o MDT, como o Spring, Mapinfo, Topograph, e tantos outros, estes são programas que não estão difundidos entre os profissionais. O presente trabalho tem por objetivo apresentar as diretrizes fundamentais para a criação de um aplicativo integrado a um sistema CAD bastante difundido entre os profissionais de engenharia e áreas afins, que possibilite a criação do MDT. Com este aplicativo, pode-se, a partir do modelo digital, gerar curvas de níveis, perfis, superfícies, relatórios de área plana, área de superfície e volume, e também visualizar interativamente o terreno em três dimensões. O AutoCAD, foi um dos poucos programas CAD encontrados que permite o total acesso e manipulação a seu banco de dados através de linguagens de programação, permitindo-se criar interfaces com o usuário usando o próprio sistema CAD. As linguagens que possibilitam a integração com o AutoCAD são três: o AutoLisp, o ADSRX e o ARX. O AutoLisp é a linguagem mais conhecida e de fácil aprendizagem, por isso, será objeto desse estudo. As principais técnicas e conceitos apresentados e discutidos no presente trabalho são: a aquisição de dados, a criação e extração de dados do MDT. 2 Aquisição de dados No processo de modelagem digital de terreno, a amostragem é uma das tarefas mais importantes de todo o processo. A amostragem compreende a aquisição de um conjunto de amostras que representam a variação de um fenômeno espacial de interesse. Independente dos métodos a serem adotados, as amostras devem passar por transformações matemáticas de modo a serem referidas a um sistema de referência, e projetadas em um sistema de projeção plana em coordenadas cartesianas x, y, z. Em termos de aquisição de dados espaciais, tem-se hoje uma gama de métodos eficientes e diferenciados, onde se pode citar a obtenção de dados através de receptores do sistema NAVSTAR-GPS (NAVigattion Satellite with Time And Ranging – Global Position System), um sistema de posicionamento global confiável e de alta acurácia, que foi desenvolvido pelo departamento de defesa dos EUA [2]. A escolha do meio de obtenção está relacionada com as características da área a ser medida e da precisão requerida. 2.1 Tipos de Amostras Neste texto optou-se em dividir as amostras em dois tipos: as pontuais e as curvas. Quanto à posição relativa das amostras pontuais, pode-se classificar a amostragem em: regular, semi-regular e irregular. A amostragem regular é aquela cuja posição espacial x, y das amostras mantém uma regularidade de distribuição tanto na direção x e quanto na y . As amostragens semi-regulares são aquelas onde as amostras então distribuídas em certos caminhos, como drenagens, estradas e divisores de águas. Na amostragem irregular, a escolha das amostras é devida a pontos notáveis do terreno, onde o relevo sofre uma mudança importante. Na maior parte dos casos, as amostras mais representativas de um fenômeno não estão regularmente distribuídas. As amostras classificadas como curvas são curvas de níveis obtidas a partir do uso de equipamentos, como stereoplotters, sobre uma base composta de fotografias em estéreo obtidas por aerolevantamento. 2.2 Aspectos da Estrada de Dados e Implementação No caso de dados digitais, a importação pode ser feita por: arquivos vetoriais com extensão dwg ou dxf; arquivos bitmap com extensões suportadas pelo AutoCAD; e arquivos ASCII com extensão txt. Como a entrada de arquivos vetoriais e bitmaps já está implementada no próprio AutoCAD, apenas a entrada através de arquivos txt necessita de uma implementação. Esta pode ser feita usando-se basicamente as funções AutoLisp [3] de manipulação de arquivos ASCII (close, open, read-char, read-line), as de transformação de string em números reais (atof, distof), e a de criação de entidades (entmake). Em se tratando de arquivos vetoriais compostos de pontos e curvas, estes serão tratados respectivamente como entidades do tipo ponto e “polilinha”, no sistema CAD. Caso os dados não estejam no R 3 , deverá ser adicionada a coordenada z em cada entidade. Com relação aos arquivos bitmaps oriundos de uma digitalização de plantas topográficas com curvas de níveis e pontos cotados, estes serão tratados como imagens raster pelo programa, assim deverão passar por um processo de vetorização, que pode ser manual ou semi-automática. Os dados não digitais devem ser submetidos à digitalização. No caso de plantas impressas, pode-se o usar o scanner para obtenção de imagens raster, ou a mesa digitalizadora para vetorização direta no sistema. Se os dados estiverem na forma de coordenadas, basta digitá-las via teclado no próprio sistema ou em um arquivo txt. 3 Modelo Digital do Terreno Tentar expressar o relevo do terreno em termos matemáticos significa modelar sua superfície através de uma função que forneça a elevação de cada ponto do terreno a partir de suas coordenadas no plano xy , ou seja, o relevo poderia ser modelado por uma função matemática na forma da equação 1, em um determinado domínio. z = f ( x, y ) (1) Esse tipo de modelamento não é ideal, pois não seria possível descrever certos tipos de acidentes geográficos, como túneis e cavernas apenas por uma equação de superfície. Nesses casos, o mais adequado seria o uso de modelos sólidos, porém estes são demasiadamente mais complicados e na maioria dos acidentes geográficos a representação por uma superfície é adequada. Representar o terreno computacionalmente através de uma única função analítica apresenta dificuldades, uma vez que a quantidade de amostras envolvidas no processo é finita e de modo algum seria possível calcular uma função f que exprimisse o terreno de forma exata. No entanto, podem ser feitas aproximações valendo-se de métodos numéricos e estatísticos para ajustar uma superfície de tendência. A essa superfície é dado nome de modelo numérico do terreno (MNT) ou MDT. O processo para obtenção de um MDT, de um modo simplista, passa por três etapas: (1) obtenção de uma amostra de pontos ( x, y, z ) do terreno; (2) decomposição da projeção da superfície do terreno em triângulos no plano xy em função das amostras (3) ajusta-se um plano em cada triângulo com as informações dos três vértices, sendo o domínio de cada equação do plano restrito ao triângulo, o que significa aproximar o terreno por uma superfície poliédrica. Como cada uma das faces planares da superfície a ser obtida fica completamente caracterizada a partir de três de seus pontos, o problema de obter tal superfície pode ser reduzido ao de obter uma triangulação apropriada para os pontos amostrais projetados no plano xy . Os diversos tipos de amostras discutidos na seção 2.1 dão origem a problemas de triangulação com diferentes graus de estruturação. O problema de construir uma superfície com base numa amostra irregular é o problema clássico de triangulação de um domínio do plano. 3.1 Triangulação de Delaunay Para a implementação do aplicativo, a parte mais difícil da construção do MDT consiste na programação eficiente do algoritmo de triangulação. A solução deste problema implica em decidir de que maneira proceder à interligação dos pontos amostrados para se formar uma triangulação. Uma triangulação de um conjunto de pontos consiste em se encontrar segmentos de reta que conectam estes pontos de tal modo que nenhum desses segmentos cruze com nenhum outro e que cada ponto seja vértice de pelo menos um triângulo formado por esses segmentos. A método de triangulação mais utilizado para gerar o MDT é a triangulação de Delaunay (TD) [4]. Dois métodos de triangulação (Delaunay e não Delaunay) sobre cinco pontos estão ilustrados na Fig. 1(A) e Fig. 1(B), respectivamente. (A) (B) Fig. 1. Interligação dos pontos A, B, C, D, e E, formando uma triangulação Delaunay em (A) e outra não Delaunay em (B). Esse tipo de triangulação tende a criar triângulos mais homogêneos o que favorece uma melhor aproximação com a realidade do terreno amostrado. Qualquer triângulo em uma TD tem a seguinte propriedade: um círculo criado pelos três pontos dos vértices do triângulo contém apenas esses três pontos, ou seja, nenhum outro ponto da triangulação pertencerá ao círculo formado pelos três pontos, conforme pode ser visualizado na Fig. 1(A). Quando a amostra é semi-regular, determinadas arestas devem estar obrigatoriamente presentes e o problema resultante é uma triangulação com restrições. 3.2 Algoritmo O algoritmo descrito a seguir pode ser refinado de diversas formas para ser mais eficiente. Uma melhora significativa é alcançada ao ordenar as coordenadas xyz das amostras em x como primeira prioridade e depois em y . Com essa medida evita-se muitos testes desnecessários, como, por exemplo, o teste para verificar se o ponto corrente pertence à circunferência circunscrita a um triângulo. Nesse caso, se a componente x do ponto menos a componente do centro da circunferência for maior que raio da circunferência, os pontos com componentes maiores à direita não precisarão ser testados, o mesmo pode ser feito para as componentes à esquerda. Com essa melhora e usando como algoritmo de ordenação o quicksort, consegue-se reduzir a complexidade do algoritmo para O( n1,5 ) . A seguir é apresentado um pseudocódigo da TD, escrito a partir do algoritmo desenvolvido por Paul Bourke (1989) [4]. {Entrada: lista de vértices (LV)} {Saída: lista de triângulos (LT)} início Inicialize uma LT; Crie um super triângulo (ST); Adicione os vértices do ST no final da LV; Adicione o ST no final da LT; para cada ponto na LV faça Inicialize uma lista de arestas (LA); para cada triângulo corrente na LT faça Calcule o centro e o raio da circunferência circunscrita (CC) ao triângulo; se o ponto estiver dentro de CC então Adicione as 3 arestas do triângulo na LA; Remova o triângulo da LT; fim se; fim para; Apague todas as arestas coincidentes na LA; Adicione na LT todos os triângulos formados pelas arestas do polígono fechado e o ponto; fim para; Remova da LT todos os triângulos que tiverem algum vértice comum ao ST; Remova os vértices do ST da LV; fim. Alguns trechos do algoritmo carecem de comentários: um super triângulo (ST) é um triângulo isósceles projetado de modo que todos os pontos da LV sejam interiores a ele. A ação de apagar todas as arestas coincidentes na LA faz com que as arestas restantes na lista de arestas formem um polígono fechado. 3.3 Fronteira Em uma TD são interconectados pontos que não são pertinentes entre si, ou seja, que não deveriam ser interconectados, pois entre eles podem existir variações no terreno que não foram consideradas no levantamento. Normalmente isso ocorre entre os limites da área levantada e o fecho convexo criado após a TD. A impertinência é devida ao fato que, entre o fecho convexo e os limites levantados poderia existir uma depressão ou elevação, já que não se sabe a priori como é o terreno entre eles, devido ao mesmo não ter sido amostrado nessa região. Neste caso, se esses pontos forem triangulados estar-se-ia representando o terreno de forma equivocada. Um método para resolver esse problema consiste em criar um polígono referente à fronteira do levantamento e usar um algoritmo que teste todos os vértices de cada triângulo da triangulação, verificando se o vértice é externo ao polígono referente à fronteira. Se algum vértice de qualquer triângulo não pertencer ao polígono, o triângulo deverá ser excluído da triangulação. Um algoritmo para verificar se um ponto é interno a um polígono foi desenvolvido por Hall (1975). Tal algoritmo fundamenta-se na soma dos ângulos formados entre o ponto dado e todos os vértices do polígono. Se a soma for 360° o ponto está dentro do polígono. 3.4 Linhas Obrigatórias Além de definir a fronteira é necessário mudar a triangulação em certos locais. Esses locais são linhas que representam estradas, córregos, represas, o divisor de águas, crista de barrancos, e outros tipos de amostras semi-regulares. Essas linhas obrigatoriamente devem pertencer a arestas de triângulos. Nesses casos, a TD com restrições deveria ser feita, entretanto o algoritmo é um tanto complicado e não faz diferença fazer essas mudanças depois da TD sem restrições, uma vez que cada aresta obrigatória afetará apenas os triângulos em que suas arestas se interceptarem com a aresta obrigatória. As Fig. 2(A) e 2(B) mostram um terreno em R 3 antes do processamento das obrigatórias e depois de processadas, respectivamente. Pode-se observar que alguns triângulos “aterram” o rio na Fig. 2(A), já na Fig. 2(B) o relevo é mais fiel à realidade. 3.5 Implementação do MDT Depois de executadas a TD e as mudanças feitas pelo processamento da fronteira e obrigatórias, tem-se como produto final uma lista de triângulos representativa da triangulação. Como a coordenada z não foi excluída nesses processos cada elemento Tn da lista de triângulos é composto por três vértices (V1n , V2n , V3n ) , sendo que cada vértice é um terno de coordenadas. Para tanto usaremos a lista de triângulos para formar cada face triangular do MDT. O AutoCAD possui um entidade denominada de 3DFACE, que pode representar uma superfície de 3 ou quatro lados. Basta então usar a função AutoLISP de criação de entidades (entmake) para criar o MDT, usando os elementos Tn , em que n representa o número de triângulos existentes na lista de triângulos. Fig. 2. MDT antes (A) e depois (B) do processamento das linhas obrigatórias. 3.6 Extraindo Dados do MDT Com o MDT gerado pode-se extrair uma grande quantidade de dados e informações para permitir a análise em diversas aplicações. Os cálculos de área e de volume são normalmente os principais motivadores da criação de um MDT. Em linhas gerais, e sem se preocupar com detalhes de algumas situações específicas, é mostrado a seguir como obter o volume entre o MDT e uma superfície plana (SP), bem como a área plana e a área de superfície. Para o cálculo de área plana é suficiente calcular a área da projeção de cada elemento de superfície do MDT (3DFACE) e a SP. Esses cálculos se resumem em determinar a área de triângulos em um determinado domínio, e esse domínio pode ser um polígono pertencente à interseção das duas superfícies, o MDT e a SP, ou os limites da triangulação caso a SP esteja posicionada acima ou abaixo do MDT. Em se tratando de área de superfície, a diferença está em calcular a área da 3DFACE e não a projeção desta na SP. Se a SP interceptar o MDT, será preciso modificar o MDT criando-se novas 3DFACE. Quando a SP interceptar uma 3DFACE, esta será dividida em duas na interseção desta com a SP. Desse modo, um domínio qualquer fica completamente definido por um conjunto de 3DFACE. Em seguida, é descrito como proceder ao cálculo de volume acima da SP. O cálculo de volume abaixo é feito de maneira análoga. O cálculo de volume acima da SP é feito determinando-se o volume de cada sólido ( v) encerrado por uma 3DFACE e a SP em um determinado domínio. O cálculo de v pode ser feito por integração numérica entre duas superfícies, a SP e a 3DFACE, porém existe uma maneira mais simples de se proceder para o cálculo de v. Criandose um prisma reto entre a SP e o vértice de menor cota da 3DFACE, e subtraindo-se deste a pirâmide formada entre a 3DFACE e a base inferior do prisma, tem-se o sólido desejado. O cálculo deste sólido se resume ao cálculo de outros dois sólidos, de um prisma reto e de uma pirâmide. O volume desejado é a somatória dos v’s. Os procedimentos descritos nessa secção são verdadeiros se a SP estiver em uma cota superior a qualquer elemento do MDT. Porém fazendo-se algumas modificações temporárias no MDT pode-se calcular o volume em situações mais genéricas. 4 Conclusão A metodologia aplicada é bastante simples em contraste com outros métodos mais sofisticados de modelamento de superfície, que geram superfícies mais suaves. Para aplicações, como cálculo de área de superfície, área plana e volume entre superfícies, este método é aceito. Sua aplicação pode ser feita no projeto de centrais hidroelétricas e em cálculos referentes a obras civis em aterros. O aplicativo desenvolvido segundo os conceitos apresentados desse artigo foi comparado com outros programas consagrados, possibilitando a validação da metodologia, tanto nos cálculos de áreas e quanto de volumes. Considerável esforço de pesquisa e implementação será requerido para aprimorar a performance computacional do algoritmo de Delaunay. Referências 1. YAMAMOTO, J. K.: Representações Gráficas Espaciais em Geologia; Aplicações no complexo Alcalino de Anitápolis. São Paulo, Brasil: Instituto de Geociências da USP, 1986. (Dissertação, Mestrado) 2. MÔNICO, J.F.G.: Posicionamento pelo NAVSTAR-GPS, Descrição, Fundamentos e Aplicações. São Paulo, editora UNESP, 2000. 3 GAÁL, J.A.: Curso de AutoLisp. Campinas, 1ª ed. DeseCAD Computação Gráfica, 1999. 4. http://astronomy.swin.edu.au/~pbourke/terrain/triangulate/ Acesso em 10/05/2004.