Projeto KML – Estruturando arquivos KML para serem

Propaganda
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
Download