feat: tileserver-gl fully operational – config+style in config/, PNG tiles confirmed
This commit is contained in:
parent
79bba7ca02
commit
46ac204e03
3 changed files with 458 additions and 7 deletions
432
config/styles/osm-intl.json
Normal file
432
config/styles/osm-intl.json
Normal file
|
|
@ -0,0 +1,432 @@
|
||||||
|
{
|
||||||
|
"version": 8,
|
||||||
|
"name": "OSM International (OpenStreetMap)",
|
||||||
|
"metadata": {
|
||||||
|
"mapbox:url": "mapbox://styles/mapbox/outdoors-v11",
|
||||||
|
"maptiler:copyright": "© OpenStreetMap contributors, © MapTiler"
|
||||||
|
},
|
||||||
|
"sources": {
|
||||||
|
"osm": {
|
||||||
|
"type": "vector",
|
||||||
|
"url": "mbtiles://{osm}"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"glyphs": "/fonts/{fontstack}/{range}.pbf",
|
||||||
|
"layers": [
|
||||||
|
{
|
||||||
|
"id": "background",
|
||||||
|
"type": "background",
|
||||||
|
"paint": {
|
||||||
|
"background-color": "#e8e8e8"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "water-area",
|
||||||
|
"type": "fill",
|
||||||
|
"source": "osm",
|
||||||
|
"source-layer": "water",
|
||||||
|
"paint": {
|
||||||
|
"fill-color": "#b0d4fc"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "water-line",
|
||||||
|
"type": "line",
|
||||||
|
"source": "osm",
|
||||||
|
"source-layer": "water",
|
||||||
|
"paint": {
|
||||||
|
"line-color": "#b0d4fc",
|
||||||
|
"line-width": 1
|
||||||
|
},
|
||||||
|
"filter": [
|
||||||
|
"==",
|
||||||
|
"$type",
|
||||||
|
"LineString"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "landuse-forest",
|
||||||
|
"type": "fill",
|
||||||
|
"source": "osm",
|
||||||
|
"source-layer": "landuse",
|
||||||
|
"paint": {
|
||||||
|
"fill-color": "#d4e8c1",
|
||||||
|
"fill-opacity": 0.8
|
||||||
|
},
|
||||||
|
"filter": [
|
||||||
|
"==",
|
||||||
|
"class",
|
||||||
|
"forest"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "landuse-grass",
|
||||||
|
"type": "fill",
|
||||||
|
"source": "osm",
|
||||||
|
"source-layer": "landuse",
|
||||||
|
"paint": {
|
||||||
|
"fill-color": "#e8f0e0",
|
||||||
|
"fill-opacity": 0.6
|
||||||
|
},
|
||||||
|
"filter": [
|
||||||
|
"==",
|
||||||
|
"class",
|
||||||
|
"grass"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "landuse-park",
|
||||||
|
"type": "fill",
|
||||||
|
"source": "osm",
|
||||||
|
"source-layer": "landuse",
|
||||||
|
"paint": {
|
||||||
|
"fill-color": "#c8e6c9",
|
||||||
|
"fill-opacity": 0.7
|
||||||
|
},
|
||||||
|
"filter": [
|
||||||
|
"==",
|
||||||
|
"class",
|
||||||
|
"park"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "building",
|
||||||
|
"type": "fill",
|
||||||
|
"source": "osm",
|
||||||
|
"source-layer": "building",
|
||||||
|
"paint": {
|
||||||
|
"fill-color": "#ddd",
|
||||||
|
"fill-opacity": 0.6
|
||||||
|
},
|
||||||
|
"minzoom": 12
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "building-outline",
|
||||||
|
"type": "line",
|
||||||
|
"source": "osm",
|
||||||
|
"source-layer": "building",
|
||||||
|
"paint": {
|
||||||
|
"line-color": "#999",
|
||||||
|
"line-width": 0.5
|
||||||
|
},
|
||||||
|
"minzoom": 12
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "road-motorway",
|
||||||
|
"type": "line",
|
||||||
|
"source": "osm",
|
||||||
|
"source-layer": "road",
|
||||||
|
"paint": {
|
||||||
|
"line-color": "#ff9e64",
|
||||||
|
"line-width": [
|
||||||
|
"interpolate",
|
||||||
|
[
|
||||||
|
"linear"
|
||||||
|
],
|
||||||
|
[
|
||||||
|
"zoom"
|
||||||
|
],
|
||||||
|
6,
|
||||||
|
0.5,
|
||||||
|
20,
|
||||||
|
6
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"filter": [
|
||||||
|
"==",
|
||||||
|
"class",
|
||||||
|
"motorway"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "road-trunk",
|
||||||
|
"type": "line",
|
||||||
|
"source": "osm",
|
||||||
|
"source-layer": "road",
|
||||||
|
"paint": {
|
||||||
|
"line-color": "#ffb366",
|
||||||
|
"line-width": [
|
||||||
|
"interpolate",
|
||||||
|
[
|
||||||
|
"linear"
|
||||||
|
],
|
||||||
|
[
|
||||||
|
"zoom"
|
||||||
|
],
|
||||||
|
6,
|
||||||
|
0.4,
|
||||||
|
20,
|
||||||
|
5
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"filter": [
|
||||||
|
"==",
|
||||||
|
"class",
|
||||||
|
"trunk"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "road-primary",
|
||||||
|
"type": "line",
|
||||||
|
"source": "osm",
|
||||||
|
"source-layer": "road",
|
||||||
|
"paint": {
|
||||||
|
"line-color": "#ffd699",
|
||||||
|
"line-width": [
|
||||||
|
"interpolate",
|
||||||
|
[
|
||||||
|
"linear"
|
||||||
|
],
|
||||||
|
[
|
||||||
|
"zoom"
|
||||||
|
],
|
||||||
|
6,
|
||||||
|
0.3,
|
||||||
|
20,
|
||||||
|
4
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"filter": [
|
||||||
|
"==",
|
||||||
|
"class",
|
||||||
|
"primary"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "road-secondary",
|
||||||
|
"type": "line",
|
||||||
|
"source": "osm",
|
||||||
|
"source-layer": "road",
|
||||||
|
"paint": {
|
||||||
|
"line-color": "#fff4cc",
|
||||||
|
"line-width": [
|
||||||
|
"interpolate",
|
||||||
|
[
|
||||||
|
"linear"
|
||||||
|
],
|
||||||
|
[
|
||||||
|
"zoom"
|
||||||
|
],
|
||||||
|
8,
|
||||||
|
0.1,
|
||||||
|
20,
|
||||||
|
3
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"filter": [
|
||||||
|
"==",
|
||||||
|
"class",
|
||||||
|
"secondary"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "road-tertiary",
|
||||||
|
"type": "line",
|
||||||
|
"source": "osm",
|
||||||
|
"source-layer": "road",
|
||||||
|
"paint": {
|
||||||
|
"line-color": "#ffffff",
|
||||||
|
"line-width": [
|
||||||
|
"interpolate",
|
||||||
|
[
|
||||||
|
"linear"
|
||||||
|
],
|
||||||
|
[
|
||||||
|
"zoom"
|
||||||
|
],
|
||||||
|
10,
|
||||||
|
0.05,
|
||||||
|
20,
|
||||||
|
2
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"filter": [
|
||||||
|
"==",
|
||||||
|
"class",
|
||||||
|
"tertiary"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "road-path",
|
||||||
|
"type": "line",
|
||||||
|
"source": "osm",
|
||||||
|
"source-layer": "road",
|
||||||
|
"paint": {
|
||||||
|
"line-color": "#cccccc",
|
||||||
|
"line-width": 0.5,
|
||||||
|
"line-dasharray": [
|
||||||
|
2,
|
||||||
|
2
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"filter": [
|
||||||
|
"in",
|
||||||
|
"class",
|
||||||
|
"path",
|
||||||
|
"footway",
|
||||||
|
"cycleway"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "railway",
|
||||||
|
"type": "line",
|
||||||
|
"source": "osm",
|
||||||
|
"source-layer": "road",
|
||||||
|
"paint": {
|
||||||
|
"line-color": "#999",
|
||||||
|
"line-width": 1,
|
||||||
|
"line-dasharray": [
|
||||||
|
1,
|
||||||
|
1
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"filter": [
|
||||||
|
"==",
|
||||||
|
"class",
|
||||||
|
"rail"
|
||||||
|
],
|
||||||
|
"minzoom": 10
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "poi-icon",
|
||||||
|
"type": "symbol",
|
||||||
|
"source": "osm",
|
||||||
|
"source-layer": "poi",
|
||||||
|
"layout": {
|
||||||
|
"text-field": [
|
||||||
|
"get",
|
||||||
|
"name_en"
|
||||||
|
],
|
||||||
|
"text-font": [
|
||||||
|
"Open Sans Regular"
|
||||||
|
],
|
||||||
|
"text-offset": [
|
||||||
|
0,
|
||||||
|
0.5
|
||||||
|
],
|
||||||
|
"text-size": 10
|
||||||
|
},
|
||||||
|
"paint": {
|
||||||
|
"text-color": "#333",
|
||||||
|
"text-halo-color": "#fff",
|
||||||
|
"text-halo-width": 1
|
||||||
|
},
|
||||||
|
"minzoom": 14
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "place-city",
|
||||||
|
"type": "symbol",
|
||||||
|
"source": "osm",
|
||||||
|
"source-layer": "place",
|
||||||
|
"layout": {
|
||||||
|
"text-field": [
|
||||||
|
"get",
|
||||||
|
"name_en"
|
||||||
|
],
|
||||||
|
"text-font": [
|
||||||
|
"Open Sans Bold"
|
||||||
|
],
|
||||||
|
"text-size": [
|
||||||
|
"interpolate",
|
||||||
|
[
|
||||||
|
"linear"
|
||||||
|
],
|
||||||
|
[
|
||||||
|
"zoom"
|
||||||
|
],
|
||||||
|
5,
|
||||||
|
12,
|
||||||
|
14,
|
||||||
|
20
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"paint": {
|
||||||
|
"text-color": "#222",
|
||||||
|
"text-halo-color": "#fff",
|
||||||
|
"text-halo-width": 2
|
||||||
|
},
|
||||||
|
"filter": [
|
||||||
|
"==",
|
||||||
|
"class",
|
||||||
|
"city"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "place-town",
|
||||||
|
"type": "symbol",
|
||||||
|
"source": "osm",
|
||||||
|
"source-layer": "place",
|
||||||
|
"layout": {
|
||||||
|
"text-field": [
|
||||||
|
"get",
|
||||||
|
"name_en"
|
||||||
|
],
|
||||||
|
"text-font": [
|
||||||
|
"Open Sans Regular"
|
||||||
|
],
|
||||||
|
"text-size": [
|
||||||
|
"interpolate",
|
||||||
|
[
|
||||||
|
"linear"
|
||||||
|
],
|
||||||
|
[
|
||||||
|
"zoom"
|
||||||
|
],
|
||||||
|
7,
|
||||||
|
10,
|
||||||
|
14,
|
||||||
|
14
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"paint": {
|
||||||
|
"text-color": "#555",
|
||||||
|
"text-halo-color": "#fff",
|
||||||
|
"text-halo-width": 1
|
||||||
|
},
|
||||||
|
"filter": [
|
||||||
|
"==",
|
||||||
|
"class",
|
||||||
|
"town"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "place-village",
|
||||||
|
"type": "symbol",
|
||||||
|
"source": "osm",
|
||||||
|
"source-layer": "place",
|
||||||
|
"layout": {
|
||||||
|
"text-field": [
|
||||||
|
"get",
|
||||||
|
"name_en"
|
||||||
|
],
|
||||||
|
"text-font": [
|
||||||
|
"Open Sans Regular"
|
||||||
|
],
|
||||||
|
"text-size": [
|
||||||
|
"interpolate",
|
||||||
|
[
|
||||||
|
"linear"
|
||||||
|
],
|
||||||
|
[
|
||||||
|
"zoom"
|
||||||
|
],
|
||||||
|
10,
|
||||||
|
8,
|
||||||
|
14,
|
||||||
|
12
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"paint": {
|
||||||
|
"text-color": "#777",
|
||||||
|
"text-halo-color": "#fff",
|
||||||
|
"text-halo-width": 0.5
|
||||||
|
},
|
||||||
|
"filter": [
|
||||||
|
"==",
|
||||||
|
"class",
|
||||||
|
"village"
|
||||||
|
],
|
||||||
|
"minzoom": 10
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
20
config/tileserver.json
Normal file
20
config/tileserver.json
Normal file
|
|
@ -0,0 +1,20 @@
|
||||||
|
{
|
||||||
|
"options": {
|
||||||
|
"paths": {
|
||||||
|
"fonts": "/data/fonts",
|
||||||
|
"sprites": "/data/sprites",
|
||||||
|
"styles": "/data/styles",
|
||||||
|
"mbtiles": "/data"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"styles": {
|
||||||
|
"osm-intl": {
|
||||||
|
"style": "osm-intl.json"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"data": {
|
||||||
|
"osm": {
|
||||||
|
"mbtiles": "osm.mbtiles"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -17,23 +17,22 @@ services:
|
||||||
start_period: 10s
|
start_period: 10s
|
||||||
|
|
||||||
tileserver:
|
tileserver:
|
||||||
image: ghcr.io/maptiler/tileserver-gl:latest
|
image: maptiler/tileserver-gl:latest
|
||||||
container_name: rd13_tileserver
|
container_name: rd13_tileserver
|
||||||
ports:
|
ports:
|
||||||
- "9983:8080"
|
- "9983:8080"
|
||||||
volumes:
|
volumes:
|
||||||
- ./data/styles:/data/styles:ro
|
- ./config/tileserver.json:/data/config.json:ro
|
||||||
|
- ./config/styles:/data/styles:ro
|
||||||
- ./data/fonts:/data/fonts:ro
|
- ./data/fonts:/data/fonts:ro
|
||||||
- ./data/sprites:/data/sprites:ro
|
- ./data/sprites:/data/sprites:ro
|
||||||
environment:
|
- ./data/osm.mbtiles:/data/osm.mbtiles:ro
|
||||||
- PMTILES_CACHE_DIR=/tmp/pmtiles-cache
|
|
||||||
- NODE_ENV=production
|
|
||||||
restart: unless-stopped
|
restart: unless-stopped
|
||||||
healthcheck:
|
healthcheck:
|
||||||
test: ["CMD", "wget", "--quiet", "--tries=1", "--spider", "http://localhost:8080/health"]
|
test: ["CMD", "node", "-e", "require('http').get('http://localhost:8080/health', r => process.exit(r.statusCode === 200 ? 0 : 1))"]
|
||||||
interval: 30s
|
interval: 30s
|
||||||
timeout: 10s
|
timeout: 10s
|
||||||
retries: 3
|
retries: 3
|
||||||
start_period: 10s
|
start_period: 30s
|
||||||
depends_on:
|
depends_on:
|
||||||
- martin
|
- martin
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue