55 lines
2.2 KiB
Markdown
55 lines
2.2 KiB
Markdown
# Setting up a synced OSM-server for quick layer access
|
|
|
|
## Setting up the SQL-server:
|
|
|
|
`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`
|
|
|
|
Then, connect to this databank with PGAdmin, create a database within it.
|
|
Then activate following extensions for this database (right click > Create > Extension):
|
|
|
|
- Postgis activeren (rechtsklikken > Create > extension)
|
|
- HStore activeren
|
|
|
|
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.
|
|
|
|
- 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>`
|
|
|
|
## Create export scripts for every layer
|
|
|
|
Use `vite-node ./scripts/osm2pgsql/generateBuildDbScript.ts`
|
|
|
|
## Importing data
|
|
|
|
Install osm2pgsql (hint: compile from source is painless)
|
|
To seed the database:
|
|
|
|
````
|
|
osm2pgsql -O flex -E 4326 -S build_db.lua -s --flat-nodes=import-help-file -d postgresql://user:password@localhost:5444/osm-poi <file>.osm.pbf
|
|
````
|
|
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
|
|
|
|
|
|
## Deploying a tile server
|
|
|
|
pg_tileserv kan hier gedownload worden: https://github.com/CrunchyData/pg_tileserv
|
|
|
|
````
|
|
export DATABASE_URL=postgresql://user:password@localhost:5444/osm-poi
|
|
./pg_tileserv
|
|
````
|
|
|
|
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",
|
|
})
|
|
````
|