gpx2osm mit xslt waypoints

Hallo,

Ich habe in meinem Garmin für etliche Parkbänke je ein POI “picnic area” und für zig Mülleimer eine “shopping center” POI gesetzt, einfach weil die Icons nebeneinander lagen.

Nun kann JOSM die aber graphisch nicht unterschiedlich darstellen, und auch das Datum pro Wegpunkt macht es sehr unüberisichtlich s. http://files.muellers.ms/Screenshot.png

Daher dachte ich es wäre schön, wenn man das GPX File einfach in ein OSM File umwandelt und
aus den Wegpunkte mit picnic area wird eine node mit

Leider kann ich kein XSLT dachte aber das das problem gpx wpt → osm node bestimm schon gelöst wurde?

Also wie mach ich z.b aus diesem GPX

<?xml version="1.0"?>

](http://www.topografix.com/GPX/1/0/gpx.xsd\>)

058
68.378906000000001
14-NOV-10 10:44:55
picnic area

dieses OSM

<?xml version='1.0' encoding='UTF-8'?>

TIA

Hier gibt es etwas:
http://technik.stinnerweb.de/Gps/Josm/gpx2osm.pl_
hier musst Du wahrscheinlich etwas ändern:
PrintAttribute(‘amenity’, ‘Wegpunkt’);
PrintHashValue($waypt, ‘name’);
PrintHashValue($waypt, ‘desc’);
PrintHashValue($waypt, ‘ele’);
PrintHashValue($waypt, ‘time’);
PrintHashValue($waypt, ‘sym’);

Danke fx99. In perl krieg ich es auch auch hin, da würde ich es sogar mit XML::Simple machen, aber ich fänd eine Lösung mit XSLT schöner.

Die XSLT Datei müsste dann ungefähr so aussehen:


<?xml version="1.0" encoding="ISO-8859-1" ?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">

<xsl:output method="xml" encoding="iso-8859-1" />

<xsl:template match="gpx">  
<osm version='0.6' generator='JOSM'><xsl:text>
</xsl:text>
        <xsl:apply-templates select="wpt"/>
</osm>
</xsl:template>


<xsl:template match="wpt">
  <node id='-1' action='modify' visible='true'>
  <xsl:attribute name="lat"><xsl:value-of select="@lat" /></xsl:attribute>
  <xsl:attribute name="lon"><xsl:value-of select="@lon" /></xsl:attribute>
  <xsl:text>
</xsl:text>
  <xsl:if test="sym='picnic area'">
    <tag k='amenity' v='bench' /><xsl:text>
</xsl:text>
  </xsl:if>
  <xsl:if test="sym='shopping center'">
    <tag k='amenity' v='waste_basket' /><xsl:text>
</xsl:text>
  </xsl:if>
  </node><xsl:text>
</xsl:text>
</xsl:template>

</xsl:stylesheet>

Diese XSLT Datei funktioniert bei mir aber nur, wenn die Zeile


<gpx version="1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://www.topografix.com/GPX/1/0" xsi:schemaLocation="http://www.topografix.com/GPX/1/0 http://www.topografix.com/GPX/1/0/gpx.xsd">

in


<gpx>

geändert wird. Da weiss ich leider nicht, wieso das so ist. Funktioniert dann aber :slight_smile:

Danke, das hat mich schon sehr weitergebracht!