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
Mitglied seit
06.05.2006
Beiträge
1.005
Alter
28
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

Mitglied seit
14.02.2004
Beiträge
831
Alter
38
Standort
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
Mitglied seit
06.05.2006
Beiträge
1.005
Alter
28
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

Mitglied seit
14.02.2004
Beiträge
831
Alter
38
Standort
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
Mitglied seit
06.05.2006
Beiträge
1.005
Alter
28
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

  • 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...
  • Microsoft Surface mit Dual-Display und Android Support? Projekt Centaurus statt Projekt Andromeda?

    Microsoft Surface mit Dual-Display und Android Support? Projekt Centaurus statt Projekt Andromeda?: Viele hofften auf ein mögliches Surface Gerät unter dem Codenamen Projekt Andromeda als Ersatz für die Windows 10 Smartphones, aber es wurde recht...
  • Windows 10 PowerToys sollen als Open Source Projekt neue Funktionen für Windows 10 bringen

    Windows 10 PowerToys sollen als Open Source Projekt neue Funktionen für Windows 10 bringen: Neuauflagen von beliebten Dingen sind keine Seltenheit und darum ist es vielleicht keine schlechte Idee von Microsoft die schon seit beliebten...
  • Ähnliche Themen

    Oben