{ "id": "grb", "title": { "nl": "GRB import helper" }, "shortDescription": { "nl": "Grb import helper tool" }, "description": { "nl": "Dit thema helpt het GRB importeren.", "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": 19 }, "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" } ], "passAllFeatures": true } }, { "id": "OSM-buildings", "name": "All OSM-buildings", "source": { "osmTags": "building~*", "maxCacheAge": 0 }, "calculatedTags": [ "_grbNumber=(feat.properties.fixme?.match(/GRB thinks that this has number ([^;]+)/ ) ?? ['','none']) [1]" ], "mapRendering": [ { "width": { "render": "2", "mappings": [ { "if": "fixme~*", "then": "5" } ] }, "color": { "render": "#00c", "mappings": [ { "if": "fixme~*", "then": "#ff00ff" }, { "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}", "question": { "en": "What kind of building is this?" }, "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" } ] }, { "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" } }, "all_tags" ], "filter": [ { "id": "has-fixme", "options": [ { "osmTags": "fixme~*", "question": "Heeft een FIXME" } ] } ], "#": "Pass all the features in order to render the address in the layer below", "passAllFeatures": true }, "address", { "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" ] }, { "builtin": "crab_address", "override": { "calculatedTags+": [ "_embedded_in=feat.overlapWith('OSM-buildings')[0]?.feat?.properties ?? {}", "_embedding_nr=feat.get('_embedded_in')['addr:housenumber']+(feat.get('_embedded_in')['addr:unit'] ?? '')", "_embedding_street=feat.get('_embedded_in')['addr:street']", "_embedding_id=feat.get('_embedded_in').id", "_closeby_addresses=feat.closestn('address',10,undefined,50).map(f => f.feat).filter(addr => addr.properties['addr:street'] == feat.properties['STRAATNM'] && feat.properties['HNRLABEL'] == addr.properties['addr:housenumber'] + (addr.properties['addr:unit']??'') ).length", "_has_identical_closeby_address=feat.get('_closeby_addresses') >= 1 ? 'yes' : 'no'" ], "isShown": { "render": "yes", "mappings": [ { "if": { "and": [ "_embedding_nr:={HUISNR}", "_embedding_street:={STRAATNM}" ] }, "then": "no" }, { "if": "_has_identical_closeby_address=yes", "then": "no" } ] }, "tagRenderings+": [ { "id": "render_embedded", "render": "Dit CRAB-adres ligt in een OSM-gebouw. Het OSM-gebouw heeft geen volledig adres", "mapping": [ { "if": { "and": [ "_embedding_street~*", "_embedding_nr~*" ] }, "then": "Het omliggende object met addres heeft {_embedding_street} {_embedding_nr}" } ], "condition": "_embedding_id~*" }, { "id": "apply-button", "render": "{tag_apply(addr:street=$STRAATNM; addr:housenumber=$HUISNR,Apply this address on the OSM-building,,_embedding_id)}", "condition": "_embedding_id!=" }, { "id": "import-button", "render": "{import_button(OSM-buildings, addr:street=$STRAATNM; addr:housenumber=$HUISNR,Voeg dit adres als een nieuw adrespunt toe,,,OSM-buildings,5)}", "condition": { "and": [ "_embedding_street~*", "_embedding_nr~*" ] } } ] } }, { "id": "GRB", "description": "Geometry which comes from GRB with tools to import them", "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.5)[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)", "_building:min_level= feat.properties['fixme']?.startsWith('verdieping, correct the building tag, add building:level and building:min_level before upload in JOSM!') ? '1' : ''" ], "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; addr:street=$addr:street; addr:housenumber=$addr:housenumber; building:min_level=$_building:min_level, 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 }