Jump to content

POWERED BY:

Archived

This topic is now archived and is closed to further replies.

hargon

Calcular distância

Recommended Posts

Boa tarde moçada,

 

 

Estou precisando calcular a distância entre dois pontos, e a única informação que eu tenho é a longitude e latitude dos mesmos.

 

Consegui uma explicação em um site, mas o resultado não bate com o de outros sites que tem um sistema parecido.

http://www.multicascos.com.br/calculodistancia.htm

 

Alguém tem noção de como calcular isso?

Share this post


Link to post
Share on other sites

isso é pura matemática, pega a latitude e longitude que você tem e cria uma função que vai fazer o calculo de acordo com a matematica que tem no link que você colocou

Share this post


Link to post
Share on other sites

pois é... mas o problema ali parece ser o arcocoseno... você sabe calcular isso? Eu sei que é o inverso do coseno.. mas...

 

Encontrei esta formula, mas não chegou ao mesmo resultado que encontrei em alguns sites.

 

atn(-x / sqr(-x * x + 1)) + 2 * atn(1)

Share this post


Link to post
Share on other sites

Vixi eu cabulava aula de matematica hehe]mais e algo pra quem gosta bem de matematica procura em forum de professores estas coisas

Share this post


Link to post
Share on other sites

ve se ajuda eu tenho esse função SQL

 

/*
@UNIT VALUES
---STATUTEMILES = 3437.74677
---NORMALMILES = 3963.0
---KILOMETERS = 6378.7
---valor 57.295779513 seja qual for o RADIANo 180/PI
*/
CREATE FUNCTION fnc_get_distance (@ZIP varchar(50),@UNIT float)
RETURNS TABLE
AS
RETURN(
SELECT
((ACOS(
SIN(a.latitude/57.295779513) * SIN(b.latitude/57.295779513)
+ COS(a.latitude/57.295779513) * COS(b.latitude/57.295779513)
* COS(b.longitude/57.295779513 - a.longitude/57.295779513)
)) * @UNIT)
AS DISTANCE,
a.zipcode ZIP1, a.latitude LAT1, a.longitude LONG1, a.city CITY1, a.stateabbreviation STATE1,
b.zipcode ZIP2, b.latitude LAT2, b.longitude LONG2, b.city CITY2, b.stateabbreviation STATE2
FROM zipcodes a, zipcodes b
WHERE a.zipcode = @ZIP
)

---exemplos 
Select DISTANCE,ZIP1,CITY1,STATE1,ZIP2,CITY2,STATE2 From fnc_get_distance ('98052',3963) WHERE DISTANCE <= 200 ORDER BY DISTANCE, CITY2
Select * From fnc_get_distance ('98115',3963) WHERE ZIP2='98045' ORDER BY DISTANCE, CITY2

 

Esta rotina calcula a distância entre dois pontos (dado a Latitude / longitude dos pontos). Ele está sendo usado para calcular a distância entre os dois CEPs .

 

const pi = 3.14159265358979323846

Function distance(lat1, lon1, lat2, lon2, unit)
  Dim theta, dist
  theta = lon1 - lon2
  dist = sin(deg2rad(lat1)) * sin(deg2rad(lat2)) + cos(deg2rad(lat1)) * cos(deg2rad(lat2)) * cos(deg2rad(theta))
  response.write "dist = " & dist & "<br>"
  dist = acos(dist)
  dist = rad2deg(dist)
  response.write "dist = " & dist & "<br>"
  distance = dist * 60 * 1.1515
  Select Case ucase(unit)
	Case "K"
	  distance = distance * 1.609344
	Case "N"
	  distance = distance * 0.8684
  End Select
End Function 


'::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
':::  Esta função pega arccos e arctan :::
'::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
Function acos(rad)
  If Abs(rad) <> 1 Then
	acos = pi/2 - Atn(rad / Sqr(1 - rad * rad))
  ElseIf rad = -1 Then
	acos = pi
  End If
End function


'::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
':::  Esta função converte graus decimais  em  radianos		  :::
'::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
Function deg2rad(Deg)
	deg2rad = cdbl(Deg * pi / 180)
End Function

'::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
':::  Esta função converte radianos em graus decimais			 :::
'::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
Function rad2deg(Rad)
	rad2deg = cdbl(Rad * 180 / pi)
End Function

msgbox(distance(32.9697, -96.80322, 29.46786, -98.53506, "M") & " Milhas<br>")
msgbox(distance(32.9697, -96.80322, 29.46786, -98.53506, "K") & " Kilometros<br>")
msgbox(distance(32.9697, -96.80322, 29.46786, -98.53506, "N") & " Milhas Nauticas<br>")

aqui um link http://mathforum.org/library/drmath/view/51756.html ensinando a Distância entre os pontos sobre a Terra

Share this post


Link to post
Share on other sites

seria mais ou menos igual para calcular frete...

Share this post


Link to post
Share on other sites

×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.