Escolar Documentos
Profissional Documentos
Cultura Documentos
Resumo:
Este trabalho trata do desenvolvimento de um algoritmo e de uma aplicao de comparao de
coordenadas tridimensionais e obteno de distncias entre linhas e pontos. O objetivo da
aplicao localizar pontos sobre uma feio linear para o posterior clculo da distncia dos
pontos encontrados para pontos com coordenadas conhecidas, de forma a facilitar a execuo
dos testes estatsticos para avaliao do Padro de Exatido Cartogrfica (PEC), auxiliando na
verificao posicional de linhas tridimensionais. O clculo das distncias foi feito por meio de
um algoritmo de menor distncia disponibilizado pela extenso espacial PostGIS para o banco de
dados PostgreSQL. A aplicao foi programada em linguagem C/C++, utilizando bibliotecas do
PostGIS e a biblioteca Shapelib - Shapefile C Library. Os resultados da aplicao desenvolvida
foram comparados com resultados de equaes descritas neste trabalho com o objetivo de validar
a ferramenta e os pontos encontrados. As diferenas encontradas - de um milmetro - foram
consideradas satisfatrias para possibilitar o uso da aplicao, que dever ser melhorada
futuramente para permitir o clculo automtico dos valores para avaliao do PEC.
Palavras-chave: Banco de Dados Geogrficos, Padro de Exatido Cartogrfica, coordenadas
tridimensionais
Abstract:
This paper deals with the development of an algorithm and an application for three dimensional
coordinate comparison and distance calculation between lines and points. The applications goal
is to find the location of points over a linear feature for posterior calculation of the distance
between the points found and points with known coordinates, in order to facilitate the execution
of statistical tests for assessment of the cartographic positional accuracy standards (in Brazil,
known as the Padro de Exatido Cartogrfica - PEC), assisting in the positional validation of
three dimensional lines. The distance calculation was executed by a shortest distance algorithm
available in the PostGIS spatial extension for PostgreSQL database. The application was written
in the C/C++ language, using PostGIS libraries and Shapelib - Shapefile C Library. The results
of the application developed were compared with the results of equations described in this paper
in order to validate the tool and the points found. The differences found - of one millimeter -
were considered satisfactory to allow the usage of the application, which must be further
improved so as to automatically calculate the values for PEC assessment.
Keywords: Spatial Database, Map Accuracy Standards, three-dimensional coordinates
1. Introduo
No Brasil, a anlise dos produtos cartogrficos objeto de estudo e aplicao desde meados da
dcada de 80, quando a avaliao de produtos cartogrficos vetoriais pretendeu atender ao
Decreto n 89.817 de 1984, que tem como objetivo normatizar o controle de qualidade de
produtos cartogrficos, classificando-os em classes.
Com os diversos mtodos de coleta de dados para a criao de produtos cartogrficos, o controle
de qualidade desses produtos passou a ser um desafio tanto para as instituies que produzem
quanto para os usurios e agentes fiscalizadores (Galo e Camargo, 1994).
A comparao de coordenadas para a verificao de produtos vetoriais, de forma que atenda aos
parmetros do Padro de Exatido Cartogrfica (PEC), deve ser feita encontrando-se as
coordenadas da linha mais prximas s do ponto de referncia, para que seja utilizada nos
clculos estatsticos. Neste trabalho, desenvolvemos uma ferramenta de comparao de
coordenadas com os produtos vetoriais lineares. A comparao se faz necessria pois inmeras
vezes existe um grande nmero de pontos a serem comparados com determinadas coordenadas,
consideradas de referncia para os clculos estatsticos.
2. Reviso bibliogrfica
Com o auxlio deum banco de dados geogrficos, a avaliao posicional dos dados cartogrficos
requer a extrao das coordenadas de um determinado ponto , localizado sobre um
vetor , a uma mnima distancia de um ponto (Figura 3).
Fonte: http://mathworld.wolfram.com/Point-LineDistance3-Dimensional.html (adaptado).
(1)
Calculamos a equao da reta de sua forma cannica, onde temos a equao (2):
(2)
Na equao (2) temos o valor de , e dados pelos coeficientes angulares do vetor
conforme as equaes (3) e (4), e na decomposio na equao (5) (Dawkins, 2015):
(3)
(4)
(5)
Ao encontramos a distncia , da linha ao ponto, por meio da equao (1), podemos compar-la
com a distncia , calculada utilizando a coordenada do ponto que pertence
reta , e a coordenada na equao (6):
(6)
3. Clculo analtico de distncia 3D (linha-ponto)
Nesta seo ser abordada a metodologia de obteno dos valores de distncia atravs de
clculos, conforme a referncia bibliogrfica inicial. Esses valores sero comparados
posteriormente com os calculados a partir das coordenadas obtidas no algoritmo de busca na
seo 4.
Inicialmente foram selecionados, de forma aleatria, 10 pontos e retas prximas a eles, com os
quais foram calculadas as distncias utilizando-se a equao (1), para isso foram utilizadas as
equaes da reta dos vrtices das linhas prximas a esses pontos.
O clculo dos valores relativos aos parmetros das retas est exemplificado a seguir:
Dadas as coordenadas:
(7)
Utilizamos a equao (3):
(8)
E decompomos conforme a equao (5):
(9)
Resultando na equao (10) da reta , que pode ser expressa da seguinte forma:
(10)
3.1.2 Metodologia de clculo da distncia entre ponto e reta
(11)
Podemos calcular a distncia utilizando a equao (1) da seguinte forma:
(12)
Para facilitar a execuo dos clculos e automatizar a busca das linhas e, posteriormente, do
ponto pertencente a esta, foi desenvolvido um algoritmo que realiza a busca da linha mais
prxima, cujo pseudocdigo demonstrado a seguir. O cdigo fonte do programa estar
disponvel no stio http://208.117.38.76/findpointonline.cpp. Este cdigo foi escrito em
linguagem C/C++ utilizando as bibliotecas citadas na subseo 4.1, e depois compilado em um
arquivo executvel (Findcoordinateinline.exe) que necessita dos parmetros de entrada descritos
a seguir:
Findcoordinateinline.exe host_postgis port dbname user password tolerance precision
shapefilename output
host_postgis: endereo IP do servidor de banco de dados PostgreSQL/PostGIS
port: porta do servidor de banco de dados PostgreSQL/PostGIS
dbname: nome do bando de dados onde esto armazenadas as linhas
user: nome do usurio de acesso ao banco
password: senha do usurio de acesso ao banco
tolerance: tolerncia de procura do ponto (distncia mxima permitida entre a linha e o ponto)
precision: valor de busca inicial (distncia mnima entre a linha e o ponto)
shapefilename: nome do arquivo shapefile contendo os pontos
output: nome do arquivo de sada, onde sero inseridas as coordenadas encontradas, separadas
por ponto-e-vrgula
A comparao foi feita utilizando linhas e pontos. As linhas foram inseridas no banco de dados
PostgreSQL/PostGIS como dados fixos e os pontos foram lidos a partir de um arquivo shapefile
utilizando a biblioteca shapelib. A leitura dinmica a partir do arquivo shapefile foi preferida,
pois consideramos os pontos lidos por estreo-restituio como dados variveis, uma vez que a
leitura dos pontos pode conter erros de interpretao, implicando em releituras que ocasionariam
nova carga no banco de dados. Esta opo foi tomada para facilitar a execuo do processo, no
impedindo, contudo, que as etapas fossem executadas totalmente dentro do banco de dados.
Variveis: nmero de linhas; coordenadas do ponto; raio de busca; preciso da busca; contador1; contador2.
Incio
Leia nmero de linhas; coordenadas do ponto; raio de busca; preciso da busca.
contador1 recebe: preciso da busca.
contador2 recebe: 0.
Enquanto (contador1 for menor que raio de busca) faa:
{
Enquanto (contador2 for menor que nmero de linhas) faa:
{
Execute o comando SQL ST_3DDWithin com: contador1; contador2; coordenadas do ponto.
Se (resposta do comando for verdadeira) ento:
Retorne com o valor do contador2.
Seno
contador2 recebe: incremento.
contador1 recebe: contador1 + preciso da busca.
}
}
Se contador1 for maior que o raio de busca ento:
Retorne com o valor 0 (ponto no encontrado).
Fim
Variveis: linha mais prxima; coordenadas do ponto; coordenadas de sada; preciso de busca.
Inicio
Leia linha mais prxima; coordenadas do ponto.
contador1 recebe: preciso da busca.
Execute o comando SQL ST_3DClosestPoint com: linha mais prxima; coordenadas do ponto.
coordenadas de sada = resultado comando ST_3DClosestPoint
Retorna coordenadas de sada
Fim
Os testes matemticos aplicados em uma amostra de dez pontos validaram a possibilidade de uso
da ferramenta desenvolvida neste trabalho na avaliao do Padro de Exatido Cartogrfico
(PEC) de produtos vetoriais, em qualquer escala de mapeamento. Acreditamos que a aplicao
deve ser melhorada em trabalhos futuros de modo a permitir a insero de elementos no banco
de dados de forma mais automatizada, assim como disponibilizar os resultados gerados em
tabelas no prprio banco, e executar os clculos dos valores do PEC. Atualmente, uma soluo
disponvel para o clculo final do PEC a partir das coordenadas obtidas o software GeoPEC
(Santos, 2014).
AGRADECIMENTOS
Agradecemos ao Instituto Geogrfico e Cartogrfico - IGC, pessoalmente ao diretor Celso
Donizetti Talamoni e ao gerente de cartografia Alexandre Iamamoto Ciuffa, pelo fornecimento
de dados vetoriais preliminares de feies hidrogrficas do mapeamento 1:25.000 do Estado de
So Paulo, que foram utilizados como dados de exemplo neste trabalho.
REFERNCIAS BIBLIOGRFICAS