Projekt: XMLKOnverter

Diskutiere Projekt: XMLKOnverter im Programmierung Forum im Bereich Software Forum; Hi ich habe ein kleines Projekt vor. Ich möchte aus dem openstreetmap.org Projekt die Straßen mit ihrer POsition extrahieren. VOn OSM gibt es dazu...
N

nambrot

Threadstarter
Dabei seit
06.05.2006
Beiträge
1.005
Alter
29
Hi
ich habe ein kleines Projekt vor.
Ich möchte aus dem openstreetmap.org Projekt die Straßen mit ihrer POsition extrahieren.
VOn OSM gibt es dazu eine Datenbank die in einem XML artigen Format ist.
Sie besteht vorallem aus 2 Teilen:
Den Nodes. Eindeutigen Punkten in der WElt mit Breiten und Längen Angaben.
Und den Ways, den Obejkten die durch die Nodes als Umrisse beschrieben werden
Ca so:
NOdes:
Code:
<node id="172540" timestamp="2006-12-09T15:47:27Z" user="dotslash" lat="52.5647578" lon="13.336325"/>
  <node id="172541" timestamp="2007-04-30T22:17:32Z" user="Elwood" lat="52.565527" lon="13.3362226">
Ways:
Code:
<way id="4402491" timestamp="2007-03-31T00:36:18Z" user="B10xxx">
    <nd ref="26917801"/>
    <nd ref="26917802"/>
    <nd ref="26917803"/>
    <nd ref="26917794"/>
    <tag k="created_by" v="YahooApplet 1.0"/>
    <tag k="name" v="Harnackstrasse"/>
    <tag k="highway" v="residential"/>
  </way>
Also die Straßen sind Ways mit Highway getaggt.
Ich möchte also jeden Straße haben,also einen Punkt davon mit Breiten und Längenangabe.
Also in dieser Form:
Code:
<Placemark>

      <name>Obiger Name(Hartnackstraße)</name>

             <Point>

         <coordinates>lon,lat</coordinates>

       </Point>

  </Placemark>
damit man das einfacher handlen kann.
Kann mir jemand bei dem Projekt helfen?
Ist diese Umsetzung in Java möglich, weil in Java kann ich noch halbwegs programmieren.
 
H

h3r3tic

Dabei seit
14.02.2004
Beiträge
831
Alter
39
Ort
Berlin
Eine Konvertierung sollte recht einfach möglich sein.

Du liest deine vorhanden OSM XML Datei ein nimmst das ganze auseinander und schreibst dir dein XML. Ohne Programmierung solltest du das ganze mit einem XSLT lösen können.

In welchem Umfang soll denn der Konverter arbeiten? Für ein simples umformatieren reicht ja XSLT.
 
Zuletzt bearbeitet:
N

nambrot

Threadstarter
Dabei seit
06.05.2006
Beiträge
1.005
Alter
29
jap, das habe ich dann auch geschafft herauszufinden. Ich bin sogar relativ weit gekommen.
Ich brauche dazu zwar 2 Stylesheets aber egal.
Ich habe nur noch ein einziges Problem:
Die Punkte sehen dann so aus:
Code:
<dict>
    	<key>Name</key>
    	<string>Elsa-Brändström-Straße</string>
    	<key>LatitudeE6</key>
    	<integer>52559787</integer>
    	<key>LongitudeE6</key>
    	<integer>13418278</integer>
  	</dict>
Blöderweise gibt es mehrere <dict> die den gleichen Namen haben.
Wie kann man dieses Problem eliminieren?
Ich meine mit noch einem Stylesheet würde es auch gehen oder?
Ich weiß halt nicht inwieweit das geht.
Einfach immer rüberkopieren, und die Namen der schon kopierten merken, und diese dann jeweils immer mit den zu kopierenden points vergleichen.
ginge das?
 
H

h3r3tic

Dabei seit
14.02.2004
Beiträge
831
Alter
39
Ort
Berlin
Hm kannst du mir mal ne Seite sagen wo Beispiele der 2 XML Dateien sind, auch mit doppelten dict irgendwie kann ich mir das noch nicht so richtig vorstellen.
 
N

nambrot

Threadstarter
Dabei seit
06.05.2006
Beiträge
1.005
Alter
29
na klar mache ich das, wenn sich jemand mir helfen will
also:
Das ist daurspüngliche Ausgangsformat(vereinfacht):
Code:
<?xml version='1.0' encoding='UTF-8'?>
<osm version="0.5" generator="Osmosis 0.24">
<node id="20246121" timestamp="2007-11-11T12:06:47Z" user="jorilla" lat="52.5157783" lon="13.454077">
    <tag k="created_by" v="JOSM"/>
  </node>
<node id="29784947" timestamp="2007-11-11T08:41:06Z" user="jorilla" lat="52.5151373" lon="13.4600538">
    <tag k="created_by" v="JOSM"/>
  </node>
  <node id="12614667" timestamp="2007-11-11T08:41:12Z" user="jorilla" lat="52.5148171" lon="13.4632869">
    <tag k="created_by" v="YahooApplet 1.0"/>
  </node>
  <node id="27459728" timestamp="2007-11-11T08:41:08Z" user="jorilla" lat="52.5146598" lon="13.4647503">
    <tag k="created_by" v="YahooApplet 1.0"/>
  </node>
  <node id="20246250" timestamp="2007-11-11T08:41:07Z" user="jorilla" lat="52.5145352" lon="13.4660848">
    <tag k="created_by" v="JOSM"/>
  </node>
  <node id="20246248" timestamp="2007-09-16T19:23:47Z" user="jorilla" lat="52.5144113" lon="13.4674883">
    <tag k="created_by" v="JOSM"/>
  </node>
    <node id="29785844" timestamp="2007-09-15T20:28:06Z" user="jorilla" lat="52.5140927" lon="13.4706331">
    <tag k="created_by" v="JOSM"/>
  </node>
  <node id="52762606" timestamp="2007-09-16T19:21:51Z" user="jorilla" lat="52.5135684" lon="13.4755012">
    <tag k="created_by" v="JOSM"/>
  </node>
  <node id="12614651" timestamp="2007-09-15T20:28:10Z" user="jorilla" lat="52.5142142" lon="13.4695431"/>
<node id="12614666" timestamp="2007-09-16T19:32:36Z" user="jorilla" lat="52.5138381" lon="13.4733855"/>
<node id="12614683" timestamp="2007-09-15T20:28:06Z" user="jorilla" lat="52.5134283" lon="13.476903"/>
<node id="29794145" timestamp="2007-05-30T20:28:07Z" user="ravn" lat="52.5168866" lon="13.4789195">
    <tag k="created_by" v="JOSM"/>
  </node>
  <node id="29794146" timestamp="2007-05-30T20:28:07Z" user="ravn" lat="52.5177001" lon="13.4786327">
    <tag k="created_by" v="JOSM"/>
  </node> 
 <way id="4045243" timestamp="2008-02-05T01:56:49Z" user="woodpeck">
    <nd ref="20246121"/>
    <nd ref="29784947"/>
    <nd ref="12614667"/>
    <nd ref="27459728"/>
    <nd ref="20246250"/>
    <nd ref="20246248"/>
    <nd ref="12614651"/>
    <nd ref="29785844"/>
    <nd ref="12614666"/>
    <nd ref="52762606"/>
    <nd ref="12614683"/>
    <tag k="highway" v="primary"/>
    <tag k="created_by" v="fixbot"/>
    <tag k="name" v="Frankfurter Allee"/>
    <tag k="ref" v="B1, B5"/>
    <tag k="oneway" v="yes"/>
  </way>
  <way id="4687119" timestamp="2008-01-18T01:16:21Z" user="kbab">
    <nd ref="29794145"/>
    <nd ref="29794146"/>
    <tag k="created_by" v="Potlatch 0.6c"/>
    <tag k="name" v="Parkaue"/>
    <tag k="highway" v="residential"/>
  </way>
   <way id="4687119" timestamp="2008-01-18T01:16:21Z" user="kbab">
    <nd ref="29794145"/>
    <nd ref="29794146"/>
    <tag k="created_by" v="Potlatch 0.6c"/>
    <tag k="name" v="Parkaue"/>
    <tag k="high" v="residential"/>
  </way>
  </osm>
Damit bin ich aber schon fertig ich konnte es mittels 2 XSL in dieses Format überführen:
Code:
<?xml version="1.0" encoding="UTF-8">
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist>
  <dict>
    <key>Bookmarks</key>
    <array>
      <dict>
        <key>Name</key>
        <string>Lenbacherstrasse</string>
        <key>LatitudeE6</key>
        <integer>52505463</integer>
        <key>LongitudeE6</key>
        <integer>13466668</integer>
      </dict>
      <dict>
        <key>Name</key>
        <string>Waldstrasse</string>
        <key>LatitudeE6</key>
        <integer>52375521</integer>
        <key>LongitudeE6</key>
        <integer>13612158</integer>
      </dict>
      <dict>
        <key>Name</key>
        <string>Gregorovius-Weg</string>
        <key>LatitudeE6</key>
        <integer>52493602</integer>
        <key>LongitudeE6</key>
        <integer>13526166</integer>
      </dict>
	      <dict>
        <key>Name</key>
        <string>Waldstrasse</string>
        <key>LatitudeE6</key>
        <integer>52375521</integer>
        <key>LongitudeE6</key>
        <integer>13612158</integer>
      </dict  
     </array>
   </dict>
</plist>
Das Problem was ich jetzt habe, ist das in diesem Falle Waldweg doppelt vorkommt, aber ich will dass es nur einmal vorkommt.
Also will ich dazu ein 3. Stylesheet schreiben. Am Ende kann man ja dazu noch ne Batchdatei machen.
Wie kann man die doppelten knoten,dicts, wegkriegen.
In meinem Falle, kommen einige Straßen bis zu 20 mal vor, was nicht sehr redundanz ist.
 
Thema:

Projekt: XMLKOnverter

Projekt: XMLKOnverter - Ähnliche Themen

  • GELÖST Projekt Eltern

    GELÖST Projekt Eltern: Mein Eltern wollen mal etwas neues anschaffen. Der jetzige Rechner ist schon ziemlich betagt und es stört, das man vom Tablet nicht drucken kann...
  • Microsoft stellt Dual-Screen Tablet Surface Neo vor - Projekt Andromeda ohne Telefonfunktion?

    Microsoft stellt Dual-Screen Tablet Surface Neo vor - Projekt Andromeda ohne Telefonfunktion?: Von Projekt Andromeda haben sich doch nicht wenige ein Microsoft Surface Smartphone erhofft und auch wenn man das nun irgendwie bekommen hat ist...
  • Video-Editor Projekt kann nicht mehr geöffnet werden

    Video-Editor Projekt kann nicht mehr geöffnet werden: Hallo, mit dem Video-Editor haben wir 2 Video Projekte angelegt, die nun nicht mehr geöffnet werden können. Folgende Nachricht öffnet sich...
  • Projekt erneut öffnen

    Projekt erneut öffnen: Sehr geehrte Damen und Herren, ich hab mit meinem Windows 10 und der Foto App ein Videoprojekt gemacht. Nun wollte ich es weiter bearbeiten und...
  • Ähnliche Themen
  • GELÖST Projekt Eltern

    GELÖST Projekt Eltern: Mein Eltern wollen mal etwas neues anschaffen. Der jetzige Rechner ist schon ziemlich betagt und es stört, das man vom Tablet nicht drucken kann...
  • Microsoft stellt Dual-Screen Tablet Surface Neo vor - Projekt Andromeda ohne Telefonfunktion?

    Microsoft stellt Dual-Screen Tablet Surface Neo vor - Projekt Andromeda ohne Telefonfunktion?: Von Projekt Andromeda haben sich doch nicht wenige ein Microsoft Surface Smartphone erhofft und auch wenn man das nun irgendwie bekommen hat ist...
  • Video-Editor Projekt kann nicht mehr geöffnet werden

    Video-Editor Projekt kann nicht mehr geöffnet werden: Hallo, mit dem Video-Editor haben wir 2 Video Projekte angelegt, die nun nicht mehr geöffnet werden können. Folgende Nachricht öffnet sich...
  • Projekt erneut öffnen

    Projekt erneut öffnen: Sehr geehrte Damen und Herren, ich hab mit meinem Windows 10 und der Foto App ein Videoprojekt gemacht. Nun wollte ich es weiter bearbeiten und...
  • Oben