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"
(17 revisões intermediárias por 2 usuários não estão sendo mostradas) | |||
Linha 30: | Linha 30: | ||
Independente do método utilizado, é possível obter a exatidão da medida da localização lendo o valor da variável <tt>LocationSensor1.Accuracy</tt>. 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. | Independente do método utilizado, é possível obter a exatidão da medida da localização lendo o valor da variável <tt>LocationSensor1.Accuracy</tt>. 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 média de N valores= | ||
+ | A média de valores é um conceito simples, mas que na programação pode implementada de diferentes formas. Considere o caso em que se deseja fazer a média de um conjunto de valores <math> \left [ x_1, x_2, x_3, ..., x_N \right ] </math>. | ||
+ | ==Método 1== | ||
+ | O método direto consiste em somar os valores e dividir a soma pelo número de valores do conjunto. | ||
+ | |||
+ | <math>x_{med} = \left [ x_1 + x_2 + x_3 + ... + x_N \right ] / N </math> | ||
+ | |||
+ | Este método exige que os valores de x1 a xN estejam todos disponíveis para o cálculo. | ||
+ | |||
+ | ==Método 2== | ||
+ | |||
+ | O método iterativo, calcula a média a medida que novos valores são obtidos. Para o cálculo da media de N pontos, segue-se o seguinte método: | ||
+ | ;1º passo: Calcula-se a média dos 2 primeiros valores <math>x_{med} = \left [ x_1 + x_2 \right ] / 2</math>, e em seguida guarda-se o número de valores <math>N = 2</math> e o valor da média atual <math>x_{med} </math>. | ||
+ | ;2º passo: A cada novo valor <math>x_N </math>, calcula-se a média usando a média anterior <math>x_{med}</math> e o novo valor : <math>x_{med} = \left [ x_N + (x_{med} * N) \right ] / (N+1)</math> e em seguida guarda-se o número de pontos N = N + 1 e o novo valor da média. Este passo é repetido a cada novo valor. | ||
+ | |||
+ | Neste caso a necessidade de armazenamento de valores se reduz a 2 valores (<math>x_{med} </math> e <math>N</math>). | ||
=Como calcular a distância entre dois pontos= | =Como calcular a distância entre dois pontos= | ||
Linha 47: | Linha 64: | ||
<math> x_i = R \ \cos \phi_i \ \cos \lambda_i \,</math> | <math> x_i = R \ \cos \phi_i \ \cos \lambda_i \,</math> | ||
− | <math> y_i = R \ \ | + | <math> y_i = R \ \cos \phi_i \ \sin \lambda_i \,</math> |
<math> z_i = R \ \sin \phi_i \,</math> | <math> z_i = R \ \sin \phi_i \,</math> | ||
Linha 60: | Linha 77: | ||
=Como calcular a área de um triângulo= | =Como calcular a área de um triângulo= | ||
− | Veja | + | |
+ | ==[http://es.wikipedia.org/wiki/F%C3%B3rmula_de_Her%C3%B3n Fórmula de Heron]== | ||
+ | |||
+ | A fórmula de Herón permite calcular a área de qualquer triangulo conhecendo-se o comprimento dos seus 3 lados <math> d_1, d_2, d_3 </math>: | ||
+ | :<math>\acute{A}rea = \sqrt{s\left(s-d_1\right)\left(s-d_2\right)\left(s-d_3\right)}</math> | ||
+ | |||
+ | onde s é o semiperimetro do triangulo: | ||
+ | :<math>s = \frac{d_1+d_2+d_3}{2}</math> | ||
+ | |||
+ | Veja outros possíveis métodos no site [http://mathworld.wolfram.com/TriangleArea.html Wolfram Mathword]. | ||
+ | |||
=Campo de Experimentos PJI1= | =Campo de Experimentos PJI1= | ||
No pátio do estacionamento do IF-SC estão marcados 3 pontos que formam um triângulo (P1,P2,P3). Estes pontos servem de referência inicial para a verificação de funcionamento dos sistemas desenvolvidos no PJI1. As latitudes e longitudes desses pontos com medição através do GPS Garmim 76CSx, resultaram em: | No pátio do estacionamento do IF-SC estão marcados 3 pontos que formam um triângulo (P1,P2,P3). Estes pontos servem de referência inicial para a verificação de funcionamento dos sistemas desenvolvidos no PJI1. As latitudes e longitudes desses pontos com medição através do GPS Garmim 76CSx, resultaram em: | ||
Linha 68: | Linha 95: | ||
A medida da distância entre os pontos usando uma trena de fibra resultou na distância de: | A medida da distância entre os pontos usando uma trena de fibra resultou na distância de: | ||
− | :d(P1,P2) = 27,00 | + | :d(P1,P2) = 27,00 m |
− | :d(P1,P3) = 22,30 | + | :d(P1,P3) = 22,30 m |
− | :d(P2,P3) = 20,65 | + | :d(P2,P3) = 20,65 m |
Utilizando a fórmula de Heron obteve-se: | Utilizando a fórmula de Heron obteve-se: | ||
Linha 78: | Linha 105: | ||
=Conversor de decimal para graus.minutos.segundos= | =Conversor de decimal para graus.minutos.segundos= | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | + | * [http://www.anycalculator.com/longitude.htm Calculate distance, bearing and more between two latitude/longitude points] | |
− | + | * [http://www.anycalculator.com/decimaltodegree.htm Convert Degrees Minutes Seconds to Decimal Degrees] | |
− | + | * [http://transition.fcc.gov/mb/audio/bickel/DDDMMSS-decimal.html/ Degrees, Minutes, Seconds and Decimal Degrees Latitude/Longitude Conversions] | |
+ | * [http://www.wolframalpha.com/input/?i=27.608417S+48.632750W localização e conversão de unidades] - Wolframalpha | ||
+ | * [http://www.wolframalpha.com/input/?i=27.608417S+48.632750W+to+27.608611S+48.632889W Cálculo da distância Geodésica] - Wolframalpha |
Edição atual tal como às 14h40min de 6 de março de 2013
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 média de N valores
A média de valores é um conceito simples, mas que na programação pode implementada de diferentes formas. Considere o caso em que se deseja fazer a média de um conjunto de valores .
Método 1
O método direto consiste em somar os valores e dividir a soma pelo número de valores do conjunto.
Este método exige que os valores de x1 a xN estejam todos disponíveis para o cálculo.
Método 2
O método iterativo, calcula a média a medida que novos valores são obtidos. Para o cálculo da media de N pontos, segue-se o seguinte método:
- 1º passo
- Calcula-se a média dos 2 primeiros valores , e em seguida guarda-se o número de valores e o valor da média atual .
- 2º passo
- A cada novo valor , calcula-se a média usando a média anterior e o novo valor : e em seguida guarda-se o número de pontos N = N + 1 e o novo valor da média. Este passo é repetido a cada novo valor.
Neste caso a necessidade de armazenamento de valores se reduz a 2 valores ( e ).
Como calcular a distância entre dois pontos
Se você tiver a localização dada em coordenadas de latitude e longitude de dois pontos e 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 , o qual considera a distância percorrida sobre uma esfera com raio equivalente ao raio médio da terra .
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 e :
e calcular a distância euclidiana entre os pontos:
Note que este método calcula a distância em linha reta, e é uma aproximação da distância real quando seu valor é pequeno em relação a curvatura da terra (< 1000 km).
FONTE: http://mathworld.wolfram.com/Distance.html
Como calcular a área de um triângulo
Fórmula de Heron
A fórmula de Herón permite calcular a área de qualquer triangulo conhecendo-se o comprimento dos seus 3 lados :
onde s é o semiperimetro do triangulo:
Veja outros possíveis métodos no site Wolfram Mathword.
Campo de Experimentos PJI1
No pátio do estacionamento do IF-SC estão marcados 3 pontos que formam um triângulo (P1,P2,P3). Estes pontos servem de referência inicial para a verificação de funcionamento dos sistemas desenvolvidos no PJI1. As latitudes e longitudes desses pontos com medição através do GPS Garmim 76CSx, resultaram em:
- P1 = [-27.608417,-48.632750]
- P2 = [-27.608611,-48.632889]
- P3 = [-27.608556,-48.632639]
A medida da distância entre os pontos usando uma trena de fibra resultou na distância de:
- d(P1,P2) = 27,00 m
- d(P1,P3) = 22,30 m
- d(P2,P3) = 20,65 m
Utilizando a fórmula de Heron obteve-se:
- Area(P1,P2,P3) = 225,04 m2