Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

gugacamacho

AJUDA!! Preciso resolver este problema com variavel de form e function para calculo

Recommended Posts

Senhores,

 

Necessito muito da ajuda, estou com este codigo abaixo, quando insiro as variaveis para chamar a funcao, o calculo esta errado. por gentileza, se alguem pode me ajudar

<% 
'set rs = Conn.Execute("SELECT * FROM ctos ORDER by codigo")

Function DegRad(x)
	  'Degrees to Radians
	  DegRad = x * ((4 * Atn(1)) / 180)
End Function

Function GetGeodesicDistance(Lat1,Lon1,Lat2,Lon2,rScale)
	Dim er,pr,fl,F,G,L,S,C,W,R,D,H1,H2
	  er = 6378.1370000
	  pr = 6356.7523142
	  fl = (er - pr) / er
	  F = (DegRad(Lat1) + DegRad(Lat2)) / 2
	  G = (DegRad(Lat1) - DegRad(Lat2)) / 2
	  L = (DegRad(Lon1) - DegRad(Lon2)) / 2
	  S = Sin(G)^2 * Cos(L)^2 + Cos(F)^2 * Sin(L)^2
	  C = Cos(G)^2 * Cos(L)^2 + Sin(F)^2 * Sin(L)^2
	  W = Atn(Sqr(S / C))
	  R = Sqr(S * C) / W
	  D = 2 * W * er
	  H1 = (3 * R - 1) / (2 * C)
	  H2 = (3 * R + 1) / (2 * S)
	  Select Case rScale
		Case "statute"  dScale = 1.60934
		Case "nautical" dScale = 1.85200
		Case "metric"   dScale = 1.00000
		Case Else	   dScale = 1.60934
	  End Select
	  GetGeodesicDistance = (D * (1 + fl * H1 * Sin(F)^2 * Cos(G)^2 - fl * H2 * Cos(F)^2 * Sin(G)^2)) / dScale
End Function
%>
<div align="center">
  <form name="frm" method="post" action="mapa_v.asp">
    <label>Posição do cliente
    <input name="latitude" type="text" id="latitude" value=-28.401684> 
    <input name="longitude" type="text" id="longitude" value=-49.389643>
    </label>
    <label>
    <input type="submit" name="Submit" value="Enviar">
    </label>
  </form>
</div>
<%
dim Lati0, Long0, Lati1, Long1


lati0 = request.form("latitude")
long0 = request.form("longitude")

response.write GetGeodesicDistance(-28.401684,-49.389643,-28.394418,-49.395537, "metric") & " RESULTADO CORRETO<br><br><br>"

Lati1 = "-28.394418"
Long1 = "-49.395537"
response.Write(lati0) & ","
response.Write(Long0) & ","
response.Write(lati1) & ","
response.Write(Long1) & "<br><br><br>"
'Display calc
response.write GetGeodesicDistance(Lati0,Long0,Lati1,Long1, "metric") & "  RESULTADO DO CALCULO<br>"
%> 

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Com relação na formula não posso opinar não conheço a regra mas teste colocando todos os valores com vírgula e entre aspas ao invés de ponto e converta para Cdbl() quando fizer as contas...

Compartilhar este post


Link para o post
Compartilhar em outros sites

guga rodei a função aqui com esses parametros que passou...

GetGeodesicDistance(-28.401684,-49.389643,-28.394418,-49.395537, "metric")

retornou esse valor...  0,990992695478386 

qual valor volta para você?

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

  • Conteúdo Similar

    • Por IgorBap
      Bom dia!
       
      Preciso escrever um código de algoritmo que realiza a conta de conversão de latitudes e longitudes em distância utilizando o Teorema de Pitágoras e não sei por onde começar.
      Encontrei esse calculo que poderá ser inserido.
       
      Triângulo Pitagórico

      Imaginemos 2 pontos P=(x1,y1) e Q=(x2,y2), obtemos a distância entre P e Q, traçando as projeções destes pontos
      sobre os eixos coordenados, obtendo um triângulo retângulo e usando o Teorema de Pitágoras.
      Pitagoras1.png (682 Bytes) Exibido 36730 vezes Assim, considerando 2 pontos de coordenadas (-22.902778, -43.206667) e (-23.548333, -46.636111)
      Calculando-se a distância entre eles, tem-se:
      Pitagoras2.png (2.14 KiB) Exibido 36729 vezes Pitagoras3.png (2.75 KiB) Exibido 36729 vezes A distância em graus resulta 3,4896744
      O raio da terra tem aproximadamente 6371km.
      Uma volta na terra tem 2 * pi * raio = 40030000m.
      Podemos, através de uma regra de 3 simples, obter a conversão do ângulo encontrado para uma distância em metros.
       

    • Por gugacamacho
      Senhores, bom dia...
       
      Estou com um grande problema com este script para calcular distancia entre coordenadas, o erro se dá quando eu uso a informacao do formulario, ele nao le a coordenada correta, mas quando insiro de maneira estatica, funciona normal... preciso de muita a ajuda de todos.
      <%@ Language=VBScript %> <!--#include file="cnx_map.asp"--> <% 'set rs = Conn.Execute("SELECT * FROM ctos ORDER by codigo") Function DegRad(x) 'Degrees to Radians DegRad = x * ((4 * Atn(1)) / 180) End Function Function GetGeodesicDistance(Lat1,Lon1,Lat2,Lon2,rScale) Dim er,pr,fl,F,G,L,S,C,W,R,D,H1,H2 er = 6378.1370000 pr = 6356.7523142 fl = (er - pr) / er F = (DegRad(Lat1) + DegRad(Lat2)) / 2 G = (DegRad(Lat1) - DegRad(Lat2)) / 2 L = (DegRad(Lon1) - DegRad(Lon2)) / 2 S = Sin(G)^2 * Cos(L)^2 + Cos(F)^2 * Sin(L)^2 C = Cos(G)^2 * Cos(L)^2 + Sin(F)^2 * Sin(L)^2 W = Atn(Sqr(S / C)) R = Sqr(S * C) / W D = 2 * W * er H1 = (3 * R - 1) / (2 * C) H2 = (3 * R + 1) / (2 * S) Select Case rScale Case "statute" dScale = 1.60934 Case "nautical" dScale = 1.85200 Case "metric" dScale = 1.00000 Case Else dScale = 1.60934 End Select GetGeodesicDistance = (D * (1 + fl * H1 * Sin(F)^2 * Cos(G)^2 - fl * H2 * Cos(F)^2 * Sin(G)^2)) / dScale End Function %> <div align="center"> <form name="frm" method="post" action="mapa_v.asp"> <label>Posição do cliente <input name="latitude" type="text" id="latitude" value=-28.401684> <input name="longitude" type="text" id="longitude" value=-49.389643> </label> <label> <input type="submit" name="Submit" value="Enviar"> </label> </form> </div> <% dim Lati0, Long0, Lati1, Long1 lati0 = request.form("latitude") long0 = request.form("longitude") response.write GetGeodesicDistance(-28.401684,-49.389643,-28.394418,-49.395537, "metric") & " RESULTADO CORRETO<br><br><br>" Lati1 = "-28.394418" Long1 = "-49.395537" response.Write(lati0) & "," response.Write(Long0) & "," response.Write(lati1) & "," response.Write(Long1) & "<br><br><br>" 'Display calc response.write GetGeodesicDistance(Lati0,Long0,Lati1,Long1, "metric") & " RESULTADO DO CALCULO<br>" %> [Click e arraste para mover]  
×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.