2020-11-17 16:29:51 +01:00
{
2021-04-20 10:49:45 +02:00
"id" : "surveillance_camera" ,
2020-11-17 16:29:51 +01:00
"name" : {
"en" : "Surveillance camera's" ,
2021-05-30 20:56:09 +02:00
"nl" : "Bewakingscamera's" ,
2021-06-04 17:23:17 +02:00
"ru" : "Камеры наблюдения" ,
"fr" : "Caméras de surveillance"
2020-11-17 16:29:51 +01:00
} ,
"minzoom" : 12 ,
2021-03-20 23:45:52 +01:00
"source" : {
"osmTags" : {
"and" : [
"man_made=surveillance" ,
{
"or" : [
"surveillance:type=camera" ,
"surveillance:type=ALPR" ,
"surveillance:type=ANPR"
]
}
]
}
2020-11-17 16:29:51 +01:00
} ,
"title" : {
"render" : {
"en" : "Surveillance Camera" ,
2021-05-30 20:56:09 +02:00
"nl" : "Bewakingscamera" ,
2021-06-04 17:23:17 +02:00
"ru" : "Камера наблюдения" ,
"fr" : "Caméra de surveillance"
2020-11-17 16:29:51 +01:00
}
} ,
"tagRenderings" : [
"images" ,
{
"#" : "Camera type: fixed; panning; dome" ,
"question" : {
"en" : "What kind of camera is this?" ,
2021-06-04 17:23:17 +02:00
"nl" : "Wat voor soort camera is dit?" ,
"fr" : "Quel genre de caméra est-ce ?"
2020-11-17 16:29:51 +01:00
} ,
"mappings" : [
{
"if" : {
"and" : [
"camera:type=fixed"
]
} ,
"then" : {
"en" : "A fixed (non-moving) camera" ,
2021-06-04 17:23:17 +02:00
"nl" : "Een vaste camera" ,
"fr" : "Une caméra fixe (non mobile)"
2020-11-17 16:29:51 +01:00
}
} ,
{
"if" : {
"and" : [
"camera:type=dome"
]
} ,
"then" : {
"en" : "A dome camera (which can turn)" ,
2021-06-04 17:23:17 +02:00
"nl" : "Een dome (bolvormige camera die kan draaien)" ,
"fr" : "Une caméra dôme (qui peut tourner)"
2020-11-17 16:29:51 +01:00
}
} ,
{
"if" : {
"and" : [
"camera:type=panning"
]
} ,
"then" : {
"en" : "A panning camera" ,
2021-05-30 20:56:09 +02:00
"nl" : "Een camera die (met een motor) van links naar rechts kan draaien" ,
2021-06-04 17:23:17 +02:00
"ru" : "Панорамная камера" ,
"fr" : "Une caméra panoramique"
2020-11-17 16:29:51 +01:00
}
}
]
} ,
{
"#" : "direction. We don't ask this for a dome on a pole or ceiling as it has a 360° view" ,
"question" : {
"en" : "In which geographical direction does this camera film?" ,
2021-06-04 17:23:17 +02:00
"nl" : "In welke geografische richting filmt deze camera?" ,
"fr" : "Dans quelle direction géographique cette caméra filme-t-elle ?"
2021-04-28 20:42:23 +02:00
} ,
"render" : {
"en" : "Films to a compass heading of {camera:direction}" ,
2021-06-04 17:23:17 +02:00
"nl" : "Filmt in kompasrichting {camera:direction}" ,
"fr" : "Filme dans une direction {camera:direction}"
2020-11-17 16:29:51 +01:00
} ,
"condition" : {
"or" : [
2021-04-28 20:42:23 +02:00
"camera:direction~*" ,
"direction~*" ,
2020-11-17 16:29:51 +01:00
"camera:type!=dome" ,
{
"and" : [
2020-12-27 22:24:27 +01:00
"camera:type=dome" ,
"camera:mount=wall"
2020-11-17 16:29:51 +01:00
]
}
]
} ,
"freeform" : {
"key" : "camera:direction" ,
"type" : "direction"
2021-04-28 20:42:23 +02:00
} ,
"mappings" : [
{
"if" : {
"and" : [
"camera:direction=" ,
"direction~*"
]
} ,
"then" : {
"en" : "Films to a compass heading of {direction}" ,
2021-06-04 17:23:17 +02:00
"nl" : "Filmt in kompasrichting {direction}" ,
"fr" : "Filme dans une direction {direction}"
2021-04-28 20:42:23 +02:00
} ,
"hideInAnswer" : true
}
]
2020-11-17 16:29:51 +01:00
} ,
{
"#" : "Operator" ,
"freeform" : {
"key" : "operator"
} ,
"question" : {
"en" : "Who operates this CCTV?" ,
2021-06-04 17:23:17 +02:00
"nl" : "Wie beheert deze bewakingscamera?" ,
"fr" : "Qui exploite ce système de vidéosurveillance ?"
2020-11-17 16:29:51 +01:00
} ,
"render" : {
"en" : "Operated by {operator}" ,
2021-06-04 17:23:17 +02:00
"nl" : "Beheer door {operator}" ,
"fr" : "Exploité par {operator}"
2020-11-17 16:29:51 +01:00
}
} ,
{
"#" : "Surveillance type: public, outdoor, indoor" ,
"question" : {
"en" : "What kind of surveillance is this camera" ,
2021-06-04 17:23:17 +02:00
"nl" : "Wat soort bewaking wordt hier uitgevoerd?" ,
"fr" : "Quel genre de surveillance est cette caméra"
2020-11-17 16:29:51 +01:00
} ,
"mappings" : [
{
"if" : {
"and" : [
"surveillance=public"
]
} ,
"then" : {
"en" : "A public area is surveilled, such as a street, a bridge, a square, a park, a train station, a public corridor or tunnel,..." ,
2021-06-04 17:23:17 +02:00
"nl" : "Bewaking van de publieke ruilmte, dus een straat, een brug, een park, een plein, een stationsgebouw, een publiek toegankelijke gang of tunnel..." ,
"fr" : "Une zone publique est surveillée, telle qu'une rue, un pont, une place, un parc, une gare, un couloir ou un tunnel public…"
2020-11-17 16:29:51 +01:00
}
} ,
{
"if" : {
"and" : [
"surveillance=outdoor"
]
} ,
"then" : {
"en" : "An outdoor, yet private area is surveilled (e.g. a parking lot, a fuel station, courtyard, entrance, private driveway, ...)" ,
2021-06-04 17:23:17 +02:00
"nl" : "Een buitenruimte met privaat karakter (zoals een privé-oprit, een parking, tankstation, ...)" ,
"fr" : "Une zone extérieure, mais privée, est surveillée (par exemple, un parking, une station-service, une cour, une entrée, une allée privée, etc.)"
2020-11-17 16:29:51 +01:00
}
} ,
{
"if" : {
"and" : [
"surveillance=indoor"
]
} ,
"then" : {
"nl" : "Een private binnenruimte wordt bewaakt, bv. een winkel, een parkeergarage, ..." ,
2021-06-04 17:23:17 +02:00
"en" : "A private indoor area is surveilled, e.g. a shop, a private underground parking, ..." ,
"fr" : "Une zone intérieure privée est surveillée, par exemple un magasin, un parking souterrain privé…"
2020-11-17 16:29:51 +01:00
}
}
]
} ,
{
"#" : "Indoor camera? This isn't clear for 'public'-cameras" ,
"question" : {
"en" : "Is the public space surveilled by this camera an indoor or outdoor space?" ,
2021-06-04 17:23:17 +02:00
"nl" : "Bevindt de bewaakte publieke ruimte camera zich binnen of buiten?" ,
"fr" : "L'espace public surveillé par cette caméra est-il un espace intérieur ou extérieur ?"
2020-11-17 16:29:51 +01:00
} ,
"condition" : {
"and" : [
"surveillance:type=public"
]
} ,
"mappings" : [
{
"if" : "indoor=yes" ,
"then" : {
"en" : "This camera is located indoors" ,
2021-06-04 17:23:17 +02:00
"nl" : "Deze camera bevindt zich binnen" ,
"fr" : "Cette caméra est située à l'intérieur"
2020-11-17 16:29:51 +01:00
}
} ,
{
"if" : "indoor=no" ,
"then" : {
"en" : "This camera is located outdoors" ,
2021-06-04 17:23:17 +02:00
"nl" : "Deze camera bevindt zich buiten" ,
"fr" : "Cette caméra est située à l'extérieur"
2020-11-17 16:29:51 +01:00
}
} ,
{
"if" : "indoor=" ,
"then" : {
"en" : "This camera is probably located outdoors" ,
2021-06-04 17:23:17 +02:00
"nl" : "Deze camera bevindt zich waarschijnlijk buiten" ,
"fr" : "Cette caméra est probablement située à l'extérieur"
2020-11-17 16:29:51 +01:00
} ,
"hideInAnswer" : true
}
]
} ,
{
"#" : "Level" ,
"question" : {
"en" : "On which level is this camera located?" ,
2021-06-04 17:23:17 +02:00
"nl" : "Op welke verdieping bevindt deze camera zich?" ,
"fr" : "À quel niveau se trouve cette caméra ?"
2020-11-17 16:29:51 +01:00
} ,
2021-01-12 20:46:01 +01:00
"render" : {
"en" : "Located on level {level}" ,
2021-06-04 17:23:17 +02:00
"nl" : "Bevindt zich op verdieping {level}" ,
"fr" : "Situé au niveau {level}"
2021-01-12 20:46:01 +01:00
} ,
2020-11-17 16:29:51 +01:00
"freeform" : {
"key" : "level" ,
"type" : "nat"
} ,
"condition" : {
"or" : [
"indoor=yes" ,
"surveillance:type=ye"
]
}
} ,
{
"#" : "Surveillance:zone" ,
"question" : {
"en" : "What exactly is surveilled here?" ,
2021-06-04 17:23:17 +02:00
"nl" : "Wat wordt hier precies bewaakt?" ,
"fr" : "Qu'est-ce qui est surveillé ici ?"
2020-11-17 16:29:51 +01:00
} ,
"freeform" : {
"key" : "surveillance:zone"
} ,
"render" : {
"en" : " Surveills a {surveillance:zone}" ,
2021-06-04 17:23:17 +02:00
"nl" : "Bewaakt een {surveillance:zone}" ,
"fr" : " Surveille un(e) {surveillance:zone}"
2020-11-17 16:29:51 +01:00
} ,
"mappings" : [
{
"if" : {
"and" : [
"surveillance:zone=parking"
]
} ,
"then" : {
"en" : "Surveills a parking" ,
2021-06-04 17:23:17 +02:00
"nl" : "Bewaakt een parking" ,
"fr" : "Surveille un parking"
2020-11-17 16:29:51 +01:00
}
} ,
{
"if" : {
"and" : [
"surveillance:zone=traffic"
]
} ,
"then" : {
"en" : "Surveills the traffic" ,
2021-06-04 17:23:17 +02:00
"nl" : "Bewaakt het verkeer" ,
"fr" : "Surveille la circulation"
2020-11-17 16:29:51 +01:00
}
} ,
{
"if" : {
"and" : [
"surveillance:zone=entrance"
]
} ,
"then" : {
"en" : "Surveills an entrance" ,
2021-06-04 17:23:17 +02:00
"nl" : "Bewaakt een ingang" ,
"fr" : "Surveille une entrée"
2020-11-17 16:29:51 +01:00
}
} ,
{
"if" : {
"and" : [
"surveillance:zone=corridor"
]
} ,
"then" : {
"en" : "Surveills a corridor" ,
2021-06-04 17:23:17 +02:00
"nl" : "Bewaakt een gang" ,
"fr" : "Surveille un couloir"
2020-11-17 16:29:51 +01:00
}
} ,
{
"if" : {
"and" : [
"surveillance:zone=public_transport_platform"
]
} ,
"then" : {
"en" : "Surveills a public tranport platform" ,
2021-06-04 17:23:17 +02:00
"nl" : "Bewaakt een perron of bushalte" ,
"fr" : "Surveille un quai de transport public"
2020-11-17 16:29:51 +01:00
}
} ,
{
"if" : {
"and" : [
"surveillance:zone=shop"
]
} ,
"then" : {
"en" : "Surveills a shop" ,
2021-06-04 17:23:17 +02:00
"nl" : "Bewaakt een winkel" ,
"fr" : "Surveille un magasin"
2020-11-17 16:29:51 +01:00
}
}
]
} ,
{
"#" : "camera:mount" ,
"question" : {
"en" : "How is this camera placed?" ,
2021-06-04 17:23:17 +02:00
"nl" : "Hoe is deze camera geplaatst?" ,
"fr" : "Comment cette caméra est-elle placée ?"
2020-11-17 16:29:51 +01:00
} ,
2021-01-12 20:46:01 +01:00
"render" : {
"en" : "Mounting method: {mount}" ,
2021-06-04 17:23:17 +02:00
"nl" : "Montage: {camera:mount}" ,
"fr" : "Méthode de montage : {mount}"
2021-01-12 20:46:01 +01:00
} ,
2020-11-17 16:29:51 +01:00
"freeform" : {
"key" : "camera:mount"
} ,
"mappings" : [
{
"if" : "camera:mount=wall" ,
"then" : {
"en" : "This camera is placed against a wall" ,
2021-06-04 17:23:17 +02:00
"nl" : "Deze camera hangt aan een muur" ,
"fr" : "Cette caméra est placée contre un mur"
2020-11-17 16:29:51 +01:00
}
} ,
{
"if" : "camera:mount=pole" ,
"then" : {
"en" : "This camera is placed one a pole" ,
2021-06-04 17:23:17 +02:00
"nl" : "Deze camera staat op een paal" ,
"fr" : "Cette caméra est placée sur un poteau"
2020-11-17 16:29:51 +01:00
}
} ,
{
"if" : "camera:mount=ceiling" ,
"then" : {
"en" : "This camera is placed on the ceiling" ,
2021-06-04 17:23:17 +02:00
"nl" : "Deze camera hangt aan het plafond" ,
"fr" : "Cette caméra est placée au plafond"
2020-11-17 16:29:51 +01:00
}
}
]
}
] ,
"hideUnderlayingFeaturesMinPercentage" : 0 ,
"icon" : {
"render" : "./assets/themes/surveillance_cameras/logo.svg" ,
"mappings" : [
{
"if" : "camera:type=dome" ,
"then" : "./assets/themes/surveillance_cameras/dome.svg"
} ,
{
"if" : "_direction:leftright=right" ,
"then" : "./assets/themes/surveillance_cameras/cam_right.svg"
} ,
{
"if" : "_direction:leftright=left" ,
"then" : "./assets/themes/surveillance_cameras/cam_left.svg"
}
]
} ,
"rotation" : {
2021-01-04 04:06:21 +01:00
"#" : "Note: {camera:direction} is substituted by a number, giving the string 'calc(123deg + 90deg)' ; it is this string that is used as css property, which interprets the calc" ,
Fix issues with camera rotation
This commit fixes at least these issues that I was aware of:
* Cardinal directions (e.g. NE) were not recognized.
* The camera icon did not rotatie when direction=* was used instead of
camera:direction, but the blue direction visualizer did.
Pietervdvn said he would have liked to convert the code for direction
normalizing to calculatedTags in a JSON file (as documented in
Docs/CalculatedTags.md), but when he saw the oneliners I had to produce
in response, I was allowed to keep it in SimpleMetaTagger.ts for now.
For your amusement, the oneliners are included below.
"calculatedTags": [
"_direction:numerical=(dir => dir === undefined ? undefined : ({N: 0, NNE: 22.5, NE: 45, ENE: 67.5, E: 90, ESE: 112.5, SE: 135, SSE: 157.5, S: 180, SSW: 202.5, SW: 225, WSW: 247.5, W: 270, WNW: 292.5, NW: 315, NNW: 337.5}[dir] ?? (isNaN(parseFloat(dir)) ? undefined : ((parseFloat(dir) % 360 + 360) % 360)))))(feat.properties['camera:direction'] ?? feat.properties.direction)",
"_direction:leftright=feat.properties['_direction:numerical'] === undefined ? undefined : (feat.properties['_direction:numerical'] <= 180 ? 'right' : 'left')"
]
2021-04-28 16:45:48 +02:00
"render" : "calc({_direction:numerical}deg + 90deg)" ,
2020-11-17 16:29:51 +01:00
"mappings" : [
{
"if" : "camera:type=dome" ,
"then" : "0"
} ,
{
"if" : "_direction:leftright=right" ,
Fix issues with camera rotation
This commit fixes at least these issues that I was aware of:
* Cardinal directions (e.g. NE) were not recognized.
* The camera icon did not rotatie when direction=* was used instead of
camera:direction, but the blue direction visualizer did.
Pietervdvn said he would have liked to convert the code for direction
normalizing to calculatedTags in a JSON file (as documented in
Docs/CalculatedTags.md), but when he saw the oneliners I had to produce
in response, I was allowed to keep it in SimpleMetaTagger.ts for now.
For your amusement, the oneliners are included below.
"calculatedTags": [
"_direction:numerical=(dir => dir === undefined ? undefined : ({N: 0, NNE: 22.5, NE: 45, ENE: 67.5, E: 90, ESE: 112.5, SE: 135, SSE: 157.5, S: 180, SSW: 202.5, SW: 225, WSW: 247.5, W: 270, WNW: 292.5, NW: 315, NNW: 337.5}[dir] ?? (isNaN(parseFloat(dir)) ? undefined : ((parseFloat(dir) % 360 + 360) % 360)))))(feat.properties['camera:direction'] ?? feat.properties.direction)",
"_direction:leftright=feat.properties['_direction:numerical'] === undefined ? undefined : (feat.properties['_direction:numerical'] <= 180 ? 'right' : 'left')"
]
2021-04-28 16:45:48 +02:00
"then" : "calc({_direction:numerical}deg - 90deg)"
2020-11-17 16:29:51 +01:00
}
]
} ,
"width" : {
"render" : "8"
} ,
"iconSize" : {
"mappings" : [
{
"if" : "camera:type=dome" ,
"then" : "50,50,center"
} ,
{
"if" : "_direction:leftright~*" ,
"then" : "100,35,center"
}
] ,
"render" : "50,50,center"
} ,
"color" : {
"render" : "#f00"
} ,
"presets" : [
{
"tags" : [
"man_made=surveillance" ,
"surveillance:type=camera"
] ,
"title" : "Surveillance camera"
}
] ,
"wayHandling" : 2
2021-05-19 22:38:41 +02:00
}