Eigener Kartenserver ? Selber Karten in PNG rendern?

Ich verwende keine Diff-Updates, nur Komplettimports. 8.3 lief schnell, 8.4 war extrem langsam, nach Update auf 9.0 lief es wieder schnell. Die Toolchain war jeweils die gleiche. Die exakte Ursache konnten wir nie rausfinden.

Aber aus dem Grund rate ich immer davon ab die 8.4 zu benutzen.

bye
Nop

Hi,

also kann ich doch ohne Bedenken die 9er Version installieren. Ist hier etwas zu beachten.
Außer dass ich in den Skripten den Pfad von /8.4/ auf /9.0/ ändere ?

Ich werde dann nochmal einen neuen Import mit der neuen default.style starten!
Aber nochmal, bevor ich einen Fehler in beim 3.Import machen (4 Stunden) habe ich außer
den Pfaden etwas sonst zu beachen?

Greets

Byte

Um zu testen ob alles funktioniert, koennte man auch einen kleineren Extrakt verwenden. Z.B. Bremem.osm.pbf sollte in wenigen minuten importiert sein. Wenn dann alles funktioniert, einfach den osm2pgsql Import mit dem tatsaechlich gewuenschten Extrakt wiederholen.

Ich kann mich nicht erinnern, außer den Pfaden noch etwas spezielles angepasst zu haben.

Kann sein daß das Skript zur INitialisierung von PostGIS anders heißt oder woanders liegt - das wird irgendwie ständig geändert. Genau weiß ich’s aber nimmer.

bye
Nop

Also in dem Vergleich von Frederik Ramm ist 9.0 schneller beim Import als 8.3 (und 8.4) und bei den Daily Diffs etwa gleich auf mit 8.3 (aber vor 8.4)

http://www.geofabrik.de/media/2010-07-10-rendering-toolchain-performance.pdf

Seite 16

Wie weiter oben geschrieben, ist die kompilierte osm2pgsql vom letzten Jahr. Die aktuelle kann vermutlich pbf und 64bit, aber das nutzt mir als Endanwender der exe nichts.

Gruß,
ajoessen

Wenn schon niemand in der Lage ist, die aktuelle neu zu kompilieren: könnte denn nicht jemand die aktuelle default.style in die zip packen, damit die angebotene zip mit dem aktuellen Mapnik-Stil funktioniert?

Gruß,
ajoessen

Ich habs mal bei mir eingefügt:
http://wiki.openstreetmap.org/wiki/User:Ajoessen/Postgis#Geofabrik-Extrakt_mit_osm2pgsql_in_die_Datenbank_laden

Da ich mit meinem eigenen Stil rendere, trat das Problem bei mir nicht auf.

Gruß,
ajoessen

Nachdem ich jetzt auf zwei Rechnern 9.0 mit 1.5.2 erfolgreich installiert habe, gebe ich mich geschlagen :wink:
Zum Geschwindigkeitsvorteil kann ich noch nichts sagen. Meine Wikiseiten sind jetzt angepasst.

Gruß,
ajoessen

Ich hab die beiden Versionen mal verglichen. Da sind noch eine ganze Reihe anderer Spalten hinzugekommen, und einige weggefallen. Zum Mapnik-Stil aus dem SVN sollte man also wohl besser die default.style komplett austauschen. Wer seinen eigenen Mapnik-Stil benutzt, könnte dagegen mit dem neuen default.style auf die Nase fallen, wenn sein Mapnik nicht mehr vorhandene Spalten ansprechen will.

gruß,
ajoessen

Hi,

ALSO VIELEN DANK ERSTMAL!
Super Forum mit schneller und kompetenter Hilfe!!!
Insbesondere ajoessen möchte ich Danken !!!

Ich glaub, es läuft jetzt. Ich kann Tiles rendern.
Ich habe die Installationsanleitungen :

http://wiki.openstreetmap.org/wiki/User:Ajoessen/Postgis
http://wiki.openstreetmap.org/wiki/User:Ajoessen/Mapnik

berücksichtigt. Wenn ich das richtig Verstanden habe, werden die Karten jetzt Mapnik-getreu gerendert.
Die Anleitung http://wiki.openstreetmap.org/wiki/User:Ajoessen/myMapnik ist für eigene Modifikationen ?

Jetzt hätte ich noch Fragen:

  1. ich habe richtig Verstanden, dass ein Update am Besten mit
durchgeführt wird?
  1. Ich möchte EINE Bereichsgrenze (Kreis) farbig markieren in den Tiles. Also nicht
    alle Grenzen, sondern eine bestimmte.
    Bisher habe ich es als Polygon in OpenLayers in einer Layerebene gemacht. Das
    frisst aber sehr an den Ressourcen, so dass scrollen nicht mehr so flüssig geht.

    Ich möchte die Grenze jedoch nicht dauerhaft in der DB haben, sondern zu oder
    abschalten können (wie ein Layer, den man bei bestimmten Rendervorgängen zuschaltet).
    ggf. kann man im Rendern-Python-Skript hier ein Layer dazunehmen ???

    Hintergrund ist, ich Render Tiles für verschiedene Nutzer-PC´s. Jeder hat eine andere
    Kreisgrenze als Markierung!

Vielen Dank

Greets

Byte

Danke fürs Aktualisieren der Anleitungen, die haben mir auch schon sehr geholfen.

Einen Vergleich habe ich nicht gemacht, sondern mich auf das addr:housename beschränkt, weil das bei mir das einzige Problem war. Ich hab mir aber auch schon überlegt, ob das Aktualisieren der kompletten default.style nicht die bessere Empfehlung wäre. Wenn ich das richtig interpretiere hat das Bytechanger jetzt auch so gemacht.

Ja, ausgehend vom deutschen Mapnik-Stil. Da haben die Autobahnen und Bundesstraßen das Nummernsymbol, wie wir es gewohnt sind. Allerdings ist mir der Farbton für Ackerland zu dominant, den habe ich auf blaßgelb gesetzt, und einiges andere noch.

Ja, genauso läuft es bei mir. Allerdings mit osmdb statt bboxdb!

Ja, geht alles :wink:


<Style name="Krefeld">
   <Rule>
      <!-- Kreise und Städte -->
      &maxscale_zoom8;
      &minscale_zoom17;      
      <LineSymbolizer>
        <CssParameter name="stroke">blue</CssParameter>
        <CssParameter name="stroke-width">2</CssParameter>
        <CssParameter name="stroke-opacity">1.0</CssParameter>
      </LineSymbolizer>
    </Rule>
</Style>
<Layer name="Krefeld" status="on" srs="&osm2pgsql_projection;">
    <StyleName>Krefeld</StyleName>
    <Datasource>
      <Parameter name="table">
      (select osm_id,way,name
       from &prefix;_polygon
       where "osm_id"='-62748'
       ) as admin</Parameter>
      &datasource-settings;
    </Datasource>
</Layer>

Lässt sich nach Zoomstufe noch stylen, siehe
http://wiki.openstreetmap.org/wiki/User:Ajoessen/myMapnik#Grenzen

Am besten legst du für jeden Kreis eine osm-xy.xml und generate_tiles-xy.py an.
Die osm_id bekommst du mit qgis raus, wenn du meine Anleitung zu Grenzkontrollen befolgst:
http://wiki.openstreetmap.org/wiki/User:Ajoessen/Grenzkontrollen
Das Eintüten in die Datenbank hast du ja schon erledigt.

EDIT: Du brauchst in der generate_tiles-xy.py natürlich nur die bbox für den Kreis anzugeben. Sonst musst du alles 53 mal rendern. Das kann in Zoom 15-17 Tage dauern!

Gruß,
ajoessen

Hi,

vielen vielen Dank nochmal! Das klappt ja super und sehr einfach!
Genau so hatte ich mir das vorgestellt!!
Hierzu noch eine Frage, ich meine in den Kacheln gesehen zu haben,
dass die Grenzlinie von der Autobahn überdeckt wird. Kann man irgendwo
die Lage des Layers (z-index) angeben, sodass er ganz oben liegt ?

Leider muss ich nochmal einen draufsetzen…

In einem Fall hätte ich gerne die Kreisgrenze und die Stadtgrenze einer angrenzenden Stadt zusammen.
Jedoch nicht als 2 Umkreise, sondern als einen geschlossenen Kreis!

Bisher habe ich es so gemacht, dass ich in JOSM beide Polygon geladen habe, und
die angrenzende (also teilende) Verbindungslinien entfernt habe. (Dann als GPX herausgezogen
und die Koordinaten als Polygon in OpenLayers angezeigt).

Gibt es hierfür auch eine so einfache und unkomplizierte Lösung, wie für das
Problem zuvor ?

Vielen Dank

Greets

Byte

Wenn du den zusätzlichen Layer-Abschnitt ganz ans Ende der osm.xml packst, müsste diese Linie eigentlich zuoberst erscheinen.

Du kannst diese GPX auch in JOSM in osm-Daten umwandeln, in eine separate bboxdb laden, und diese beim Rendern des Grenzen-Layers ansprechen. Ist vielleicht auch nicht schlecht in Fällen, wo das Grenzpolygon im OSM-Extrakt aktuell mal defekt ist.


<Layer name="Krefeld" status="on" srs="&osm2pgsql_projection;">
    <StyleName>Krefeld</StyleName>
    <Datasource>
      <Parameter name="table">
      (select osm_id,way,name
       from &prefix;_polygon
       where "osm_id"='-62748'
       ) as admin</Parameter>
<Parameter name="type">postgis</Parameter>
<Parameter name="password">%(password)s</Parameter>
<Parameter name="host">localhost</Parameter>
<Parameter name="port">5432</Parameter>
<Parameter name="user">osmuser</Parameter>
<Parameter name="dbname">bboxdb</Parameter>
<!-- this should be 'false' if you are manually providing the 'extent' -->
<Parameter name="estimate_extent">true</Parameter>
<!-- manually provided extent in epsg 900913 for whole globe -->
<!-- providing this speeds up Mapnik database queries -->
<Parameter name="extent">-20037508,-20037508,20037508,20037508</Parameter>
    </Datasource>
</Layer>

Also die Zeile


&datasource-settings;

durch den angepassten Inhalt der Datasource-settings.xml.inc ersetzen.

gruß,
ajoessen

Hi,

sorry, da bin ich zu sehr newbie. Das konnte ich jetzt nicht ganz nachvollziehen…

Also ich habe verstanden, dass ich die Grenze dann in JOSM als .osm speichere.

  1. Wie bekomme ich sie dann in eine bboxdb? (Heisst bei mir glaub ich osmdb ? )

  2. Wo pflanze ich diesen Code ein

  1. und dass hier

hatte ich auch nicht verstanden.

Bitte nochmal etwas detailierter beschreiben. Diesen Grenzverlauf möchte ich auch nicht bei jedem Rendern, sondern
nur bei einem bestimmten Renderdurchlauf…
Also besteht die Möglichkeit letztendlich über die generate_tiles.py diesen Layer zuzuschalten…

Danke schonmal

Greets

Byte

Nein, bboxdb ist schon richtig. Genauso wie du jetzt in PostgreSQL eine Datenbank osmdb mit dem NRW-Extrakt befüllt hast, legst du in PostgreSQL eine neue Datenbank bboxdb an, lässt die sql-Dateien jetzt auf diese bboxdb los:


%ProgramFiles%\PostgreSQL\9.0\bin\createdb -U postgres -E UTF8 -O osmuser bboxdb
%ProgramFiles%\PostgreSQL\9.0\bin\createlang -U postgres plpgsql bboxdb
%ProgramFiles%\PostgreSQL\9.0\bin\psql -U postgres -d bboxdb -f "%ProgramFiles%\PostgreSQL\9.0\share\contrib\postgis-1.5\postgis.sql"
%ProgramFiles%\PostgreSQL\9.0\bin\psql -U postgres -d bboxdb -f "%ProgramFiles%\PostgreSQL\9.0\share\contrib\postgis-1.5\spatial_ref_sys.sql"
%ProgramFiles%\PostgreSQL\9.0\bin\psql -U postgres -d bboxdb -f "%ProgramFiles%\PostgreSQL\9.0\share\contrib\_int.sql"
%ProgramFiles%\PostgreSQL\9.0\bin\psql -U postgres -d bboxdb -f "%ProgramFiles%\PostgreSQL\9.0\share\contrib\hstore.sql"

und füllst statt der nrw.osm diese josm.osm in die Datenbank bboxdb statt osmdb. Mapnik liest seine Daten ganz normal aus der osmdb, nur am Schluss der osm.xml setzt du Style und Layer"Krefeld", wobei der Layer krefeld dann abweichend die daten nicht von der Standard einstellung in datasource-settings.xml.inc liest, sondern explizit aus der neuen bboxdb.

Vorteil: Beim update der nrw-Daten wird die bboxdb nicht gelöscht, und umgekehrt auch nicht.

ganz am Ende deines Mapnik-Stils osm.xml. Gestern hatte ich Style und Layer “Krefeld” gepostet, da musst du jetzt nur die Datenquelle für die Grenzdaten abändern.

sollte jetzt klar sein.

BTW: Josm legt dann natürlich eine neue OSM-id an, die wiederum negativ ist. Da die osm-Datei aber nicht allzu groß ist, lässt sich die Nummer auch im Editor rausfinden. Oder du verzichstest ganz auf die Abfrage der id, weil in der bboxdb ja nur die eine Grenzlinie drin ist.

Dann legst du einfach eine Kopie der osm.xml unter anderem Namen an, und verwendest mal die eine und mal die andere. Welche du benutzt, steht in generate_tiles.py. Auch davon würde ich passende Kopien anlegen.

Gruß,
ajoessen

Hi,

das scheint zu funtionieren !

Vielen Dank!!

Greets

Byte

Hi,

ich habe noch eine Frage,

Ich render nun die Grenzdaten wie beschrieben über eine DB.

.XML sieht so aus

&maxscale_zoom8; &minscale_zoom18; blue 5 0.5

[…]

Teststadt (select osm_id,way,name from &prefix;_polygon ) as admin postgis ppp localhost 5432 uuu testDB true -20037508,-20037508,20037508,20037508

Die Daten werden als Linie auf die Tiles gerendert. Leider bekomme ich jedoch eine Linie, die nicht durchsichtig ist.
Ich habe jedoch als Tranzparenz 0.5 angegeben. Dieser Parameter wird jedoch ignoriert!
Was mache ich falsch ?

Bei einem Verweis auf einen bestehenden Grenzverlauf in der OSM-DB funktioniert es…

Teststadt


(select osm_id,way,name
from &prefix;_polygon
where “osm_id”=‘-62452’
) as admin
&datasource-settings;

Greets

Byte