{ "id": "grb", "title": { "nl": "GRB import helper" }, "description": { "nl": "Dit thema helpt het GRB importeren.", "en": "This theme is an attempt to help automating the GRB import.", "hu": "Ez a sablon a flandriai GRB épületimportálás automatizlását kívánja megkönnyíteni.", "de": "Dieses Thema ist ein Versuch, die Automatisierung des GRB-Imports zu unterstützen.", "fr": "Ce thème tente d’aider l’import automatique GRB.", "es": "Este tema es un intento de automatizar la importación GRB.", "da": "Dette tema er et forsøg på at hjælpe med at automatisere GRB-importen.", "ca": "Aquest tema és un intent d'automatitzar la importació GRB.", "cs": "Toto téma je pokusem o automatizaci importu GRB.", "pl": "Ten temat jest próbą pomocy w automatyzacji importu GRB." }, "shortDescription": { "nl": "Grb import helper tool" }, "icon": "./assets/themes/grb/logo.svg", "startZoom": 9, "startLat": 51.0249, "startLon": 4.026489, "defaultBackgroundId": "osm", "credits": [ "Pieter Vander Vennet" ], "hideFromOverview": true, "layers": [ { "id": "osm-buildings", "name": "All OSM-buildings", "source": { "osmTags": { "and": [ { "or": [ "id~way/.*", "id~relation/.*" ] }, "building~*" ] }, "maxCacheAge": 0 }, "title": "OSM-gebouw", "tagRenderings": [ { "id": "building type", "freeform": { "key": "building" }, "render": "The building type is {building}", "question": { "en": "What kind of building is this?", "de": "Was ist das für ein Gebäude?", "es": "¿Qué tipo de edificio es este?", "nl": "Wat voor soort gebouw is dit?", "fr": "De quel type de bâtiment s’agit-il ?", "da": "Hvad er det for en bygning?", "cs": "Jaký druh budovy je toto?", "ca": "Quin tipus d'edifici és aquest?", "pl": "Jaki to rodzaj budynku?" }, "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 building for living)" }, { "if": "building=office", "then": "An office building - highrise for work" }, { "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" } } ] }, { "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-reference", "render": { "en": "Has been imported from GRB, reference number is {source:geometry:ref}", "de": "Wurde von GRB importiert, Referenznummer ist {source:geometry:ref}", "ca": "Ha estat importat des de GRB, el número de referència és {source:geometry:ref}", "cs": "Byl importován z GRB, referenční číslo je {source:geometry:ref}", "es": "Se ha importado de GRB, el número de referencia es {source:geometry:ref}", "pl": "Został zaimportowany z GRB, numer referencyjny to {source:geometry:ref}" }, "condition": "source:geometry:ref~*" }, { "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" } ] }, { "id": "last-edited-by", "options": [ { "fields": [ { "name": "username" } ], "question": "Last change made by {username}", "osmTags": "_last_edit:contributor~i~{username}" } ] } ], "pointRendering": null, "lineRendering": [ { "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" } ] } } ] }, { "id": "grb", "description": "Geometry which comes from GRB with tools to import them", "source": { "osmTags": { "and": [ "osm_id~*", "man_made!=mast" ] }, "geoJson": "https://betadata.grbosm.site/grb?bbox={x_min},{y_min},{x_max},{y_max}", "geoJsonZoomLevel": 18, "mercatorCrs": true, "maxCacheAge": 0, "idKey": "osm_id" }, "name": "GRB geometries", "title": "GRB outline", "calculatedTags": [ "_overlaps_with_buildings=overlapWith(feat)('osm-buildings').filter(f => f.feat.properties.id.indexOf('-') < 0) ?? []", "_overlaps_with=get(feat)('_overlaps_with_buildings').find(f => f.overlap > 1 /* square meter */ )", "_osm_obj:source:ref=get(feat)('_overlaps_with')?.feat?.properties['source:geometry:ref']", "_osm_obj:id=get(feat)('_overlaps_with')?.feat?.properties?.id", "_osm_obj:source:date=(feat.properties['_overlaps_with']?.feat?.properties ?? {})['source:geometry:date']?.replace(/\\//g, '-')", "_osm_obj:building=get(feat)('_overlaps_with')?.feat?.properties?.building", "_osm_obj:addr:street=(get(feat)('_overlaps_with')?.feat?.properties ?? {})['addr:street']", "_osm_obj:addr:housenumber=(get(feat)('_overlaps_with')?.feat?.properties ?? {})['addr:housenumber']", "_osm_obj:surface=(get(feat)('_overlaps_with')?.feat?.properties ?? {})['_surface']", "_overlap_absolute=get(feat)('_overlaps_with')?.overlap", "_reverse_overlap_percentage=Math.round(100 * get(feat)('_overlap_absolute') / get(feat)('_surface'))", "_overlap_percentage=Math.round(100 * get(feat)('_overlap_absolute') / get(feat)('_osm_obj:surface'))", "_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' : ''", "_intersects_with_other_features=intersectionsWith(feat)('generic_osm_object').map(f => \"\" + f.feat.properties.id + \"\").join(', ')" ], "tagRenderings": [ { "id": "Import-button", "render": "{import_way_button(osm-buildings,building=$building;man_made=$man_made; 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,,_is_part_of_building=true,1,_moveable=true)}", "mappings": [ { "#": "Failsafe", "if": "_grb_ref=", "then": { "en": "Did not yet calculate the metatags... Reopen this popup", "de": "Metatags noch nicht berechnet... Dieses Fenster erneut öffnen", "nl": "Metatags nog niet berekend... Heropen deze pop-up", "fr": "Les balises meta ne sont pas encore calculées ... Rouvrir cette fenêtre pop-up", "da": "Har endnu ikke beregnet metatags... Genåbn denne popup", "cs": "Metatags ještě nebyly vypočítány... Znovu otevřete toto vyskakovací okno", "es": "Aún no se han calculado los metatags... Reabrir esta ventana emergente", "ca": "Encara no s'han calculat les metaetiquetes... Torneu a obrir aquesta finestra emergent", "pl": "Jeszcze nie obliczono metaznaczników... Otwórz to okienko ponownie" } }, { "if": { "and": [ "id~relation/*", "_overlap_percentage>50", "_reverse_overlap_percentage>50", "_overlaps_with!=" ] }, "then": { "en": "This building has holes and is modeled as a relation. As such, it cannot be conflated. Conflate it manually via the building export site {open_in_josm()}", "de": "Dieses Gebäude hat Löcher und ist als Relation modelliert. Als solches kann es nicht zusammengeführt werden. Es kann manuell zusammengeführt werden über die Gebäudeexportseite {open_in_josm()}", "es": "Este edificio tiene agujeros y está modelado como una relación. Por lo tanto, no se puede combinar. Combínalo manualmente a través el sitio de exportación de edificios {open_in_josm()}", "fr": "Ce bâtiment a des ouvertures et est modélisé comme une relation. Il ne peut être fusionné. Fusionnez-le manuellement via le site d’export de bâtiment {open_in_josm()}", "nl": "Dit gebouw heeft openingen en is gemodelleerd als een relatie. Bijgevolg kan het niet worden samengevoegd. Voeg het manueel samen via de export-site voor gebouwen {open_in_josm()}", "da": "Denne bygning har huller og er modelleret som en relation. Som sådan kan det ikke sammenblandes. Sammensæt det manuelt via bygningseksportwebstedet {open_in_josm()}", "cs": "Tato budova má otvory a je modelována jako vztah. Jako takovou ji nelze spojovat. Spojte ji ručně pomocí exportní stránky budovy {open_in_josm()}", "ca": "Aquest edifici té forats i està modelat com una relació. Com a tal, no es pot combinar. Combineu-lo manualment mitjançant el lloc d'exportació de l'edifici {open_in_josm()}", "pl": "Budynek ten ma dziury i jest modelowany jako relacja. W związku z tym nie można go łączyć. Połącz to ręcznie za pomocą strony eksportu budynków {open_in_josm()}" } }, { "#": "Actually the same as below, except that the text shows 'add the address' too", "if": { "and": [ "_overlap_percentage>50", "_reverse_overlap_percentage>50", "_osm_obj:addr:street=", "_osm_obj:addr:housenumber=", "addr:street~*", "addr:housenumber~*", "addr:street!:={_osm_obj:addr:street}", "addr:housenumber!:={_osm_obj:addr:housenumber}" ] }, "then": "{conflate_button(osm-buildings,building=$_target_building_type; source:geometry:date=$_grb_date; source:geometry:ref=$_grb_ref; addr:street=$addr:street; addr:housenumber=$addr:housenumber, Replace the geometry in OpenStreetMap and add the address,,_osm_obj:id)}" }, { "if": { "and": [ "_overlap_percentage>50", "_reverse_overlap_percentage>50" ] }, "then": "{conflate_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)}" } ] }, { "id": "Building info", "render": "This is a {building} detected by {detection_method}" }, { "id": "overlapping building address", "render": "The overlapping openstreetmap-building has no address information at all", "mappings": [ { "if": { "and": [ "_osm_obj:addr:street~*", "_osm_obj:addr:housenumber~*" ] }, "then": "The overlapping openstreetmap-building has address {_osm_obj:addr:street} {_osm_obj:addr:housenumber}" }, { "if": "_osm_obj:addr:street~*", "then": "The overlapping building only has a street known: {_osm_obj:addr:street}" }, { "if": "_osm_obj:addr:housenumber~*", "then": "The overlapping building only has a housenumber known: {_osm_obj:addr:housenumber}" }, { "if": "_osm_obj:id=", "then": "No overlapping OpenStreetMap-building found" } ] }, { "id": "grb_address_diff", "render": "