Skip to content

Commit 05db04d

Browse files
authored
Merge pull request #663 from OpenHistoricalMap/staging
Production release - transport lines updates
2 parents 6c0b286 + ebb10a2 commit 05db04d

File tree

8 files changed

+71
-120
lines changed

8 files changed

+71
-120
lines changed

hetzner/tiler/tiler.production.yml

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ services:
2626
# imposm3
2727
imposm_production:
2828
container_name: tiler_imposm_production
29-
image: ghcr.io/openhistoricalmap/tiler-imposm:0.0.1-0.dev.git.3175.hbdd6021
29+
image: ghcr.io/openhistoricalmap/tiler-imposm:0.0.1-0.dev.git.3183.h59d5a56
3030
volumes:
3131
- tiler_production_imposmdata:/mnt/data
3232
command:
@@ -91,7 +91,7 @@ services:
9191

9292
tile_global_seeding_production:
9393
container_name: tiler_global_seeding_production
94-
image: ghcr.io/openhistoricalmap/tiler-server:0.0.1-0.dev.git.3061.h8fd5171
94+
image: ghcr.io/openhistoricalmap/tiler-server:0.0.1-0.dev.git.3175.hbdd6021
9595
env_file:
9696
- .env.production
9797
volumes:
@@ -111,7 +111,7 @@ services:
111111

112112
tile_coverage_seeding_production:
113113
container_name: tiler_coverage_seeding_production
114-
image: ghcr.io/openhistoricalmap/tiler-server:0.0.1-0.dev.git.3061.h8fd5171
114+
image: ghcr.io/openhistoricalmap/tiler-server:0.0.1-0.dev.git.3175.hbdd6021
115115
env_file:
116116
- .env.production
117117
volumes:
@@ -148,10 +148,10 @@ services:
148148
volumes:
149149
tiler_production_pgdata:
150150
driver: local
151-
name: tiler_db_1212_v2
151+
name: tiler_db_18122025
152152
tiler_production_imposmdata:
153153
driver: local
154-
name: tiler_imposm_1212_v2
154+
name: tiler_imposm_18122025
155155

156156
networks:
157157
ohm_network:

hetzner/tiler/tiler.staging.yml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ services:
2121

2222
imposm_staging:
2323
container_name: tiler_imposm_staging
24-
image: ghcr.io/openhistoricalmap/tiler-imposm:0.0.1-0.dev.git.3175.hbdd6021
24+
image: ghcr.io/openhistoricalmap/tiler-imposm:0.0.1-0.dev.git.3183.h59d5a56
2525
volumes:
2626
- tiler_staging_imposmdata:/mnt/data
2727
command:
@@ -106,10 +106,10 @@ services:
106106
volumes:
107107
tiler_staging_pgdata:
108108
driver: local
109-
name: tiler_db_1512
109+
name: tiler_db_1212_v2
110110
tiler_staging_imposmdata:
111111
driver: local
112-
name: tiler_imposm_11512
112+
name: tiler_imposm_1212_v2
113113

114114
networks:
115115
ohm_network:

images/tiler-imposm/Dockerfile

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,10 +39,11 @@ RUN git clone https://github.com/OpenHistoricalMap/DateFunctions-plpgsql.git /us
3939

4040
WORKDIR /go
4141
ENV GOPATH /go
42+
RUN echo "Version v0.14.2"
4243
RUN git clone https://github.com/omniscale/imposm3.git $GOPATH/src/github.com/omniscale/imposm3
4344

4445
WORKDIR $GOPATH/src/github.com/omniscale/imposm3
45-
RUN git checkout v0.14.0
46+
RUN git checkout v0.14.2
4647

4748

4849
# Apply fixes or patches (if necessary)

images/tiler-imposm/config/layers/transport_lines.json

Lines changed: 1 addition & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -7,43 +7,7 @@
77
"source:datetime"
88
]
99
},
10-
"generalized_tables": {
11-
"transport_lines_z5": {
12-
"source": "transport_lines_z6",
13-
"sql_filter": null,
14-
"tolerance": 200
15-
},
16-
"transport_lines_z6": {
17-
"source": "transport_lines_z7",
18-
"sql_filter": null,
19-
"tolerance": 150
20-
},
21-
"transport_lines_z7": {
22-
"source": "transport_lines_z8",
23-
"sql_filter": "type IN ('motorway', 'motorway_link', 'trunk', 'trunk_link', 'construction', 'primary', 'primary_link', 'rail')",
24-
"tolerance": 100
25-
},
26-
"transport_lines_z8": {
27-
"source": "transport_lines_z9",
28-
"sql_filter": "type IN ('motorway', 'motorway_link', 'trunk', 'trunk_link', 'construction', 'primary', 'primary_link', 'rail', 'secondary', 'secondary_link')",
29-
"tolerance": 50
30-
},
31-
"transport_lines_z9": {
32-
"source": "transport_lines_z10_11",
33-
"sql_filter": "type IN ('motorway', 'motorway_link', 'trunk', 'trunk_link', 'construction', 'primary', 'primary_link', 'rail', 'secondary', 'secondary_link', 'tertiary', 'tertiary_link')",
34-
"tolerance": 25
35-
},
36-
"transport_lines_z10_11": {
37-
"source": "transport_lines_z12_13",
38-
"sql_filter": "type IN ('motorway', 'motorway_link', 'trunk', 'trunk_link', 'construction', 'primary', 'primary_link', 'rail', 'secondary', 'secondary_link', 'tertiary', 'tertiary_link', 'taxiway', 'runway')",
39-
"tolerance": 15
40-
},
41-
"transport_lines_z12_13": {
42-
"source": "transport_lines",
43-
"sql_filter": "type IN ('motorway', 'motorway_link', 'trunk', 'trunk_link', 'construction', 'primary', 'primary_link', 'rail', 'secondary', 'secondary_link', 'tertiary', 'tertiary_link', 'miniature', 'narrow_gauge', 'dismantled', 'abandoned', 'disused', 'razed', 'light_rail', 'preserved', 'proposed', 'tram', 'funicular', 'monorail', 'taxiway', 'runway', 'raceway', 'residential', 'service', 'unclassified') OR class IN ('railway', 'route')",
44-
"tolerance": 5
45-
}
46-
},
10+
"generalized_tables": {},
4711
"tables": {
4812
"transport_lines": {
4913
"fields": [

images/tiler-imposm/config/layers/transport_multilines.json

Lines changed: 1 addition & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -7,43 +7,7 @@
77
"source:datetime"
88
]
99
},
10-
"generalized_tables": {
11-
"transport_multilines_z5": {
12-
"source": "transport_multilines_z6",
13-
"sql_filter": null,
14-
"tolerance": 200
15-
},
16-
"transport_multilines_z6": {
17-
"source": "transport_multilines_z7",
18-
"sql_filter": null,
19-
"tolerance": 150
20-
},
21-
"transport_multilines_z7": {
22-
"source": "transport_multilines_z8",
23-
"sql_filter": "type IN ('motorway', 'motorway_link', 'trunk', 'trunk_link', 'construction', 'primary', 'primary_link', 'rail')",
24-
"tolerance": 100
25-
},
26-
"transport_multilines_z8": {
27-
"source": "transport_multilines_z9",
28-
"sql_filter": "type IN ('motorway', 'motorway_link', 'trunk', 'trunk_link', 'construction', 'primary', 'primary_link', 'rail', 'secondary', 'secondary_link')",
29-
"tolerance": 50
30-
},
31-
"transport_multilines_z9": {
32-
"source": "transport_multilines_z10_11",
33-
"sql_filter": "type IN ('motorway', 'motorway_link', 'trunk', 'trunk_link', 'construction', 'primary', 'primary_link', 'rail', 'secondary', 'secondary_link', 'tertiary', 'tertiary_link')",
34-
"tolerance": 25
35-
},
36-
"transport_multilines_z10_11": {
37-
"source": "transport_multilines_z12_13",
38-
"sql_filter": "type IN ('motorway', 'motorway_link', 'trunk', 'trunk_link', 'construction', 'primary', 'primary_link', 'rail', 'secondary', 'secondary_link', 'tertiary', 'tertiary_link', 'taxiway', 'runway')",
39-
"tolerance": 15
40-
},
41-
"transport_multilines_z12_13": {
42-
"source": "transport_multilines",
43-
"sql_filter": "type IN ('motorway', 'motorway_link', 'trunk', 'trunk_link', 'construction', 'primary', 'primary_link', 'rail', 'secondary', 'secondary_link', 'tertiary', 'tertiary_link', 'miniature', 'narrow_gauge', 'dismantled', 'abandoned', 'disused', 'razed', 'light_rail', 'preserved', 'proposed', 'tram', 'funicular', 'monorail', 'taxiway', 'runway', 'raceway', 'residential', 'service', 'unclassified') OR class IN ('railway', 'route')",
44-
"tolerance": 5
45-
}
46-
},
10+
"generalized_tables": {},
4711
"tables": {
4812
"transport_multilines": {
4913
"fields": [

images/tiler-imposm/queries/ohm_mviews/transport_lines.sql

Lines changed: 57 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -2,48 +2,66 @@
22
-- Function: create_transport_lines_mview
33
-- Description:
44
-- Creates a materialized view that merges transport lines from:
5-
-- - `lines_table` (ways: e.g. highway, railway),
6-
-- - `multilines_table` (relations: e.g. route relations).
5+
-- - `osm_transport_lines` (ways: e.g. highway, railway),
6+
-- - `osm_transport_multilines` (relations: e.g. route relations).
77
--
8-
-- Each row gets a hash-based `id` and is marked with a `source_type`
9-
-- ('way' or 'relation'). Multilingual name columns are added.
8+
-- Each row gets a concatenated `id` (id + osm_id) and is marked with a
9+
-- `source_type` ('way' or 'relation'). Multilingual name columns are added.
10+
-- Supports geometry simplification and filtering by type/class.
1011
--
1112
-- Parameters:
12-
-- lines_table TEXT - Table with way-based transport lines.
13-
-- multilines_table TEXT - Table with relation-based transport lines.
14-
-- view_name TEXT - Final materialized view name.
13+
-- view_name TEXT - Final materialized view name.
14+
-- simplified_tolerance INTEGER - Tolerance for ST_Simplify (0 = no simplification).
15+
-- types TEXT[] - Array of types to include (use ARRAY['*'] for all).
16+
-- classes TEXT[] - Array of classes to include (use ARRAY['*'] for all).
1517
--
1618
-- Notes:
17-
-- - Input tables must include geometry, osm_id, type, class, name, and transport tags.
19+
-- - Filtering uses OR logic: (type IN types) OR (class IN classes).
1820
-- - Only valid geometries (LineString) are included from relation sources.
1921
-- - View uses GiST index on geometry and unique index on `id`.
2022
-- ============================================================================
2123

2224
DROP FUNCTION IF EXISTS create_transport_lines_mview;
2325

2426
CREATE OR REPLACE FUNCTION create_transport_lines_mview(
25-
lines_table TEXT,
26-
multilines_table TEXT,
27-
view_name TEXT
27+
view_name TEXT,
28+
simplified_tolerance INTEGER,
29+
types TEXT[],
30+
classes TEXT[]
2831
)
2932
RETURNS void AS $$
3033
DECLARE
3134
lang_columns TEXT := get_language_columns();
3235
tmp_view_name TEXT := view_name || '_tmp';
3336
unique_columns TEXT := 'id';
37+
type_filter TEXT;
38+
class_filter TEXT;
3439
sql_create TEXT;
3540
BEGIN
41+
-- Build type filter: '*' means all types
42+
IF types @> ARRAY['*'] THEN
43+
type_filter := '1=1';
44+
ELSE
45+
type_filter := format('type = ANY(%L)', types);
46+
END IF;
47+
48+
-- Build class filter: '*' means all classes
49+
IF classes @> ARRAY['*'] THEN
50+
class_filter := '1=1';
51+
ELSE
52+
class_filter := format('class = ANY(%L)', classes);
53+
END IF;
54+
3655
sql_create := format($sql$
3756
CREATE MATERIALIZED VIEW %I AS
3857
WITH combined AS (
3958
SELECT
40-
md5(
41-
COALESCE(CAST(osm_id AS TEXT), '') || '_' ||
42-
COALESCE(type, '') || '_' ||
43-
COALESCE(class, '')
44-
) AS id,
59+
(COALESCE(CAST(id AS TEXT), '') || '_' || COALESCE(CAST(osm_id AS TEXT), '')) AS id,
4560
ABS(osm_id) AS osm_id,
46-
geometry,
61+
CASE
62+
WHEN %s > 0 THEN ST_Simplify(geometry, %s)
63+
ELSE geometry
64+
END AS geometry,
4765
-- Detect highways in construcion https://github.com/OpenHistoricalMap/issues/issues/1151
4866
CASE
4967
WHEN highway = 'construction' THEN
@@ -77,20 +95,20 @@ BEGIN
7795
NULL AS member,
7896
'way' AS source_type,
7997
%s
80-
FROM %I
98+
FROM osm_transport_lines
8199
WHERE geometry IS NOT NULL
100+
AND ( %s
101+
OR %s)
82102

83103
UNION ALL
84104

85105
SELECT
86-
md5(
87-
COALESCE(CAST(osm_id AS TEXT), '') || '_' ||
88-
COALESCE(CAST(member AS TEXT), '') || '_' ||
89-
COALESCE(type, '') || '_' ||
90-
COALESCE(class, '')
91-
) AS id,
106+
(COALESCE(CAST(id AS TEXT), '') || '_' || COALESCE(CAST(osm_id AS TEXT), '')) AS id,
92107
ABS(osm_id) AS osm_id,
93-
geometry,
108+
CASE
109+
WHEN %s > 0 THEN ST_Simplify(geometry, %s)
110+
ELSE geometry
111+
END AS geometry,
94112
CASE
95113
WHEN highway = 'construction' THEN
96114
-- If the 'construction' tag has a value, append '_construction'. Otherwise, use 'road_construction'.
@@ -123,12 +141,16 @@ BEGIN
123141
member,
124142
'relation' AS source_type,
125143
%s
126-
FROM %I
144+
FROM osm_transport_multilines
127145
WHERE ST_GeometryType(geometry) = 'ST_LineString' AND geometry IS NOT NULL
146+
AND (%s
147+
OR %s)
128148
)
129149
SELECT DISTINCT ON (id) *
130150
FROM combined;
131-
$sql$, tmp_view_name, lang_columns, lines_table, lang_columns, multilines_table);
151+
$sql$, tmp_view_name,
152+
simplified_tolerance, simplified_tolerance, lang_columns, type_filter, class_filter,
153+
simplified_tolerance, simplified_tolerance, lang_columns, type_filter, class_filter);
132154

133155
PERFORM finalize_materialized_view(
134156
tmp_view_name,
@@ -142,11 +164,11 @@ $$ LANGUAGE plpgsql;
142164
-- ============================================================================
143165
-- Create materialized views for transport lines
144166
-- ============================================================================
145-
SELECT create_transport_lines_mview('osm_transport_lines_z5', 'osm_transport_multilines_z5', 'mv_transport_lines_z5');
146-
SELECT create_transport_lines_mview('osm_transport_lines_z6', 'osm_transport_multilines_z6', 'mv_transport_lines_z6');
147-
SELECT create_transport_lines_mview('osm_transport_lines_z7', 'osm_transport_multilines_z7', 'mv_transport_lines_z7');
148-
SELECT create_transport_lines_mview('osm_transport_lines_z8', 'osm_transport_multilines_z8', 'mv_transport_lines_z8');
149-
SELECT create_transport_lines_mview('osm_transport_lines_z9', 'osm_transport_multilines_z9', 'mv_transport_lines_z9');
150-
SELECT create_transport_lines_mview('osm_transport_lines_z10_11', 'osm_transport_multilines_z10_11', 'mv_transport_lines_z10_11');
151-
SELECT create_transport_lines_mview('osm_transport_lines_z12_13', 'osm_transport_multilines_z12_13', 'mv_transport_lines_z12_13');
152-
SELECT create_transport_lines_mview('osm_transport_lines', 'osm_transport_multilines', 'mv_transport_lines_z14_20');
167+
SELECT create_transport_lines_mview('mv_transport_lines_z5', 2000, ARRAY['motorway', 'motorway_link', 'trunk', 'trunk_link', 'construction', 'primary', 'primary_link', 'rail'], ARRAY['railway']);
168+
SELECT create_transport_lines_mview('mv_transport_lines_z6', 1500, ARRAY['motorway', 'motorway_link', 'trunk', 'trunk_link', 'construction', 'primary', 'primary_link', 'rail'], ARRAY['railway']);
169+
SELECT create_transport_lines_mview('mv_transport_lines_z7', 1000, ARRAY['motorway', 'motorway_link', 'trunk', 'trunk_link', 'construction', 'primary', 'primary_link', 'rail'], ARRAY['railway']);
170+
SELECT create_transport_lines_mview('mv_transport_lines_z8', 500, ARRAY['motorway', 'motorway_link', 'trunk', 'trunk_link', 'construction', 'primary', 'primary_link', 'rail', 'secondary', 'secondary_link'], ARRAY['railway']);
171+
SELECT create_transport_lines_mview('mv_transport_lines_z9', 200, ARRAY['motorway', 'motorway_link', 'trunk', 'trunk_link', 'construction', 'primary', 'primary_link', 'rail', 'secondary', 'secondary_link', 'tertiary', 'tertiary_link'], ARRAY['railway']);
172+
SELECT create_transport_lines_mview('mv_transport_lines_z10_11', 100, ARRAY['motorway', 'motorway_link', 'trunk', 'trunk_link', 'construction', 'primary', 'primary_link', 'rail', 'secondary', 'secondary_link', 'tertiary', 'tertiary_link', 'taxiway', 'runway'], ARRAY['railway']);
173+
SELECT create_transport_lines_mview('mv_transport_lines_z12_13', 50, ARRAY['motorway', 'motorway_link', 'trunk', 'trunk_link', 'construction', 'primary', 'primary_link', 'rail', 'secondary', 'secondary_link', 'tertiary', 'tertiary_link', 'miniature', 'narrow_gauge', 'dismantled', 'abandoned', 'disused', 'razed', 'light_rail', 'preserved', 'proposed', 'tram', 'funicular', 'monorail', 'taxiway', 'runway', 'raceway', 'residential', 'service', 'unclassified'], ARRAY['railway']);
174+
SELECT create_transport_lines_mview('mv_transport_lines_z14_20', 0, ARRAY['*'], ARRAY['railway','route']);

images/tiler-imposm/start.sh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -149,7 +149,7 @@ function monitorImposmErrors() {
149149
local LOG_FILE="/tmp/imposm.log"
150150

151151
while true; do
152-
log_message "Checking for errors during minute replication import into the database"
152+
log_message "Checking minute replication import into the database"
153153

154154
# Check for connection errors specifically
155155
if grep -q "driver: bad connection" "$LOG_FILE" || grep -q "\[error\] Importing.*bad connection" "$LOG_FILE"; then

images/web/Dockerfile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ RUN apt-get update && \
2424
&& apt-get clean && rm -rf /var/lib/apt/lists/*
2525

2626
# Download OHM Website using gitsha, faster than cloning
27-
ENV OPENHISTORICALMAP_WEBSITE_GITSHA=951f691068ccecd0a60802137e58beb6f40369d1
27+
ENV OPENHISTORICALMAP_WEBSITE_GITSHA=b29601a3bdccb4e8667653a16251ec8e94d78544
2828
ENV OHM_WEBSITE_URL=https://github.com/OpenHistoricalMap/ohm-website/archive/${OPENHISTORICALMAP_WEBSITE_GITSHA}.zip
2929
RUN rm -rf $workdir/* && curl -fsSL $OHM_WEBSITE_URL -o /tmp/ohm-website.zip && \
3030
unzip /tmp/ohm-website.zip -d /tmp && \

0 commit comments

Comments
 (0)