Mudanças entre as edições de "Fundamentação Teórica do Projeto - O Sistema GPS e métodos para cálculo de área e distância"
Linha 43: | Linha 43: | ||
==Método 2== | ==Método 2== | ||
− | Um segundo método é transformar as coordenadas geográficas em coordenadas no plano cartesiano <math>P_1 = (x_1, y_1, z_1)</math> e <math>P_2 = (x_2, y_2, z_2)</math>, e calcular a distância euclidiana <math> Sd </math> entre os pontos: | + | Um segundo método é transformar as coordenadas geográficas em coordenadas no plano cartesiano <math>P_1 = (x_1, y_1, z_1)</math> e <math>P_2 = (x_2, y_2, z_2)</math>: |
+ | |||
+ | <math> x_i = R \ \cos \phi_i \ \cos \lambda_i \,</math> | ||
+ | |||
+ | <math> y_i = R \ \sin \phi_i \ \sin \lambda_i \,</math> | ||
+ | |||
+ | <math> z_i = R \ \sin \phi_i \,</math> | ||
+ | |||
+ | e calcular a distância euclidiana <math> Sd </math> entre os pontos: | ||
<math> Sd = \sqrt {(x_2-x_1)^2 + (y_2-y_1)^2 + (z_2-z_1)^2 } </math> | <math> Sd = \sqrt {(x_2-x_1)^2 + (y_2-y_1)^2 + (z_2-z_1)^2 } </math> |
Edição das 14h59min de 21 de junho de 2012
Como adquirir o sinal do GPS no Android
No projeto adicione o LocationSensor ao projeto, altere as propriedades desse objeto para Enabled [x] ProviderLocked [x] ProviderName gps em minusculo (pois GPS em maiúsculo não funciona)
Em seguida obtenha as medidas do GPS usando:
Método 1
Aguarde o disparo do evento when LocationSensor1.LocationChanged e utilize os valores retornados nas variáveis locais latitude, longitude e altitude.
- Neste caso, cada vez que houver mudança na posição do GPS, um novo evento ocorre e novos dados de localização são recebidos. Esse método fornece poucas medidas do GPS mesmo quando a sua posição é alterada. Aparentemente após o disparo do evento o chip é desligado temporariamente.
Método 2
Para aumentar a velocidade das medições do GPS, inclua um Clock1 no projeto e configure as propriedades para disparar a cada 1 segundo, TimerAlwaysFires [x] TimerEnabled [x] TimerInterval 1000
Aguarde o disparo do evento when Clcck1.Timer e leia os valores das variáveis LocationSensor1.Latitude, LocationSensor1.Longitude e LocationSensor1.Altitude.
- Neste caso, a cada segundo, independente de haver mudança na posição do GPS, um novo evento do timer ocorre e novos dados de localização são recebidos.
- Note que mesmo sem alterar a posição do GPS os dados recebidos sofrem variação.
Método 3
Pode acontecer que no método 2 o chip não atualize os dados a cada leitura. Neste caso, após efetuar a leitura, é necessário desabilitar temporariamente o GPS LocationSensor1.Enable = False, e seguida habilita-lo LocationSensor1.Enable = True esperando novamente 1 segundo antes da próxima leitura
Independente do método utilizado, é possível obter a exatidão da medida da localização lendo o valor da variável LocationSensor1.Accuracy. Usando um conjunto maior de aquisições da localização em um mesmo ponto é possível melhorar a precisão da medição usando uma média de valores.
Como calcular a distância entre dois pontos
Se você tiver a localização dada em coordenadas de latitude Falhou ao verificar gramática (MathML com retorno SVG ou PNG (recomendado para navegadores modernos e ferramentas de acessibilidade): Resposta inválida ("Math extension cannot connect to Restbase.") do servidor "https://en.wikipedia.org/api/rest_v1/":): {\displaystyle \phi} e longitude Falhou ao verificar gramática (MathML com retorno SVG ou PNG (recomendado para navegadores modernos e ferramentas de acessibilidade): Resposta inválida ("Math extension cannot connect to Restbase.") do servidor "https://en.wikipedia.org/api/rest_v1/":): {\displaystyle \lambda } de dois pontos Falhou ao verificar gramática (MathML com retorno SVG ou PNG (recomendado para navegadores modernos e ferramentas de acessibilidade): Resposta inválida ("Math extension cannot connect to Restbase.") do servidor "https://en.wikipedia.org/api/rest_v1/":): {\displaystyle P_1 = (\phi_1, \lambda_1)} e Falhou ao verificar gramática (MathML com retorno SVG ou PNG (recomendado para navegadores modernos e ferramentas de acessibilidade): Resposta inválida ("Math extension cannot connect to Restbase.") do servidor "https://en.wikipedia.org/api/rest_v1/":): {\displaystyle P_2 = (\phi_2, \lambda_2)} sobre o globo terrestre, pode calcular a distancia entre eles usando diferentes métodos
Método 1
Um método é o cálculo da distância geodésica Falhou ao verificar gramática (MathML com retorno SVG ou PNG (recomendado para navegadores modernos e ferramentas de acessibilidade): Resposta inválida ("Math extension cannot connect to Restbase.") do servidor "https://en.wikipedia.org/api/rest_v1/":): {\displaystyle Sg } , o qual considera a distância percorrida sobre uma esfera com raio equivalente ao raio médio da terra Falhou ao verificar gramática (MathML com retorno SVG ou PNG (recomendado para navegadores modernos e ferramentas de acessibilidade): Resposta inválida ("Math extension cannot connect to Restbase.") do servidor "https://en.wikipedia.org/api/rest_v1/":): {\displaystyle R = 6378 km} .
Falhou ao verificar gramática (MathML com retorno SVG ou PNG (recomendado para navegadores modernos e ferramentas de acessibilidade): Resposta inválida ("Math extension cannot connect to Restbase.") do servidor "https://en.wikipedia.org/api/rest_v1/":): {\displaystyle Sg = R * \cos^{-1} \left [ \sin (\phi_1)* \sin (\phi_2)+ \cos (\phi_1)* \cos (\phi_2)* \cos (\lambda_1 - \lambda_2) \right ]}
FONTE: http://mathworld.wolfram.com/GreatCircle.html, http://obsn3.on.br/~jlkm/geopath/
Método 2
Um segundo método é transformar as coordenadas geográficas em coordenadas no plano cartesiano Falhou ao verificar gramática (MathML com retorno SVG ou PNG (recomendado para navegadores modernos e ferramentas de acessibilidade): Resposta inválida ("Math extension cannot connect to Restbase.") do servidor "https://en.wikipedia.org/api/rest_v1/":): {\displaystyle P_1 = (x_1, y_1, z_1)} e Falhou ao verificar gramática (MathML com retorno SVG ou PNG (recomendado para navegadores modernos e ferramentas de acessibilidade): Resposta inválida ("Math extension cannot connect to Restbase.") do servidor "https://en.wikipedia.org/api/rest_v1/":): {\displaystyle P_2 = (x_2, y_2, z_2)} :
Falhou ao verificar gramática (MathML com retorno SVG ou PNG (recomendado para navegadores modernos e ferramentas de acessibilidade): Resposta inválida ("Math extension cannot connect to Restbase.") do servidor "https://en.wikipedia.org/api/rest_v1/":): {\displaystyle x_i = R \ \cos \phi_i \ \cos \lambda_i \,}
Falhou ao verificar gramática (MathML com retorno SVG ou PNG (recomendado para navegadores modernos e ferramentas de acessibilidade): Resposta inválida ("Math extension cannot connect to Restbase.") do servidor "https://en.wikipedia.org/api/rest_v1/":): {\displaystyle y_i = R \ \sin \phi_i \ \sin \lambda_i \,}
Falhou ao verificar gramática (MathML com retorno SVG ou PNG (recomendado para navegadores modernos e ferramentas de acessibilidade): Resposta inválida ("Math extension cannot connect to Restbase.") do servidor "https://en.wikipedia.org/api/rest_v1/":): {\displaystyle z_i = R \ \sin \phi_i \,}
e calcular a distância euclidiana Falhou ao verificar gramática (MathML com retorno SVG ou PNG (recomendado para navegadores modernos e ferramentas de acessibilidade): Resposta inválida ("Math extension cannot connect to Restbase.") do servidor "https://en.wikipedia.org/api/rest_v1/":): {\displaystyle Sd } entre os pontos:
Falhou ao verificar gramática (MathML com retorno SVG ou PNG (recomendado para navegadores modernos e ferramentas de acessibilidade): Resposta inválida ("Math extension cannot connect to Restbase.") do servidor "https://en.wikipedia.org/api/rest_v1/":): {\displaystyle Sd = \sqrt {(x_2-x_1)^2 + (y_2-y_1)^2 + (z_2-z_1)^2 } }
FONTE: http://mathworld.wolfram.com/Distance.html
Como calcular a área de um triângulo
Veja os possíveis métodos no site Wolfram Mathword.