{ "id": "width", "description": { "nl": "<h3>De straat is opgebruikt</h3> <p>Er is steeds meer druk op de openbare ruimte. Voetgangers, fietsers, steps, auto's, bussen, bestelwagens, buggies, cargobikes, ... willen allemaal hun deel van de openbare ruimte en de straat.</p> <p>In deze studie nemen we Brugge onder de loep en kijken we hoe breed elke straat is én hoe breed elke straat zou moeten zijn voor een veilig én vlot verkeer.</p> <h3>Legende</h3> <span style='background: red'>   </span> Straat te smal voor veilig verkeer<br/> <span style='background: #0f0'>   </span> Straat is breed genoeg veilig verkeer<br/> <span style='background: orange'>   </span> Straat zonder voetpad, te smal als ook voetgangers plaats krijgen<br/> <span style='background: lightgrey'>   </span> Autoluw, autoloos of enkel plaatselijk verkeer<br/> <br/> <br/> Een gestippelde lijn is een straat waar ook voor fietsers éénrichtingsverkeer geldt.<br/> Klik op een straat om meer informatie te zien." }, "title": { "nl": "Straatbreedtes" }, "mustHaveLanguage": [ "nl" ], "hideFromOverview": true, "enableUserBadge": false, "enableShareScreen": false, "enableLayers": false, "enableMoreQuests": false, "enableSearch": false, "enableBackgroundLayerSelection": false, "icon": "./assets/themes/width/icon.svg", "startLat": 51.20875, "startLon": 3.22435, "startZoom": 14, "widenFactor": 0.05, "clustering": false, "lockLocation": [ [ 3.2006263732910156, 51.22699040520305 ], [ 3.2529830932617188, 51.190748429411705 ] ], "defaultBackgroundId": "CartoDB.DarkMatterNoLabels", "layers": [ { "id": "street_with_width", "description": "A layer showing street with corresponding widths + an analysis of what this width is used for", "name": { "nl": "Straten met een breedte" }, "calculatedTags": [ "_car_width:=2 /* The width that a single car needs */", "_cyclistWidth:=1.5 /* The width a single cyclist needs to be safely overtaken */", "_pedestrianWidth:=0.75 /* The width a pedestrian needs if sidewalks are missing */", "_has_left_parking=(feat.properties['parking:lane:left'] ?? feat.properties['parking:lane:both']) === 'parallel'", "_has_right_parking=(feat.properties['parking:lane:right'] ?? feat.properties['parking:lane:both']) === 'parallel'", "_has_other_parking= ['parking:lane:left','parking:lane:right','parking:lane:both'].some(key => ['perpendicular','diagonal'].indexOf(feat.properties[key]) >= 0)", "_parallel_parking_count=feat.get('_has_right_parking') + feat.get('_has_left_parking') /* in javascript logic: true + true == 2*/", "_width:needed:parking=feat.get('_parallel_parking_count') * feat.get('_car_width')", "_has_sidewalk_left=['left','both'].indexOf(feat.properties['sidewalk']) >= 0", "_has_sidewalk_right=['right','both'].indexOf(feat.properties['sidewalk']) >= 0", "_pedestrian_flows_in_carriageway= 2 - feat.get('_has_sidewalk_left') - feat.get('_has_sidewalk_right')", "_width:needed:pedestrians=feat.get('_pedestrianWidth') * feat.get('_pedestrian_flows_in_carriageway')", "_oneway_car=(feat.properties['oneway:motor_vehicle'] ?? feat.properties['oneway']) == 'yes'", "_width:needed:cars=feat.get('_car_width') * (2 - feat.get('_oneway_car'))", "_cycling_allowed=feat.properties.bicycle != 'use_sidepath' && feat.properties.bicycle!='no'", "_oneway_bicycle=((feat.properties['oneway:bicycle'] ?? feat.properties['oneway']) == 'yes') && feat.properties['cycleway'] != 'opposite'", "_width:needed:cyclists=feat.get('_cycling_allowed') ? (feat.get('_cyclistWidth') * (2 - feat.get('_oneway_bicycle'))) : 0", "_width:needed:total:=feat.get('_width:needed:cars') + feat.get('_width:needed:parking') + feat.get('_width:needed:cyclists') + feat.get('_width:needed:pedestrians')", "_width:difference:=feat.get('_width:needed:total') - feat.get('width:carriageway')", "_width:difference:no_pedestrians:=feat.get('_width:difference') - feat.get('_width:needed:pedestrians')" ], "minzoom": 12, "source": { "osmTags": "width:carriageway~*" }, "title": { "render": { "nl": "{name}" }, "mappings": [ { "if": "name=", "then": { "nl": "Naamloos segment" } } ] }, "tagRenderings": [ { "id": "carriageway_width", "render": "Deze straat is <b>{width:carriageway}m</b> breed", "question": "Hoe breed is deze straat?", "freeform": { "key": "width:carriageway", "type": "distance", "helperArgs": [ 21, "map" ] } }, { "id": "too_little_width", "render": "Deze straat heeft <span class='alert'>{_width:difference}m</span> te weinig. De ruimte die nodig zou zijn is:", "mappings": [ { "if": { "or": [ "_width:difference~-.*", "_width:difference=0" ] }, "then": "Deze straat is breed genoeg:" } ] }, { "id": "needed_for_cars", "render": "<b>{_width:needed:cars}m</b> voor het autoverkeer", "mappings": [ { "if": "oneway=yes", "then": "<b>{_width:needed:cars}m</b> voor het éénrichtings-autoverkeer" }, { "if": "oneway=no", "then": "<b>{_width:needed:cars}m</b> voor het tweerichtings-autoverkeer" } ] }, { "id": "needed_for_parking", "render": "<b>{_width:needed:parking}m</b> voor het geparkeerde wagens", "condition": "_width:needed:parking!=0" }, { "id": "needed_for_cyclists", "render": "<b>{_width:needed:cyclists}m</b> voor fietsers", "mappings": [ { "if": "bicycle=use_sidepath", "then": "Fietsers hebben hier een vrijliggend fietspad en worden dus niet meegerekend" }, { "if": "oneway:bicycle=yes", "then": "<b>{_width:needed:cyclists}m</b> voor fietsers die met de rijrichting mee moeten" } ] }, { "id": "needed_for_pedestrians", "render": "<b>{_width:needed:pedestrians}m</b> voor voetgangers", "condition": "_width:needed:pedestrians!=0", "mappings": [ { "if": { "or": [ "sidewalk=none", "sidewalk=no" ] }, "then": "<b>{_width:needed:pedestrians}m</b> voor voetgangers: er zijn hier geen voetpaden" }, { "if": { "or": [ "sidewalk=left", "sidewalk=right" ] }, "then": "<b>{_width:needed:pedestrians}m</b> voor voetgangers: er is slechts aan één kant een voetpad" } ] }, { "id": "total_width_needed", "render": "<span style='border: 1px solid black; border-radius: 0.5em; padding: 0.25em;'><b>{_width:needed:total}m</b> nodig in het totaal</span>" }, { "id": "has_sidewalks", "condition": "id=disabled", "question": { "nl": "Heeft deze straat voetpaden?" }, "mappings": [ { "if": "sidewalk=both", "then": { "nl": "Voetpad aan beide zijden" } }, { "if": "sidewalk=none", "then": { "nl": "Heeft géén voetpaden" } }, { "if": "sidewalk=left", "then": { "nl": "Voetpad aan de linkerkant" } }, { "if": "sidewalk=right", "then": { "nl": "Voetpad aan de rechterzijde" } } ] } ], "mapRendering": [ { "location": [ "point" ], "icon": "./assets/themes/width/icon.svg", "iconSize": "40,40,center" }, { "width": "4", "color": { "render": "#00f", "mappings": [ { "if": { "or": [ "access=destination", "highway=pedestrian", "motor_vehicle=no", "motor_vehicle=destination" ] }, "then": "lightgrey" }, { "if": { "and": [ "_width:difference!~-.*", "_width:difference:no_pedestrians~-.*" ] }, "then": "orange" }, { "if": "_width:difference~-.*", "then": "#0f0" }, { "if": "_width:difference!~-.*", "then": "#f00" } ] }, "dashArray": { "render": "", "mappings": [ { "if": { "and": [ "oneway=yes", { "or": [ "oneway:bicycle=yes", "oneway:bicycle=" ] } ] }, "then": "5 6" } ] } } ] } ] }