Nutzung von GeoTools mit mapnik (Gekoordinaten vs. OSM IDs)

Hallo zusammen,

ich möchte mit OSM ein Routing von Node A nach Node B durchführen.
Nach meinen Recherchen ist dafür der DijkstraShortestPathFinder gut geeignet.

Nachdem ich die Route gefunden habe, möchte mit dem Mapnik die entsprechenden Images/Tiles für unsere Webseit erzeugen.

Mein Problem dabei ist: DijkstraShortestPathFinder arbeitet nur mit Nodes auf der Basis von Koordinaten. Mapnik kann aber nur mit OSM IDs (in diesem Fall way IDs) arbeiten.

Kann der DijkstraShortestPathFinder mit OSM IDs routen???

Im Geotools Demoprojekt ‘Quickstart I’ kann man mit dem Button ‘Identify Features’ kann man die OSM ID der aktuellen Geo Position anzeigen.

Es ist also offensichtlich ein Mapping OSM-ID <—> coordinates möglich. Weiß jemand wie man das macht?

Noch eine Frage:
Habe versucht über geotools-gt2-users@lists.sourceforge.net einen analogen englischen Post abzusetzen.
Leider erscheint er nicht in der Liste.
Laut der Beschreibung der Liste unter http://docs.geotools.org/latest/userguide/welcome/userlistguide.html ist die Liste nicht moderiert.
Was kann da schief gehen? Eigentlich muß man doch nur den Post an die E-Mail Adresse schicken und schon sollte der Post erscheinen.

Vielen Dank für Eure Hilfe!

hallo,
ich würde es mal dort versuchen:

http://lists.openstreetmap.org/listinfo/routing

grüße von lutz

Hallo TrafficJam,

ich bin was GeoTools anbelangt auch erst Anfänger, aber vielleicht kann ich ja trotzdem helfen:

Wie verwendest du Mapnik? Letzten Endes benötigt Mapnik doch nur die Geometrie zum Rendern?

Je nachdem wie der Graph aufgebaut wird, enthalten die Node und Edge Objekte eine Referenz zum ursprünglichen Objekt. Welche Informationen das enthält, hängt von der verwendeten Datenquelle ab.

Ich lade z.B. die Tabelle “planet_osm_roads” aus dem osm2pgsql Schema:


...
SimpleFeatureSource featureSource = dataStore.getFeatureSource("planet_osm_roads");

und baue damit den Graph wie im Beispiel.

Die Node Objekte im Graph haben - wie du schon geschrieben hast - nur simple Point Geometrien als Referenz, ohne weitere Attribute. Die sind sehr wahrsch. einfach aus dem LineString entnommen (way Spalte), die Tabelle bzw. das Schema gibt aber auch gar nicht mehr her, da keine separaten Infos zu Way-Nodes.

Nach der Berechnung des Path kann ich aber schon über das mit Edge verknüpfte Objekt die OSM ID der Ways auslesen:


      List<Edge> edges = path.getEdges();
      for (Edge edge : edges)
      {
         SimpleFeature feature = (SimpleFeature)edge.getObject();
         Object osmId = feature.getAttribute("osm_id");
         System.out.println("osm_id = " +  osmId);
      }

Das Attribut “osm_id” entspricht der Spalte in der Tabelle. Die ID des SimpleFeature ist künstlich vergeben, weil osm_id nicht als Primärschlüssel definiert ist.

Zur Bestimmung der Start- und End-Nodes über die OSM ID habe ich jetzt aber keine Idee, außer halt indirekt über die Koordinaten zu suchen.

Hier hab ich noch einen Link zu Beispiel-Code gefunden, speziell WayPointTool.findClosest.

Evtl. muss man sich vorher erst registrieren (subscribe)?

Gruß,
Norbert