Nesta semana, eu precisei implementar algumas funções em um projeto de um WebGIS, e dentre elas, uma era a geração de KML a partir das layers de um dado catálogo.

Para gerar o KML eu precisava fazer uma requisição WMS ao servidor de mapas e passar como formato o KML. Eu ingenuamente pensei que era assim tanto pro GeoServer quanto pro MapServer, mas eu estava enganado.

Então fui descobrir que o MapServer não tem suporte nativo ao KML, mas pesquisando descobri que Alessandro Pasotti criou um módulo que adicionado ao MapServer faz ele então dar suporte a este formato de saída.

Porém isso não resolveu meu problema, pois mesmo que esse módulo fosse adicionado ao MapServer no meu servidor de produção, apenas os temas que estivessem no meu MapServer estariam com esse suporte, porém eu não conseguiria garantir que as chamadas a WMS externos também tivessem esse suporte.

Então a solução que chegamos foi a seguinte:

[source language=”:XML”]
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE kml SYSTEM "users.dtd">
<kml xmlns="http://earth.google.com/kml/2.1">
<Document>
<name>KML</name>
<description/>
<GroundOverlay>
<name>Background</name>
<description/>
<color>7dffffff</color>
<icon>
<href>http://seamap.env.duke.edu:80/ogc/?Format=image/png&amp;request=GetMap&amp;layers=Background&amp;width=935&amp;height=677&amp;version=1.1.1&amp;styles=</href>
<viewRefreshMode>onStop</viewRefreshMode>
<viewBoundScale>1</viewBoundScale>
</icon>
<LatLonBox>
<north>-26.117497919999998</north>
<south>-48.41737</south>
<east>-23.494365797988166</east>
<west>-54.30513580201183</west>
</LatLonBox>
</GroundOverlay>
</Document>
</kml>
[/source]

Usamos o GroundOverlay, pois com ele não é preciso usar o formato KML e sim o formato PNG, e assim resolvemos o problema do MapServer não suportar o format de saída KML.

Dúvidas? Sugestões? Por favor deixe um comentário.