[firebase-br] calculo de distancia entre coordenadas
Carlos H. Cantu
listas em warmboot.com.br
Seg Ago 11 10:27:20 -03 2014
Vc não precisa de trocentas casas decimais... pelo que lembro, com 6
casas decimais vc já consegue uma boa precisão em coordenadas GPS.
Pode fazer o teste no google maps mesmo.
[]s
Carlos H. Cantu
www.FireBase.com.br - www.firebirdnews.org
www.warmboot.com.br - blog.firebase.com.br
bicb>
bicb> Pessoal, estou tentando fazer um SQL que me retorne a distancia entre
bicb> dois pontos através de coordenadas,
bicb> na internet achei essa function em MySQL e estou tentando converter para
bicb> um aprocedure FB mas esta dando erro na quantidade de casas decimais.
bicb> alguém saberia como resolver?
bicb> desde já agradeço.
bicb> a procedure é essa:
bicb> SET TERM ^ ;
bicb> CREATE OR ALTER PROCEDURE CALCULA_DISTANCIA (
bicb> lat1 double precision,
bicb> long1 double precision,
bicb> lat2 double precision,
bicb> long2 double precision)
bicb> returns (
bicb> distancia double precision)
bicb> as
bicb> declare variable v2r double precision;
bicb> declare variable vlong double precision;
bicb> declare variable vlat double precision;
bicb> declare variable vtmp_sin double precision;
bicb> declare variable vtmp_cos double precision;
bicb> declare variable vtmp_sin2 double precision;
bicb> declare variable a double precision;
bicb> declare variable c double precision;
bicb> begin
bicb> --V2r = 0.017453292519943295769236;--VALOR CORRETO
bicb> V2r = 0.01745329251994329576;-- ASSIM DA CERTO
bicb> vlong = (long2 - long1) * v2r;
bicb> vLat = (lat2 - lat1) * v2r;
bicb> vTmp_Sin = sin(vLat/2.0);
bicb> vTmp_cos = cos(lat1 * v2r);
bicb> vTmp_Sin2 = sin(vlong / 2.0);
bicb> a = (vTmp_Sin * vTmp_Sin) + (vTmp_cos * vTmp_cos) * (vTmp_Sin2 *
bicb> vTmp_Sin2);
bicb> c = 2.0 * atan2(sqrt(a), sqrt(1.0 - a));
bicb> distancia = 6368.1 * c;
bicb> suspend;
bicb> end^
bicb> SET TERM ; ^
bicb> GRANT EXECUTE ON PROCEDURE CALCULA_DISTANCIA TO SYSDBA;
bicb>
bicb> ______________________________________________
bicb> FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
bicb> Para saber como gerenciar/excluir seu cadastro na lista, use:
bicb> http://www.firebase.com.br/fb/artigo.php?id=1107
bicb> Para consultar mensagens antigas: http://firebase.com.br/pesquisa
Mais detalhes sobre a lista de discussão lista