Como usar KML no i3Geo e a estratégia de plugins
Autor: Moretti Edmar | Publicado: 2015-07-20T18:47:00-07:00



No i3Geo, arquivos KML podem ser utilizados de duas formas: como fonte de dados tal qual arquivos shapefile ou como dados processados diretamente pelas APIs javascript que controlam a composição do mapa interativo.

Em ambos os casos são utilizados arquivos mapfile para configurar a camada que será incluída no mapa, porém de formas diferentes.

No primeiro caso, como uma fonte de dados comum, o mapfile vale-se do OGR como o conector que faz a leitura dos dados, o restante da configuração segue a estrutura normal do Mapserver, como é o caso da definição da simbologia (veja exemplo de mapfile abaixo). No editor de "mapfiles" do sistema de administração do i3Geo, o formulário de definição do tipo de conexão apresenta a opção MS_OGR que deve ser escolhida quando se usa KML.

As possibilidades de uso do KML nesse esquema depende das características do OGR, veja:

http://www.gdal.org/drv_kml.html
http://mapserver.org/input/vector/kml.html


No segundo caso, utiliza-se uma implementação própria do i3Geo que funciona como um plugin que amplia o leque de fontes de dados, indo além das opções oferecidas pelo Mapserver. Ressalte-se que o Mapserver sempre faz o processamento dos dados no servidor web, renderizando imagens ou obtendo dados que são transferidas ao navegador do usuário.

Os plugins, por outro lado, objetivam aproveitar as funcionalidades das APIs javascript utilizadas pelo i3Geo, principalmente o OpenLayers e o GoogleMaps. Os arquivos mapfile são utilizados também, mas apenas para guardar os parâmetros que são necessários.

No exemplo abaixo, temos um mapfile configurado pelo plugin KML. Note que há um item nos METADATA chamado PLUGINI3GEO. Esse metadata tem como valor uma string no padrão JSON que guarda os parâmetros que o i3Geo utilizará quando a camada for adicionada ao mapa. O plugin então passará o controle da renderização da camada para o OpenLayers ou para o GoogleMaps, conforme o mapa que o usuário estiver usando.

Utilizado dessa forma o mapfile pode ser adicionado ao catálogo de camadas e também no inicializador parametrizado. Os mapas podem ser salvos também, pois o LAYER que contém o plugin sempre será interpretado pelo i3Geo quando o mapa for iniciado.


Mapfile com arquivo KML como um plugin do i3Geo


MAP
&nbsp; FONTSET "../symbols/fontes.txt"
&nbsp; SYMBOLSET "../symbols/simbolosv6.sym"
&nbsp; LAYER
&nbsp; &nbsp; CONNECTION ""
&nbsp; &nbsp; DATA ""
&nbsp; &nbsp; METADATA
&nbsp; &nbsp; &nbsp; "CLASSE" "SIM"
&nbsp; &nbsp; &nbsp; "PLUGINI3GEO" '{"plugin":"layerkml","parametros":{"url":"http://www.openlayers.org/en/v3.7.0/examples/data/kml/2012_Earthquakes_Mag5.kml"}}'
&nbsp; &nbsp; &nbsp; "TEMA" "Terremotos kml"
&nbsp; &nbsp; END # METADATA
&nbsp; &nbsp; NAME "_terremotokml"
&nbsp; &nbsp; STATUS DEFAULT
&nbsp; &nbsp; TEMPLATE "none.htm"
&nbsp; &nbsp; CLASS
&nbsp; &nbsp; &nbsp; NAME ""
&nbsp; &nbsp; &nbsp; STYLE
&nbsp; &nbsp; &nbsp; &nbsp; COLOR 0 0 0
&nbsp; &nbsp; &nbsp; &nbsp; SIZE 12
&nbsp; &nbsp; &nbsp; END # STYLE
&nbsp; &nbsp; END # CLASS
&nbsp; END # LAYER
END # MAP



Mapfile com arquivo KML como fonte de dados

MAP
&nbsp; FONTSET "../symbols/fontes.txt"
&nbsp; SYMBOLSET "../symbols/simbolos.sym"
&nbsp; LAYER
&nbsp; &nbsp; CONNECTION "/var/www/i3geo/aplicmap/dados/teste.kml"
&nbsp; &nbsp; CONNECTIONTYPE OGR
&nbsp; &nbsp; DATA "Trovit"
&nbsp; &nbsp; METADATA
&nbsp; &nbsp; &nbsp; "CLASSE" "SIM"
&nbsp; &nbsp; &nbsp; "TEMA" "teste"
&nbsp; &nbsp; END # METADATA
&nbsp; &nbsp; NAME "_lkml"
&nbsp; &nbsp; STATUS DEFAULT
&nbsp; &nbsp; TEMPLATE "none.htm"
&nbsp; &nbsp; TYPE POINT
&nbsp; &nbsp; CLASS
&nbsp; &nbsp; &nbsp; NAME ""
&nbsp; &nbsp; &nbsp; STYLE
&nbsp; &nbsp; &nbsp; &nbsp; COLOR 200 50 0
&nbsp; &nbsp; &nbsp; &nbsp; SIZE 6
&nbsp; &nbsp; &nbsp; &nbsp; SYMBOL "ponto"
&nbsp; &nbsp; &nbsp; END # STYLE
&nbsp; &nbsp; END # CLASS
&nbsp; END # LAYER
END # MAP


O plugin KML, assim como os outros já disponíveis, são configurados no editor de mapfiles. A figura abaixo mostra essa situação. Observe que na árvore de opções existe um nó denominado "plugin". Quando um dos itens é acionado abre-se um formulário para o preenchimento dos parâmetros.







O plugin também é utilizado na ferramenta de conexão com dados que fica disponível para qualquer usuário, mesmo os que não estão logados, diretamente na interface dos mapas.






Vantagens e desvantagens

O uso de KML como fonte de dados via OGR permite que as funcionalidades do i3Geo que acessam a tabela de atributos funcionem normalmente. É o caso do editor de legenda, visualizador de dados, gerador de gráficos etc. A definição da simbologia fica menos dependente da fonte de dados, pois pode ser definida nas classes do layer presente no mapfile.



O uso via plugin tem a vantagem de ser mais simples de configurar ao aproveitar as definições de estilos já pré-definidas no KML. Outra vantagem é a menor dependência do processamento dos dados no servidor, o que pode ser vantajoso quando se tem uma internet de melhor qualidade.

Concluindo, o esquema de plugins dá ao i3Geo uma boa flexibilidade para que o software acompanhe as inovações que ocorrem com frequência no ambiente Web. As bibliotecas javascript que oferecem representações cartográficas inovadoras podem assim ser rapidamente incorporadas, a exemplo dos demais plugins de agrupamento de pontos (heatmap e markercluster).