Selbstgerenderte Kacheln unvollständig/fehlerhaft

Hallo, ich habe unter Windows Kartenkacheln mit Mapnik und dem Standard Stylesheet gerendert.
In den fertigen Kacheln sind mehrere Fehler enthalten, die ich mir einfach nicht erklären kann.

  • Straßen werden unvollständig gezeichnet
  • Details weichen von denen auf der Webseite vorhandenen Kacheln ab
  • Straßenbezeichnungen werden an den Kachelrändern einfach abgeschnitten

Ich habe den Importvorgang der osm-Daten in die pg-Datenbank mehrfach vorgenommen und auch das rendern selbst mehrfach versucht und komme immer zum gleichen Ergebnis.
Unten sind mal zwei Kartenausschnitte um zu verdeutlichen was ich meine (selbst gerendert + Auschnitt von http://www.openstreetmap.de/karte.html)).

Hat irgend jemand eine Idee, was ich falsch gemacht haben könnte?

Vielen Dank für eure Hilfe

Ich habe keine Ahnung von Mapnik; aber weil da ja einzelne ganz gewöhnliche Nodes zu fehlen scheinen, habe ich einige von denen angeschaut und festgestellt, dass die IDs > 2^31 haben. Das könnte bei älteren Programmen Probleme verursachen.

Woher hast Du denn die Daten? Für mich sieht es einfach so aus, als seien die Daten unvollständig.

Andere Vermutung: kommen alle Deine Programme (z.B. osm2pgsql) mit 64-Bit-Node-IDs zurecht?

Christian

das mit den 64 bit werde ich mal prüfen, osm2pgsql hab ich auf jeden fall die 64bit variante genommen.

Die Daten habe ich von geofabrik

Damit meinst du vermutlich, dass Farben und Schrift etwas anders sind? Daran wurde kürzlich was geändert, bei dir ist noch die alte Version des Stils zu sehen. Also diesbezüglich alles in Ordnung.

Die Frage hat nichts mit der Prozessorarchitektur zu tun. Könntest du alle beteiligten Anwendungen mit Versionsbezeichnung hier auflisten?

Postgres hatte ich die 32 Bit Variante installiert, das hab ich also nochmal neu installiert.

Verwende jetzt:
postgresql-9.3.5-1-windows-x64
postgis-bundle-pg93x64-setup-2.1.4-1
python-2.7.8 als 32 Bit. Irgendwo hab ich gelesen, dass man die nehmen soll. Mit der 64 Bit Version bekomme ich auch einen dll load error
mapnik-win-v2.2.0
osm2pgsql x64 (Version kann ich gerade nicht rausfinden)

Das Problem besteht immernoch

Schau doch mal, ob du die Daten in der Datenbank hast, z.B. den Weg 194603896, das ist der Kreisverkehr An der Sonnenseite:

select highway,way from osm_line where osm_id=194603896;
highway |                    way
--------+---------------------------------------------
primary | 010200002031BF0D0003000000.....

In der Tabelle mit den Nodes könntest Du z.B. die Ampel suchen

select highway,way from osm_point where osm_id=290602747;
 highway    |                        way                         
--------------+----------------------------------------------------
 traffic_sign | 010100002031BF .....

(vielleicht heissen bei dir die Tabelle nicht osm_line und osm_point, sondern planet_line und planet_point oder so ähnlich…)

Dann wüsste man schon mal, ob die Wege vor oder nach dem Einlesen in die Datenbank verloren gingen…

Die Ampel ist drin, der Kreisverkehr nicht

Der Weg hat nur “alte” Knoten mit ID<2^31… Am 32-Bit-Problem wird es also eher nicht liegen…
Dass es am Import-Stil liegt, kann ich mir nicht vorstellen, weil so ziemlich jede Strassenklasse importiert wird, nur halt nicht jedes Straßenstück…

Welche Daten von der Geofabrik hast du denn genommen?

Sowohl die germany-latest.osm.pbf als auch die sachsen-anhalt-latest.osm.pbf

Aber natürlich nicht gleichzeitig

In sachsen-anhalt-latest.osm.pbf ist der Kreisverkehr drin. Sorry, dann weiss ich auch nix mehr

Bitte alle Kommandos posten - vom download über den import und die sql-abfrage. da ist bestimmt eine winzige Kleinigkeit faul.

Noch besser die Logs vom Import.

Und bitte nicht “Ich hab das genau nach der und der Anleitung gemacht” - das bringt nix.

Gruss
walter

svn-archive/applications/rendering/mapnik at main · openstreetmap/svn-archive · GitHub in Verzeichnis “D:\mapnik” kopiert

osm2pgsql.zip ebenfalls in das Verzeichnis entpackt

Folgende Archive heruntergeladen und in das Verzeichnis “D:\mapnik\world_boundaries” entpackt

ne_10m_populated_places.zip
ne_10m_admin_0_countries.zip
ne_110m_admin_0_boundary_lines_land.zip
world_boundaries-spherical.tgz
shoreline_300.tar.bz
processed_p.tar.bz
land-polygons-split-3857.zip
simplified-land-polygons-complete-3857.zip

Postgres, Postgis und Python installiert

mapnik-win-v2.2.0.zip nach C: entpackt

Umgebungsvariablen angepasst

Name: PATH
Wert: C:\mapnik-win-v2.2.0\lib;C:\Python27;…

Name: PYTHONPATH
Wert: C:\mapnik-win-v2.2.0\python\2.7\site-packages\

In der Datei C:\Program Files\PostgreSQL\9.3\data\pg_hba.conf md5 durch trust ersetzt.

“C:\Program Files\PostgreSQL\9.3\bin\createuser” -U postgres benutzer
“C:\Program Files\PostgreSQL\9.3\bin\createdb” -U postgres -E UTF8 -O benutzer osmde
“C:\Program Files\PostgreSQL\9.3\bin\createlang” -U postgres plpgsql osmde
“C:\Program Files\PostgreSQL\9.3\bin\psql” -U postgres -d osmde -f “C:\Program Files\PostgreSQL\9.3\share\contrib\postgis-2.1\postgis.sql”
“C:\Program Files\PostgreSQL\9.3\bin\psql” -U postgres -d osmde -f “C:\Program Files\PostgreSQL\9.3\share\contrib\postgis-2.1\spatial_ref_sys.sql”
“C:\Program Files\PostgreSQL\9.3\bin\psql” -U postgres -d osmde -c “GRANT SELECT ON spatial_ref_sys TO PUBLIC;”
“C:\Program Files\PostgreSQL\9.3\bin\psql” -U postgres -d osmde -c “GRANT ALL ON geometry_columns TO benutzer;”
“C:\Program Files\PostgreSQL\9.3\bin\psql” -U postgres -d osmde -c “create extension hstore;”

“D:\mapnik\osm2pgsql\x64\osm2pgsql” -U postgres -d osmde -C 6500 --hstore --hstore-match-only “D:\sachsen-anhalt-latest.osm.pbf”

“C:\Program Files\PostgreSQL\9.3\bin\psql” -U postgres -d osmde
SELECT populate_geometry_columns();

“D:\mapnik\generate_xml.py” --host ‘localhost’ --port 5432 --dbname osmde --user postgres --password ‘’ --inc D:/mapnik/inc --world_boundaries D:/mapnik/world_boundaries D:/mapnik/osm.xml > D:/mapnik/osm-local.xml

In der Datei generate_tiles.py die Variablen tile_dir und mapfile angepasst und den zu rendernden Ausschnitt festgelegt

“D:\mapnik\generate_tiles.py”

Ein Import-Log hab ich nicht, wie bekomm ich das denn?

Hi Mike,

Auf den ersten - und auch 2. - Blick sieht das ganz vernünftig aus.
Auf dem 3. Blick aber: nimm bitte --hstore-match-only raus . das ist mir sehr suspekt. Kannst dir das Logging erst mal sparen. DB brauchst du auch nicht neu aufsetzen, osm2pgsql reicht.

Wenn es immer noch klemmt:

Wie du das unter Windows protokollierst?

Schaffe schon lange nicht mehr mit MS, aber eventuell geht das hier:

Bei den Einstellungen für das Terminalfenster - oder wie immer das jetzt bei Win heisst - die Buffergröße auf ~1000 oder mehr stellen.
Batch in diesem Fenster laufen lassen und nachher mit cut/paste den Log rausholen.

Rendern brauchst du nicht, da ja vorher schon zu sehen war, dass manche Daten in der DB nicht ankommen.

Gruss
walter

Ich habe mit osmconvert mal nur einen kleinen Ausschnitt aus der osm-Datei extrahiert und in die Datenbank importiert.

Der Fehler mit den abgeschnittenen Icons ist immer noch, aber Straßen und Gebäude sind in den Kacheln nun alle da. Ich hab keine Ahnung warum es mit einer kleinen Datei funktioniert und mit größeren Dateien nicht :frowning:

Ich danke euch erstmal vielmals für eure Hilfe. Ich hab den Fehler jetzt gefunden: Es liegt an den pbf-Dateien, die will osm2pgsql scheinbar nicht richtig verarbeiten. Wenn ich stattdessen die bz2 nehme, dann funktioniert es, wenn auch wesentlich langsamer.

Das mit den abgeschnittenen Symbolen hab ich mit minimum-margin=“10” lösen können