{ "id": "grb", "title": { "nl": "GRB Fixup" }, "shortDescription": { "nl": "Grb Fixup" }, "description": { "nl": "GRB Fixup", "en": "This theme is an attempt to help automating the GRB import.
Note that this is very hacky and 'steals' the GRB data from an external site; in order to do this, you need to install and activate this firefox extension for it to work." }, "language": [ "nl", "en" ], "maintainer": "", "icon": "./assets/svg/bug.svg", "version": "0", "startLat": 51.2132, "startLon": 3.231, "startZoom": 14, "widenFactor": 2, "socialImage": "", "clustering": { "maxZoom": 15 }, "overrideAll": { "minzoom": 18 }, "trackAllNodes": true, "enableGeolocation": false, "layers": [ { "builtin": "type_node", "isShown": { "render": "no" }, "override": { "calculatedTags": [ "_is_part_of_building=feat.get('parent_ways')?.some(p => p.building !== undefined && p.building !== '') ?? false", "_is_part_of_building_passage=feat.get('parent_ways')?.some(p => p.tunnel === 'building_passage') ?? false", "_is_part_of_highway=!feat.get('is_part_of_building_passage') && (feat.get('parent_ways')?.some(p => p.highway !== undefined && p.highway !== '') ?? false)", "_is_part_of_landuse=feat.get('parent_ways')?.some(p => (p.landuse !== undefined && p.landuse !== '') || (p.natural !== undefined && p.natural !== '')) ?? false" ], "mapRendering": [ { "icon": "square:#00f", "iconSize": "5,5,center", "location": "point" } ] } }, { "id": "OSM-buildings", "name": "All OSM-buildings", "source": { "osmTags": "building~*", "maxCacheAge": 0 }, "mapRendering": [ { "width": { "render": "2" }, "color": { "render": "#00c", "mappings": [ { "if": "building=house", "then": "#a00" }, { "if": "building=shed", "then": "#563e02" }, { "if": { "or": [ "building=garage", "building=garages" ] }, "then": "#f9bfbb" }, { "if": "building=yes", "then": "#0774f2" } ] } } ], "title": "OSM-gebouw", "tagRenderings": [ { "id": "building type", "freeform": { "key": "building" }, "render": "The building type is {building}", "mappings": [ { "if": "building=house", "then": "A normal house" }, { "if": "building=detached", "then": "A house detached from other building" }, { "if": "building=semidetached_house", "then": "A house sharing only one wall with another house" }, { "if": "building=apartments", "then": "An apartment building - highrise for living" }, { "if": "building=office", "then": "An office building - highrise for work" }, { "if": "building=apartments", "then": "An apartment building" }, { "if": "building=shed", "then": "A small shed, e.g. in a garden" }, { "if": "building=garage", "then": "A single garage to park a car" }, { "if": "building=garages", "then": "A building containing only garages; typically they are all identical" }, { "if": "building=yes", "then": "A building - no specification" } ] }, "all_tags" ] }, { "id": "All OSM objects", "name": "All OSM Objects", "source": { "osmTags": { "and": [ "id~*", "landuse=", "place=", "disused:power=", "power=", "type!=boundary", "boundary=", { "or": [ "level=", "level=0" ] }, { "or": [ "layer=0", "layer=" ] } ] }, "maxCacheAge": 0 }, "mapRendering": [ { "color": { "render": "#00c" }, "width": { "render": "1" } } ], "title": { "render": { "*": "OSM-Object" } }, "tagRenderings": [ "all_tags" ] }, { "id": "osm-fixmes", "name": { "nl": "Fixmes op gebouwen" }, "source": { "maxCacheAge": 0, "osmTags": { "and": [ "fixme~*", "building~*" ] } }, "calculatedTags": [ "_grbNumber=(feat.properties.fixme?.match(/GRB thinks that this has number ([^;]+)/ ) ?? ['','none']) [1]" ], "title": { "render": { "nl": "{addr:street} {addr:housenumber}" }, "mappings": [ { "if": { "and": [ "fixme~*" ] }, "then": { "nl": "{fixme}" } } ] }, "description": { "nl": "Dit gebouw heeft een foutmelding" }, "tagRenderings": [ { "id": "grb-housenumber", "render": { "nl": "Het huisnummer is {addr:housenumber}" }, "question": { "nl": "Wat is het huisnummer?" }, "freeform": { "key": "addr:housenumber" }, "mappings": [ { "if": { "and": [ "not:addr:housenumber=yes", "addr:housenumber=" ] }, "then": { "nl": "Geen huisnummer" } }, { "if": { "and": [ "addr:housenumber:={_grbNumber}", "fixme=" ] }, "then": "Het huisnummer is {_grbNumber}, wat overeenkomt met het GRB", "hideInAnswer": { "or": [ "_grbNumber=", "_grbNumber=none", "_grbNumber=no number" ] } }, { "if": { "and": [ "addr:housenumber=", "not:addr:housenumber=yes", "fixme=" ] }, "then": "Dit gebouw heeft geen nummer, net zoals in het GRB", "hideInAnswer": "_grbNumber!=no number" } ] }, { "id": "grb-unit", "question": "Wat is de wooneenheid-aanduiding?", "render": { "nl": "De wooneenheid-aanduiding is {addr:unit} " }, "freeform": { "key": "addr:unit" }, "mappings": [ { "if": "addr:unit=", "then": "Geen wooneenheid-nummer" } ] }, { "id": "grb-street", "render": { "nl": "De straat is {addr:street}" }, "freeform": { "key": "addr:street" }, "question": { "nl": "Wat is de straat?" } }, { "id": "grb-fixme", "render": { "nl": "De fixme is {fixme}" }, "question": { "nl": "Wat zegt de fixme?" }, "freeform": { "key": "fixme" }, "mappings": [ { "if": { "and": [ "fixme=" ] }, "then": { "nl": "Geen fixme" } } ] }, { "id": "grb-min-level", "render": { "nl": "Dit gebouw begint maar op de {building:min_level} verdieping" }, "question": { "nl": "Hoeveel verdiepingen ontbreken?" }, "freeform": { "key": "building:min_level", "type": "pnat" } } ], "mapRendering": [ { "location": [ "point", "centroid" ], "label": { "mappings": [ { "if": "addr:housenumber~*", "then": "
{addr:housenumber}
" } ] }, "iconSize": { "render": "40,40,center" } }, { "dashes": "2 2", "color": { "render": "#00f" }, "width": { "render": "2" } } ] }, { "id": "crab-addresses 2021-10-26", "source": { "osmTags": "HUISNR~*", "geoJson": "https://raw.githubusercontent.com/pietervdvn/pietervdvn.github.io/master/CRAB_2021_10_26/tile_{z}_{x}_{y}.geojson", "#geoJson": "https://pietervdvn.github.io/CRAB_2021_10_26/tile_{z}_{x}_{y}.geojson", "geoJsonZoomLevel": 18, "maxCacheAge": 0 }, "name": "CRAB-addressen", "title": "CRAB-adres", "mapRendering": [ { "location": [ "point" ], "icon": "circle:#bb3322", "iconSize": "15,15,center" } ], "calculatedTags": [ "_embedded_in=feat.overlapWith('OSM-buildings').filter(f => f.feat.properties['addr:housenumber'] !== undefined)[0]?.feat?.properties ", "_embedding_nr=feat.get('_embedded_in')['addr:housenumber']", "_embedding_street=feat.get('_embedded_in')['addr:street']" ], "isShown": { "render": "yes", "mappings": [ { "if": { "and": [ "_embedding_nr:={HUISNR}", "_embedding_street:={STRAATNM}" ] }, "then": "no" } ] }, "tagRenderings": [ { "id": "render_crab", "render": "Volgens het CRAB ligt hier {STRAATNM} {HUISNR} (label: {HNRLABEL})" }, { "id": "render_embedded", "render": "Het omliggende object met addres heeft {_embedding_street} {_embedding_nr}", "condition": { "and": [ "_embedding_street~*", "_embedding_nr~*" ] } }, "all_tags", { "id": "import-button", "render": "{import_button(OSM-buildings, addr:street=$STRAATNM; addr:housenumber=$HUISNR,Import this address,,,OSM-buildings,5)}" } ] }, { "id": "grb-fixmes", "name": { "nl": "Fixmes op gebouwen" }, "source": { "maxCacheAge": 0, "osmTags": { "and": [ "fixme~*", "building~*" ] } }, "calculatedTags": [ "_grbNumber=(feat.properties.fixme?.match(/GRB thinks that this has number ([^;]+)/ ) ?? ['','none']) [1]" ], "title": { "render": { "nl": "{addr:street} {addr:housenumber}" }, "mappings": [ { "if": { "and": [ "fixme~*" ] }, "then": { "nl": "{fixme}" } } ] }, "description": { "nl": "Dit gebouw heeft een foutmelding" }, "tagRenderings": [ { "id": "grb-housenumber", "render": { "nl": "Het huisnummer is {addr:housenumber}" }, "question": { "nl": "Wat is het huisnummer?" }, "freeform": { "key": "addr:housenumber" }, "mappings": [ { "if": { "and": [ "not:addr:housenumber=yes", "addr:housenumber=" ] }, "then": { "nl": "Geen huisnummer" } }, { "if": { "and": [ "addr:housenumber:={_grbNumber}", "fixme=" ] }, "then": "Het huisnummer is {_grbNumber}, wat overeenkomt met het GRB", "hideInAnswer": { "or": [ "_grbNumber=", "_grbNumber=none", "_grbNumber=no number" ] } }, { "if": { "and": [ "addr:housenumber=", "not:addr:housenumber=yes", "fixme=" ] }, "then": "Dit gebouw heeft geen nummer, net zoals in het GRB", "hideInAnswer": "_grbNumber!=no number" } ] }, { "id": "grb-unit", "question": "Wat is de wooneenheid-aanduiding?", "render": { "nl": "De wooneenheid-aanduiding is {addr:unit} " }, "freeform": { "key": "addr:unit" }, "mappings": [ { "if": "addr:unit=", "then": "Geen wooneenheid-nummer" } ] }, { "id": "grb-street", "render": { "nl": "De straat is {addr:street}" }, "freeform": { "key": "addr:street" }, "question": { "nl": "Wat is de straat?" } }, { "id": "grb-fixme", "render": { "nl": "De fixme is {fixme}" }, "question": { "nl": "Wat zegt de fixme?" }, "freeform": { "key": "fixme" }, "mappings": [ { "if": { "and": [ "fixme=" ] }, "then": { "nl": "Geen fixme" } } ] }, { "id": "grb-min-level", "render": { "nl": "Dit gebouw begint maar op de {building:min_level} verdieping" }, "question": { "nl": "Hoeveel verdiepingen ontbreken?" }, "freeform": { "key": "building:min_level", "type": "pnat" } } ], "mapRendering": [ { "location": [ "point", "centroid" ], "iconSize": { "render": "40,40,center" }, "label": { "mappings": [ { "if": "addr:housenumber~*", "then": "
{addr:housenumber}
" } ] } }, { "width": { "render": "2" }, "color": { "render": "#00f" } } ] }, { "id": "GRB", "source": { "osmTags": "HUISNR~*", "geoJson": "https://betadata.grbosm.site/grb?bbox={x_min},{y_min},{x_max},{y_max}", "geoJsonZoomLevel": 18, "mercatorCrs": true, "maxCacheAge": 0 }, "name": "GRB geometries", "title": "GRB outline", "calculatedTags": [ "_overlaps_with=feat.overlapWith('OSM-buildings').filter(f => f.overlap > 1 && (feat.get('_surface') < 20 || f.overlap / feat.get('_surface')) > 0.9)[0] ?? null", "_overlap_absolute=feat.get('_overlaps_with')?.overlap", "_overlap_percentage=Math.round(100 * feat.get('_overlap_absolute') / feat.get('_surface')) ", "_osm_obj:source:ref=feat.get('_overlaps_with')?.feat?.properties['source:geometry:ref']", "_osm_obj:source:date=feat.get('_overlaps_with')?.feat?.properties['source:geometry:date'].replace(/\\//g, '-')", "_osm_obj:building=feat.get('_overlaps_with')?.feat?.properties.building", "_osm_obj:id=feat.get('_overlaps_with')?.feat?.properties.id", "_grb_ref=feat.properties['source:geometry:entity'] + '/' + feat.properties['source:geometry:oidn']", "_imported_osm_object_found= feat.properties['_osm_obj:source:ref'] == feat.properties._grb_ref", "_grb_date=feat.properties['source:geometry:date'].replace(/\\//g,'-')", "_imported_osm_still_fresh= feat.properties['_osm_obj:source:date'] == feat.properties._grb_date", "_target_building_type=feat.properties['_osm_obj:building'] === 'yes' ? feat.properties.building : (feat.properties['_osm_obj:building'] ?? feat.properties.building)" ], "tagRenderings": [ { "id": "Building info", "render": "This is a {building} detected by {detection_method}" }, { "id": "overlapping building type", "render": "
The overlapping openstreetmap-building is a {_osm_obj:building} and covers {_overlap_percentage}% of the GRB building

GRB geometry:

{minimap(21, id):height:10rem;border-radius:1rem;overflow:hidden}

OSM geometry:

{minimap(21,_osm_obj:id):height:10rem;border-radius:1rem;overflow:hidden}", "condition": "_overlaps_with!=null" }, { "id": "apply-id", "render": "{tag_apply(source:geometry:date=$_grb_date; source:geometry:ref=$_grb_ref,Mark the OSM-building as imported,,_osm_obj:id)}", "condition": { "and": [ "_overlaps_with!=null" ] } }, { "id": "apply-building-type", "render": "{tag_apply(building=$building,Use the building type from GRB,,_osm_obj:id)}", "condition": { "and": [ "_overlaps_with!=null", "_osm_obj:building=yes", "building!=yes" ] } }, { "id": "Import-button", "render": "{import_button(OSM-buildings,building=$building; source:geometry:date=$_grb_date; source:geometry:ref=$_grb_ref, Upload this building to OpenStreetMap)}", "mappings": [ { "if": "_overlaps_with!=null", "then": "{import_button(OSM-buildings,building=$_target_building_type; source:geometry:date=$_grb_date; source:geometry:ref=$_grb_ref, Replace the geometry in OpenStreetMap,,,_osm_obj:id)}" } ] }, "all_tags" ], "isShown": { "render": "yes", "mappings": [ { "if": { "and": [ "_imported_osm_object_found=true", "_imported_osm_still_fresh=true" ] }, "then": "no" } ] }, "mapRendering": [ { "color": { "render": "#00a", "mappings": [ { "if": { "and": [ "_imported_osm_object_found=true", "_imported_osm_still_fresh=true" ] }, "then": "#0f0" } ] } } ] } ], "hideFromOverview": true, "defaultBackgroundId": "AGIVFlandersGRB", "overpassMaxZoom": 15, "osmApiTileSize": 17 }