From ce744128910dc9e2302aa8ec877aeb06a7af1a60 Mon Sep 17 00:00:00 2001 From: Robin van der Linde Date: Tue, 29 Oct 2024 16:02:41 +0100 Subject: [PATCH] Add `crossing:markings` question, file move script --- assets/layers/crossings/crossing_unmarked.png | Bin 0 -> 2924 bytes .../crossings/crossing_unmarked.png.license | 2 + assets/layers/crossings/crossings.json | 190 +++++++++++++++--- assets/layers/crossings/license_info.json | 110 ++++++++++ assets/layers/crossings/markings_dashes.png | Bin 0 -> 3202 bytes .../crossings/markings_dashes.png.license | 2 + assets/layers/crossings/markings_dots.png | Bin 0 -> 3786 bytes .../crossings/markings_dots.png.license | 2 + assets/layers/crossings/markings_ladder.png | Bin 0 -> 3116 bytes .../crossings/markings_ladder.png.license | 2 + .../crossings/markings_ladder_skewed.png | Bin 0 -> 6834 bytes .../markings_ladder_skewed.png.license | 2 + assets/layers/crossings/markings_lines.png | Bin 0 -> 3352 bytes .../crossings/markings_lines.png.license | 2 + .../crossings/markings_lines_paired.png | Bin 0 -> 3726 bytes .../markings_lines_paired.png.license | 2 + assets/layers/crossings/markings_surface.png | Bin 0 -> 3036 bytes .../crossings/markings_surface.png.license | 2 + assets/layers/crossings/markings_zebra.png | Bin 0 -> 3193 bytes .../crossings/markings_zebra.png.license | 2 + .../crossings/markings_zebra_bicolour.png | Bin 0 -> 3312 bytes .../markings_zebra_bicolour.png.license | 2 + .../crossings/markings_zebra_double.png | Bin 0 -> 3371 bytes .../markings_zebra_double.png.license | 2 + .../waiting_aid.svg.license | 2 +- scripts/moveImage.ts | 91 +++++++++ 26 files changed, 385 insertions(+), 30 deletions(-) create mode 100644 assets/layers/crossings/crossing_unmarked.png create mode 100644 assets/layers/crossings/crossing_unmarked.png.license create mode 100644 assets/layers/crossings/markings_dashes.png create mode 100644 assets/layers/crossings/markings_dashes.png.license create mode 100644 assets/layers/crossings/markings_dots.png create mode 100644 assets/layers/crossings/markings_dots.png.license create mode 100644 assets/layers/crossings/markings_ladder.png create mode 100644 assets/layers/crossings/markings_ladder.png.license create mode 100644 assets/layers/crossings/markings_ladder_skewed.png create mode 100644 assets/layers/crossings/markings_ladder_skewed.png.license create mode 100644 assets/layers/crossings/markings_lines.png create mode 100644 assets/layers/crossings/markings_lines.png.license create mode 100644 assets/layers/crossings/markings_lines_paired.png create mode 100644 assets/layers/crossings/markings_lines_paired.png.license create mode 100644 assets/layers/crossings/markings_surface.png create mode 100644 assets/layers/crossings/markings_surface.png.license create mode 100644 assets/layers/crossings/markings_zebra.png create mode 100644 assets/layers/crossings/markings_zebra.png.license create mode 100644 assets/layers/crossings/markings_zebra_bicolour.png create mode 100644 assets/layers/crossings/markings_zebra_bicolour.png.license create mode 100644 assets/layers/crossings/markings_zebra_double.png create mode 100644 assets/layers/crossings/markings_zebra_double.png.license create mode 100644 scripts/moveImage.ts diff --git a/assets/layers/crossings/crossing_unmarked.png b/assets/layers/crossings/crossing_unmarked.png new file mode 100644 index 0000000000000000000000000000000000000000..629009d322b44b61b351539b66c93b6d65d2d10e GIT binary patch literal 2924 zcmeAS@N?(olHy`uVBq!ia0y~yV2S`?4mP03zO)&4fD~teM`SSr1K$x4W}K?cC(XdX zE$8Xt7*a9k?X``*(TpN(7rjrwMqSQqSa^U&ss?vAFmV}Sy5yQeHkXb4wc>NI7^ zSqAz3L(g?S+<#Xmu3ta@ewwR&{oV7|^Y5ppJu9#{Q?@&{_+QQ(zvVaIe>XPXeEV(M z=9@JiTp7-s(K&5&{BdF0pM&4O{FmRe_ord}y7ggq|Nr??u>IA8Pe0PH+A=)Yquam# z`O8nGSI_#dUdPBVhp~~BK|mPj6T?x)XdsNHgwb3unhQpA!DucR%>|>mU^ExdJQw_C ZXN%LEx$yaUC1CTJ!PC{xWt~$(699V_&+`BP literal 0 HcmV?d00001 diff --git a/assets/layers/crossings/crossing_unmarked.png.license b/assets/layers/crossings/crossing_unmarked.png.license new file mode 100644 index 000000000..8bbbce063 --- /dev/null +++ b/assets/layers/crossings/crossing_unmarked.png.license @@ -0,0 +1,2 @@ +SPDX-FileCopyrightText: StenSoft +SPDX-License-Identifier: CC0 1.0 \ No newline at end of file diff --git a/assets/layers/crossings/crossings.json b/assets/layers/crossings/crossings.json index 2cd743b98..f4b7d4594 100644 --- a/assets/layers/crossings/crossings.json +++ b/assets/layers/crossings/crossings.json @@ -222,49 +222,181 @@ "fr": "Passage piéton sans marquages", "ca": "Creuament sense senyalitzar", "cs": "Přechod bez označení přechodu" - } + }, + "hideInAnswer": true } ] }, { - "id": "crossing-is-zebra", + "id": "markings", "question": { - "en": "Is this is a zebra crossing?", - "nl": "Is dit een zebrapad?", - "de": "Ist das ein Zebrastreifen?", - "es": "¿Esto es un paso de cebra?", - "fr": "Est-ce un passage piéton ?", - "ca": "Açò és un pas de vianants?", - "pl": "Czy to jest przejście dla pieszych typu \"zebra\"?", - "cs": "Jedná se o zebra přechod?" + "en": "What kind of markings does this crossing have?", + "nl": "Wat voor markering heeft deze oversteekplaats?" }, - "condition": "crossing=uncontrolled", "mappings": [ { - "if": "crossing_ref=zebra", + "if": "crossing:markings=no", "then": { - "en": "This is a zebra crossing", - "nl": "Dit is een zebrapad", - "de": "Dies ist ein Zebrastreifen", - "es": "Esto es un paso de cebra", - "fr": "C'est un passage piéton", - "ca": "Açò és un pas de vianants", - "cs": "Toto je zebra přechod" + "en": "This crossing has no markings", + "nl": "Deze oversteekplaats heeft geen markeringen" + }, + "icon": { + "class": "large", + "path": "./assets/layers/crossings/crossing_unmarked.png" } }, { - "if": "crossing_ref=", + "if": "crossing:markings=zebra", "then": { - "en": "This is not a zebra crossing", - "nl": "Dit is geen zebrapad", - "de": "Dies ist kein Zebrastreifen", - "es": "Esto no es un paso de cebra", - "fr": "Ce n'est pas un passage piéton", - "ca": "Açò no és un pas de vianants", - "cs": "Tohle není zebra přechod" + "en": "This crossing has zebra markings", + "nl": "Deze oversteekplaats heeft een zebramarkering" + }, + "icon": { + "class": "large", + "path": "./assets/layers/crossings/markings_zebra.png" + } + }, + { + "hideInAnswer": true, + "then": { + "en": "This crossing has markings of an unknown type", + "nl": "Deze oversteekplaats heeft markeringen van een onbekend type" + }, + "if": "crossing:markings=yes" + }, + { + "if": "crossing:markings=lines", + "then": { + "en": "This crossings has lines on either side of the crossing", + "nl": "Deze oversteekplaats heeft lijnen aan beide kanten van de oversteekplaats" + }, + "icon": { + "class": "large", + "path": "./assets/layers/crossings/markings_lines.png" + } + }, + { + "if": "crossing:markings=ladder", + "then": { + "en": "This crossing has lines on either side of the crossing, along with bars connecting them", + "nl": "Deze oversteekplaats heeft lijnen aan beide kanten van de oversteekplaats, met strepen die ze verbinden" + }, + "icon": { + "class": "large", + "path": "./assets/layers/crossings/markings_ladder.png" + } + }, + { + "if": "crossing:markings=dashes", + "then": { + "en": "This crossing has dashed lines on either sides of the crossing", + "nl": "Deze oversteekplaats heeft onderbroken lijnen aan beide kanten van de oversteekplaats" + }, + "icon": { + "class": "large", + "path": "./assets/layers/crossings/markings_dashes.png" + } + }, + { + "if": "crossing:markings=dots", + "then": { + "en": "This crossing has dotted lines on either sides of the crossing", + "nl": "Deze oversteekplaats heeft stippellijnen aan beide kanten van de oversteekplaats" + }, + "icon": { + "class": "large", + "path": "./assets/layers/crossings/markings_dots.png" + } + }, + { + "if": "crossing:markings=surface", + "then": { + "en": "This crossing is marked by using a different coloured surface", + "nl": "Deze oversteekplaats is gemarkeerd door een anders gekleurd wegdek" + }, + "icon": { + "class": "large", + "path": "./assets/layers/crossings/markings_surface.png" + } + }, + { + "if": "crossing:markings=ladder:skewed", + "then": { + "en": "This crossing has lines on either side of the crossing, along with angled bars connecting them", + "nl": "Deze oversteekplaats heeft lijnen aan beide kanten van de oversteekplaats, met schuine strepen die ze verbinden" + }, + "icon": { + "class": "large", + "path": "./assets/layers/crossings/markings_ladder_skewed.png" + } + }, + { + "if": "crossing:markings=zebra:paired", + "then": { + "en": "This crossing has zebra markings with an interruption in every bar", + "nl": "Deze oversteekplaats heeft zebramarkeringen met een onderbreking van elke streep" + } + }, + { + "if": "crossing:markings=zebra:bicolour", + "then": { + "en": "This crossing has zebra markings in alternating colours", + "nl": "Deze oversteekplaats heeft een zebramarkering in afwisselende kleuren" + }, + "icon": { + "class": "large", + "path": "./assets/layers/crossings/markings_zebra_bicolour.png" + } + }, + { + "if": "crossing:markings=zebra:double", + "then": { + "en": "This crossing has double zebra markings", + "nl": "Deze oversteekplaats heeft een dubbele zebramarkering" + }, + "icon": { + "class": "large", + "path": "./assets/layers/crossings/markings_zebra_double.png" + } + }, + { + "if": "crossing:markings=pictograms", + "then": { + "en": "This crossing has pictograms on the road", + "nl": "Deze oversteekplaats heeft pictogrammen op de weg" + } + }, + { + "if": "crossing:markings=ladder:paired", + "then": { + "en": "This crossing has lines on either side of the crossing, along with bars connecting them, with an interruption in every bar", + "nl": "Deze oversteekplaats heeft lijnen aan beide kanten van de oversteekplaats, met strepen die ze verbinden, met een onderbreking van elke streep" + } + }, + { + "if": "crossing:markings=lines:paired", + "then": { + "en": "This crossing has double lines on either side of the crossing", + "nl": "Deze oversteekplaats heeft dubbele lijnen aan beide kanten van de oversteekplaats" + }, + "icon": { + "class": "large", + "path": "./assets/layers/crossings/markings_lines_paired.png" } } - ] + ], + "render": { + "en": "This crossing has {crossing:markings} markings", + "nl": "Deze oversteekplaats heeft {crossing:markings} markeringen" + }, + "freeform": { + "key": "crossing:markings", + "type": "string", + "addExtraTags": [ + "fixme=Free-form value used in MapComplete for crossing:markings" + ] + }, + "multiAnswer": true }, { "id": "crossing-bicycle-allowed", @@ -732,4 +864,4 @@ "enableImproveAccuracy": true, "enableRelocation": false } -} +} \ No newline at end of file diff --git a/assets/layers/crossings/license_info.json b/assets/layers/crossings/license_info.json index 22105ed13..cfed79075 100644 --- a/assets/layers/crossings/license_info.json +++ b/assets/layers/crossings/license_info.json @@ -39,6 +39,116 @@ "https://wiki.openstreetmap.org/wiki/File:Vibrating_button_illustration.jpg" ] }, + { + "path": "crossing_unmarked.png", + "license": "CC0 1.0", + "authors": [ + "StenSoft" + ], + "sources": [ + "https://wiki.openstreetmap.org/wiki/File:Crossing_without_markings.png" + ] + }, + { + "path": "markings_dashes.png", + "license": "CC0 1.0", + "authors": [ + "Popball" + ], + "sources": [ + "https://wiki.openstreetmap.org/wiki/File:Markings_dashes.png" + ] + }, + { + "path": "markings_dots.png", + "license": "CC0 1.0", + "authors": [ + "Popball" + ], + "sources": [ + "https://wiki.openstreetmap.org/wiki/File:Markings_dots.png" + ] + }, + { + "path": "markings_ladder.png", + "license": "CC0 1.0", + "authors": [ + "Popball" + ], + "sources": [ + "https://wiki.openstreetmap.org/wiki/File:Markings_ladder.png" + ] + }, + { + "path": "markings_ladder_skewed.png", + "license": "CC0 1.0", + "authors": [ + "Popball" + ], + "sources": [ + "https://wiki.openstreetmap.org/wiki/File:Markings_adder_skewed.png" + ] + }, + { + "path": "markings_lines.png", + "license": "CC0 1.0", + "authors": [ + "Popball" + ], + "sources": [ + "https://wiki.openstreetmap.org/wiki/File:Markings_lines.png" + ] + }, + { + "path": "markings_lines_paired.png", + "license": "CC0 1.0", + "authors": [ + "Popball" + ], + "sources": [ + "https://wiki.openstreetmap.org/wiki/File:Markings_lines_paired.png" + ] + }, + { + "path": "markings_surface.png", + "license": "CC0 1.0", + "authors": [ + "Popball" + ], + "sources": [ + "https://wiki.openstreetmap.org/wiki/File:Surface_crossing_markings.png" + ] + }, + { + "path": "markings_zebra.png", + "license": "CC0 1.0", + "authors": [ + "Popball" + ], + "sources": [ + "https://wiki.openstreetmap.org/wiki/File:Markings_zebra.png" + ] + }, + { + "path": "markings_zebra_bicolour.png", + "license": "CC0 1.0", + "authors": [ + "Popball" + ], + "sources": [ + "https://wiki.openstreetmap.org/wiki/File:Markings_zebra_bicolour.png" + ] + }, + { + "path": "markings_zebra_double.png", + "license": "CC0 1.0", + "authors": [ + "Popball" + ], + "sources": [ + "https://wiki.openstreetmap.org/wiki/File:Crossing_markings_zebra_double.png" + ] + }, { "path": "pedestrian_crossing.svg", "license": "CC-BY-SA-4.0", diff --git a/assets/layers/crossings/markings_dashes.png b/assets/layers/crossings/markings_dashes.png new file mode 100644 index 0000000000000000000000000000000000000000..e562679c1d81d8a0bf53d9b0557fe04f4997f856 GIT binary patch literal 3202 zcmeAS@N?(olHy`uVBq!ia0y~yV2S`?4mP03zO)&4fD}uylV=DA5Y%v_bO8CB1s;*b z3=G^mK$y{PlY}@>P_o1|q9iy!t)x7$D3zhSyj(9cFS|H7u^?41zbJk7I~ysW>i?cD zjv*Cu-rm@ltCA|y{*eEPmCRag2bCX_ggbLzYB}zfb`%uo)h)78khb1=VY*C-!9?zl z6N3)Cp1Jj}4ey_Svr^(}@BjV%J>I@Y^zXOh^QX_>Uo-cZMDnaFZgO84g%~d-=Hi<4=ZM;W7m zFq#r@=YqMpwG8VI-@SYHn);fo$Z3YYm$jmI-_4WhKOVZx@95vZe`h?eoVs@Q?Ae92 zwR=xpTRCG{rq1b2r>;FLkPsIaU!60z>u=ruubg|B;x;faBr$O_D5z0^ksd97;Pr<4 z@3-4MJR3Fb==WO3&o=#)^S0YPKD%r0-n+k8EIg@dAGO>)Y7P|>!DwJo9+=>aR8U^N z{VV6{sA;J_m$#g{mbYE{_~XK+PRa#-+Y~_AD(XK7ReCQmti~Ql~eq*;HyF zbL{BRqgv6+llI@wuVq@_Adb5TA-Rsdaq}Ac2dg*Vf3Nkg*gP%uV{QBeoAb%@p07P$ yu{ke4f4d!{-y~|aAe2I+Nafj5YQNa8bPwi!*gxPe>rGDXx#ynT z+?<^AIrlbxMLN7?bL3_K0JdZw$@~TYHqzDv6NFk6C2ce46j+&&or^(79p==J==y_- zBgZQNAVjt%8`AGZgrmkCRavwu3bUk&U3j(_V6)lrrx|6HP+>)JJo9X+XgMts0Ja{^ z&ODG?({7w1G+}c$s$Se5{hY^ZIrR04;6P>(go$IRGLAplJM`$0@NU*G+HI1&+t1-| ziM(CMLWjbG4h3l&C5;#1T`}{Uj(xZfs*7R7p6Ta#9-sKAQyQ%QR zc|X^uS5C~;nl2_neAeQh*Ch%?LyJWTibNuvb!iOZ<47H8DN*MauEfq^F5qB?$D&q& z%t0KyLP#F-HEdgbsph77g-UO=W#?NeW7cCM2B*{@m-KL+slKA+D)7+sTpZqkue2=Q z36?um0Ve|h2R0Oq9*(yO2;J^i{6YBtWP+r%n0^62+_-&rSBKA{CJK#4qZqur6&pz= zdadIErqX-vguLoB0$+(a3|}Rur&Q~D?kFM$1_mfeQFSXr=2y3bB<*vJ25cHBLg4A? zX_;@;-OVr<4E(am-ecP2TI;LiI>*Ympea0|Il947h`?r@N=0}(lUNOvm6ajR8Ejx! z|H3mW{bubdI;;;0rTw{OLc_Uw(_u3|})nC%swd^_VCnnmSF!l&Oo~}qkWzbMIBMk|U=cBU6 z9ob(FLC_TSNIQ|+Fh#w9`=JxF0XVxc1lal6T>vQZEB+w(GvPl~AiZY@sVJ>6kA!!3 z_{PXY0eh~Vjlc+k(CG9|Imy;np~67vobxZB?4}$w5j|x@TqBY@4K$wKa>^OV=>k#W=%YG<&^XF{mc`JhHd5 zoNmUTb5TT5>z8-lmBn_GZr)fYAun*k@D78)Q8fksVo)a}rhBpfAW+qe1$UF$+vF13 z9+Z$Smy4E{Cz7+w^CL^V>Ng92NaXU=>VpNWI8P?#y>#}x@e| z907u$?v^n9hMeVf+19t67QO1xPj|ljS>4@|_r|VaCb&2E8{HuiS z#AGt3CS~P#JRT}7EnQPJ8qKI8qi7wCekS_cfWH^M=LdnEEP_o1|q9iy!t)x7$D3zhSyj(9cFS|H7u^?41zbJk7I~ysW>Xn`@ zjv*Cu-rm`mE91`4c5&lDs~as3T|$&BZo0I}ury7KX_1lTJGS)Qfs2f@HEh(T%(~&E z;mRb#!Sf_PpY={P>zO|{>t-a>|NQgbet$3bug~lEzqhlqdwX0WdH?t$JLvj zd;YniqCz6M$I$okj=g*DRtPdA_iWTTJ>z+0&qM1S%l_A~|F8J^`*8dB_vfbX`Ty+a z&(q7j<9>WQ`}*U@k1r>MGckm}c{}_1@8{3;#rJ-`-hGdap@5Y|jKRStfsx_JC}T7b zMpMFo<$^b9uNl|mZ@=A}IcwWI#sd<`^PU@?|9s6jVy3tbL&J;%Obi{IxEVh$z7VyL z>wjEgwYKQn!-9yXckGmF>PeV_D{FN&6=S7CE*L>o?X%f6G7p@BQrOm1jQhId$`o4KX?9OuyUu10O47 zmR|-M#n59oE%jy@&sx>MUot=#m-~mikRnTxweM-dJ2(TH3;Raze_^=;YXiNqb4m0Y6t9 z&edyO;8&Z|&!FP<$66#AcY3ni=L+Y2fBgNwPMN(nW>I(jqMLp@&o5_Q%;l`j7tY+* zNNFTj4X`7xdH(7t^4j>%6CdPwUJaS&S9^c|$3wr)+wYL`(Faq%PG1*Sbup&lD)rWJ z*&#`W?yh3WLfWR|d(~yp1B_<9rfZETWjItn%1Y9!itl@T`|Y=d5;xzlqQ;AJ2(+7M zdxb2h8231wN7H8dX1s|>D5?0+W5YFW7fthy^LlRMt|vNm+0VLxD7_*HdE=+=IN8$D z!jd(OF_UOTT3AsybZi>Vwm+$Q?C6IH2{Pe`@C>ySam5L6vmlgp_MW)?J8YeBD;L|? z;eI(qe+RemfnX}`%Q)f`+(&p04)>$W+hK15@)jZg8(i3)**IlbDVEc?pdRBvBv1}a zHQ>{i`{);Z)Sn~tQ10p++HjFuh1+=dbnyTpi|E?jr5ok)#H}o;aG0bn50%w`AaMzK ziXJdU`IeDS=>I_|Ew9+75JvLKmBcs)xn)@avg>k{>CV)86Vj?&8DaZdrCtI zXI5lY%9=l(h%a_=v?DDlo=dL5ooP>{Ihr%wO? ziHRize@|hHsD|va3Cw~Kgdfn2#1=A&=Pxl_^pHJAETqr zHL5xY!1yS)234mXoJh!VmoS^;7x(f@l^)u(rdP%s*yqDit)-C($L6khP0(;8Qp@%*^F*4Xq*R3=_U}S)l2@mK=YceG- zAcp90J4?=Q9g!aP=}a#&=K`=U#csB@hx=01sa#EYc{%#3vB(k`>^%CiPj$;ejqn=A zFSTvipI-I(M4nw-Z4!unktYls#B1$y=*t!rZzy=J9N5O=HZr;?XMmVzKV~LHA3VgBL1RQ>EAGK*#OcUw_y#eNMG~a=*KID#FZrOuh zaW%ea1AEGDzWLfxTN-u}6*DcinnSN!;|UT-RY%9iU$VkY!wwjlChtt#QnnqXAoqV> zkSHu%VVMp0TzcJIRftiZ@!AkOo7`i6&l=s6r5cRpY7RTPk%xwctR?_)@A_q{II?C( zxE0ANeLSJ(za&?#_3k9FQ@r^eM1)H@l zjyN-868(%ATc;By6*1gY1k&1;nlx}T<`x4TH$VbDS)O{)Dt-!Zfj~z$|2+~ROHM&( zwCXv2>6}TGl8J??C7krXSr9J=H1Hn4Sp=-%iMwhLM07Pa*fMrK>Hw}W`) zGfV?nv{^@2Tjl5oW&t;{lw{uC7XYh>%02OAHM&fz9m4EriwI#ZQCU^h4(P9|1F1AI z^x5mzyR*hs-*GiZ95G)>4Km6P`>b9<&}SGglX~$~<7Icg{>_W~k#hW8h*86Z;FB0} zle(%c7JSGAnT*Sx73P;WGBQF@4@=2PQe0enW6>J3jlmr<*Tv1&Nw}wp&}cS-w77!m-^U@8qL)Q7TZ%lU`Be8jV<9HCZbGpFC_5KDE&86Cm<;f0`r9 z)IYiO&7{9!LU|1Ch`32|Q1p@ruC=23gQBaVn@s|}*8VbGVM^67ex8nP{{Yf8R$B8+ ztE|yedD&xoEzuy|L3B87a`k2*Cikg>-M?3IIFC`?*pNhYV7jB#rX6h(_P>-!M86-H z4xR@(;*03AtyYXCI{eGL;`^}T3$uaDfc?EO?{6A7nFW_A@HMfknvb?!DH3TTxa0~b z!Yrx4$cE#NnU8xKY*u1k{qz`faWYIHV|qlJZDscOCV_gLfO{dp+Sft$n9%doh@kFBHl9>r1%fV`SBf~djX^BlbNfOF;N=bIG=E2^3L7dhCON9A2zs7|XzO0FtxXK;D;_*}kV+M# zQmK5I&E<(=9BX#KG@fL$P0?~c3d>IF?Jz#x-qZUw5)?O4Qy3ZnfR5$?$sZbld-uN9 z46*bbmf^WMD{N0adp)zgnyRT1*C2WtFIBq9lBEjF1-Yvn7T2ltf<6p5@;D{_m zGzcpbWq(n+K;naqST{wVZqm_t}v0RqZrvI1!FM9}I%n+Gi(4_dv+ zZ5Zl&qt?g7#j%gBE+Q*i!8+kYlViN`_-54md99$AF+z*@O(G(eNRbaPT_*&Ph>8c5 ziJ}$?+Wr*Pp(3tmMAkZ)S{Fc3P5pWOmh%=hKc}*?1s%l<$6uQa24u#Hp^sP*^+VUq zj1&F<5A zi>2w1K-iOezPD}&28#*WOC_bH6dnPZS0`t{Au_JIVm+wGb^2GR#z8cp*2epf24>bU5PX zZK|;k-4?i>!jm4Qf(F%}_`+I)oS^}MG`Ds_heKBSBz1OlrawPQw&<#x>jbW!dUZ^; z1>g}D0(W*1$F|<&%SID=VU7ZL#L7s1W(Aa)S)=_@t1@#rxJyNKbtk+aHC9{jhIA62 zphKyrw(3~=aHJ6F4t;bc3DJA$2fQRHOI(k(gBxlo<0^%7!PJ!rXkSAf>f1H8;Sb)V zK4P_o1|q9iy!t)x7$D3zhSyj(9cFS|H7u^?41zbJk7I~yqm2A-*& zE{-7;bKc&y?TZeTXn2@>{N$M&C2o(|E)yk|a9s2`?4=QOP-(%erg^d#c6myQWE#!V z<1U!4^z~0lQt$-@N5&Ul_j1_#*MF^b*E^RT>m3*K@6+eYh6~@<|9Sc4>w59$$vuU2 zb#{LK{>x?R4esr!G>+R_WqM5F@tZd}Hg$h0p7ku`|Z2CQ<(Sve0BQcuj}2K?o15qZ)UIGXLCQVeDb*%KPz5_2MioK z3=K05Ffnv+jxt6AVKgO>k_*;8i(`1OUPe~7mz`hE$0&X0o&V)$A3uKVd2Vxz-tmhU zFW!6JV|Z+_d;hVlt^c!AHb(SJo;-Q)dCBCSt68RUb~QV$ONNJsC-04WU&{7bID-Ab z)6>%*AMFD^N4@`YcE*jo6O27VmABi9c=@~#!`lL z>((7R-Y@?=j+ue4?S29y!x0uS1_z%}#%LgnrUZ;!kYoCt>COGm&(9yfyxbp{XBrHT zJ$?E#V*T~v^#|v1u3`T0=H}+YvNE&pQVczYV%f7w#lmb}URB4!Qj#V~lf`njxgN@xNA$>IBY literal 0 HcmV?d00001 diff --git a/assets/layers/crossings/markings_lines.png.license b/assets/layers/crossings/markings_lines.png.license new file mode 100644 index 000000000..09b78e137 --- /dev/null +++ b/assets/layers/crossings/markings_lines.png.license @@ -0,0 +1,2 @@ +SPDX-FileCopyrightText: Popball +SPDX-License-Identifier: CC0 1.0 \ No newline at end of file diff --git a/assets/layers/crossings/markings_lines_paired.png b/assets/layers/crossings/markings_lines_paired.png new file mode 100644 index 0000000000000000000000000000000000000000..f33af47db6b9c1480ee01a1f7afe48e137d8185d GIT binary patch literal 3726 zcmeHKdrVtZ96p6QUIWH(yax`V#7NjW9s%W{69R+*%Q_j#ghGYNU=&JeyIO%ww=rR$ z5_zPo{DH0^Oqs(`Dl4>sUX0K-$g@IuSPN-s%cK-q+7)k^5MpAoKm2dK$;tih$w|I* zzI(p!{LbxjsR@quUiJV0$E3u#^8i?7n49e(xTinAc@BOd%g!WSu!SF*?MKz{w_Qo% z`(*$)^qLzY=Anl>-04Y-&mf}l`9yLKArFwr34+Wk=hJEcFP{o6e)qi#7Jwi3|$bJ73y7#xIxzKlW z5s}vqW8dg0YJBc_{&Q8z`rzKvB8FP1|w zDe#qg&8#8Hq!tKN18bV91)5f-TN-XtYrX{BfK9>0?0zvJcrX{(+ZH6m)iX`}-;DukCiBPsvY z)FmTC#^{I0{OmH5af-lhom}{>mBH9PwiK`^*>=&vw8QS%G?ex*poG#?)}Y!h2vjw5 zt^N&$Lrd_%!NHJ9rGjyy-Vc6OSXWHQ-IF$*nf{$^`!p`K2s!<~>;tL^RYXHX%( zb+x3gBe297ITi3kLSDGDHn3Bn@C3D}sZ}j3qRjz;E$)30-D^3zp5y!`F@3oby|P;b zu@)-c+RwPP^_`xr7^PZW$Ki0yX5{gBGh%TI6}k_nTy0<)15Uce<&F7uqh15M@D_5) zdUHcQUP>UGHanhp$sf6AbSk$Pk7qIf*CxoVW_Rqtd5vPdd>^nSpOu%EqWV(Mv&Af_ zLU9=mwX&;MBYS4enZPfU4TjSN6Rs6ag8UGnPzdSu`U&)IrW#~T*^tR(iinBvO-M*U zix8OFAG5lK<#PE%NH6w3LcsXN6GZ0s=~C_LH1^R4cLoOsJ632v@pDm)BQlr}2bXzD zl_~{Jcqb<(2xc_TLa)gjkr5gzlQl|l_uiW2%(l9QhK3Ft;I>PTp4cmxrmUCo1z@?b zZtKRF3tV`juDt|~xSBzI0foCva-QPz`O5H=E6*Kw55+~0SS*f+jcudalM^w~n6-J1 zx4~eL>U0#JP_o1|q9iy!t)x7$D3zhSyj(9cFS|H7u^?41zbJk7I~ysW>PSx) z$B>FSZ*M3T2?vO@UE~fvDfOuPfPqBN;e@PRLM|dYOd%}uWD}CLf`d1Nm|vC^nVS@O zV7kkfIlOo7@6Es0ec!%*&s^nSpWgod^y^uft?}l#_31lfc`qrqkXU;r* z`cy}(TUehdAuVnD?Xzi{XG*?*p!oMcUtP`rysuwBFMn(Je*W9<{`>nXKfF48H0J&t zxz8#LA9`YIcSOAZ?(e?$=cg6d85rg#q!a@4w!? zyQi|k;wukB+Ow;VALsblHZ^~49?iX@CD&;2jXxJa^3VC7KmWw)_}MZy%)I%w%=r8F zP_o1|q9iy!t)x7$D3zhSyj(9cFS|H7u^?41zbJk7I~ysW>TjMd zjv*Cu-ri93k1dxu{_ww;j9lk|#nV(%u9!F{NX0S8Z5C*{(d2m5WVS-fnFVR<;tD#V zJ)JN4J{0t@nRf2n_u_ZH4=dvi{QTEvHGj_ge}8|kmp{hz_uKLLx8?0??c|etK7ana zaqr%}Cw_)Me)cR)Mpm}h@Ys#JcV%C{e(k-Fqrvc4MMZ_g_3PJ@dF~(7{QKYf$7g?g zxxfEj>zjAqiLb2t_vyS6`~AJO#&&hT_MGr!cpzH+{oC1}pFdA;&8ypg!IYsP+#!LH z;RuTugM-f~V>A#(Q^H`(1!2=_8Sb}rcXxZv|NrHSiJzaJ+TDogXzAt4mru^SbN_z- z=FOWu&CSfsj~_gEaEbKx?c0;hX8Z2ixOubjw{PFn?(W#NOX~B_noGTZ|Nh;$b*t&i zV^5zx-LZT3?2^YnepKY-@>n~+{IOTBUM-PsZ*QM$H-Gv;c^!s^ z83&jcIygreqk%A*60qii8>cq$Ke$~`QL*EV@V;A*A3yG{=-<72xA;dnV8%Q1{B!F3 zk5|(+-<)wa?X=zF)pO_0)&1RabN~PV literal 0 HcmV?d00001 diff --git a/assets/layers/crossings/markings_zebra.png.license b/assets/layers/crossings/markings_zebra.png.license new file mode 100644 index 000000000..09b78e137 --- /dev/null +++ b/assets/layers/crossings/markings_zebra.png.license @@ -0,0 +1,2 @@ +SPDX-FileCopyrightText: Popball +SPDX-License-Identifier: CC0 1.0 \ No newline at end of file diff --git a/assets/layers/crossings/markings_zebra_bicolour.png b/assets/layers/crossings/markings_zebra_bicolour.png new file mode 100644 index 0000000000000000000000000000000000000000..2e77a1996630e35e551cf38bea89657863854a9b GIT binary patch literal 3312 zcmeAS@N?(olHy`uVBq!ia0y~yV2S`?4mP03zO)&4fD}uylV=DA5Y%v_bO8CB1s;*b z3=G^mK$y{PlY}@>P_o1|q9iy!t)x7$D3zhSyj(9cFS|H7u^?41zbJk7I~yqm2A*6` z7srr_Id5-l%#KZEXn*LhY0)uZVYdjEAj|eJFY(~^122MT=X8*pwXl$*quKkFmdfMm;v;tFf6RUOo%eZB+&k_5{lCB6 zv2dGT|MTjtzwP~H$0U-|)6>_iT`T+ik9Tr@etu4FZm;379TguRS=9dea>Se|p~rBZ zeZAegdwZ>qeUOb=R$tFR_Ei3`%^NfdHOZ|p5OfPvd>i*J_zmJ zQkVGr!Goh4^Y&G($!1{CXKZ9;5D*3ioZ%>AG!RBp!eGn=)`nkMXB>Nbd;9c#8zXd% z<(OH2y17-`zJL3@KgBQ0cT~MTH1YX#{dl?8uU~uLpMN$jd1Hi(mHqc`@{b?)*G2yN zH&;IF_+Itpd~?^YS<@qJo~Kj$|K;W7$>rtWPo$fh%k@sZ{y*;3zkl)Td$V^x@2}am zaiih6dA7T+`~?;_b$@@|xPRZiH`+K$D%h#D_-LLt7uHw&|CksDcy?S-y-o1Oj z{AK5t>-kwz_hj>W`@e-RfA9bI@7RvY=VvCK-?n}G@mH^2U3$M^=gys9c>h)ZX&x#$ZT^1F%#wP$`Taj@>~8*hoUVTSYPz`E?fdud&;KL4V_S9I zrN4LY-u3+c-qzCe9T4CAm$Y#PP^Kz-*Zl($$!F3wdw%~}|CwKm!NDhik>Lo-C}T7b gMpMFI&INDey{eikm}*wG1A8Y7p00i_>zopr02b-tKmY&$ literal 0 HcmV?d00001 diff --git a/assets/layers/crossings/markings_zebra_bicolour.png.license b/assets/layers/crossings/markings_zebra_bicolour.png.license new file mode 100644 index 000000000..09b78e137 --- /dev/null +++ b/assets/layers/crossings/markings_zebra_bicolour.png.license @@ -0,0 +1,2 @@ +SPDX-FileCopyrightText: Popball +SPDX-License-Identifier: CC0 1.0 \ No newline at end of file diff --git a/assets/layers/crossings/markings_zebra_double.png b/assets/layers/crossings/markings_zebra_double.png new file mode 100644 index 0000000000000000000000000000000000000000..6ab4c3a0bb5b2a6a2de1a48129da4c877dda8981 GIT binary patch literal 3371 zcmeAS@N?(olHy`uVBq!ia0y~yV2S`?4mP03zO)&4fD}uylV=DA5Y%v_bO8CB1s;*b z3=G^mK$y{PlY}@>P_o1|q9iy!t)x7$D3zhSyj(9cFS|H7u^?41zbJk7I~yqm2A&n3 zE{-7;bKc%q=$~3H*Z%OnnT1Uei`>?mEpM)vxb|fJVE!=U>{*tLv$F#vHfiT^taQ8@ zbN7MUoKu+|w^qFtR9=7F@A|dRa(Qi)^Xwng>~o)M{ye|_&!5Zpk8}Sz|G%#0_v!Wf z@AeoTJA3wQ#qV!#z0cK~+SUEBxVOLF{+Pt$ySvLDpPg-Py^o{8@Ys(pFE9W2@bIw2 z;qn5%`oDa2|IgR&`Tu_Z|F0iazkj!@|M&U(beTU7cjq71-~aF1q{$2i!r!#N-?#VY zpP%Q&@BVq_dL0-(OibJi3Thh|7?MUAqk%A*5>Rr%w(YN(e;D1lckkS6`Ox?CkokW|_V|cJbmx3w!(drH>yzOk8vQb)>nUpWm^UFJG>a{{H=Y z@~mZ%=I73xJNEJ8$2HQxLM3_g%`>|S3kwbT`1#ZC?%1_U>h{~RYrU^uzuvfizy0fD zNgHQ;{kezlUjie;5f(892cJ>Ka0!H*{Ojx=QX_Q4cH2F?x$XAb)fN3`(>`n61Evu} z-^=UHS8V%QWqa-QR}kxJ*4Ed;LZ_b=T~|LKaadl5p<&JeCWa19AY;ZrFmBvi$N%7T zL3OqD>(BG&%{x}Kb57~w2M-cr;^NNj`uO9AMcC@AYoy)X-5>w?Q**7iy}f;7+|Ni}3Bi(&8>Du$pRzI3q83crZb-H2WC}Wre!p6O^@&~3TZj5;It0nz*-uCs6 zY|Un$1!joMS;tI#ciTO_3Csr(>#u`Yz?8Ml-$Q5m>Dc)U$vpMIwn`C7DLvYH8EwLi gHeXS5!GCt+J&Sox)TnO;c5E0tUHx3vIVCg!06X6?^Z)<= literal 0 HcmV?d00001 diff --git a/assets/layers/crossings/markings_zebra_double.png.license b/assets/layers/crossings/markings_zebra_double.png.license new file mode 100644 index 000000000..09b78e137 --- /dev/null +++ b/assets/layers/crossings/markings_zebra_double.png.license @@ -0,0 +1,2 @@ +SPDX-FileCopyrightText: Popball +SPDX-License-Identifier: CC0 1.0 \ No newline at end of file diff --git a/assets/layers/cyclist_waiting_aid/waiting_aid.svg.license b/assets/layers/cyclist_waiting_aid/waiting_aid.svg.license index 2c50b6981..75299f884 100644 --- a/assets/layers/cyclist_waiting_aid/waiting_aid.svg.license +++ b/assets/layers/cyclist_waiting_aid/waiting_aid.svg.license @@ -1,2 +1,2 @@ SPDX-FileCopyrightText: Robin van der Linde -SPDX-License-Identifier: CC0 \ No newline at end of file +SPDX-License-Identifier: CC0-1.0 \ No newline at end of file diff --git a/scripts/moveImage.ts b/scripts/moveImage.ts new file mode 100644 index 000000000..989883eee --- /dev/null +++ b/scripts/moveImage.ts @@ -0,0 +1,91 @@ +import { existsSync, renameSync, readFileSync, writeFileSync } from "fs" +import SmallLicense from "../src/Models/smallLicense" + +/** + * Script to move/rename image files + * Useful after downloading images from wikimedia commons + * Apart from moving the image files, this will also update the license file + * + * This will NOT update any images in the theme + */ + +function main(args: string[]) { + // Check if the correct number of arguments are passed + if (args.length != 2) { + console.log("Usage: moveImage.ts oldPath newPath") + console.log("You passed in the arguments: " + args.join(",")) + console.log("Example: npx vite-node scripts/moveImage.ts images/old.jpg images/new.jpg") + return + } + const [oldPath, newPath] = args + + // Check if the oldPath exists + if (!existsSync(oldPath)) { + console.log("The oldPath does not exist: " + oldPath) + return + } + + // Move file + renameSync(oldPath, newPath) + + // If it exists also move the .license file + const oldLicensePath = oldPath + ".license" + if (existsSync(oldLicensePath)) { + const newLicensePath = newPath + ".license" + renameSync(oldLicensePath, newLicensePath) + } + + console.log("Moved file from " + oldPath + " to " + newPath) + + // Open license_info.json in the same directory as the old file + const licensePath = oldPath.replace(/\/[^/]+$/, "/license_info.json") + if (!existsSync(licensePath)) { + console.log( + "The license file does not exist: " + + licensePath + + ". Skipping writing to license file." + ) + return + } + + // Read license file + const licenseFile = readFileSync(licensePath, "utf8") + const licenseInfo = JSON.parse(licenseFile) as SmallLicense[] + + // Find correct license item + const licenseItem = licenseInfo.find((item) => item.path === oldPath.replace(/.*\//, "")) + + // Filter out license item + const newLicenseInfo = licenseInfo.filter((item) => item.path !== oldPath.replace(/.*\//, "")) + const newLicenseFile = JSON.stringify(newLicenseInfo, null, 2) + + // Write new license file + writeFileSync(licensePath, newLicenseFile) + + // Look for a license_info.json file in the new path + const newLicensePath = newPath.replace(/\/[^/]+$/, "/license_info.json") + if (!existsSync(newLicensePath) && licenseItem) { + console.log("License file doesn't exist yet, creating new one: " + newLicensePath) + + // Create new license item + const newLicenseItem = licenseItem + newLicenseItem.path = newPath.replace(/.*\//, "") + + // Create file + writeFileSync(newLicensePath, JSON.stringify([newLicenseItem], null, 2)) + } else if (licenseItem) { + console.log("Appending to existing license file: " + newLicensePath) + + // Create new license item + const newLicenseItem = licenseItem + newLicenseItem.path = newPath.replace(/.*\//, "") + + // Append to existing file + const newLicenseFile = readFileSync(newLicensePath, "utf8") + const newLicenseInfo = JSON.parse(newLicenseFile) as SmallLicense[] + newLicenseInfo.push(newLicenseItem) + writeFileSync(newLicensePath, JSON.stringify(newLicenseInfo, null, 2)) + } +} + +main(process.argv.slice(2))