Recebi um trabalho recentemente um tanto complexo que foi desenvolver uma função dentro do ORACLE (agora estou apredendo PL/SQL) para conversão de coordenadas.
Precisei estudar algumas equações geodésicas para fazer este trabalho. (Me lembro do engenheiro trazendo um livro para estudar, escrito por Silveira, Luiz Carlos da . Cálculos Geodésicos no sistema UTM aplicados a topografia, Editora Luana. Morro da Fumaça – SC , 1990)
E após um árduo trabalho resolvi em meu tempo livre desenvolver uma API em java para facilitar os futuros trabalhos. Foi ai que nasceu o GEOConvertor.
GEOConvertor é uma API java para auxiliar a conversão de coordenadas decimais para Universal Transverse Mercator (UTM).
Durante o trabalho desenvolvi três tipos de conversões para API utilizando os DATUMs SAD69 e WGS-84.
- Decimal Coordinate para UTM.
- DMS (Degrees, Minutes, Seconds) para Decimal Degree.
- Decimal Degree para DMS (Degrees, Minutes, Seconds).
Além de outros recursos como calcular o achatamento da terra entre outros cálculos.
Download da API
API está disponível com licença GPLv.3 e toda sua documentação, inclusive javadocs, pode ser obtida: http://code.google.com/p/geoconvertor
Está atualmente na versão 0.1 beta: http://geoconvertor.googlecode.com/files/geoconvertor-v0.1.jar
Download de um exemplo: http://geoconvertor.googlecode.com/files/GEOConvertorExample.zip
O código já está disponível basta acessar e ajudar a melhorar.
*Por se tratar de coordenadas verifique sempre se está próxima do desejado.
Trabalhando com API
Adicione a API no projeto que estiver trabalhando. Em seguinda importe:
import org.geoconvertor.datum.Datum;
import org.geoconvertor.utm.GEOConvertor;
Construa o objeto para utilizar os métodos da API.
GEOConvertor gcv = new GEOConvertor();
Escolha um tipo de conversão:
- Coordenada Decimal para UTM: Retornará a coordenada em UTM de acordo com o Datum escolhido.
.geoToUTM(decimal_latitude , decimal_longitude , datum , central_meridian);
- Decimal Degree para DMS (Degrees, Minutes, Seconds): Retornará em graus
.decToDMS(decimal_coordinate);
- DMS (Degrees, Minutes, Seconds) para Decimal Degree: Retornará em graus decimais
.dmsToDec(dms_coordinate);
Programando
import org.geoconvertor.datum.Datum; import org.geoconvertor.utm.GEOConvertor; public class Main { public static void main(String[] args) { GEOConvertor gcv = new GEOConvertor(); System.out.println("----------SAD6984-------------------------"); System.out.println(gcv.geoToUTM(21.88684199, 47.30414058, Datum.SAD69, 45)); System.out.println("----------WGS84-------------------------"); System.out.println(gcv.geoToUTM(21.88684199, 47.30414058, Datum.WGS84, 45)); //Decimal Coordinate to DMS System.out.println("Degrees/Minutes/Second: " + coord.decToDMS(21.88684199)); //DMS to Decimal Coordinate. (Not use special char). System.out.println("Decimal Convert: " + gcv.dmsToDEC(215392.631)); } } <pre>
Se deseja conhecer um pouco mais sobre o assunto acesse: http://www.professores.uff.br/cristiane/Estudodirigido/Cartografia.htm
Muito bom Razec!
Parabens pela colaboração para a comunidade. Esse tipo de iniciativa só nos engrandece.
[]s
Muito obrigado mesmo!
Olhando seu código, consegui alterar uma classe que realizava a conversão de UTM para Geo utilizando WGS-84 para SAD-69 que o formato que os meus dados estão.
Que show, fico muito feliz por colaborar, e contribuir com a comunidade open-source. Inclusive fique a vontade para alterar o código e adicionar novas funcionalidades, assim podemos até melhorar a API.
Abração Rafael e Juliano, obrigado pelo feed back.
Excelente Razec!
simples, didático e direto.
Joao.
Bom dia,
Muito boa a API, você tem algo que converta SAD-69 PRA WGS-84?
Ola Leandro, Obrigado por comentar!!
Eu confesso que precisaria verificar, Mas uma dica seria vc olhar a api Proj4J. Ela atualmente possui varios recursos neste sentido, acredito que a classe CoordinateTransformation .java ajudaria vc.
#1 – Proj4J – https://trac.osgeo.org/proj4j/
#2 – CoordinateTransformation -https://github.com/Proj4J/proj4j/blob/master/branches/projcoordinate_refactoring/java/org/osgeo/proj4j/CoordinateTransformation.java
Abs,
Mario
Não sei se vocês chegaram a testar o algorítimo, mas não funciona.
Ola Sidney, Obrigado pelo comentario.
Faz alguns anos que ele nao tem manutençao. Cheguei a usa-lo várias vezes, assim como outros desenvolvedores. Acredito que precisaria fazer alguns ajustes afinal faz uns 10 anos que publiquei =D.
Mas recomendo vc utilizar o proj4j – https://projects.eclipse.org/projects/locationtech.proj4j, https://github.com/locationtech/proj4j
abs,
Mario –