2024-01-17 02:30:13 +01:00
# Setting up a synced OSM-server for quick layer access
2024-01-15 15:23:40 +01:00
2024-07-15 01:51:31 +02:00
## Setting up the SQL-server (only once):
2024-01-15 15:23:40 +01:00
2024-01-17 02:30:13 +01:00
`sudo docker run --name some-postgis -e POSTGRES_PASSWORD=password -e POSTGRES_USER=user -d -p 5444:5432 -v /home/pietervdvn/data/pgsql/:/var/lib/postgresql/data postgis/postgis`
2024-01-23 22:03:22 +01:00
Increase the max number of connections. osm2pgsql needs connection one per table (and a few more), and since we are making one table per layer in MapComplete, this amounts to a lot.
2024-01-15 15:23:40 +01:00
2024-01-23 22:03:22 +01:00
- Open PGAdmin, open the PGSQL-tool (CLI-button at the top)
- Run `max_connections = 2000;` and `show config_file;` to get the config file location (in docker). This is probably `/var/lib/postgresql/data/postgresql.conf`
- In a terminal, run `sudo docker exec -i <docker-container-id> bash` (run `sudo docker ps` to get the container id)
- `sed -i "s/max_connections = 100/max_connections = 5000/" /var/lib/postgresql/data/postgresql.conf`
- Validate with `cat /var/lib/postgresql/data/postgresql.conf | grep "max_connections"`
- `sudo docker restart <ID>`
2024-01-17 02:30:13 +01:00
2024-07-15 01:51:31 +02:00
2024-08-19 19:09:16 +02:00
> The following steps are also automated in `update.sh`
2024-07-15 01:51:31 +02:00
2024-08-19 19:09:16 +02:00
## Create a database in the SQL-server
2024-07-15 01:51:31 +02:00
2024-08-19 19:09:16 +02:00
Run `vite-node scripts/osm2pgsql/createNewDatabase.ts -- YYYY-MM-DD` to create a new, appropriate, database
2024-07-15 01:51:31 +02:00
2024-01-17 02:30:13 +01:00
## Create export scripts for every layer
2024-07-15 01:51:31 +02:00
Use `npm run build:dbscript`
2024-01-17 02:30:13 +01:00
## Importing data
2024-01-23 22:03:22 +01:00
Install osm2pgsql (hint: compile from source is painless)
2024-01-17 02:30:13 +01:00
2024-03-05 02:24:25 +01:00
Download the latest with:
`nohup transmission-cli https://planet.osm.org/pbf/planet-latest.osm.pbf.torrent &>nohup_transmission.log &`
which will download the data to `~/Downloads`
To seed the database:
2024-01-17 02:30:13 +01:00
````
2024-07-15 01:51:31 +02:00
nohup osm2pgsql -O flex -S build_db.lua -s --flat-nodes=import-help-file -d postgresql://user:password@localhost:5444/osm-poi < file > .osm.pbf >> seeddb.log
# To see the progress
tail -f seeddb.log
2024-01-17 02:30:13 +01:00
````
2024-01-23 22:03:22 +01:00
Storing properties to table '"public"."osm2pgsql_properties" takes about 25 minutes with planet.osm
Belgium (~555mb) takes 15m
World (80GB) should take 15m*160 = 2400m = 40hr
2024-02-15 17:39:59 +01:00
73G Jan 23 00:22 planet-240115.osm.pbf: 2024-02-10 16:45:11 osm2pgsql took 871615s (242h 6m 55s; 10 days) overall on lain.local with RAID5 on 4 HDD disks, database is over 1Terrabyte (!)
Server specs
Lenovo thinkserver RD350, Intel Xeon E5-2600, 2Rx4 PC3
11 watt powered off, 73 watt idle, ~100 watt when importing
HP ProLiant DL360 G7 (1U): 2Rx4 DDR3-memory (PC3)
Intel Xeon X56**
2024-02-19 15:38:46 +01:00
## Updating data
2024-03-05 02:24:25 +01:00
2024-02-19 15:38:46 +01:00
`osm2pgsql-replication update -d postgresql://user:password@localhost:5444/osm-poi -- -O flex -S build_db.lua -s --flat-nodes=import-help-file`
2024-01-17 02:30:13 +01:00
## Deploying a tile server
2024-06-12 14:43:19 +02:00
pg_tileserv can be downloaded here: https://github.com/CrunchyData/pg_tileserv
In the directory where it is downloaded (e.g. `~/data` ), run
2024-01-23 22:03:22 +01:00
2024-01-17 02:30:13 +01:00
````
2024-01-22 01:42:05 +01:00
export DATABASE_URL=postgresql://user:password@localhost:5444/osm-poi
2024-07-08 23:33:28 +02:00
nohup ./pg_tileserv >> pg_tileserv.log &
2024-01-17 02:30:13 +01:00
````
Tiles are available at:
````
map.addSource("drinking_water", {
"type": "vector",
"tiles": ["http://127.0.0.2:7800/public.drinking_water/{z}/{x}/{y}.pbf"] // http://127.0.0.2:7800/public.drinking_water.json",
})
````
2024-02-18 15:59:28 +01:00
2024-06-12 14:43:19 +02:00
# Starting the summary server
`npm run summary-server` in the git repo
2024-02-18 15:59:28 +01:00
# Rebooting:
-> Restart the docker container
->