Eigenen Server für Offlineverfügbarkeit aufsetzten

Um mir die Küstenlinien zu sparen, hatte ich den entsprechenden Part in der osm.xml rausgeworfen, und die Hintergrundfarbe ganz am Anfang geändert.

Wenn du wissen willst, ob die richtigen Daten in der Datenbank sind, kannst du auch eine Datenbanklayer in Quantum GIS einrichten:
http://wiki.openstreetmap.org/wiki/User:Ajoessen/Quantum_GIS

Wenn man in Mapnik nichts sieht, ist meistens der extend oder die Projektion falsch.
Der Test hier:
http://wiki.openstreetmap.org/wiki/User:Ajoessen/Postgis#Geofabrik-Extrakt_mit_osm2pgsql_in_die_Datenbank_laden
funktioniert?

Gruß,
ajoessen

Mhh das komischer weise noch nicht geändert, obwohl ich das schonmal kontrolliert hatte. Naja…
Die Abfrage in der Datenbank hat funktioniert.

Gruß
mvollmer

Ich habe mich mal an den Versuch gemacht die Karte mit Quantum GIS anzuzeigen. Leider kommt bei dem Schritt alle Tabellen (planet_line, planet_point, planet_polygon, planet_roads) mehrfach folgende Fehlermeldung:


Die Tabelle verfügt über keine als Schlüssel verwendbare Spalte.

Quantum GIS erfordert, dass die Tabelle entweder eine Spalte des
Typs int4 mit einer Eindeutigkeitsbedingung (die den Primärschlüssel
einschließt), eine PostgreSQL-oid-Spalte oder eine ctid-Spalte
mit einer 16bit-Blocknummer hat.

Bei den Versuchen die Stadt Kassel als Karte zu rendern ist es leider nicht ganz gelungen, da Kassel anscheinend direkt an der Grenze von Thüringen liegt. So kamen am rechten Rand von Kassel nur noch Empty Tiles.

Obwohl ich die Deutschlandkarte importiert hatte?

Dann habe ich glaub ich einen Fehler gemacht und habe mir die Daten von Thühringen heruntergelanden und diese mit oms2pgsql ebenfalls in die Datenbank importiert. Nun scheint es so, das NUR noch Thühringen in der Datenbank vorhanden ist.

Ich habe nämlich erneut versucht in Quantum GIS die Tabellen nochmal hinzuzufügen. Diesmal klappt es. Aber es wurde nur Thüringen angezeigt.

Ich habe den extend auf -20037508,-20037508,20037508,20037508 gesetzt (also die Komplette Welt)

Gruß
mvollmer

Geht erst ab Qgis 1.8 - mach mal nen update.
Kann sein, dass es etwas schwer zu finden ist. Welches OS und welche OS-Version nutzt du denn?

Gruss
Walter

Wow, ich hab jetzt 5 min nach der Version 1.8 gesucht und bin leider nicht fündig geworden… Also wenn du nicht gesagt hättest es gibt eine Version 1.8 dann hätte ich behauptet das 1.7.3 die aktuelleste ist :smiley:

Ich nutze Windows 7 - 64Bit.

Wäre nett, wenn du mir einen Link zur 1.8er Version zukommen lässt :wink:

Dann hat sich osm2pgsql wohl doch beim Erzeugen des Index verschluckt. War eben doch zu wenig RAM für ganz Deutschland :frowning:

Dann ist der Index wohl zwischen Kassel und Thüringen abgestürzt…
Ohne Index weiß die Datenbank nicht, welche Knoten innerhalb einer angeforderten bbox leigen, und wenn sie dann erst anfängt, alle Knoten durchzusuchen, wirst du von der Performance nicht begeistert sein.

Ja, das ist richtig so. osm2pgsql löscht die Datenbank komplett, um keine Konflikte mit vorhandenen Daten zu bekommen. Man kann aber mehr als eine Datenbank innerhalb von Postgresql anlegen. Bei mir tummeln sich osmdb, bboxdb, powerdb und srtmdb. Muss dann bei jedem Rendern halt in den Datasource-settings eingestellt werden.

Wenn es dir nur ums Rendern geht, kannst du natürlich DE in Nord und Süd zerlegen, und jeden Teil komplett rendern. Die Überlappung der Grenzen muss natürlich breit genug sein. Länderweise klappt da leider nicht.

Gruß,
ajoessen

Das muß man sich wohl aus den Quellen selber bauen. mit sämtliche Abhängigkeiten, versteht sich.
Laufen tut aber auch das normale Qgis mit Postgis.

Wobei ich jetzt nicht weiß, ob 64-bit ein Problem sein könnte. PostgreSQL ist wohl noch 32bit?

gruß,
ajoessen

Mhh leider konnte ich keine Fehlermeldung sehen, da sich das Konsolenfester geschlossen hatte.

Ich bin grade dabei ein zweites mal Deutschland zu importieren, diesmal mit 3GB Ram als Startparameter.

Das würde natürlich dann einiges erklären. Kann man nicht nochmal im Nachhinein Indexieren?

Gut zu wissen. Sollte der Import von Deutschland erneut nicht funktionieren, würde es doch dann so gehen das ich eine DB für Hessen und eine für Thüringen mache und dann jeweils den renderer drüber laufen lasse. Die möglicherweise erstellten Empty Tiles dürften ja dann überschrieben werden.

EDIT:

Ja PostgreSQL 9.1 32 Bit (9.1 deshalb weil diese schon installiert war und noch für etwas anderes genutzt wird)
Hat auch funktioniert, bis auf die Erweiterungen hstore, diese habe ich dann über pgAdmin nachinstalliert.

Nur bei _int habe ich keine extension gefunden. Vielleicht ist das eine der Fehlerquellen? Vor dem 2. durchlauf habe ich die Extension “intarray” noch installiert.

Ja, das ist leider der Nachteil von Windows. Ich behelfe mich da mit OpenCommandWindowHere, aber das gibts vermutlich nur für XP.
Du kannst aber auch einen pause-Befehl am Ende deiner Batch einfügen.

Ja, mehr kannst du nicht tun. BTW: ganz am Anfang schriebst du noch Windows 2008 Server, jetzt Windows 7 64-bit. Zu letzterem kann ich wenig sagen.

Möglich, aber vermutlich mit dem selben Speicherplatzproblem. Das müsste dann innerhalb von PostgreSQL gestartet werden, und ich weiß nicht, ob und wie er mit dem abgebrochenen Index klarkommt.

Nö, beim zweiten Diurchlauf überschreibt er die vollen Tiles des ersten mit leeren Tiles. Aussedem gibts ja noch massig Tiles, die halb voll sind.

Gruß,
ajoessen

Wow, Wow

ich hab fast 15 Minuten suchen müssen - die Schw Brüder haben den gesammten Webauftritt umgekrempelt :wink:

1.8 ist unter diversen “Unixen” als fertiges Paket erhältlich. Ist aber immer noch Beta und nennt sich Master http://hub.qgis.org/projects/quantum-gis/wiki/Download#Master
Ich hatte angenommen, dass die das Teil endlich freischalten. Schade

Unter Windows kommst du nicht ums Kompilieren rum, aber da muss ich passen. Ich würde es auch an deiner Stelle lassen und eventuell eine virtuelle Unix-Maschine aufsetzen.

Gruss
Walter

Ach wo. Bei OSgeo4w gibts schon Version 1.90-31 als latest build im Paket.

ich behalte aber trotzdem die stable 1.7.3

Gruß,
ajoessen

Schön, dann müsste es ja die 1.9.x auch für mein System geben. Hab schon seit einiger Zeit keinen Update mehr gemacht. Mal sehen, was da kommt.

Kommt die denn auch mit den int8-keys der osm-daten zurecht? Das war ja für mich der Grund auf 1.8 hinzuweisen.

egal, ich nutze qgis selten und bin eigentlich happy.

Gruss
Walter

edit: bekomme 1.9.90 angeboten

Dummerweise will das neue qgis nicht starten, weil eine spatialindex1.dll nicht gefunden wurde. 8-(

Ich benutze das vorkompilierte osm2pgsql, und das verwendet nach wie vor int4-keys. Funktioniert heute noch so wie damals, als ich den Wiki-Beitrag erstellt habe. Ausserdem ist Postgis für Windows auch nur 32-bit:

Gruß,
ajoessen

qgis master (1.9.90) unter ubuntu 11.11 startet sauber. Ob es dann stabil rennt, ist natürlich 'ne andere Sache.

Ach, das waren noch Zeiten :wink:

Gruss
Walter

Das es bei mir nicht lief, wird vermutlich an den nicht indexierten Tabellen liegen und Version 1.7.3 hat ja funktioniert, als ich Thüringen importiert hatte.

Aber nunja nun weiß wambach, das es mitlerweile schon updates gibt :stuck_out_tongue:

Das nutze ich ebenfalls.

Wenn du dich erst mal durch die plugins gewühlt hast, willst du nichts anderes mehr machen.

Da gibts z.B. ein openlayers-plugin, mit dem du OSM-Tiles, bing und google Luftbilder einblenden kannst zu deinen Datenbankdaten. Und bevor jemand nach tile usage policy schreit: geht auch mit http://localhost und file:///

Für Konturerzeugung und hillshade gibts auch was. Nur der Mapnik support tuts erstmal leider nicht, weil Qgis mit Python 2.5 daher kommt, mein Mapnik aber schon bei 2.6 ist.

Gruß,
ajoessen

Hallo zusammen,

ich habe mir mal die Hilfe osm2pgsql.exe angeschaut. Darunter fand ich auch den Parameter:


   -a|--append          Add the OSM file into the database without removing existing data.

Also habe ich die Karte von Hessen mit --create importiert und die Karte von Thüringen mit --append. Aber leider hat das nicht so funktioniert und ich erhielt folgenden Fehlermeldung:

Reading in file: C:\osm\Geofabrik\thueringen.osm.bz2
Processing: Node(3122k) Way(367k) Relation(0k)COPY_END for COPY planet_ways FROM
 STDIN;
 failed: FEHLER:  doppelter Schl├╝sselwert verletzt Unique-Constraint ┬╗planet_w
ays_pkey«
DETAIL:  Schlüssel »(id)=(4004615)« existiert bereits.
CONTEXT:  COPY planet_ways, Zeile 3: ┬╗4004615  {487558,1155003504,927228582,487
564,927228579,487565}   {"source:lit","http://www.autobahn-bil...«

Error occurred, cleaning up.

Einen Parameter um vorhanden Daten zu überschreiben habe ich leider nicht gefunden.

Jetzt bin ich dabei mit dem Parameter --bbox aus der Kompletten Deutschlandkarte einen Teil in die Datenbank zu importieren.Mal schauen wie das klappt.

Gruß
mvollmer

Nein, das kann auch nicht funktionieren, weil es Knoten im Grenzbereich gibt, die in beiden Extrakten drin sind. Da weiß osm2pgsql nicht, was es mit denen machen soll.

Dieses -append ist dazu da, um Änderungsdatensätze einzupflegen. Dazu gibt es spezielle diff-Datensätze.
Dabei wird aber erwartet, dass die Version eines Elements in dem diff neuer ist (eine höhere Versionsnummer hat) als in der Datenbank vorhanden. Nur dann wird die alte Version eines Knotens/Wegs/Relation mit derjenigen aus dem Änderungsdatensatz überschrieben.

Du kannst auch nicht zwei mit bbox “scharf” ausgeschnittene Extrakte zusammenfügen, weil ein grenzüberschreitender Weg immer in beiden Teildatensätzen enthalten ist. Je nach Schneideoption komplett oder amputiert.

HTH,
ajoessen

Das es nicht funktioniert, da Daten in beiden Extrakten sind, hab ich ebenfalls vermutet.

Ich habe heute Morgen die osm2pgsql ausgeführt mit folgenden Parametern:

 --create --database osmdb --username osmuser --prefix planet --slim --cache 3072  
-S C:\OSM\osm2pgsql\default.style --hstore C:\osm\Geofabrik\germany.osm.bz2 -v 
--bbox 9.07161,51.12881,9.93610,51.46670

Die bbox Koordinaten sind ein grober Ausschnitt von Kassel. Sollte es dann jetzt nicht auch weniger Zeit beanspruchen, die Daten in die Datenbank zu schreiben? Hab ich evnt etwas wichtiges übersehen?

Gruß
mvollmer

Ich denke mal, das sollte so klappen. Ich verwende allerdings die wesentlich kleineren pbf-Extrakte und schneide mir die mit osmosis oder osmconvert zu, bevor ich das Ergebnis an osm2pgsql übergebe.

Gruß,
ajoessen