Projeto KML – Estruturando arquivos KML para serem utilizados no Google Earth™ 1 Lucas D. de Melo.2, Henrique N. Gouveia3, Jair Alves Barbosa4, Jeysel de Paula 5 Resumo O Projeto KML(Keyhole Markup Language) foi desenvolvido objetivando a criação de arquivos KML para uso no Google Earth™. O seu desenvolvimento surgiu pela necessidade de representar dados geográficos em mapas interativos, como os utilizados no Google Earth™ e em outros aplicativos como o NASA World Wind. Suas principais características visam extrair dados (coordenadas e características de elementos) de uma base de dados e utilizar uma API em Java para estruturar os arquivos de extensão ‘.kml’. Palavras-chave: KML Java API JAK Google Earth™. 1. Introdução A necessidade em poder visualizar eventos em mapas virtuais em 2D e 3D, como Google Earth™ e Google Maps™, faz-se necessária a aplicação de novos recursos tecnológicos para facilitar a sua representação através de ferramentas disponíveis nas linguagens de programação. Nessa exigência surgiram os arquivos KML (Keyhole™ Markup Language), uma linguagem de marcação baseada em XML (Extensible Markup Language), dando condições para que a estruturação dos dados seja correta e de fácil construção. Através deste arquivo é possível colocar dados do mundo real (estatísticos, geográficos, climáticos e etc) em mapas virtuais, facilitando sua visualização, tornando a informação portátil e interativa. Com isso, o constante crescimento da utilização de arquivos KML algumas API’s (Interface de Programação de Aplicativos) foram desenvolvidas. No desenvolvimento desse projeto a linguagem Java e a API JAK (Java API for KML) foram focadas. 1 Trabalho desenvolvido como projeto de pesquisa no curso Bacharelado em Ciência da Computação da Universidade Católica de Brasília; 2 Aluno do curso de Bacharelado em Ciência da Computação; 3 Aluno do curso de Bacharelado em Sistemas de Informação; 4 Professor Orientador do projeto de pesquisa; 5 Professor Co-Orientador do projeto de pesquisa; 2. Metodologia A JAK API da MicromataLabs® auxilia a estruturação do arquivo envolvendo as coordenadas e outros dados em marcações (tags) que serão reconhecidas pelo Google Earth™. Através da linguagem de programação Java, os dados são obtidos a partir de um arquivo texto contendo latitude, longitude, nome de cada ponto e outros dados referentes à configuração de visualização, tais como: cor de linhas, tipos de ícones para pontos geográficos, etc. Se for necessário diferentes conjuntos, pode – se utilizar flags(marcadores de inicio e fim) para cada conjunto. Na figura mostra-se um exemplo de arquivo texto que fornecerá dados para a JAK API: inicio SHLS 716#-15.827498#-47.928458 SEPS 715/915||-15.824405#-47.928442 HIGS 714#-15.824935#-47.924582 HIGS 713#-15.819952#-47.919115 HIGS 712#-15.818478#-47.917395 fim Figura 1: Exemplo de dados que podem ser passados á API. O conteúdo de um arquivo KML nada mais é que um arquivo contendo texto, porém renomeado para a extensão ‘.kml’. O único cuidado que deve ser tomado é com estruturação correta do mesmo. O arquivo é composto por: • Cabeçalho: são marcações que o Google Earth™ usará para identificar o arquivo KML e como interpretar as informações contidas nele. <kml xmlns="http://www.opengis.net/kml/2.2" xmlns:gx="http://www.google.com/kml/ext/2.2"> • Corpo: onde estão todas as informações que serão utilizadas pelo Google Earth™. As estruturações dos elementos do corpo seguem uma lógica de classes, por exemplo: cada ponto no mapa é definido pela marcação ‘<Placemark>’, e dentro desta existem outras marcações mais específicas como ‘<Point>’ e ‘<coordinates>’ que irão atribuir à Placemark um Ponto com as coordenadas especificadas. Na figura seguinte é exemplificada a estrutura de um Placemark: <Placemark> <Point> <coordinates>-90.86948943473118,48.25450093195546,0</coordinates> </Point> </Placemark> A JAK API também é estruturada na mesma lógica, para gerar um Placemark cria-se um objeto ‘kml’, depois são definidas as características do Placemark, como nome, se iniciará aberto ou não e suas coordenadas. As figuras seguintes mostram exemplos da utilização da JAK: final Kml kml = new Kml(); // Objeto criado kml.createAndSetPlacemark() // Criando e configurando o Placemark .withName("London, UK").withOpen(Boolean.TRUE) //Nome e aberto // Adicionando coordenadas .createAndSetPoint().addToCoordinates(-0.126236, 51.500152); kml.marshal(new File("HelloKml.kml")); // Criando e salvando arquivo Figura 2: Exemplo de uso da JAK API em Java. Criando PlaceMark document.createAndAddPlacemark(). withName(ponto.getNome()).withOpen(true). createAndSetPoint(). addToCoordinates(ponto.getCoordinate().getLongitude(), ponto.getCoordinate().getLatitude()); Criando LineString Placemark placemark = criarPlacemark(document,coord); LineString linestring = new LineString(); placemark.setGeometry(linestring); document.getFeature().add(placemark); linestring.setExtrude(false); linestring.setTessellate(true); linestring.setCoordinates(coord.getCoordinates()); Figura 3: Exemplo de código para estruturação de um Placemark e uma LineString. 3. Resultados O primeiro resultado obtido foi a produção de um aplicativo Java capaz de extrair dados de um arquivo de texto, gerenciar essas informações, estruturar e criar arquivos KML. Contribuindo, assim, para uma melhor interação e visualização dos dados fornecidos. No desenvolvimento do aplicativo foi possível identificar alternativas para a construção de um arquivo KML. O uso da linguagem C/C++ com a biblioteca Libkml, criada pela Google, indica ser uma forma de complementar e ampliar as expectativas para uso de arquivos KML. A implementação da biblioteca Libkml segue ainda em desenvolvimento. A figura mostra o resultado da estruturação de um arquivo KML contendo dados sobre redes elétricas: Figura 4: Resultado obtido após a estruturação de dados sobre redes elétricas. 4. Conclusão Pela síntese apresentada pode-se verificar que a automação na estruturação de arquivos KML é promissora. Sendo possível gerar informações dinâmicas que serão mostradas em mapas virtuais, auxiliando assim a visualização de eventos em grande escala, de modo temporal ou não, e inclusive pela web. 5. Referências -GOOGLE CODE™. KML Reference. Disponível em http://code.google.com/apis/kml/documentation/kmlreference.html. Acessado em: 15 de setembro de 2011. -MICROMATALABS. JAK Java API for KML. Disponível http://labs.micromata.de/display/jak/Home. Acessado em: 15 de setembro de 2011. em