OpenTopoMap selber rendern

Hallo
Gibt es irgendwo eine ausführliche Anleitung, wie ich kleinere Bereiche mit dem Stil von OpenTopoMap selber rendern kann?

Vielen Dank.
Gruss Marco

Vielleicht reichen die HOWTOs

Grüße
Max

Damit hat es bis jetzt eben nicht so recht geklappt. Soll ich es nochmals versuchen und hier einfach konkret fragen, wenn ich anstehe?

Es hapert z.B. schon bei den Symlinks:

# change default path via symlink (works better than changing postgres config):
	sudo chown postgres /mnt/database
	sudo chgrp postgres /mnt/database

Ich habe ein virtuelles Linux, da habe ich keine weiteren Festplatten gemountet. Ja, ich bin ein Linux-Anfänger…

Dann lass diese Zeilen einfach aus:

        sudo chown postgres /mnt/database
	sudo chgrp postgres /mnt/database
	sudo service postgresql stop
	sudo cp -a /var/lib/postgresql/9.5/main /mnt/database
	sudo rm -r /var/lib/postgresql/9.5
	sudo ln -s /mnt/database /var/lib/postgresql/9.5
	sudo service postgresql start

Aber vielleicht weiss hier auch jemand bessere Anweisungen. Die Howtos sollten halbwegs passen, derStefan hat sie letzte woche nochmal angepasst. Sie wenden sich aber eher an jemanden, der seine Datenbank auch mal umtopfen kann…

Bei folgender Zeile habe ich das nächste Problem:


sudo dpkg -i libapache2-mod-tile_0.4-12~precise2_amd64.deb

Job for apache2.service failed because the control process exited with error code. See "systemctl status apache2.service" and "journalctl -xe" for details.
invoke-rc.d: initscript apache2, action "restart" failed.
● apache2.service - LSB: Apache2 web server
   Loaded: loaded (/etc/init.d/apache2; bad; vendor preset: enabled)
  Drop-In: /lib/systemd/system/apache2.service.d
           └─apache2-systemd.conf
   Active: failed (Result: exit-code) since Wed 2018-03-07 21:08:12 CET; 3ms ago
     Docs: man:systemd-sysv-generator(8)
  Process: 30399 ExecStart=/etc/init.d/apache2 start (code=exited, status=1/FAILURE)

journalctl -xe ergibt folgendes:

-- The start-up result is done.
Mar 07 21:08:12 ubuntusrv apache2[30399]:  * Starting Apache httpd web server apache2
Mar 07 21:08:12 ubuntusrv apache2[30399]:  *
Mar 07 21:08:12 ubuntusrv apache2[30399]:  * The apache2 configtest failed.
Mar 07 21:08:12 ubuntusrv apache2[30399]: Output of config test was:
Mar 07 21:08:12 ubuntusrv apache2[30399]: AH00526: Syntax error on line 34 of /etc/apache2/sites-enabled/tileserver_site.conf:
Mar 07 21:08:12 ubuntusrv apache2[30399]: Unable to open config file
Mar 07 21:08:12 ubuntusrv apache2[30399]: Action 'configtest' failed.
Mar 07 21:08:12 ubuntusrv apache2[30399]: The Apache error log may have more information.
Mar 07 21:08:12 ubuntusrv systemd[1]: apache2.service: Control process exited, code=exited status=1
Mar 07 21:08:12 ubuntusrv systemd[1]: Failed to start LSB: Apache2 web server.

Zeile 34 von tileserver_site.conf steht:

LoadTileConfigFile /etc/renderd.conf

das File /etc/renderd.conf gibt es gar nicht.

Etwas weiter unten in der Anleitung steht, dass man diese Zeile auskommentieren soll. Mache ich das jetzt schon, habe ich bei folgendem Schritt ein Problem:

# copy conf/tile.conf into /etc/apache2/mods-available/tile.conf

Die Datei conf/tile.conf habe ich nicht. Das ist ja ein relativer Pfad. Wo sollte diese liegen?

Weiss ich auch nicht, aber ich kann sagen, was drinsteht:

ModTileRenderdSocketName /var/lib/tirex/modtile.sock
#ModTileTileDir           /var/lib/mod_tile
ModTileTileDir           /mnt/tiles
ModTileRequestTimeout    5
AddTileConfig            / opentopomap

da steht wieder dieses /mnt/ drin, muss man anpassen.

Ich hab für meine OTM-Kopie übrigens switch2osm befolgt und dann anschliessend den Stil eingebaut. Jetzt hab ich renderd statt tirex, geht damit aber auch.

Diese Anleitung hier? https://switch2osm.org/manually-building-a-tile-server-16-04-2-lts/

Eine Vorgängerin davon. 14.04 glaube ich, weil ich hatte dann den osm-bright -Stil drauf.

Aktuell bin ich beim HOWTO_DEM.
folgender Befehl schlägt fehl:

gdalwarp -co BIGTIFF=YES -co TILED=YES -co COMPRESS=LZW -co PREDICTOR=2 -t_srs "+proj=merc +ellps=sphere +R=6378137 +a=6378137 +units=m" -r bilinear -tr 1000 1000 raw.tif warp-1000.tif

wenn man anstelle von raw.tif …/…/raw.tif schreibt, geht dieser Befehl.
Aber der nächste geht wieder nicht:

gdaldem color-relief -co COMPRESS=LZW -co PREDICTOR=2 -alpha warp-5000.tif relief.txt relief-5000.tif

warp-5000.tif existiert nicht.

Wiederhole den Befehl

-tr NNN NNN raw.tif warp-NNN.tif

für alle warp-NNN.tif, die dir fehlen.

Übrigens werden diese relief-… nur für die Zoomlevel <=8 verwendet. Für ein kleines Gebiet muss man sich die Mühe nicht machen, man kann auch einfach im Stil die Verweise auf “basemap-relief” löschen, wenn man sowieso erst bei Zoomlevel >8 was sehen will

Aha, gut zu wissen. Wenn ich es trotzdem machen möchte, scheitere ich an diesem Befehl:

gdaldem color-relief -co COMPRESS=LZW -co PREDICTOR=2 -alpha warp-5000.tif relief.txt relief-5000.tif

es gibt keine relief.txt

Da isse: https://github.com/der-stefan/OpenTopoMap/blob/master/mapnik/relief.txt

Ah so :wink: danke.
Bei

phyghtmap --max-nodes-per-tile=0 -s 10 -0 --pbf warp-90.tif

habe ich folgenden Output:

Traceback (most recent call last):
  File "/usr/local/bin/phyghtmap", line 9, in <module>
    load_entry_point('phyghtmap==2.10', 'console_scripts', 'phyghtmap')()
  File "/usr/lib/python2.7/dist-packages/pkg_resources/__init__.py", line 542, in load_entry_point
    return get_distribution(dist).load_entry_point(group, name)
  File "/usr/lib/python2.7/dist-packages/pkg_resources/__init__.py", line 2569, in load_entry_point
    return ep.load()
  File "/usr/lib/python2.7/dist-packages/pkg_resources/__init__.py", line 2229, in load
    return self.resolve()
  File "/usr/lib/python2.7/dist-packages/pkg_resources/__init__.py", line 2235, in resolve
    module = __import__(self.module_name, fromlist=['__name__'], level=0)
  File "build/bdist.linux-x86_64/egg/phyghtmap/main.py", line 19, in <module>
  File "build/bdist.linux-x86_64/egg/phyghtmap/NASASRTMUtil.py", line 9, in <module>
ImportError: No module named http

ImportError: No module named http

Keine Ahnung… Im Internet hab ich gelesen, das könnte was mit python-Versionen zu tun haben, aber ich hab 2.x und 3.x und ich weiss nicht, welche da grad aktiv war…

wenn ich

sudo python3 setup.py install

ausführe, und danach

phyghtmap --max-nodes-per-tile=0 -s 10 -0 --pbf ~/strim/unpacked/warp-90.tif

ist der Output so:

Traceback (most recent call last):
  File "/usr/local/bin/phyghtmap", line 9, in <module>
    load_entry_point('phyghtmap==2.10', 'console_scripts', 'phyghtmap')()
  File "/usr/local/lib/python3.5/dist-packages/phyghtmap-2.10-py3.5.egg/phyghtmap/main.py", line 663, in main
  File "/usr/local/lib/python3.5/dist-packages/phyghtmap-2.10-py3.5.egg/phyghtmap/main.py", line 377, in processHgtFile
  File "/usr/local/lib/python3.5/dist-packages/phyghtmap-2.10-py3.5.egg/phyghtmap/hgt.py", line 402, in __init__
  File "/usr/local/lib/python3.5/dist-packages/phyghtmap-2.10-py3.5.egg/phyghtmap/hgt.py", line 459, in initAsGeotiff
MemoryError

Da war wahrscheinlich Python 2 aktiv (das auf vielen Systemen immer noch default ist), denn in Python 2.7 schlägt

import http

auch bei mir fehl; mit Python 3.6 klappt es dagegen anstandslos.

(Zu allem anderen kann ich dagegen mangels Ahnung nix sagen. :wink:

Kennt sich jemand mit Python aus? Ist das nicht einfach die Aussage “Speicher vollgemacht”?

Wie viel Speicher hast du denn deiner virtuellen Maschine gegeben? Kannst du mal nebenbei top laufen lassen und schaun, wie viel Speicher phyghtmap braucht? Generell ist OTM ein -äh- im Hinblick auf Speicherplatz nicht übertrieben intensiv optimierter Stil…

Ich habe jetzt mehr Speicher gegeben, dann habe ich dies:

tif file /home/gis/strim/unpacked/warp-90.tif: 51950 x 42170 points, bbox: (23.99999, 31.99949, 65.99991, 56.00019)
Traceback (most recent call last):
  File "/usr/local/bin/phyghtmap", line 9, in <module>
    load_entry_point('phyghtmap==2.10', 'console_scripts', 'phyghtmap')()
  File "/usr/local/lib/python3.5/dist-packages/phyghtmap-2.10-py3.5.egg/phyghtmap/main.py", line 663, in main
  File "/usr/local/lib/python3.5/dist-packages/phyghtmap-2.10-py3.5.egg/phyghtmap/main.py", line 378, in processHgtFile
  File "/usr/local/lib/python3.5/dist-packages/phyghtmap-2.10-py3.5.egg/phyghtmap/hgt.py", line 665, in makeTiles
  File "/usr/local/lib/python3.5/dist-packages/phyghtmap-2.10-py3.5.egg/phyghtmap/hgt.py", line 650, in chopData
  File "/usr/lib/python3/dist-packages/numpy/lib/arraysetops.py", line 200, in unique
    flag = np.concatenate(([True], aux[1:] != aux[:-1]))
ValueError: all the input arrays must have same number of dimensions