Flussnamen entfernen

Hallo in die Runde,

ich bin neu hier.

Ich möchte gerne Karte rendern. Ich habe unter Linux den PostgreSQL Server installiert, ebenso openstreetmap-carto. Das ganze übersetzt und es läuft. Die ausgabe nutze ich mittels nik4.py.

Nun zu meinem Anliegen. Ich möchte gerne den text der Flüsse, Kanäle etc entfernen. Wie stelle ich das an?

Ich bedanke mich im voraus schonmal für die Unterstützung.

… indem du den Kartenstil änderst und die Ausgabe der Namen unterdrückst.

Das war mein Plan. Nur was muss ich wo editieren ?

Die parameter müssen doch in einer xml Datei oder änliches hinterlegt sein.

Hallo,

irgendwann hast du in deinem Setup das GitHub-Projekt openstreetmap-carto geklont und mit dem JavaScript-Programm “Carto” die CartoCSS-Dateien in Mapnik-XML umgewandelt. Du kannst entweder die project.mml und danach erneut Carto aufrufen oder du bearbeitetst direkt die project.xml, die Nik4 einliest.

In der MML-Datei, die eine YAML-Datei ist, sind die SQL-Abfragen der Layer der Karte definiert. Der Layer water-lines-text ist hier in der MML-Datei definiert. Die Regeln, was wie dargestellt wird, findest du in einer der *.mss-Dateien, in dem Fall water.mss. Entweder passt du die SQL-Abfrage an oder du löscht die Flüsse aus water.mss.

In der XML-Datei (Doku) gibt es - und -Elemente. Beliebig viele Style-Elemente können sich auf einen Layer beziehen (wenn keines es tut, wird nichts gerendert).

Im Falle von Nik4 gibt es noch eine Abkürzung: Nik4 hat eine Option --layers, mit der du nur bestimmte Layer rendern kannst. Eine Layerliste, die du dieser Option direkt übergeben kannst, bekommst du mit


grep Layer project.xml | grep -o 'name="[^"]\+' | sed 's/name="//g' | tr '\n' ',' | sed 's/.$//g'

Viele Grüße

Michael

Danke.

Ich habe es mit “–hide-layers water-lines-text” direkt über nik4 hinbekommen.

Eine Frage hätte ich noch. Ich habe mir mehrere Gebiete runtergeladen und eingespielt, so wie ich sehe scheint aber mit osm2pgsql immer nur das letzte Gebiet zur Verfügung gestellt.

Ist das so korrekt oder übersehe ich etwas?

Kann ich die Gebiete, dann immer wieder einspielen oder diese werden überschrieben oder muss ich die Datenbank löschen und wieder neuanlegen, wenn ich ein neues Gebiet haben möchte?

Was genau sind deine Ziele? Möglicherweise deckt ein Service die ab … dann benötigst du gar kein eigenes System.

osm2pgsql kann entweder mit der create Option gestartet werden (bereits vorhandene daten gehen verloren) oder nicht (merge). Wie gut das Mergen funktioniert wenn die Extrakte sich überlagern weiß ich allerdings nicht.

und du kannst natürlich mehrere Datenbanken parallel auf deinem Rechner haben, einfach den Namen ändern.

Damit sollte das geklärt sein.

Gruss
walter

Hallo,

Die Doku legt das nahe, aber die Praxis bzw. ein Blick in den Quellcode sagt, dass das eine Lösung für Geduldige ist.

Osm2pgsql hat zwei Modi – den normalen und den Update-Modus. Beim normalen Modus werden die Tabellen, die gefüllt werden sollen, gelöscht und dann neu angelegt. Mit diesem Modi importiert man eine .osm.pbf-Datei. Für den Update-Modus muss man explizit “–append” ergänzen. Dieser kann zwar auch .osm.pbf-Dateien lesen, aber gedacht ist er, um Diff-Updates im .osc.gz-Format zu laden.

Wenn du zwei Regionen in der Datenbank haben willst, ist es nicht empfehlenswert, die zweite mit --append zu importieren. --append lädt die Daten ganz anders und ist erheblich langsamer, da beim Schreiben jedes Objekts zuerst versucht wird, es aus der Tabelle zu löschen. Das sind unzählige Zugriffe, die trotz der Nutzung eines Index langsam sind. (Wenn du mit --drop importiert hast, werden die Indexe auf die osm_id- bzw. id-Spalte nicht angelegt)

Es gibt zwei Lösungen:

  1. Mit dem Osmium-Tool und dessen Befehl “merge” die zwei zu importierenden Dateien vereinigen und erst dann mit Osm2pgsql importieren.
  2. Die zwei Gebiete mit dem extract-Befehl des Osmium-Tool aus einer Datei ausschneiden, die beide Gebiete umfasst.

Viele Grüße

Michael

Mir gehts sogar um 3 Regionen. Ich habe mir mal das osmium-toll angeschaut und mal eine pbf Datei aller drei Gebiete erstellt. Werde diese morgen mal einspielen und schauen, ob es nicht zu erwünschten Nebeneffekten an den Grenzen kommt.

Ist wenn man genau die Grenze betrachtet natürlich etwas unpraktisch. Außerdem dachte ich, dass die Datenbank zwingend gis heissen müsste ? Wie kann ich dann 2 anlegen, wenn ich bei der Namenswahl eingeschränkt bin?

Nein, will ja mein eigenes System haben und nicht die Server belasten. Zur Not geht auch die Single Gebiets Modus, wenn auch unschön.

Der Datenbankname wird in der MML-Datei festgelegt. Such da mal nach “dbname”. Er steht dann auch in der XML-Datei, dort aber bei jedem Layer.

“gis” ist der Standardwert, den Osm2pgsql verwendet.

osmconvert funktioniert bei mir gut, ohne Effekte an den Grenzen.

Falls Du eine Wegwerfdatenbank betreibst, die Du nur gelegentlich für diesen einen Zweck neu einspielst, kannst du auch einfach alle unerwünschten Namen in der Datenbank löschen. Ist eine Einbahnstraße, aber falls Du lieber SQL schreibst als Mapnik-Stile änderst…

Grüße
Max