From e66468b091506833eb5890656a0ef3a538397ab2 Mon Sep 17 00:00:00 2001 From: afischerdev Date: Thu, 6 Jul 2023 13:45:44 +0200 Subject: [PATCH 1/5] update profiles for new db tags --- misc/profiles2/fastbike.brf | 73 +- misc/profiles2/hiking-mountain.brf | 95 ++- misc/profiles2/lookups.dat | 31 +- misc/profiles2/trekking.brf | 4 +- misc/scripts/mapcreation/brouter.sql | 463 ++++++++---- misc/scripts/mapcreation/lookups_db.dat | 967 ------------------------ 6 files changed, 510 insertions(+), 1123 deletions(-) delete mode 100644 misc/scripts/mapcreation/lookups_db.dat diff --git a/misc/profiles2/fastbike.brf b/misc/profiles2/fastbike.brf index 3b9f2b8..32cfd37 100644 --- a/misc/profiles2/fastbike.brf +++ b/misc/profiles2/fastbike.brf @@ -19,15 +19,19 @@ assign validForBikes = true # Use the following switches to change behaviour -assign allow_steps = true # %allow_steps% | Set to false to disallow steps | boolean -assign allow_ferries = true # %allow_ferries% | set to false to disallow ferries | boolean -assign ignore_cycleroutes = false # %ignore_cycleroutes% | Set to true for better elevation results | boolean -assign stick_to_cycleroutes = false # %stick_to_cycleroutes% | Set to true to just follow cycleroutes | boolean -assign avoid_unsafe = false # %avoid_unsafe% | Set to true to avoid standard highways | boolean -assign considerTurnRestrictions = true # %considerTurnRestrictions% | Set to true to take turn restrictions into account | boolean -assign processUnusedTags = false # %processUnusedTags% | Set to true to output unused tags in data tab | boolean -assign consider_traffic = false # %consider_traffic% | Set to true to avoid traffic | boolean -assign allow_motorways = false # %allow_motorways% | Set to true to allow motorways (useful in Asia / Oceania for example) | boolean +assign allow_steps = true # %allow_steps% | Set to false to disallow steps | boolean +assign allow_ferries = true # %allow_ferries% | set to false to disallow ferries | boolean +assign allow_motorways = false # %allow_motorways% | Set to true to allow motorways (useful in Asia / Oceania for example) | boolean +assign ignore_cycleroutes = false # %ignore_cycleroutes% | Set to true for better elevation results | boolean +assign stick_to_cycleroutes = false # %stick_to_cycleroutes% | Set to true to just follow cycleroutes | boolean +assign avoid_unsafe = false # %avoid_unsafe% | Set to true to avoid standard highways | boolean +assign avoid_path = false # %avoid_path% | Set to true to avoid pathes | boolean + +assign consider_traffic = false # %consider_traffic% | Activate to avoid traffic | boolean +assign consider_noise = false # %consider_noise% | Activate to prefer a low-noise route | boolean +assign consider_river = false # %consider_river% | Activate to prefer a route along rivers or sees | boolean +assign consider_forest = false # %consider_forest% | Activate to prefer a route in forest or parks | boolean +assign consider_town = false # %consider_town% | Activate to bypass cities / big towns as far as possible | boolean # Change elevation parameters assign consider_elevation = true # %consider_elevation% | Set to false to ignore elevation in routing | boolean @@ -50,7 +54,9 @@ assign bikerPower = 100 # %bikerPower% | Average power (in W) provided by the assign turnInstructionMode = 1 # %turnInstructionMode% | Mode for the generated turn instructions | [0=none, 1=auto-choose, 2=locus-style, 3=osmand-style, 4=comment-style, 5=gpsies-style, 6=orux-style, 7=locus-old-style] assign turnInstructionCatchingRange = 40 # %turnInstructionCatchingRange% | Within this distance (in m) several turning instructions are combined into one and the turning angles are better approximated to the general direction | number assign turnInstructionRoundabouts = true # %turnInstructionRoundabouts% | Set to "false" to avoid generating special turning instructions for roundabouts | boolean +assign considerTurnRestrictions = true # %considerTurnRestrictions% | Set to true to take turn restrictions into account | boolean +assign processUnusedTags = false # %processUnusedTags% | Set to true to output unused tags in data tab | boolean ---context:way # following code refers to way-tags @@ -188,7 +194,52 @@ assign trafficpenalty = assign isresidentialorliving = or highway=residential|living_street living_street=yes +# add estimate tags +assign noise_penalty + switch consider_noise + switch estimated_noise_class= 0 + switch estimated_noise_class=1 0.3 + switch estimated_noise_class=2 0.5 + switch estimated_noise_class=3 0.7 + switch estimated_noise_class=4 1 + switch estimated_noise_class=5 1.2 + switch estimated_noise_class=6 1.5 0 0 + +assign no_river_penalty + switch consider_river + switch estimated_river_class= 3 + switch estimated_river_class=1 2 + switch estimated_river_class=2 1.5 + switch estimated_river_class=3 1 + switch estimated_river_class=4 0.5 + switch estimated_river_class=5 0.2 + switch estimated_river_class=6 0 99 0 + +assign no_forest_penalty + switch consider_forest + switch estimated_forest_class= 1 + switch estimated_forest_class=1 0.5 + switch estimated_forest_class=2 0.4 + switch estimated_forest_class=3 0.25 + switch estimated_forest_class=4 0.15 + switch estimated_forest_class=5 0.1 + switch estimated_forest_class=6 0 99 0 + +assign town_penalty + switch consider_town + switch estimated_town_class= 0 + switch estimated_town_class=1 0.2 + switch estimated_town_class=2 0.4 + switch estimated_town_class=3 0.6 + switch estimated_town_class=4 0.7 + switch estimated_town_class=5 0.8 + switch estimated_town_class=6 1 99 0 + assign costfactor + add town_penalty + add no_forest_penalty + add no_river_penalty + add noise_penalty switch and highway= not route=ferry 10000 switch or highway=proposed highway=abandoned 10000 @@ -210,7 +261,8 @@ assign costfactor switch highway=cycleway 1.3 switch isresidentialorliving switch isunpaved 10 1.2 switch highway=service switch isunpaved 10 1.2 - switch or highway=track or highway=road or highway=path highway=footway + switch highway=path switch avoid_path 2.1 1.1 + switch or highway=track or highway=road highway=footway switch tracktype=grade1 switch isunpaved 3 1.2 switch tracktype=grade2 switch isunpaved 10 3 switch tracktype=grade3 10.0 @@ -269,6 +321,7 @@ assign classifiermask add isbadoneway # include `smoothness=` tags in the response's WayTags for track analysis assign dummyUsage = smoothness= + ---context:node # following code refers to node tags assign defaultaccess diff --git a/misc/profiles2/hiking-mountain.brf b/misc/profiles2/hiking-mountain.brf index 8ed13d9..fc61759 100644 --- a/misc/profiles2/hiking-mountain.brf +++ b/misc/profiles2/hiking-mountain.brf @@ -10,16 +10,22 @@ ---context:global -assign consider_elevation true # %consider_elevation% | Set to false, otherwise less interesting flat roads are chosen | boolean +assign consider_elevation = false # %consider_elevation% | Activate to prefer a route with few elevation meters | boolean +assign consider_noise = false # %consider_noise% | Activate to prefer a low-noise route | boolean +assign consider_river = false # %consider_river% | Activate to prefer a route along rivers or sees | boolean +assign consider_forest = false # %consider_forest% | Activate to prefer a route in forest or green areas| boolean +assign consider_town = false # %consider_town% | Activate to bypass cities / big towns as far as possible | boolean +assign avoid_path = false # %avoid_path% | Activate to avoid pathes | boolean +assign consider_traffic = 1 # %consider_traffic% | how do you plan to drive the tour? | [1=as cyclist alone in the week, 0.5=as cyclist alone at weekend, 0.3 =with a group of cyclists, 0.1=with a group of cyclists at week-end] assign shortest_way 0 # 0 as default, duplicate shortest standard profile, SAC access limit ignored for now -assign iswet 0 # %iswet% | tries to prevent muddy boots and wet buttocks | boolean -assign hiking_routes_preference 0.20 # %hiking_routes_preference% | Increases cost of non hiking routes by multiplier 1 + hiking_routes_preference (0.10 to 2.0) | number +assign iswet 0 # %iswet% | tries to prevent muddy boots and wet buttocks | boolean +assign hiking_routes_preference 0.20 # %hiking_routes_preference% | Increases cost of non hiking routes by multiplier 1 + hiking_routes_preference (0.10 to 2.0) | number -assign Offroad_factor 0.0 # default 0.0, see ****), see also https://github.com/poutnikl/Brouter-profiles/wiki/Trekking-MTB-Profiles---legend +assign Offroad_factor 0.0 # default 0.0, see ****), see also https://github.com/poutnikl/Brouter-profiles/wiki/Trekking-MTB-Profiles---legend -assign path_preference 0.0 # 0.0 as default, try 20.0 to penalize nonpath ways a/o paved ways +assign path_preference 0.0 # 0.0 as default, try 20.0 to penalize nonpath ways a/o paved ways #SAC - mountain hiking - see http://wiki.openstreetmap.org/wiki/Key:sac_scale @@ -312,7 +318,84 @@ assign rawcostfactor2 else if is_ldhr then rawcostfactor # is hiking route else multiply rawcostfactor nonhiking_route_penalty -assign costfactor if shortest_way then ( add 1 accesspenalty ) +assign noise_penalty + switch consider_noise + switch estimated_noise_class= 0 + switch estimated_noise_class=1 0.3 + switch estimated_noise_class=2 0.5 + switch estimated_noise_class=3 0.7 + switch estimated_noise_class=4 1 + switch estimated_noise_class=5 1.2 + switch estimated_noise_class=6 1.5 0 0 + +assign no_river_penalty + switch consider_river + switch estimated_river_class= 3 + switch estimated_river_class=1 2 + switch estimated_river_class=2 1.5 + switch estimated_river_class=3 1 + switch estimated_river_class=4 0.5 + switch estimated_river_class=5 0.2 + switch estimated_river_class=6 0 99 0 + +assign no_forest_penalty + switch consider_forest + switch estimated_forest_class= 1 + switch estimated_forest_class=1 0.5 + switch estimated_forest_class=2 0.4 + switch estimated_forest_class=3 0.25 + switch estimated_forest_class=4 0.15 + switch estimated_forest_class=5 0.1 + switch estimated_forest_class=6 0 99 0 + +assign town_penalty + switch consider_town + switch estimated_town_class= 0 + switch estimated_town_class=1 0.5 + switch estimated_town_class=2 0.9 + switch estimated_town_class=3 1.2 + switch estimated_town_class=4 1.3 + switch estimated_town_class=5 1.4 + switch estimated_town_class=6 1.6 99 0 + +assign trafficpenalty = +# if any_cycleway then 0 +# else +if highway=primary|primary_link then + ( + if estimated_traffic_class=1|2 then 0 + else if estimated_traffic_class=3 then multiply 0.4 consider_traffic + else if estimated_traffic_class=4 then multiply 0.8 consider_traffic + else if estimated_traffic_class=5 then multiply 1 consider_traffic + else if estimated_traffic_class=6|7 then multiply 2 consider_traffic + else multiply 0.6 consider_traffic + ) + else if highway=secondary|secondary_link then + ( + if estimated_traffic_class=1|2 then multiply 0.1 consider_traffic + else if estimated_traffic_class=3 then multiply 0.3 consider_traffic + else if estimated_traffic_class=4 then multiply 0.7 consider_traffic + else if estimated_traffic_class=5 then multiply 1 consider_traffic + else if estimated_traffic_class=6|7 then multiply 1.5 consider_traffic + else multiply 0.2 consider_traffic + ) + else if highway=tertiary|tertiary_link then + ( + if estimated_traffic_class=1|2 then multiply 0.1 consider_traffic + else if estimated_traffic_class=3 then multiply 0.2 consider_traffic + else if estimated_traffic_class=4 then multiply 0.5 consider_traffic + else multiply if estimated_traffic_class=5|6|7 then multiply 1 consider_traffic + else 0.1 consider_traffic + ) + else 0 + +assign costfactor +add town_penalty + add no_forest_penalty + add no_river_penalty + add noise_penalty + add trafficpenalty +if shortest_way then ( add 1 accesspenalty ) else max 1.0 add rawcostfactor2 Offroad_factor_for_road assign downhillcostfactor diff --git a/misc/profiles2/lookups.dat b/misc/profiles2/lookups.dat index 5a9599e..e8dafc1 100644 --- a/misc/profiles2/lookups.dat +++ b/misc/profiles2/lookups.dat @@ -1,5 +1,5 @@ ---lookupversion:10 ----minorversion:13 +---minorversion:14 ---context:way @@ -683,6 +683,35 @@ construction;0000000037 driveway construction;0000000021 mini_roundabout construction;0000000020 turning_loop +estimated_forest_class;0000000001 1 +estimated_forest_class;0000000001 2 +estimated_forest_class;0000000001 3 +estimated_forest_class;0000000001 4 +estimated_forest_class;0000000001 5 +estimated_forest_class;0000000001 6 + +estimated_noise_class;0000000001 1 +estimated_noise_class;0000000001 2 +estimated_noise_class;0000000001 3 +estimated_noise_class;0000000001 4 +estimated_noise_class;0000000001 5 +estimated_noise_class;0000000001 6 + +estimated_river_class;0000000001 1 +estimated_river_class;0000000001 2 +estimated_river_class;0000000001 3 +estimated_river_class;0000000001 4 +estimated_river_class;0000000001 5 +estimated_river_class;0000000001 6 + +estimated_town_class;0000000001 1 +estimated_town_class;0000000001 2 +estimated_town_class;0000000001 3 +estimated_town_class;0000000001 4 +estimated_town_class;0000000001 5 +estimated_town_class;0000000001 6 + + ---context:node highway;0001314954 bus_stop diff --git a/misc/profiles2/trekking.brf b/misc/profiles2/trekking.brf index c2a6288..e10a34b 100644 --- a/misc/profiles2/trekking.brf +++ b/misc/profiles2/trekking.brf @@ -14,8 +14,6 @@ assign allow_ferries = true # %allow_ferries% | set to false to dis assign ignore_cycleroutes = false # %ignore_cycleroutes% | Set to true for better elevation results | boolean assign stick_to_cycleroutes = false # %stick_to_cycleroutes% | Set to true to just follow cycleroutes | boolean assign avoid_unsafe = false # %avoid_unsafe% | Set to true to avoid standard highways | boolean -assign considerTurnRestrictions = true # %considerTurnRestrictions% | Set to true to take turn restrictions into account | boolean -assign processUnusedTags = false # %processUnusedTags% | Set to true to output unused tags in data tab | boolean # Change elevation parameters assign consider_elevation = true # %consider_elevation% | Set to false to ignore elevation in routing | boolean @@ -38,7 +36,9 @@ assign bikerPower = 100 # %bikerPower% | Average power (in W) provided by the assign turnInstructionMode = 1 # %turnInstructionMode% | Mode for the generated turn instructions | [0=none, 1=auto-choose, 2=locus-style, 3=osmand-style, 4=comment-style, 5=gpsies-style, 6=orux-style, 7=locus-old-style] assign turnInstructionCatchingRange = 40 # %turnInstructionCatchingRange% | Within this distance (in m) several turning instructions are combined into one and the turning angles are better approximated to the general direction | number assign turnInstructionRoundabouts = true # %turnInstructionRoundabouts% | Set to "false" to avoid generating special turning instructions for roundabouts | boolean +assign considerTurnRestrictions = true # %considerTurnRestrictions% | Set to true to take turn restrictions into account | boolean +assign processUnusedTags = false # %processUnusedTags% | Set to true to output unused tags in data tab | boolean ---context:way # following code refers to way-tags diff --git a/misc/scripts/mapcreation/brouter.sql b/misc/scripts/mapcreation/brouter.sql index 97b2612..14aa658 100644 --- a/misc/scripts/mapcreation/brouter.sql +++ b/misc/scripts/mapcreation/brouter.sql @@ -4,35 +4,56 @@ SET client_encoding TO UTF8; SELECT - NOW(); + now(); + +CREATE OR REPLACE FUNCTION isnumeric (string text) + RETURNS bool + AS $$ +BEGIN + PERFORM + string::numeric; + RETURN TRUE; +EXCEPTION + WHEN invalid_text_representation THEN + RETURN FALSE; +END; + +$$ +LANGUAGE plpgsql +SECURITY INVOKER; -- create new tables for tuning SELECT - OSM_ID::bigint, - HIGHWAY, - WATERWAY, - WIDTH, - MAXSPEED, - CASE WHEN MAXSPEED IS NULL THEN + osm_id::bigint, + highway, + waterway, + width, + maxspeed, + CASE WHEN maxspeed IS NULL THEN 0 - WHEN NOT (MAXSPEED ~ '^[0-9\.]+$') THEN + --when not isnumeric(maxspeed) then 0 + WHEN NOT (maxspeed ~ '^\d+(\.\d+)?$') THEN 0 - WHEN MAXSPEED::numeric > '105' THEN + WHEN maxspeed::numeric > '105' THEN 1 - WHEN MAXSPEED::numeric > '75' THEN + WHEN maxspeed::numeric > '75' THEN 2 ELSE 3 - END AS MAXSPEED_CLASS, - ST_BUFFER (WAY, 50) AS WAY INTO TABLE OSM_LINE_BUF_50 + END AS maxspeed_class + -- "buffer radius" was initially created with 50 meters at a lat 50 degrees.... ==> ST_Buffer(way,50) + -- but, using geometry "projection", to get same results by a calculation of the planet (latitude between -80, +85) this value should be adapted to the latitude of the highways... +, + -- + ST_Buffer (way, 32.15 * st_length (ST_Transform (way, 3857)) / st_length (ST_Transform (way, 4326)::geography)) AS way INTO TABLE osm_line_buf_50 FROM - LINES + lines WHERE - HIGHWAY IS NOT NULL - OR WATERWAY IN ('river', 'canal'); + highway IS NOT NULL + OR waterway IN ('river', 'canal'); SELECT - NOW(); + now(); -- modify "way" by large waterways !!" (example Rhein ==> width = 400 ....) enlarge a bit the "50 meter" buffer UPDATE @@ -51,7 +72,7 @@ SELECT landuse, p.natural, p.water, - ST_Buffer (way, 50) AS way INTO TABLE osm_poly_buf_50 + ST_Buffer (way, 32.15 * st_length (ST_Transform (st_makeline (st_startpoint (way), st_centroid (way)), 3857)) / st_length (ST_Transform (st_makeline (st_startpoint (way), st_centroid (way)), 4326)::geography)) AS way INTO TABLE osm_poly_buf_50 FROM polygons p WHERE @@ -59,7 +80,7 @@ WHERE st_area (p.way) > 1000 AND p.natural IN ('water') OR (p.landuse IN ('forest', 'allotments', 'flowerbed', 'orchard', 'vineyard', 'recreation_ground', 'village_green') - OR p.leisure IN ('park', 'nature_reserve')); + OR p.leisure IN ('garden', 'park', 'nature_reserve')); SELECT osm_id::bigint, @@ -67,12 +88,28 @@ SELECT landuse, p.natural, p.water, - ST_Buffer (way, 70) AS way INTO TABLE osm_poly_buf_120 + way INTO TABLE osm_poly_no_buf +FROM + polygons p +WHERE + -- do not consider small surfaces + st_area (p.way) > 1000 + AND p.natural IN ('water') + OR (p.landuse IN ('forest', 'allotments', 'flowerbed', 'orchard', 'vineyard', 'recreation_ground', 'village_green') + OR p.leisure IN ('garden', 'park', 'nature_reserve')); + +SELECT + osm_id::bigint, + leisure, + landuse, + p.natural, + p.water, + ST_Buffer (way, 45 * st_length (ST_Transform (st_makeline (st_startpoint (way), st_centroid (way)), 3857)) / st_length (ST_Transform (st_makeline (st_startpoint (way), st_centroid (way)), 4326)::geography)) AS way INTO TABLE osm_poly_buf_120 FROM osm_poly_buf_50 p; SELECT - NOW(); + now(); -- create indexes CREATE INDEX osm_line_buf_50_idx ON public.osm_line_buf_50 USING gist (way) WITH (fillfactor = '100'); @@ -83,8 +120,9 @@ SELECT osm_id, highway, way, - ST_Expand (way, 15000) way2, - ST_Centroid (way) way0 INTO TABLE primsecter15k + ST_Expand (way, 9645 * st_length (ST_Transform (way, 3857)) / st_length (ST_Transform (way, 4326)::geography)) way2, + ST_Centroid (way) way0, + st_length (ST_Transform (way, 3857)) / st_length (ST_Transform (way, 4326)::geography) AS merca_coef INTO TABLE primsecter15k FROM lines WHERE @@ -97,7 +135,7 @@ CREATE INDEX primsecter15k_idx1 ON public.primsecter15k USING gist (way) WITH (f CREATE INDEX primsecter15k_idx0 ON public.primsecter15k USING gist (way0) WITH (fillfactor = '100'); SELECT - NOW(); + now(); -- create a new "town" table based on cities_rel (with a valid/numeric population) AND fetch by need the population from the cities table) -- clean the cities table (when population is null or population is not numeric or unusable) @@ -109,16 +147,17 @@ FROM cities a WHERE a.population IS NOT NULL - AND (a.population ~ '^[0-9\.]+$') + AND isnumeric (a.population) AND a.place IN ('town', 'city', 'municipality'); -- clean the cities_rel table (when population is not numeric or unusable) SELECT a.name AS name, + a.place AS place, a.admin_level, CASE WHEN a.population IS NOT NULL - AND (a.population ~ '^[0-9\.]+$') THEN - REPLACE(a.population, '.', '')::bigint + AND isnumeric (a.population) THEN + a.population::numeric ELSE NULL END AS population, @@ -126,60 +165,176 @@ SELECT FROM cities_rel a; +CREATE INDEX cities_ok_idx ON public.cities_ok USING gist (way) WITH (fillfactor = '100'); + +CREATE INDEX cities_rel_ok_idx ON public.cities_rel_ok USING gist (way) WITH (fillfactor = '100'); + +-- select town + population + way starting with cities_ok .... (to catch specials cases as ex. "Berlin" which is tagged with "admin_level=4") +SELECT + a.name AS name, + st_x (a.way), + st_y (a.way), + a.population, + CASE + -- limit 1 is is necessary because some osm data are inconsistent (==> 2 relations with the name " Krynki" and quite same x/y) + WHEN ( + SELECT + way + FROM + cities_rel_ok b + WHERE (b.admin_level = '8' + AND a.name = b.name + AND st_intersects (a.way, b.way)) + LIMIT 1) IS NOT NULL THEN +( + SELECT + way + FROM + cities_rel_ok b + WHERE (b.admin_level = '8' + AND a.name = b.name + AND st_intersects (a.way, b.way)) +LIMIT 1) +-- Australia admin_level=7 + WHEN ( + SELECT + way + FROM + cities_rel_ok b + WHERE (b.admin_level = '7' + AND a.name = b.name + AND st_intersects (a.way, b.way)) + LIMIT 1) IS NOT NULL THEN +( + SELECT + way + FROM + cities_rel_ok b + WHERE (b.admin_level = '7' + AND a.name = b.name + AND st_intersects (a.way, b.way)) +LIMIT 1) +-- Paris admin_level=6 + WHEN ( + SELECT + way + FROM + cities_rel_ok b + WHERE (b.admin_level = '6' + AND a.name = b.name + AND st_intersects (a.way, b.way)) + LIMIT 1) IS NOT NULL THEN +( + SELECT + way + FROM + cities_rel_ok b + WHERE (b.admin_level = '6' + AND a.name = b.name + AND st_intersects (a.way, b.way)) +LIMIT 1) +-- Berlin admin_level=4 + WHEN ( + SELECT + way + FROM + cities_rel_ok b + WHERE (b.admin_level = '4' + AND a.name = b.name + AND st_intersects (a.way, b.way)) + LIMIT 1) IS NOT NULL THEN +( + SELECT + way + FROM + cities_rel_ok b + WHERE (b.admin_level = '4' + AND a.name = b.name + AND st_intersects (a.way, b.way)) +LIMIT 1) +-- London admin_level is null + WHEN ( + SELECT + way + FROM + cities_rel_ok b + WHERE (b.admin_level IS NULL + AND b.place IN ('city', 'town') + AND a.name = b.name + AND st_intersects (a.way, b.way)) + LIMIT 1) IS NOT NULL THEN +( + SELECT + way + FROM + cities_rel_ok b + WHERE (b.admin_level IS NULL + AND b.place IN ('city', 'town') + AND a.name = b.name + AND st_intersects (a.way, b.way)) +LIMIT 1) +-- Αθήνα No DATA at all... +-- possible solution ????? no, better null! +-- else st_buffer(way, (10 *sqrt(a.population))) +-- else null +-- at least the "traffic" can be estimated (not "town) +ELSE + st_buffer (a.way, 10) + END AS way, + a.way AS way0 INTO cities_intermed3 +FROM + cities_ok a +ORDER BY + name; + -- select town + population + way starting with cities_rel_ok .... SELECT a.name AS name, + st_area (a.way) st_area, CASE WHEN a.population IS NOT NULL THEN a.population - WHEN b.population IS NOT NULL THEN - b.population + -- "max" is necessary because some osm data are inconsistent (==> 2 nodes with the name Titisee-Neustadt and quite same x/y) ELSE - NULL + ( + SELECT + max(population) + FROM + cities_intermed3 b + WHERE (a.name = b.name + AND st_intersects (a.way, b.way))) END AS population, - a.way INTO cities_intermed1 + a.way, + NULL::geometry AS way0 INTO cities_intermed4 FROM cities_rel_ok a - LEFT OUTER JOIN cities_ok b ON a.name = b.name WHERE a.admin_level = '8' ORDER BY a.name; --- select town + population + way starting with cities_ok .... (to catch specials cases as ex. "Berlin" which is tagged with "admin_level=4") -SELECT - a.name AS name, - a.population, - CASE WHEN b.way IS NOT NULL THEN - b.way - -- stupid case (ex. "Ebingen": no relation available, so no administrattive surface ... create a dummy area with 2000 m radius ! - ELSE - st_buffer (a.way, 2000) - END AS way INTO cities_intermed2 -FROM - cities_ok a - LEFT OUTER JOIN cities_rel_ok b ON a.name = b.name - AND b.way IS NOT NULL - AND b.admin_level = '8' -ORDER BY - name; - +-- merge SELECT name, - MAX(population) AS population, + max(population) AS population, way, - st_centroid (way) AS way0 INTO cities_all + max(way0) AS way0, + st_length (ST_Transform (st_makeline (st_startpoint (way), st_centroid (way)), 3857)) / st_length (ST_Transform (st_makeline (st_startpoint (way), st_centroid (way)), 4326)::geography) AS merca_coef INTO cities_intermed5 FROM (( SELECT - * + name, + population, + way, + way0 FROM - cities_intermed1 - WHERE - population IS NOT NULL) + cities_intermed3) UNION ( SELECT - * + name, + population, + way, + way0 FROM - cities_intermed2)) a + cities_intermed4)) a WHERE population IS NOT NULL -- and population > 20000 @@ -190,7 +345,20 @@ ORDER BY population; SELECT - NOW(); + name, + population, + way, + CASE WHEN way0 IS NULL THEN + st_centroid (way)::geometry + ELSE + way0::geometry + END AS way0, + merca_coef INTO TABLE cities_all +FROM + cities_intermed5; + +SELECT + now(); -- create tags for noise -- create raw data @@ -233,7 +401,7 @@ ORDER BY noise_factor DESC; SELECT - NOW(); + now(); -- aggregate data: -- on "maxspeed_class take the sum of several highways (having different maxspeed-class) union is then not done, but not very frequent @@ -241,7 +409,7 @@ SELECT SELECT losmid, lhighway, - SUM(noise_factor) AS sum_noise_factor INTO TABLE noise_tmp2 + sum(noise_factor) AS sum_noise_factor INTO TABLE noise_tmp2 FROM noise_tmp GROUP BY @@ -272,13 +440,13 @@ WHERE y.sum_noise_factor > 0.01; SELECT - COUNT(*) + count(*) FROM noise_tags; SELECT noise_class, - COUNT(*) + count(*) FROM noise_tags GROUP BY @@ -289,12 +457,12 @@ ORDER BY DROP TABLE noise_tmp2; SELECT - NOW(); + now(); -- create tags for river SELECT xid, - SUM(water_river_see) AS river_see INTO TABLE river_tmp + sum(water_river_see) AS river_see INTO TABLE river_tmp FROM ( SELECT m.osm_id AS xid, @@ -337,9 +505,9 @@ SELECT '2' WHEN y.river_see < 0.57 THEN '3' - WHEN y.river_see < 0.85 THEN + WHEN y.river_see < 0.80 THEN '4' - WHEN y.river_see < 1 THEN + WHEN y.river_see < 0.95 THEN '5' ELSE '6' @@ -350,13 +518,13 @@ WHERE y.river_see > 0.05; SELECT - COUNT(*) + count(*) FROM river_tags; SELECT river_class, - COUNT(*) + count(*) FROM river_tags GROUP BY @@ -365,7 +533,7 @@ ORDER BY river_class; SELECT - NOW(); + now(); -- create tags for forest SELECT @@ -374,11 +542,12 @@ SELECT st_area (st_intersection (m.way, ST_Union (q.way))) / st_area (m.way) AS green_factor INTO TABLE forest_tmp FROM osm_line_buf_50 AS m - INNER JOIN osm_poly_buf_50 AS q ON ST_Intersects (m.way, q.way) + INNER JOIN osm_poly_no_buf AS q ON ST_Intersects (m.way, q.way) WHERE m.highway IS NOT NULL AND ((q.landuse IN ('forest', 'allotments', 'flowerbed', 'orchard', 'vineyard', 'recreation_ground', 'village_green')) OR q.leisure IN ('garden', 'park', 'nature_reserve')) + AND (st_area (ST_Transform (q.way, 4326)::geography) / 1000000) < 5000 GROUP BY m.osm_id, m.highway, @@ -391,15 +560,15 @@ SELECT y.osm_id losmid, CASE WHEN y.green_factor < 0.1 THEN NULL - WHEN y.green_factor < 0.3 THEN + WHEN y.green_factor < 0.2 THEN '1' - WHEN y.green_factor < 0.6 THEN + WHEN y.green_factor < 0.4 THEN '2' - WHEN y.green_factor < 0.9 THEN + WHEN y.green_factor < 0.6 THEN '3' - WHEN y.green_factor < 1 THEN + WHEN y.green_factor < 0.8 THEN '4' - WHEN y.green_factor < 1.3 THEN + WHEN y.green_factor < 0.98 THEN '5' ELSE '6' @@ -410,13 +579,13 @@ WHERE y.green_factor > 0.1; SELECT - COUNT(*) + count(*) FROM forest_tags; SELECT forest_class, - COUNT(*) + count(*) FROM forest_tags GROUP BY @@ -425,7 +594,7 @@ ORDER BY forest_class; SELECT - NOW(); + now(); -- create "town" tags -- get the highways which intersect the town @@ -473,20 +642,20 @@ SELECT FROM ( SELECT losmid, - MAX(town_factor) AS town_factor + max(town_factor) AS town_factor FROM town_tmp y GROUP BY losmid) y; SELECT - COUNT(*) + count(*) FROM town_tags; SELECT town_class, - COUNT(*) + count(*) FROM town_tags GROUP BY @@ -502,23 +671,27 @@ WHERE losmid IN ( SELECT losmid FROM - forest_tags); + forest_tags + WHERE + forest_class NOT IN ('1')); DELETE FROM town_tags WHERE losmid IN ( SELECT losmid FROM - river_tags); + river_tags + WHERE + river_class NOT IN ('1')); SELECT - COUNT(*) + count(*) FROM town_tags; SELECT town_class, - COUNT(*) + count(*) FROM town_tags GROUP BY @@ -527,7 +700,7 @@ ORDER BY town_class; SELECT - NOW(); + now(); ------------------------------------------- -- create tags for TRAFFIC @@ -543,21 +716,21 @@ SELECT -- SUM of (population of each town < 100 km) / ( town-radius + 2500 + dist(segment-position to the town) ** 2 ) -- town-radius is calculated as sqrt(population) SELECT - NOW(); + now(); SELECT m.osm_id losmid, m.highway lhighway, CASE WHEN m.highway = 'tertiary' THEN - SUM(10000 * q.population::numeric / POWER(((8 * SQRT(q.population::numeric)) + 500 + ST_Distance (m.way0, q.way0)), 2) * 0.4) + sum(10000 * q.population::numeric / power(((8 * sqrt(q.population::numeric)) + 500 + ((ST_Distance (m.way0, q.way0) * 50) / (q.merca_coef * 32.15))), 2) * 0.4) WHEN m.highway IN ('secondary', 'secondary_link') THEN - SUM(10000 * q.population::numeric / POWER(((8 * SQRT(q.population::numeric)) + 500 + ST_Distance (m.way0, q.way0)), 2) * 0.6) + sum(10000 * q.population::numeric / power(((8 * sqrt(q.population::numeric)) + 500 + ((ST_Distance (m.way0, q.way0) * 50) / (q.merca_coef * 32.15))), 2) * 0.6) ELSE - SUM(10000 * q.population::numeric / POWER(((8 * SQRT(q.population::numeric)) + 500 + ST_Distance (m.way0, q.way0)), 2)) + sum(10000 * q.population::numeric / power(((8 * sqrt(q.population::numeric)) + 500 + ((ST_Distance (m.way0, q.way0) * 50) / (q.merca_coef * 32.15))), 2)) END AS populate_factor INTO TABLE traffic_tmp FROM primsecter15k AS m - INNER JOIN cities_all AS q ON ST_DWithin (m.way0, q.way0, (5000 + (100000 * q.population / (q.population + 10000)))) + INNER JOIN cities_all AS q ON ST_DWithin (m.way0, q.way0, ((3215 * q.merca_coef) + ((64300 * q.merca_coef) * q.population / (q.population + 10000)))) WHERE m.highway IS NOT NULL --and m.highway in ('primary','primary_link','secondary', 'secondary_link', 'tertiary') @@ -570,7 +743,7 @@ ORDER BY populate_factor; SELECT - NOW(); + now(); -- prepare some special tables -- the intersections motorway_link with primary/secondary/tertiary deliver the motorway acccesses.... @@ -578,8 +751,9 @@ SELECT m.osm_id losmid, m.highway, m.way, - ST_Expand (m.way, 1000) way2, - ST_Expand (m.way, 2000) way3 INTO TABLE motorway_access + ST_Expand (m.way, 643 * st_length (ST_Transform (m.way, 3857)) / st_length (ST_Transform (m.way, 4326)::geography)) way2, + ST_Expand (m.way, 1286 * st_length (ST_Transform (m.way, 3857)) / st_length (ST_Transform (m.way, 4326)::geography)) way3, + st_length (ST_Transform (m.way, 3857)) / st_length (ST_Transform (m.way, 4326)::geography) AS merca_coef INTO TABLE motorway_access FROM lines AS m INNER JOIN lines AS q ON ST_Intersects (m.way, q.way) @@ -591,18 +765,26 @@ GROUP BY m.highway, m.way; -CREATE INDEX motorway_access_idx ON public.motorway_access USING gist (way2) WITH (fillfactor = '100'); +SELECT + now(); + +CREATE INDEX motorway_access_idx2 ON public.motorway_access USING gist (way2) WITH (fillfactor = '100'); SELECT - NOW(); + now(); + +CREATE INDEX motorway_access_idx3 ON public.motorway_access USING gist (way3) WITH (fillfactor = '100'); + +SELECT + now(); -- find out all the primary/secondary/tertiary within 1000 m and 2000 m from a motorway access SELECT - NOW(); + now(); SELECT m.osm_id losmid, - SUM(st_length (q.way) / (10000)) motorway_factor INTO TABLE motorway_access_1000 + sum(st_length (q.way) / (6430 * q.merca_coef)) motorway_factor INTO TABLE motorway_access_1000 FROM lines AS m INNER JOIN motorway_access AS q ON ST_Intersects (m.way, q.way2) @@ -615,11 +797,11 @@ ORDER BY motorway_factor; SELECT - NOW(); + now(); SELECT m.osm_id losmid, - SUM(st_length (q.way) / (10000)) motorway_factor INTO TABLE motorway_access_2000 + sum(st_length (q.way) / (6430 * merca_coef)) motorway_factor INTO TABLE motorway_access_2000 FROM lines AS m INNER JOIN motorway_access AS q ON ST_Intersects (m.way, q.way3) @@ -632,18 +814,18 @@ ORDER BY motorway_factor; SELECT - NOW(); + now(); -- -- special regions: mountain_range with "peaks" ==> few highways ==> higher traffic !!! -- calculate the "peak_density" SELECT - NOW(); + now(); SELECT m.osm_id losmid, - COUNT(q.*) AS peak_cnt, - SUM(q.ele::decimal) peak_sum_ele INTO TABLE peak_density + count(q.*) AS peak_cnt, + sum(q.ele::decimal) peak_sum_ele INTO TABLE peak_density FROM primsecter15k AS m INNER JOIN peak AS q ON ST_Intersects (m.way2, q.way) @@ -656,43 +838,50 @@ ORDER BY peak_cnt DESC; SELECT - NOW(); + now(); -- -- traffic due to industrial parcs ... -- SELECT - NOW(); + now(); + +SELECT + name, + way, + st_length (ST_Transform (st_makeline (st_startpoint (way), st_centroid (way)), 3857)) / st_length (ST_Transform (st_makeline (st_startpoint (way), st_centroid (way)), 4326)::geography) AS merca_coef INTO TABLE poly_industri +FROM + polygons +WHERE + landuse = 'industrial'; SELECT name, way, ST_Centroid (way) way0, - st_area (way) - area, - SQRT(st_area (way)) sqrt_area INTO industri + st_area (way) * power(50 / (32.15 * merca_coef), 2) areaReal, + merca_coef INTO industri FROM - polygons + poly_industri WHERE - landuse = 'industrial' - AND st_area (way) > 20000; + st_area (way) * power(50 / (32.15 * merca_coef), 2) > 20000; SELECT - NOW(); + now(); SELECT m.osm_id losmid, m.highway lhighway, CASE WHEN m.highway = 'tertiary' THEN - SUM(area / POWER((sqrt_area + 500 + ST_Distance (m.way0, q.way0)), 2) * 0.6) + sum(areaReal / power((sqrt(areaReal) + 500 + (ST_Distance (m.way0, q.way0) * 50) / (32.15 * q.merca_coef)), 2) * 0.6) WHEN m.highway IN ('secondary', 'secondary_link') THEN - SUM(area / POWER((sqrt_area + 500 + ST_Distance (m.way0, q.way0)), 2) * 0.8) + sum(areaReal / power((sqrt(areaReal) + 500 + (ST_Distance (m.way0, q.way0) * 50) / (32.15 * q.merca_coef)), 2) * 0.8) ELSE - SUM(area / POWER((sqrt_area + 500 + ST_Distance (m.way0, q.way0)), 2)) + sum(areaReal / power((sqrt(areaReal) + 500 + (ST_Distance (m.way0, q.way0) * 50) / (32.15 * q.merca_coef)), 2)) END AS industrial_factor INTO industri_tmp FROM primsecter15k AS m - INNER JOIN industri AS q ON ST_dwithin (m.way0, q.way0, 20000) + INNER JOIN industri AS q ON ST_dwithin (m.way0, q.way0, (12860 * q.merca_coef)) GROUP BY m.osm_id, m.highway, @@ -701,7 +890,7 @@ ORDER BY industrial_factor; SELECT - NOW(); + now(); -- create a grid to allow a fast calculation for highway_density and motorway_density CREATE OR REPLACE FUNCTION generate_grid (bound_polygon geometry, grid_step integer, srid integer DEFAULT 2180) @@ -717,10 +906,10 @@ DECLARE Ymin int; query_text text; BEGIN - Xmin := FLOOR(ST_XMin (bound_polygon)); - Xmax := CEIL(ST_XMax (bound_polygon)); - Ymin := FLOOR(ST_YMin (bound_polygon)); - Ymax := CEIL(ST_YMax (bound_polygon)); + Xmin := floor(ST_XMin (bound_polygon)); + Xmax := ceil(ST_XMax (bound_polygon)); + Ymin := floor(ST_YMin (bound_polygon)); + Ymax := ceil(ST_YMax (bound_polygon)); query_text := 'select row_number() over() id, st_makeenvelope(s1, s2, s1+$5, s2+$5, $6) geom from generate_series($1, $2+$5, $5) s1, generate_series ($3, $4+$5, $5) s2'; RETURN QUERY EXECUTE query_text @@ -757,10 +946,10 @@ FROM (( -- GRID HIGHWAY_DENSITY SELECT - NOW(); + now(); SELECT - SUM(st_length (q.way) / (10000)) highway_factor, + sum(st_length (q.way) / (6430 * (st_length (ST_Transform (q.way, 3857)) / st_length (ST_Transform (q.way, 4326)::geography)))) highway_factor, m.geom way INTO TABLE grid_highway_density FROM lines AS q @@ -773,14 +962,14 @@ ORDER BY highway_factor; SELECT - NOW(); + now(); -- GRID MOTORWAY_DENSITY SELECT - NOW(); + now(); SELECT - SUM(st_length (q.way) / (10000)) motorway_factor, + sum(st_length (q.way) / (6430 * (st_length (ST_Transform (q.way, 3857)) / st_length (ST_Transform (q.way, 4326)::geography)))) motorway_factor, m.geom way INTO TABLE grid_motorway_density FROM lines AS q @@ -793,7 +982,7 @@ ORDER BY motorway_factor; SELECT - NOW(); + now(); -- CREATE INDEX grid_idx ON public.grid USING gist (geom) WITH (fillfactor='100'); CREATE INDEX grid_hwd_idx ON public.grid_highway_density USING gist (way) WITH (fillfactor = '100'); @@ -802,7 +991,7 @@ CREATE INDEX grid_mwd_idx ON public.grid_motorway_density USING gist (way) WITH -- collect all exceptions on 1 table SELECT - NOW(); + now(); SELECT y.osm_id losmid, @@ -840,13 +1029,13 @@ WHERE y.highway IN ('primary', 'primary_link', 'secondary', 'secondary_link', 'tertiary'); SELECT - NOW(); + now(); SELECT losmid, peak_sum_ele, - AVG(highway_factor) highway_factor, - AVG(motorway_factor) motorway_factor, + avg(highway_factor) highway_factor, + avg(motorway_factor) motorway_factor, industrial_factor INTO TABLE except_all FROM except_all_tmp @@ -856,7 +1045,7 @@ GROUP BY industrial_factor; SELECT - NOW(); + now(); -- Do not apply the positiv effect of "motorway density" in proximity of motorway accesses!!!! UPDATE @@ -883,7 +1072,7 @@ WHERE motorway_access_1000); SELECT - NOW(); + now(); -- class calculation with modifications using peaks, motorway_density and highway_density... -- @@ -909,12 +1098,12 @@ ORDER BY traffic_class DESC; SELECT - NOW(); + now(); --statistics SELECT traffic_class, - COUNT(losmid) cnt + count(losmid) cnt FROM traffic_tags GROUP BY @@ -950,5 +1139,5 @@ CREATE INDEX all_tags_ind ON all_tags (losmid, noise_class, river_class, forest_ ANALYSE; SELECT - NOW(); + now(); diff --git a/misc/scripts/mapcreation/lookups_db.dat b/misc/scripts/mapcreation/lookups_db.dat deleted file mode 100644 index e8dafc1..0000000 --- a/misc/scripts/mapcreation/lookups_db.dat +++ /dev/null @@ -1,967 +0,0 @@ ----lookupversion:10 ----minorversion:14 - ----context:way - -highway;0029035962 residential -highway;0010319731 service -highway;0007688809 track -highway;0007656124 unclassified -highway;0004141444 footway -highway;0003493551 tertiary -highway;0002852601 path -highway;0002185240 secondary -highway;0001447719 primary -highway;0000699577 cycleway -highway;0000608469 trunk -highway;0000568118 living_street -highway;0000515044 motorway -highway;0000451760 motorway_link -highway;0000442502 steps -highway;0000360177 road -highway;0000318426 pedestrian -highway;0000210535 trunk_link -highway;0000192461 primary_link -highway;0000120758 secondary_link -highway;0000079637 tertiary_link -highway;0000070238 construction -highway;0000058257 bridleway -highway;0000039003 platform -highway;0000037192 proposed planned virtual -highway;0000010307 raceway -highway;0000003152 rest_area -highway;0000002942 abandoned disused razed demolished dismantled -highway;0000002631 services -highway;0000002133 corridor -highway;0000002093 crossing -highway;0000001440 bus_stop -highway;0000001274 yes -highway;0000000679 unsurfaced -highway;0000000108 byway -highway;0000000037 driveway -highway;0000000021 mini_roundabout -highway;0000000020 turning_loop - -tracktype;0000887965 grade2 -tracktype;0000868414 grade3 -tracktype;0000595882 grade1 -tracktype;0000568372 grade4 -tracktype;0000405959 grade5 - -surface;0002497676 asphalt -surface;0001568957 paved -surface;0001562253 unpaved -surface;0000727427 gravel -surface;0000560191 ground -surface;0000350378 dirt -surface;0000237226 grass -surface;0000212587 concrete concrete:plates concrete:lanes -surface;0000188743 paving_stones paving_stones:30 paving_stones:20 -surface;0000113800 cobblestone cobblestone:flattened -surface;0000093164 compacted -surface;0000091171 sand dirt/sand -surface;0000023293 wood -surface;0000019915 pebblestone -surface;0000012866 fine_gravel -surface;0000010681 earth -surface;0000007331 sett -surface;0000005778 mud -surface;0000004549 grass_paver -surface;0000004398 clay -surface;0000003760 metal - -maxspeed;0001058313 50 30_mph 30mph -maxspeed;0000860780 30 20_mph 20mph -maxspeed;0000025232 10 5 7 15 -maxspeed;0000083989 20 10_mph 10mph 15_mph 15mph -maxspeed;0000195097 40 45 25_mph 25mph -maxspeed;0000204646 60 35_mph 35mph 40_mph 40mph -maxspeed;0000130108 70 45_mph 45mph -maxspeed;0000225071 80 50_mph 50mph -maxspeed;0000106719 90 55_mph 55mph -maxspeed;0000134522 100 60_mph 60mph 65_mph 65mph -maxspeed;0000025242 110 70_mph 70mph -maxspeed;0000038763 120 75_mph 75mph -maxspeed;0000026953 130 -maxspeed;0000138654 urban RO:urban RU:urban FR:urban IT:urban AT:urban DE:urban UA:urban -maxspeed;0000138654 rural RO:rural RU:rural FR:rural IT:rural AT:rural DE:rural UA:rural - -service;0001433919 parking_aisle -service;0001305879 driveway -service;0000382788 alley -service;0000018777 drive-through drive_through -service;0000008290 emergency_access -service;0000003138 bus -service;0000001250 parking -service;0000001159 logging - -lit;0000809223 yes - -lanes;0002838405 2 -lanes;0000718138 1 -lanes;0000259502 3 -lanes;0000141651 4 -lanes;0000018473 -1 -lanes;0000017934 5 -lanes;0000008241 6 -lanes;0000003643 1.5 -lanes;0000001087 7 - -access;0002688349 private -access;0000319927 yes -access;0000144799 no -access;0000140215 permissive -access;0000108802 destination -access;0000099899 agricultural forestry -access;0000039934 designated official -access;0000011813 customers -access;0000004007 delivery -access;0000000100 psv -access;0000000100 hov - -foot;0001659694 yes allowed Yes -foot;0000424847 designated official -foot;0000202364 no -foot;0000053031 permissive -foot;0000011661 destination -foot;0000007289 private -foot;0000000167 use_sidepath sidewalk - -bicycle;0001245560 yes allowed -bicycle;0000452059 no -bicycle;0000324902 designated official -bicycle;0000025707 dismount -bicycle;0000020440 permissive -bicycle;0000008286 private -bicycle;0000001553 destination -bicycle;0000000719 use_sidepath use_cycleway -bicycle;0000000385 mtb -bicycle;0000000117 opposite - -motorcar;0000135124 no -motorcar;0000045407 yes -motorcar;0000021494 agricultural forestry -motorcar;0000012090 destination -motorcar;0000008733 private -motorcar;0000005757 designated official -motorcar;0000004116 permissive -motorcar;0000000979 restricted -motorcar;0000000100 psv -motorcar;0000000100 hov - -motor_vehicle;0000212692 no -motor_vehicle;0000184982 yes -motor_vehicle;0000045128 private -motor_vehicle;0000032622 agricultural forestry agricultural;forestry agricultural,forestry -motor_vehicle;0000025396 designated official -motor_vehicle;0000025092 destination -motor_vehicle;0000010895 permissive -motor_vehicle;0000000175 emergency Emergency -motor_vehicle;0000000100 psv -motor_vehicle;0000000100 hov - -motorcycle;0000092079 no -motorcycle;0000027978 yes -motorcycle;0000014652 agricultural forestry -motorcycle;0000008862 destination -motorcycle;0000004877 designated official -motorcycle;0000003936 private -motorcycle;0000002209 permissive -motorcycle;0000000100 psv -motorcycle;0000000100 hov - -vehicle;0000030218 no -vehicle;0000013333 destination -vehicle;0000011692 yes -vehicle;0000007147 agricultural forestry agricultural;forestry -vehicle;0000006305 private -vehicle;0000001294 permissive -vehicle;0000000105 designated -vehicle;0000000100 psv -vehicle;0000000100 hov - -horse;0000227398 no -horse;0000144432 yes -horse;0000014566 designated -horse;0000007223 permissive -horse;0000004755 private -horse;0000000983 official -horse;0000000968 unknown -horse;0000000205 destination - -wheelchair;0000036603 no -wheelchair;0000028451 yes -wheelchair;0000002713 limited -wheelchair;0000001043 unknown -wheelchair;0000000439 designated official -wheelchair;0000000184 destination - -hgv;0000206836 designated -hgv;0000071222 yes -hgv;0000043783 no -hgv;0000019115 destination -hgv;0000005273 delivery -hgv;0000003055 local -hgv;0000001088 agricultural forestry -hgv;0000000461 private -hgv;0000000320 unsuitable -hgv;0000000306 permissive - -cycleway;0000137526 no -cycleway;0000124777 lane -cycleway;0000106948 track -cycleway;0000044652 opposite -cycleway;0000011237 shared -cycleway;0000007312 opposite_lane -cycleway;0000005737 shared_lane -cycleway;0000002533 yes -cycleway;0000002356 opposite_track -cycleway;0000001945 share_busway -cycleway;0000001883 none -cycleway;0000001705 crossing -cycleway;0000001560 unmarked_lane -cycleway;0000001542 right -cycleway;0000001291 segregated -cycleway;0000001065 both -cycleway;0000000892 left -cycleway;0000000399 street -cycleway;0000000344 shoulder -cycleway;0000000326 designated -cycleway;0000000247 proposed planned virtual -cycleway;0000000224 cyclestreet -cycleway;0000000172 path -cycleway;0000000154 sidewalk - -footway;0000104998 sidewalk -footway;0000065943 crossing -footway;0000012342 both -footway;0000008363 none -footway;0000005903 right -footway;0000004159 left -footway;0000003966 no -footway;0000001093 yes -footway;0000000558 separate - -segregated;0000224960 no -segregated;0000051124 yes - -sidewalk;0000194579 none -sidewalk;0000111468 both -sidewalk;0000052950 right -sidewalk;0000024489 left -sidewalk;0000012916 no -sidewalk;0000005725 separate -sidewalk;0000001950 yes - -mtb:scale;0000114272 0 -mtb:scale;0000068284 1 -mtb:scale;0000027311 2 -mtb:scale;0000011529 3 -mtb:scale;0000003666 4 -mtb:scale;0000001957 0+ -mtb:scale;0000001472 5 -mtb:scale;0000000498 1+ -mtb:scale;0000000478 1- -mtb:scale;0000000268 0- -mtb:scale;0000000177 2- -mtb:scale;0000000131 2+ -mtb:scale;0000000115 6 - -sac_scale;0000150704 hiking -sac_scale;0000070463 mountain_hiking -sac_scale;0000010993 demanding_mountain_hiking -sac_scale;0000004549 alpine_hiking -sac_scale;0000001620 demanding_alpine_hiking -sac_scale;0000000831 yes -sac_scale;0000000712 difficult_alpine_hiking -sac_scale;0000000265 T1-hiking - -noexit;0000118665 yes - -motorroad;0000056844 yes - -oneway;0005387257 yes -oneway;0001455407 no -oneway;0000139188 -1 -oneway;0000000892 reversible -oneway;0000000756 1 -oneway;0000000481 true - -junction;0000321066 roundabout -junction;0000002828 spui -junction;0000002134 jughandle -junction;0000001493 approach -junction;0000000100 circular - -bridge;0001842517 yes viaduct true suspension - -tunnel;0000247305 yes -tunnel;0000016890 building_passage -tunnel;0000004237 no -tunnel;0000000265 passage -tunnel;0000000241 culvert -tunnel;0000000122 avalanche_protector -tunnel;0000000114 covered - -lcn;0000073956 yes -lcn;0000002631 proposed - -oneway:bicycle;0000012034 no -oneway:bicycle;0000005217 yes -oneway:bicycle;0000000161 opposite - -cycleway:right;0000012522 lane Lane -cycleway:right;0000006644 track -cycleway:right;0000000971 share_busway -cycleway:right;0000000686 sidepath -cycleway:right;0000000410 shared_lane -cycleway:right;0000000104 opposite_lane -cycleway:right;0000000058 opposite_track -cycleway:right;0000000045 no none -cycleway:right;0000000037 yes -cycleway:right;0000000004 opposite - -cycleway:left;0000005134 lane Lane -cycleway:left;0000003169 track -cycleway:left;0000000656 share_busway -cycleway:left;0000000608 opposite_lane -cycleway:left;0000000475 sidepath -cycleway:left;0000000257 shared_lane -cycleway:left;0000000246 no none -cycleway:left;0000000130 opposite_track -cycleway:left;0000000053 opposite -cycleway:left;0000000014 yes - -incline;0000052784 up -incline;0000035413 down -incline;0000001628 yes -incline;0000000779 steep -incline;0000000861 3% 0 1 2 3 0% 1% 2% 3% -incline;0000000724 5% 4 5 4% -incline;0000000530 8% 6 7 8 6% 7% -incline;0000003109 10% 9 10 9% 10° -incline;0000001297 15% 11 12 13 14 15 11% 12% 13% 14% -incline;0000000997 20% 16 17 18 19 20 16% 17% 18% 19% -incline;0000000409 25% 21 22 23 24 25 21% 22% 23% 24% -incline;0000000263 30% 30 40 50 40% 50% -incline;0000000861 -3% -1 -2 -3 -1% -2% -3% -incline;0000000724 -5% -4 -5 -4% -incline;0000000530 -8% -6 -7 -8 -6% -7% -incline;0000001515 -10% -9 -10 -9% -10° -incline;0000001297 -15% -11 -12 -13 -14 -15 -11% -12% -13% -14% -incline;0000000997 -20% -16 -17 -18 -19 -20 -16% -17% -18% -19% -incline;0000000409 -25% -21 -22 -23 -24 -25 -21% -22% -23% -24% -incline;0000000172 -30% -30 -40 -50 -40% -50% - -toll;0000090536 yes true - -railway;0000157547 rail -railway;0000019316 abandoned -railway;0000016982 tram -railway;0000014387 platform -railway;0000011143 disused -railway;0000004623 light_rail -railway;0000002982 subway -railway;0000002422 narrow_gauge -railway;0000001960 razed -railway;0000001859 preserved - -seamark:type;0001564 recommended_track -seamark:type;0000522 fairway - -waterway;0000016046 river -waterway;0000009496 canal -waterway;0000007876 riverbank -waterway;0000002202 weir -waterway;0000001364 dam -waterway;0000000386 lock -waterway;0000000321 tidal_flat_slough -waterway;0000000179 wadi -waterway;0000000126 dock -waterway;0000000113 fish_pass -waterway;0000000086 boatyard -waterway;0000000071 fairway -waterway;0000000059 lock_gate - -boat;0000019888 no -boat;0000002718 yes -boat;0000000232 private -boat;0000000064 permissive -boat;0000000045 designated - -motorboat;0000001077 yes -motorboat;0000000808 no -motorboat;0000000025 private privat - -route;0000000850 ferry -route;0000000539 hiking -route;0000000505 bicycle -route;0000000454 ski -route;0000000413 mtb -route;0000000194 canoe -route;0000000151 road -route;0000000104 bus - -smoothness;0000068136 good -smoothness;0000042124 bad Bad -smoothness;0000040763 intermediate -smoothness;0000033941 excellent -smoothness;0000012683 very_bad -smoothness;0000009837 horrible terrible -smoothness;0000003515 very_horrible -smoothness;0000000919 impassable -smoothness;0000000251 robust_wheels -smoothness;0000000221 high_clearance -smoothness;0000000132 very_good -smoothness;0000000083 off_road_wheels -smoothness;0000000057 medium Medium average -smoothness;0000000048 poor -smoothness;0000000039 rough - -rcn;0000014518 yes -rcn;0000002862 proposed - -ncn;0000002941 yes -ncn;0000001036 proposed - -ford;0000020552 yes -ford;0000000289 stepping_stones - -trail_visibility;0000067438 good -trail_visibility;0000041280 intermediate -trail_visibility;0000039801 excellent -trail_visibility;0000023482 bad -trail_visibility;0000005853 horrible -trail_visibility;0000002222 no - -class:bicycle:mtb;0000002079 1 +1 -class:bicycle:mtb;0000001191 0 -class:bicycle:mtb;0000001089 2 +2 -class:bicycle:mtb;0000000703 -1 -class:bicycle:mtb;0000000234 -2 -class:bicycle:mtb;0000000140 3 +3 -class:bicycle:mtb;0000000068 -3 - -class:bicycle;0000002842 1 +1 -class:bicycle;0000000595 -1 -class:bicycle;0000000533 2 +2 -class:bicycle;0000000516 -2 -class:bicycle;0000000245 -3 -class:bicycle;0000000170 0 -class:bicycle;0000000108 3 +3 - -route_bicycle_icn;0000088753 yes -route_bicycle_icn;0000000001 proposed -route_bicycle_ncn;0000268180 yes -route_bicycle_ncn;00000000001 proposed -route_bicycle_rcn;0000718163 yes -route_bicycle_rcn;00000000001 proposed -route_bicycle_lcn;0000469215 yes -route_bicycle_lcn;00000000001 proposed - -route_bicycle_;0000024662 yes -route_bicycle_radweit;0000004604 yes - -route_hiking_iwn;0000056005 yes -route_hiking_nwn;0000315813 yes -route_hiking_rwn;0000343219 yes -route_hiking_lwn;0000359332 yes -route_hiking_;0000103733 yes - -route_foot_nwn;0000047923 yes -route_foot_lwn;0000135371 yes -route_foot_rwn;0000115325 yes -route_foot_;0000070583 yes - -route_mtb_;0000066263 yes -route_mtb_lcn;0000023718 yes -route_mtb_ncn;0000004853 yes -route_mtb_rcn;0000013321 yes -route_mtb_mtb;0000006853 yes -route_bicycle_mtb;0000002240 yes - -brouter_route_placeholder_dummy_01;0000000001 dummy -brouter_route_placeholder_dummy_02;0000000001 dummy -brouter_route_placeholder_dummy_03;0000000001 dummy -brouter_route_placeholder_dummy_04;0000000001 dummy -brouter_route_placeholder_dummy_05;0000000001 dummy -brouter_route_placeholder_dummy_06;0000000001 dummy -brouter_route_placeholder_dummy_07;0000000001 dummy -brouter_route_placeholder_dummy_08;0000000001 dummy -brouter_route_placeholder_dummy_09;0000000001 dummy -brouter_route_placeholder_dummy_10;0000000001 dummy -brouter_route_placeholder_dummy_11;0000000001 dummy -brouter_route_placeholder_dummy_12;0000000001 dummy -brouter_route_placeholder_dummy_13;0000000001 dummy -brouter_route_placeholder_dummy_14;0000000001 dummy -brouter_route_placeholder_dummy_15;0000000001 dummy -brouter_route_placeholder_dummy_16;0000000001 dummy -brouter_route_placeholder_dummy_17;0000000001 dummy -brouter_route_placeholder_dummy_18;0000000001 dummy -brouter_route_placeholder_dummy_19;0000000001 dummy -brouter_route_placeholder_dummy_20;0000000001 dummy -brouter_route_placeholder_dummy_21;0000000001 dummy - -ramp:bicycle;0000001305 yes both permissive right left -ramp:bicycle;0000000385 no - -ramp:stroller;0000001099 yes -ramp:stroller;0000000326 no - -ramp:wheelchair;0000000610 yes -ramp:wheelchair;0000000439 no - -ramp:luggage;0000000162 no -ramp:luggage;0000000054 yes automatic manual - -estimated_traffic_class;0000000001 1 -estimated_traffic_class;0000000001 2 -estimated_traffic_class;0000000001 3 -estimated_traffic_class;0000000001 4 -estimated_traffic_class;0000000001 5 -estimated_traffic_class;0000000001 6 -estimated_traffic_class;0000000001 7 - -mtb:scale:uphill;0000018869 0 0+ 0- -mtb:scale:uphill;0000015578 1 1+ 1- -mtb:scale:uphill;0000012338 2 2+ 2- -mtb:scale:uphill;0000009099 3 3+ 3- -mtb:scale:uphill;0000005825 4 4+ 4- -mtb:scale:uphill;0000004628 5 5+ 5- - -crossing;0000101049 zebra -crossing;0000017509 unmarked -crossing;0000013817 traffic_signals -crossing;0000011062 uncontrolled -crossing;0000001722 yes -crossing;0000001678 island -crossing;0000000457 marked -crossing;0000000131 pedestrian_signals -crossing;0000000122 no - -informal;0000002424 yes - -indoor;0000058418 yes -indoor;0000025038 room -indoor;0000005295 wall -indoor;0000004322 corridor -indoor;0000002410 area -indoor;0000000816 column -indoor;0000000568 no -indoor;0000000129 shop -indoor;0000000099 steps - -4wd_only;0000008129 yes Yes -4wd_only;0000000487 recommended -4wd_only;0000000041 no - -concrete;0000000043 plates -concrete;0000000013 lanes - -bus;0001178365 yes -bus;0000006419 designated -bus;0000005602 no -bus;0000001424 urban - -psv;0000072077 yes -psv;0000007456 no -psv;0000007428 designated official - -hov;0000006684 lane -hov;0000003258 designated -hov;0000002162 no -hov;0000001512 yes - -busway;0000000000 opposite opposite_lane opposite_track -busway:left;0000000000 opposite opposite_lane opposite_track -busway:right;0000000000 opposite opposite_lane opposite_track - -cycleway:left:oneway;0000000769 yes -cycleway:left:oneway;0000001595 no -cycleway:left:oneway;0000000927 -1 - -cycleway:right:oneway;0000003084 yes -cycleway:right:oneway;0000002499 no -cycleway:right:oneway;0000000017 -1 - -zone:maxspeed;0000001616 20 DE:20 FR:20 -zone:maxspeed;0000063721 30 DE:30 FR:30 BE:30 HU:30 NO:30 AT:30 ES:30 NL:30 - -cycleway:surface;0000002609 asphalt -cycleway:surface;0000000150 paved -cycleway:surface;0000000012 unpaved -cycleway:surface;0000000010 gravel -cycleway:surface;0000000157 concrete concrete:plates concrete:lanes -cycleway:surface;0000002239 paving_stones paving_stones:30 paving_stones:20 -cycleway:surface;0000000011 cobblestone cobblestone:flattened -cycleway:surface;0000000013 compacted -cycleway:surface;0000000006 fine_gravel -cycleway:surface;0000000011 sett - -maxspeed:backward;0001058313 50 30_mph 30mph -maxspeed:backward;0000860780 30 20_mph 20mph -maxspeed:backward;0000025232 10 5 7 15 -maxspeed:backward;0000083989 20 10_mph 10mph 15_mph 15mph -maxspeed:backward;0000195097 40 45 25_mph 25mph -maxspeed:backward;0000204646 60 35_mph 35mph 40_mph 40mph -maxspeed:backward;0000130108 70 45_mph 45mph -maxspeed:backward;0000225071 80 50_mph 50mph -maxspeed:backward;0000106719 90 55_mph 55mph -maxspeed:backward;0000134522 100 60_mph 60mph 65_mph 65mph -maxspeed:backward;0000025242 110 70_mph 70mph -maxspeed:backward;0000038763 120 75_mph 75mph -maxspeed:backward;0000026953 130 -maxspeed:backward;0000138654 urban RO:urban RU:urban FR:urban IT:urban AT:urban DE:urban UA:urban -maxspeed:backward;0000138654 rural RO:rural RU:rural FR:rural IT:rural AT:rural DE:rural UA:rural - -maxspeed:forward;0001058313 50 30_mph 30mph -maxspeed:forward;0000860780 30 20_mph 20mph -maxspeed:forward;0000025232 10 5 7 15 -maxspeed:forward;0000083989 20 10_mph 10mph 15_mph 15mph -maxspeed:forward;0000195097 40 45 25_mph 25mph -maxspeed:forward;0000204646 60 35_mph 35mph 40_mph 40mph -maxspeed:forward;0000130108 70 45_mph 45mph -maxspeed:forward;0000225071 80 50_mph 50mph -maxspeed:forward;0000106719 90 55_mph 55mph -maxspeed:forward;0000134522 100 60_mph 60mph 65_mph 65mph -maxspeed:forward;0000025242 110 70_mph 70mph -maxspeed:forward;0000038763 120 75_mph 75mph -maxspeed:forward;0000026953 130 -maxspeed:forward;0000138654 urban RO:urban RU:urban FR:urban IT:urban AT:urban DE:urban UA:urban -maxspeed:forward;0000138654 rural RO:rural RU:rural FR:rural IT:rural AT:rural DE:rural UA:rural - -embedded_rails;0000000928 tram -embedded_rails;0000000007 yes -embedded_rails;0000000003 rail - -living_street;0000000404 yes - -sidewalk:bicycle;0000000439 yes designated -sidewalk:left:bicycle;0000001722 yes designated -sidewalk:right:bicycle;0000002667 yes designated - -bicycle_road;0000006521 yes designated - -construction;0000144871 yes -construction;0000008214 minor -construction;0029035962 residential -construction;0010319731 service -construction;0007688809 track -construction;0007656124 unclassified -construction;0004141444 footway -construction;0003493551 tertiary -construction;0002852601 path -construction;0002185240 secondary -construction;0001447719 primary -construction;0000699577 cycleway -construction;0000608469 trunk -construction;0000568118 living_street -construction;0000515044 motorway -construction;0000451760 motorway_link -construction;0000442502 steps -construction;0000360177 road -construction;0000318426 pedestrian -construction;0000210535 trunk_link -construction;0000192461 primary_link -construction;0000120758 secondary_link -construction;0000079637 tertiary_link -construction;0000070238 construction -construction;0000058257 bridleway -construction;0000039003 platform -construction;0000037192 proposed -construction;0000010307 raceway -construction;0000003152 rest_area -construction;0000002942 abandoned -construction;0000002631 services -construction;0000002133 corridor -construction;0000002093 crossing -construction;0000001440 bus_stop -construction;0000001274 yes -construction;0000000679 unsurfaced -construction;0000000108 byway -construction;0000000037 driveway -construction;0000000021 mini_roundabout -construction;0000000020 turning_loop - -estimated_forest_class;0000000001 1 -estimated_forest_class;0000000001 2 -estimated_forest_class;0000000001 3 -estimated_forest_class;0000000001 4 -estimated_forest_class;0000000001 5 -estimated_forest_class;0000000001 6 - -estimated_noise_class;0000000001 1 -estimated_noise_class;0000000001 2 -estimated_noise_class;0000000001 3 -estimated_noise_class;0000000001 4 -estimated_noise_class;0000000001 5 -estimated_noise_class;0000000001 6 - -estimated_river_class;0000000001 1 -estimated_river_class;0000000001 2 -estimated_river_class;0000000001 3 -estimated_river_class;0000000001 4 -estimated_river_class;0000000001 5 -estimated_river_class;0000000001 6 - -estimated_town_class;0000000001 1 -estimated_town_class;0000000001 2 -estimated_town_class;0000000001 3 -estimated_town_class;0000000001 4 -estimated_town_class;0000000001 5 -estimated_town_class;0000000001 6 - - - ---context:node - -highway;0001314954 bus_stop -highway;0001130090 crossing -highway;0001031274 turning_circle -highway;0000609262 traffic_signals -highway;0000306900 street_lamp -highway;0000136339 stop -highway;0000105097 motorway_junction -highway;0000058076 give_way -highway;0000049111 mini_roundabout -highway;0000030072 milestone -highway;0000017567 speed_camera -highway;0000013806 emergency_access_point -highway;0000009721 platform -highway;0000007369 passing_place -highway;0000005939 ford -highway;0000004831 rest_area -highway;0000003535 elevator -highway;0000002572 turning_loop -highway;0000002540 steps -highway;0000002493 services -highway;0000002133 emergency_bay -highway;0000001372 residential -highway;0000001324 street_light -highway;0000001147 incline_steep -highway;0000001101 stile -highway;0000000904 incline -highway;0000000819 service -highway;0000000817 traffic_calming -highway;0000000662 path -highway;0000000603 footway -highway;0000000438 track -highway;0000000436 no -highway;0000000353 door -highway;0000000283 level_crossing -highway;0000000267 yes -highway;0000000262 road -highway;0000000244 construction -highway;0000000214 unclassified -highway;0000000213 proposed -highway;0000000197 junction -highway;0000000176 distance_marker -highway;0000000158 noexit -highway;0000000155 unknown -highway;0000000134 traffic_sign -highway;0000000123 tertiary -highway;0000000115 trailhead -highway;0000000113 priority_to_right -highway;0000000113 culvert -highway;0000000100 -highway;0000000046 toll_bridge -highway;0000000037 city_entry -highway;0000002967 traffic_mirror -highway;0000001724 priority - -barrier;0000606512 gate -barrier;0000164120 bollard -barrier;0000112184 lift_gate -barrier;0000046779 stile -barrier;0000046255 cycle_barrier -barrier;0000038597 entrance -barrier;0000027579 block -barrier;0000023074 toll_booth -barrier;0000016782 cattle_grid -barrier;0000016154 kissing_gate -barrier;0000003182 turnstile -barrier;0000003160 fence -barrier;0000002701 border_control -barrier;0000002536 sally_port -barrier;0000002504 chain -barrier;0000002470 door -barrier;0000002089 swing_gate -barrier;0000001912 bump_gate -barrier;0000001856 yes -barrier;0000001683 hampshire_gate -barrier;0000000445 wall -barrier;0000000440 bus_trap -barrier;0000000435 ditch -barrier;0000000420 debris -barrier;0000000381 log -barrier;0000000336 chicane -barrier;0000000316 kerb -barrier;0000000270 sump_buster -barrier;0000000268 obstacle -barrier;0000000223 no -barrier;0000000213 horse_stile -barrier;0000000210 full-height_turnstile -barrier;0000000176 windfall -barrier;0000000168 spikes -barrier;0000000168 checkpoint -barrier;0000000166 hedge -barrier;0000000164 footgate -barrier;0000000141 tree -barrier;0000000133 guard_rail -barrier;0000000129 bar -barrier;0000000124 fallen_tree -barrier;0000000118 jersey_barrier -barrier;0000000114 motorcycle_barrier -barrier;0000000114 barrier -barrier;0000000108 rope -barrier;0000000095 stone -barrier;0000000069 traffic_crossing_pole - - -access;0000078544 private -access;0000014933 yes public -access;0000014456 no -access;0000008670 permissive -access;0000006316 destination customers -access;0000000973 agricultural forestry -access;0000000942 designated official - -foot;0000272169 yes -foot;0000036271 no -foot;0000001118 designated official -foot;0000000960 private -foot;0000000833 permissive -foot;0000000127 destination - -bicycle;0000267569 yes -bicycle;0000067796 no -bicycle;0000004075 designated official -bicycle;0000002596 dismount -bicycle;0000000498 permissive -bicycle;0000000359 private -bicycle;0000000075 destination - -motorcar;0000038901 yes -motorcar;0000009323 no -motorcar;0000000895 private -motorcar;0000000216 destination -motorcar;0000000214 permissive -motorcar;0000000093 agricultural forestry -motorcar;0000000084 designated official - -motor_vehicle;0000000066 yes -motor_vehicle;0000000001 permissive -motor_vehicle;0000000000 designated official -motor_vehicle;0000000030 destination -motor_vehicle;0000000073 agricultural forestry -motor_vehicle;0000000136 private -motor_vehicle;0000000469 no - -motorcycle;0000028697 yes -motorcycle;0000007061 no -motorcycle;0000000243 private -motorcycle;0000000237 designated -motorcycle;0000000117 destination -motorcycle;0000000080 permissive -motorcycle;0000000029 agricultural forestry - -vehicle;0000002176 no -vehicle;0000000576 yes -vehicle;0000000556 private -vehicle;0000000262 destination -vehicle;0000000138 agricultural forestry -vehicle;0000000105 permissive -vehicle;0000000003 designated official - -horse;0000021837 yes -horse;0000010811 no -horse;0000000105 private -horse;0000000065 permissive -horse;0000000053 designated official -horse;0000000009 critical -horse;0000000007 destination - -wheelchair;0000203478 yes true -wheelchair;0000100082 no false -wheelchair;0000080430 limited -wheelchair;0000002769 designated official -wheelchair;0000000005 private -wheelchair;0000000005 permissive -wheelchair;0000000139 bad -wheelchair;0000000031 half -wheelchair;0000000005 partial - -hgv;0000001141 no -hgv;0000000359 yes true -hgv;0000000111 destination -hgv;0000000108 designated official -hgv;0000000065 private -hgv;0000000053 delivery -hgv;0000000016 agricultural forestry -hgv;0000000010 permissive - -crossing;0000251032 uncontrolled -crossing;0000200387 traffic_signals -crossing;0000029717 unmarked -crossing;0000022119 island -crossing;0000006981 zebra -crossing;0000003897 no -crossing;0000002166 yes - -railway;0000312710 level_crossing -railway;0000078746 station -railway;0000067876 buffer_stop -railway;0000056184 switch -railway;0000049600 crossing -railway;0000037871 tram_stop -railway;0000024038 halt -railway;0000014285 subway_entrance -railway;0000010890 signal - -waterway;0000004698 weir -waterway;0000001647 lock_gate -waterway;0000000425 waterfall -waterway;0000000337 take_right_side -waterway;0000000332 take_left_side -waterway;0000000219 milestone -waterway;0000000187 depth -waterway;0000000170 lock - -noexit;0000195286 yes - -entrance;0000301732 yes -entrance;0000159853 main -entrance;0000025621 staircase -entrance;0000006666 home -entrance;0000005428 service -entrance;0000001853 emergency -entrance;0000001144 exit -entrance;0000000953 residence -entrance;0000000620 garage -entrance;0000000558 entrance -entrance;0000000504 main_entrance -entrance;0000000439 secondary_entrance -entrance;0000000285 shop -entrance;0000000258 private - -traffic_calming;0000045987 bump bump;choker -traffic_calming;0000040022 hump hump;choker -traffic_calming;0000012499 table table;choker -traffic_calming;0000006808 yes * -traffic_calming;0000005754 cushion cushion;choker -traffic_calming;0000005466 choker choker;cushion choker;hump choker;table choker;bump -traffic_calming;0000005305 island -traffic_calming;0000004686 chicane -traffic_calming;0000004032 rumble_strip -traffic_calming;0000000847 speed_bump -traffic_calming;0000000186 dip - -ford;0000037927 yes -ford;0000000310 stepping_stones - -direction;0000274642 forward -direction;0000249637 backward -direction;0000021634 both - -traffic_signals:direction;0000062645 forward -traffic_signals:direction;0000033961 backward -traffic_signals:direction;0000007309 both From 89b71c2bfbffe885ad4f6d59b697161f4abaa514 Mon Sep 17 00:00:00 2001 From: afischerdev Date: Sat, 8 Jul 2023 10:57:43 +0200 Subject: [PATCH 2/5] update trekking for db tags --- misc/profiles2/trekking.brf | 88 ++++++++++++++++++++++++++++++++----- 1 file changed, 78 insertions(+), 10 deletions(-) diff --git a/misc/profiles2/trekking.brf b/misc/profiles2/trekking.brf index e10a34b..19dad40 100644 --- a/misc/profiles2/trekking.brf +++ b/misc/profiles2/trekking.brf @@ -9,14 +9,24 @@ assign validForBikes = true # Use the following switches to change behaviour -assign allow_steps = true # %allow_steps% | Set to false to disallow steps | boolean -assign allow_ferries = true # %allow_ferries% | set to false to disallow ferries | boolean -assign ignore_cycleroutes = false # %ignore_cycleroutes% | Set to true for better elevation results | boolean -assign stick_to_cycleroutes = false # %stick_to_cycleroutes% | Set to true to just follow cycleroutes | boolean -assign avoid_unsafe = false # %avoid_unsafe% | Set to true to avoid standard highways | boolean +assign allow_steps = true # %allow_steps% | Set false to disallow steps | boolean +assign allow_ferries = true # %allow_ferries% | Set false to disallow ferries | boolean +assign ignore_cycleroutes = false # %ignore_cycleroutes% | Set true for better elevation results | boolean +assign stick_to_cycleroutes = false # %stick_to_cycleroutes% | Set true to just follow cycleroutes | boolean +assign avoid_unsafe = false # %avoid_unsafe% | Set true to avoid standard highways | boolean +assign avoid_path = false # %avoid_path% | Set true to avoid pathes | boolean + +assign consider_noise = false # %consider_noise% | Enable to favor a low-noise route | boolean +assign consider_river = false # %consider_river% | Enable to favor a route along rivers or sees | boolean +assign consider_forest = false # %consider_forest% | Enable to favor a route in forest or parks | boolean +assign consider_town = false # %consider_town% | Enable to bypass cities / big towns as far as possible | boolean +assign consider_traffic = false # %consider_traffic% | Enable to consider traffic estimates | boolean + + # Change elevation parameters -assign consider_elevation = true # %consider_elevation% | Set to false to ignore elevation in routing | boolean +assign consider_elevation = true # %consider_elevation% | Set true to favor a route with few elevation meters | boolean + assign downhillcost = 60 # %downhillcost% | Cost for going downhill | number assign downhillcutoff = 1.5 # %downhillcutoff% | Gradients below this value in percents are not counted. | number assign uphillcost = 0 # %uphillcost% | Cost for going uphill | number @@ -35,10 +45,10 @@ assign bikerPower = 100 # %bikerPower% | Average power (in W) provided by the # Turn instructions settings assign turnInstructionMode = 1 # %turnInstructionMode% | Mode for the generated turn instructions | [0=none, 1=auto-choose, 2=locus-style, 3=osmand-style, 4=comment-style, 5=gpsies-style, 6=orux-style, 7=locus-old-style] assign turnInstructionCatchingRange = 40 # %turnInstructionCatchingRange% | Within this distance (in m) several turning instructions are combined into one and the turning angles are better approximated to the general direction | number -assign turnInstructionRoundabouts = true # %turnInstructionRoundabouts% | Set to "false" to avoid generating special turning instructions for roundabouts | boolean -assign considerTurnRestrictions = true # %considerTurnRestrictions% | Set to true to take turn restrictions into account | boolean +assign turnInstructionRoundabouts = true # %turnInstructionRoundabouts% | Set "false" to avoid generating special turning instructions for roundabouts | boolean +assign considerTurnRestrictions = true # %considerTurnRestrictions% | Set true to take turn restrictions into account | boolean -assign processUnusedTags = false # %processUnusedTags% | Set to true to output unused tags in data tab | boolean +assign processUnusedTags = false # %processUnusedTags% | Set true to output unused tags in data tab | boolean ---context:way # following code refers to way-tags @@ -169,6 +179,57 @@ assign onewaypenalty = ) else 0.0 +# add estimate tags +assign traffic_penalty + switch consider_traffic + switch estimated_traffic_class= 0 + switch estimated_traffic_class=1|2 0.2 + switch estimated_traffic_class=3 0.4 + switch estimated_traffic_class=4 0.6 + switch estimated_traffic_class=5 0.8 + switch estimated_traffic_class=6|7 1 99 0 + + +assign noise_penalty + switch consider_noise + switch estimated_noise_class= 0 + switch estimated_noise_class=1 0.3 + switch estimated_noise_class=2 0.5 + switch estimated_noise_class=3 0.8 + switch estimated_noise_class=4 1.4 + switch estimated_noise_class=5 1.7 + switch estimated_noise_class=6 2 0 0 + +assign no_river_penalty + switch consider_river + switch estimated_river_class= 2 + switch estimated_river_class=1 1.3 + switch estimated_river_class=2 1 + switch estimated_river_class=3 0.7 + switch estimated_river_class=4 0.4 + switch estimated_river_class=5 0.1 + switch estimated_river_class=6 0 99 0 + +assign no_forest_penalty + switch consider_forest + switch estimated_forest_class= 1 + switch estimated_forest_class=1 0.5 + switch estimated_forest_class=2 0.4 + switch estimated_forest_class=3 0.25 + switch estimated_forest_class=4 0.15 + switch estimated_forest_class=5 0.1 + switch estimated_forest_class=6 0 99 0 + +assign town_penalty + switch consider_town + switch estimated_town_class= 0 + switch estimated_town_class=1 0.5 + switch estimated_town_class=2 0.9 + switch estimated_town_class=3 1.2 + switch estimated_town_class=4 1.3 + switch estimated_town_class=5 1.4 + switch estimated_town_class=6 1.6 99 0 + # # calculate the cost-factor, which is the factor # by which the distance of a way-segment is multiplied @@ -197,6 +258,12 @@ assign costfactor # else min 9999 + add town_penalty + add no_forest_penalty + add no_river_penalty + add noise_penalty + add traffic_penalty + # # apply oneway-and access-penalties # @@ -233,7 +300,8 @@ assign costfactor # else if ( highway=track|road|path|footway ) then ( - if ( tracktype=grade1 ) then ( if probablyGood then 1.0 else 1.3 ) + if ( and highway=path avoid_path ) then ( 10.0 ) + else if ( tracktype=grade1 ) then ( if probablyGood then 1.0 else 1.3 ) else if ( tracktype=grade2 ) then ( if probablyGood then 1.1 else 2.0 ) else if ( tracktype=grade3 ) then ( if probablyGood then 1.5 else 3.0 ) else if ( tracktype=grade4 ) then ( if probablyGood then 2.0 else 5.0 ) From b2abdd720fc7de4d6ce687e51fcc552acac39379 Mon Sep 17 00:00:00 2001 From: afischerdev Date: Sat, 8 Jul 2023 10:59:36 +0200 Subject: [PATCH 3/5] update order to costfactor --- misc/profiles2/fastbike.brf | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/misc/profiles2/fastbike.brf b/misc/profiles2/fastbike.brf index 32cfd37..1c48994 100644 --- a/misc/profiles2/fastbike.brf +++ b/misc/profiles2/fastbike.brf @@ -236,17 +236,17 @@ assign town_penalty switch estimated_town_class=6 1 99 0 assign costfactor - add town_penalty - add no_forest_penalty - add no_river_penalty - add noise_penalty - switch and highway= not route=ferry 10000 switch or highway=proposed highway=abandoned 10000 min 9999 add max onewaypenalty accesspenalty add trafficpenalty + add town_penalty + add no_forest_penalty + add no_river_penalty + add noise_penalty + switch or highway=motorway highway=motorway_link switch allow_motorways 1.5 10000 switch or highway=trunk highway=trunk_link switch allow_motorways 1.5 10 From 5628b885e2060abfb8371852e101bded972ce5a6 Mon Sep 17 00:00:00 2001 From: afischerdev Date: Sat, 8 Jul 2023 11:20:03 +0200 Subject: [PATCH 4/5] update consider description --- misc/profiles2/trekking.brf | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/misc/profiles2/trekking.brf b/misc/profiles2/trekking.brf index 19dad40..011ee43 100644 --- a/misc/profiles2/trekking.brf +++ b/misc/profiles2/trekking.brf @@ -16,11 +16,11 @@ assign stick_to_cycleroutes = false # %stick_to_cycleroutes% | Set true t assign avoid_unsafe = false # %avoid_unsafe% | Set true to avoid standard highways | boolean assign avoid_path = false # %avoid_path% | Set true to avoid pathes | boolean -assign consider_noise = false # %consider_noise% | Enable to favor a low-noise route | boolean -assign consider_river = false # %consider_river% | Enable to favor a route along rivers or sees | boolean -assign consider_forest = false # %consider_forest% | Enable to favor a route in forest or parks | boolean -assign consider_town = false # %consider_town% | Enable to bypass cities / big towns as far as possible | boolean -assign consider_traffic = false # %consider_traffic% | Enable to consider traffic estimates | boolean +assign consider_noise = false # %consider_noise% | Activate to prefer a low-noise route | boolean +assign consider_river = false # %consider_river% | Activate to prefer a route along rivers or sees | boolean +assign consider_forest = false # %consider_forest% | Activate to prefer a route in forest or parks | boolean +assign consider_town = false # %consider_town% | Activate to bypass cities / big towns as far as possible | boolean +assign consider_traffic = false # %consider_traffic% | Activate to consider traffic estimates | boolean @@ -220,7 +220,7 @@ assign no_forest_penalty switch estimated_forest_class=5 0.1 switch estimated_forest_class=6 0 99 0 -assign town_penalty +assign town_penalty switch consider_town switch estimated_town_class= 0 switch estimated_town_class=1 0.5 From 36dcc88a85dc07344f2feabf7a4cb31e2086ea5a Mon Sep 17 00:00:00 2001 From: afischerdev Date: Sat, 8 Jul 2023 11:33:38 +0200 Subject: [PATCH 5/5] update test lookup with estimated_*_class --- .../src/test/resources/lookups_test.dat | 29 +++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/brouter-expressions/src/test/resources/lookups_test.dat b/brouter-expressions/src/test/resources/lookups_test.dat index ad1d683..7fc8548 100644 --- a/brouter-expressions/src/test/resources/lookups_test.dat +++ b/brouter-expressions/src/test/resources/lookups_test.dat @@ -687,6 +687,35 @@ construction;0000000037 driveway construction;0000000021 mini_roundabout construction;0000000020 turning_loop +estimated_forest_class;0000000001 1 +estimated_forest_class;0000000001 2 +estimated_forest_class;0000000001 3 +estimated_forest_class;0000000001 4 +estimated_forest_class;0000000001 5 +estimated_forest_class;0000000001 6 + +estimated_noise_class;0000000001 1 +estimated_noise_class;0000000001 2 +estimated_noise_class;0000000001 3 +estimated_noise_class;0000000001 4 +estimated_noise_class;0000000001 5 +estimated_noise_class;0000000001 6 + +estimated_river_class;0000000001 1 +estimated_river_class;0000000001 2 +estimated_river_class;0000000001 3 +estimated_river_class;0000000001 4 +estimated_river_class;0000000001 5 +estimated_river_class;0000000001 6 + +estimated_town_class;0000000001 1 +estimated_town_class;0000000001 2 +estimated_town_class;0000000001 3 +estimated_town_class;0000000001 4 +estimated_town_class;0000000001 5 +estimated_town_class;0000000001 6 + + ---context:node highway;0001314954 bus_stop