Visitante Postado Março 8, 2018 Denunciar Share Postado Março 8, 2018 Boa noite tem como fazer operações com medidas de ângulos expressos em angulos, minutos e segundos? Obrigado Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Jhonas Postado Março 9, 2018 Denunciar Share Postado Março 9, 2018 exemplos: https://www.google.com.br/search?source=hp&ei=DNGhWtyaMoO3wAS07q9Q&q=graus+minutos+e+segundos+no+excel&o que=graus+min&gs_l=psy-ab.1.1.0l7.6117.8408.0.11269.9.9.0.0.0.0.258.1321.0j5j2.7.0....0...1.1.64.psy-ab..2.7.1316...0i131k1.0.GszlUF3-DJU http://www.cleibsonalmeida.blog.br/site/python-transformacao-de-coordenadas/ abraço Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Visitante Postado Março 9, 2018 Denunciar Share Postado Março 9, 2018 Jhonas valeu mesmo Só mais uma pergunta é possível implementar o código abaixo no delphi usando TEdit com mácara para graus minutos e segundos para a pessoa entrar manualmente com a latitude e longitude e o resultado ser mostrado em 2 label ? Vai ser para um programa de astrologia Obrigado --------------------------- Esse foi o link que você me passou http://www.cleibsonalmeida.blog.br/site/python-transformacao-de-coordenadas/ Segue um pequeno trecho de código python que exemplifica como fazer esse tipo de cálculo (usando a biblioteca re -> regex). latitude = '23º34"45"S' longitude = '105º34'12"E' import re if len(latitude) == 10: lat_polaridade = -1 if latitude[-1:] == 'S' else 1 lat_temp = re.findall('\d{2,3}', latitude) grau_lat = int(lat_temp[0]) min_lat = int(lat_temp[1])/60 seg_lat = int(lat_temp[2])/3600 lat_final = round(grau_lat + min_lat + seg_lat, 10) * lat_polaridade latitude = str(lat_final) if len(longitude) == 10 or len(longitude) == 11: lon_polaridade = -1 if longitude[-1:] == 'W' else 1 lon_temp = re.findall('\d{2,3}', longitude) grau_lon = int(lon_temp[0]) min_lon = int(lon_temp[1])/60 seg_lon = int(lon_temp[2])/3600 lon_final = round(grau_lon + min_lon + seg_lon, 10) * lon_polaridade longitude = str(lon_final) ---------------------------------------------------------- Os resultados serão: latitude = '-23.5791666667' longitude = '105.57' Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Jhonas Postado Março 9, 2018 Denunciar Share Postado Março 9, 2018 é possível implementar o código abaixo no delphi usando TEdit com mácara para graus minutos e segundos para a pessoa entrar manualmente com a latitude e longitude e o resultado ser mostrado em 2 label ? sim... se voce conhece o delphi, basta converter os comandos do python para delphi http://www.atug.com/andypatterns/pythonDelphiTalk.htm ou pode ver exemplos em delphi https://www.google.com.br/search?ei=EfqiWu2fD8SnwATiw5KICQ&q=latitude+e+longitude+no+delphi&o que=latitude+e+longitude+delphi&gs_l=psy-ab.1.0.0i22i30k1.1503.4055.0.5931.7.7.0.0.0.0.131.815.0j7.7.0....0...1.1.64.psy-ab..0.7.810...0j0i67k1.0.U6IgUyrRsTE usando MaskEdit com mácara para graus minutos e segundos na propriedade EditMask voce pode colocar essa mascara !90º 00' 00">LL;1;_ abraço Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Visitante Postado Março 10, 2018 Denunciar Share Postado Março 10, 2018 (editado) Jhonas como vai Obrigado pelos links que você tem me passado, ainda sou principiante em progamação aqui no lazarus e agradeço pela sua ajuda. Você conheçe algum código para lázarus ou delphi que eu possa usar aqui que faça a soma de angulos expressos em angulos, graus e minutos Usando dois MaskEdit e dando o resultado num label depois de clicado num Button? 179° 59' 60" MaskEdit1 + 70° 5' 15" MaskEdit2 ---------------- 109° 54' 45" Label Abraço Aqui no lazarus funcionou está máscara para 3 digitos !990º 00' 00">;1;_ está correto? Editado Março 10, 2018 por Visitante Esqueçi de colocar o resultado da soma Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Jhonas Postado Março 10, 2018 Denunciar Share Postado Março 10, 2018 se voce esta somando esta errado... veja a explicação: Somando: Subtraindo: Dividindo: abraço Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Visitante Postado Março 10, 2018 Denunciar Share Postado Março 10, 2018 Obrigado Jhonas me enganei e peguei a subtração em vez da adição aqui no livro para exemplo da dúvida Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Visitante Postado Maio 6, 2018 Denunciar Share Postado Maio 6, 2018 Tudo bem Jhonas bom dia Consegui esse código aqui, mas não está funcionando no Lázarus , então já vou deixar o código completo aqui caso alguém precise ele trava nesta linha de instrução na hora da depuração (em cima do símbolo do grau '°' ) 'º': Result := StrToInt(Trim(Copy(P_Texto, 1, Pos(P_Caracter, P_Texto)-1))); E esta é a mensagem de erro mostrado no depurador do Lázarus unit1.pas(42,14) Error: Constant and CASE types do not match Agradecido se puder me auxiliar procedure TForm1.Button1Click(Sender: TObject); //Segue solução em Delphi, destaco que Edit1 e Edit2 esperam uma string válida, com o formato: ggº mm' ss" function GetValorNumerico(const P_Texto: string; const P_Caracter: Char): Integer; begin case P_Caracter of 'º': Result := StrToInt(Trim(Copy(P_Texto, 1, Pos(P_Caracter, P_Texto)-1))); '''': Result := StrToInt(Trim(Copy(P_Texto, Pos('º', P_Texto)+2, 2))); '"': Result := StrToInt(Trim(Copy(P_Texto, Pos('''', P_Texto)+2, 2))); end; end; var W_Graus1: integer; W_Minutos1: integer; W_Segundos1: integer; W_Graus2: integer; W_Minutos2: integer; W_Segundos2: integer; W_Graus3: integer; W_Minutos3: integer; W_Segundos3: integer; begin W_Graus1 := GetValorNumerico(Edit1.Text, 'º'); W_Minutos1 := GetValorNumerico(Edit1.Text, ''''); W_Segundos1 := GetValorNumerico(Edit1.Text, '"'); W_Graus2 := GetValorNumerico(Edit2.Text, 'º'); W_Minutos2 := GetValorNumerico(Edit2.Text, ''''); W_Segundos2 := GetValorNumerico(Edit2.Text, '"'); if W_Segundos1 < W_Segundos2 then begin Dec(W_Minutos1); Inc(W_Segundos1, 60); end; W_Segundos3 := W_Segundos1 - W_Segundos2; if W_Minutos1 < W_Minutos2 then begin Dec(W_Graus1); Inc(W_Minutos1, 60); end; W_Minutos3 := W_Minutos1 - W_Minutos2; W_Graus3 := W_Graus1 - W_Graus2; Label1.Caption := Format('%dº %d'' %d"', [W_Graus3, W_Minutos3, W_Segundos3]); end; Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Jhonas Postado Maio 6, 2018 Denunciar Share Postado Maio 6, 2018 If P_Caracter = 'º' then Result := StrToInt(Trim(Copy(P_Texto, 1, Pos(P_Caracter, P_Texto)-1))); If P_Caracter = '''' then Result := StrToInt(Trim(Copy(P_Texto, Pos('º', P_Texto)+2, 2))); if P_Caracter = '"' then Result := StrToInt(Trim(Copy(P_Texto, Pos('''', P_Texto)+2, 2))); end; ou veja nesses links https://www.google.com.br/search?ei=O_juWp_EKMGowATgpaKYAQ&q=case+com+char+delphi&o que=case+com+char+delphi&gs_l=psy-ab.1.0.0i30k1.15554.16067.0.17742.4.4.0.0.0.0.128.475.0j4.4.0....0...1c.1.64.psy-ab..0.4.471...0i7i30k1.0.E9EIojoi9Hk abraço Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Visitante Postado Maio 6, 2018 Denunciar Share Postado Maio 6, 2018 Jhonas muito obrigado vou estou os links o google, sou ainda principiante estava tentando colocar as linhas que você passou mas não estou acertando aqui no caso estas instruções vão para qual parte do código principal If P_Caracter = 'º' then Result := StrToInt(Trim(Copy(P_Texto, 1, Pos(P_Caracter, P_Texto)-1))); If P_Caracter = '''' then Result := StrToInt(Trim(Copy(P_Texto, Pos('º', P_Texto)+2, 2))); if P_Caracter = '"' then Result := StrToInt(Trim(Copy(P_Texto, Pos('''', P_Texto)+2, 2))); end; correção: Jhonas muito obrigado vou estudar os links do google que você me passou correção: Jhonas muito obrigado vou estudar os links do google que você me passou Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
Visitante
Boa noite tem como fazer operações com medidas de ângulos expressos em angulos, minutos e segundos?
Obrigado
Link para o comentário
Compartilhar em outros sites
9 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.