A "howto" to convert geoRSS to KML using an XSL transformation with PHP
Google Earth, contrairement à Google Maps ne sait pas "consommer" du
geoRSS (au 01/05/2007 ; ça viendra sans doute). Il existe des
outils en ligne de conversion, mais si on veut
tout maitriser il faut passer par une tranformation XSL : mode d'emploi
pour ceux qui en auraient besoin pour ne pas avoir à chercher
comme je l'ai fait...
(pratique pour Flickr ou Wordpress avec le plugin GeoPress qui nous servent du GeoRSS)
Il faut
<georss:where>
<gml:Point>
<gml:pos>45.83650 5.72690</gml:pos>
</gml:Point>
</georss:where>
<?php
header('Content-type: application/vnd.google-earth.kml+xml');
$xslt = new xsltProcessor;
$xslt->importStyleSheet(DomDocument::load('georss2kml.xsl'));
echo $xslt->transformToXML(DomDocument::loadXML(file_get_contents('http://server/georss.rss')));
?>
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet
version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#"
xmlns:georss="http://www.georss.org/georss"
xmlns:gml="http://www.opengis.net/gml">
<xsl:output indent="yes" method="xml"/>
<xsl:template match="/rss/channel">
<kml xmlns="http://earth.google.com/kml/2.0">
<Document>
<Style id="myicon">
<IconStyle>
<scale>0.8</scale>
<Icon>
<href>http://server/icon.png</href>
</Icon>
</IconStyle>
</Style>
<Folder>
<name>Billets</name>
<xsl:for-each select="item">
<xsl:if test="georss:where/text()">
<Placemark>
<name><xsl:value-of select="title"/></name>
<description>
<xsl:value-of select="description"/>
<xsl:value-of select="link" />
</description>
<Point>
<xsl:choose>
<xsl:when test="georss:where/text()">
<coordinates><xsl:value-of select="substring-after(normalize-space(georss:where/gml:Point/gml:pos), ' ')"/>,<xsl:value-of select="substring-before(normalize-space(georss:where/gml:Point/gml:pos), ' ')"/>,0</coordinates>
</xsl:when>
<xsl:otherwise>
<coordinates>0,0,0</coordinates>
</xsl:otherwise>
</xsl:choose>
</Point>
<styleUrl>#myicon</styleUrl>
</Placemark>
</xsl:if>
</xsl:for-each>
</Folder>
</Document>
</kml>
</xsl:template>
</xsl:stylesheet>
Il ne reste plus qu'à faire un network link :
<?xml version="1.0" encoding="utf-8"?>
<kml xmlns="http://earth.google.com/kml/2.0">
<NetworkLink>
<name>Demo</name>
<open>1</open>
<visibility>1</visibility>
<description>An interesting conversion</description>
<Url>
<href>http://server/georss2kml.php</href>
<refreshMode>onInterval</refreshMode>
<refreshInterval>21600</refreshInterval>
</Url>
</NetworkLink>
</kml>
Et il suffit de pointer vers ce georss.kml.
Éventuellement, ne pas oublier de configurer Apache pour bien servir le KML :
AddType application/vnd.google-earth.kml+xml .kml
dans httpd.conf