From 5657ede4501fda5d39a21870d2bc109508b4c76d Mon Sep 17 00:00:00 2001 From: zstadler Date: Mon, 27 Jan 2020 11:12:57 +0200 Subject: [PATCH 1/2] Add `boundary=protected_area` parks Update the **class** of the **park* layer in a backward-compatible way. The class for `boundary=protected_area` parks is the lower-case of the [`protection_title`](http://wiki.openstreetmap.org/wiki/key:protection_title) value with blanks replaced by `_`. `national_park` is the class of `protection_title=National Park` and `boundary=national_park`. `nature_reserve` is the class of `protection_title=Nature Reserve` and `leisure=nature_reserve`. The class for other [`protection_title`](http://wiki.openstreetmap.org/wiki/key:protection_title) values is similarly assigned. Resolve https://github.com/openmaptiles/openmaptiles/issues/760 --- layers/park/layer.sql | 48 +++++++++++++++++++------------- layers/park/mapping.yaml | 4 +++ layers/park/mapping_diagram.png | Bin 10401 -> 12966 bytes layers/park/park.yaml | 15 +++++++--- 4 files changed, 43 insertions(+), 24 deletions(-) diff --git a/layers/park/layer.sql b/layers/park/layer.sql index f3da111c..27981607 100644 --- a/layers/park/layer.sql +++ b/layers/park/layer.sql @@ -6,59 +6,67 @@ RETURNS TABLE(osm_id bigint, geometry geometry, class text, name text, name_en t SELECT osm_id, geometry, class, name, name_en, name_de, tags, rank FROM ( SELECT osm_id, geometry, - COALESCE(NULLIF(boundary, ''), NULLIF(leisure, '')) AS class, + COALESCE( + LOWER(REPLACE(NULLIF(protection_title, ''), ' ', '_')), + NULLIF(boundary, ''), + NULLIF(leisure, '') + ) AS class, name, name_en, name_de, tags, NULL::int as rank FROM ( -- etldoc: osm_park_polygon_gen8 -> layer_park:z6 - SELECT osm_id, geometry, name, name_en, name_de, tags, leisure, boundary, NULL::int as scalerank + SELECT osm_id, geometry, name, name_en, name_de, tags, leisure, boundary, protection_title, NULL::int as scalerank FROM osm_park_polygon_gen8 WHERE zoom_level = 6 AND geometry && bbox UNION ALL -- etldoc: osm_park_polygon_gen7 -> layer_park:z7 - SELECT osm_id, geometry, name, name_en, name_de, tags, leisure, boundary, NULL::int as scalerank + SELECT osm_id, geometry, name, name_en, name_de, tags, leisure, boundary, protection_title, NULL::int as scalerank FROM osm_park_polygon_gen7 WHERE zoom_level = 7 AND geometry && bbox UNION ALL -- etldoc: osm_park_polygon_gen6 -> layer_park:z8 - SELECT osm_id, geometry, name, name_en, name_de, tags, leisure, boundary, NULL::int as scalerank + SELECT osm_id, geometry, name, name_en, name_de, tags, leisure, boundary, protection_title, NULL::int as scalerank FROM osm_park_polygon_gen6 WHERE zoom_level = 8 AND geometry && bbox UNION ALL -- etldoc: osm_park_polygon_gen5 -> layer_park:z9 - SELECT osm_id, geometry, name, name_en, name_de, tags, leisure, boundary, NULL::int as scalerank + SELECT osm_id, geometry, name, name_en, name_de, tags, leisure, boundary, protection_title, NULL::int as scalerank FROM osm_park_polygon_gen5 WHERE zoom_level = 9 AND geometry && bbox UNION ALL -- etldoc: osm_park_polygon_gen4 -> layer_park:z10 - SELECT osm_id, geometry, name, name_en, name_de, tags, leisure, boundary, NULL::int as scalerank + SELECT osm_id, geometry, name, name_en, name_de, tags, leisure, boundary, protection_title, NULL::int as scalerank FROM osm_park_polygon_gen4 WHERE zoom_level = 10 AND geometry && bbox UNION ALL -- etldoc: osm_park_polygon_gen3 -> layer_park:z11 - SELECT osm_id, geometry, name, name_en, name_de, tags, leisure, boundary, NULL::int as scalerank + SELECT osm_id, geometry, name, name_en, name_de, tags, leisure, boundary, protection_title, NULL::int as scalerank FROM osm_park_polygon_gen3 WHERE zoom_level = 11 AND geometry && bbox UNION ALL -- etldoc: osm_park_polygon_gen2 -> layer_park:z12 - SELECT osm_id, geometry, name, name_en, name_de, tags, leisure, boundary, NULL::int as scalerank + SELECT osm_id, geometry, name, name_en, name_de, tags, leisure, boundary, protection_title, NULL::int as scalerank FROM osm_park_polygon_gen2 WHERE zoom_level = 12 AND geometry && bbox UNION ALL -- etldoc: osm_park_polygon_gen1 -> layer_park:z13 - SELECT osm_id, geometry, name, name_en, name_de, tags, leisure, boundary, NULL::int as scalerank + SELECT osm_id, geometry, name, name_en, name_de, tags, leisure, boundary, protection_title, NULL::int as scalerank FROM osm_park_polygon_gen1 WHERE zoom_level = 13 AND geometry && bbox UNION ALL -- etldoc: osm_park_polygon -> layer_park:z14 - SELECT osm_id, geometry, name, name_en, name_de, tags, leisure, boundary, NULL::int as scalerank + SELECT osm_id, geometry, name, name_en, name_de, tags, leisure, boundary, protection_title, NULL::int as scalerank FROM osm_park_polygon WHERE zoom_level >= 14 AND geometry && bbox ) AS park_polygon UNION ALL SELECT osm_id, geometry_point AS geometry, - COALESCE(NULLIF(boundary, ''), NULLIF(leisure, '')) AS class, + COALESCE( + LOWER(REPLACE(NULLIF(protection_title, ''), ' ', '_')), + NULLIF(boundary, ''), + NULLIF(leisure, '') + ) AS class, name, name_en, name_de, tags, row_number() OVER ( PARTITION BY LabelGrid(geometry_point, 100 * pixel_width) @@ -69,55 +77,55 @@ RETURNS TABLE(osm_id bigint, geometry geometry, class text, name text, name_en t )::int AS "rank" FROM ( -- etldoc: osm_park_polygon_gen8 -> layer_park:z6 - SELECT osm_id, geometry_point, name, name_en, name_de, tags, leisure, boundary, area + SELECT osm_id, geometry_point, name, name_en, name_de, tags, leisure, boundary, protection_title, area FROM osm_park_polygon_gen8 WHERE zoom_level = 6 AND geometry_point && bbox UNION ALL -- etldoc: osm_park_polygon_gen7 -> layer_park:z7 - SELECT osm_id, geometry_point, name, name_en, name_de, tags, leisure, boundary, area + SELECT osm_id, geometry_point, name, name_en, name_de, tags, leisure, boundary, protection_title, area FROM osm_park_polygon_gen7 WHERE zoom_level = 7 AND geometry_point && bbox UNION ALL -- etldoc: osm_park_polygon_gen6 -> layer_park:z8 - SELECT osm_id, geometry_point, name, name_en, name_de, tags, leisure, boundary, area + SELECT osm_id, geometry_point, name, name_en, name_de, tags, leisure, boundary, protection_title, area FROM osm_park_polygon_gen6 WHERE zoom_level = 8 AND geometry_point && bbox UNION ALL -- etldoc: osm_park_polygon_gen5 -> layer_park:z9 - SELECT osm_id, geometry_point, name, name_en, name_de, tags, leisure, boundary, area + SELECT osm_id, geometry_point, name, name_en, name_de, tags, leisure, boundary, protection_title, area FROM osm_park_polygon_gen5 WHERE zoom_level = 9 AND geometry_point && bbox UNION ALL -- etldoc: osm_park_polygon_gen4 -> layer_park:z10 - SELECT osm_id, geometry_point, name, name_en, name_de, tags, leisure, boundary, area + SELECT osm_id, geometry_point, name, name_en, name_de, tags, leisure, boundary, protection_title, area FROM osm_park_polygon_gen4 WHERE zoom_level = 10 AND geometry_point && bbox UNION ALL -- etldoc: osm_park_polygon_gen3 -> layer_park:z11 - SELECT osm_id, geometry_point, name, name_en, name_de, tags, leisure, boundary, area + SELECT osm_id, geometry_point, name, name_en, name_de, tags, leisure, boundary, protection_title, area FROM osm_park_polygon_gen3 WHERE zoom_level = 11 AND geometry_point && bbox UNION ALL -- etldoc: osm_park_polygon_gen2 -> layer_park:z12 - SELECT osm_id, geometry_point, name, name_en, name_de, tags, leisure, boundary, area + SELECT osm_id, geometry_point, name, name_en, name_de, tags, leisure, boundary, protection_title, area FROM osm_park_polygon_gen2 WHERE zoom_level = 12 AND geometry_point && bbox UNION ALL -- etldoc: osm_park_polygon_gen1 -> layer_park:z13 - SELECT osm_id, geometry_point, name, name_en, name_de, tags, leisure, boundary, area + SELECT osm_id, geometry_point, name, name_en, name_de, tags, leisure, boundary, protection_title, area FROM osm_park_polygon_gen1 WHERE zoom_level = 13 AND geometry_point && bbox UNION ALL -- etldoc: osm_park_polygon -> layer_park:z14 - SELECT osm_id, geometry_point, name, name_en, name_de, tags, leisure, boundary, area + SELECT osm_id, geometry_point, name, name_en, name_de, tags, leisure, boundary, protection_title, area FROM osm_park_polygon WHERE zoom_level >= 14 AND geometry_point && bbox ) AS park_point diff --git a/layers/park/mapping.yaml b/layers/park/mapping.yaml index 42372a75..e4a5ec02 100644 --- a/layers/park/mapping.yaml +++ b/layers/park/mapping.yaml @@ -77,6 +77,9 @@ tables: - name: boundary key: boundary type: string + - name: protection_title + key: protection_title + type: string - name: area type: area mapping: @@ -84,3 +87,4 @@ tables: - nature_reserve boundary: - national_park + - protected_area diff --git a/layers/park/mapping_diagram.png b/layers/park/mapping_diagram.png index 0f1a4efa79f02ab7d7abcb7b26d4cd685677fba2..936755cee511bffd66b2071d3a28151b79b03976 100644 GIT binary patch literal 12966 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 WNl`Db4Sw+iB_$>=`dRpu*Z%^`WPP^) literal 10401 zcmb_?cRbbq-}fQWAVf$)2n~_Fx6C4YOUO9(-js}zsEA~5A$#vV6S5-5Dtl%-#`XGq zf7f;0_kG>hegAXcCy#K>aX#Y z{}zfA1n>?2siLej>J<5xRGaw$g`!8vOG~J`$E{9ysH>aD;%{V*hUT$S{N#S{q5lo< zjq4A>p5haJWxS+7_KAt}K50oX8R@&0w4oT~X)6Z^#Qx{SNy$T5lv1lnOZecn&IH+)%e|s~7;mot1nCJbevU=5o@U9f& zb_Qej_P5vhofjgISBr{^3!N8L(a{pp($d^3+PM!In3?eznxX@Z;0bAN`%x|>#ctVi1$;c+W*Af z$*K9dt~vP0$jE3{Ip3 z`_sW$d3mjsPV*{ydZCLyG8x6h=uidjn@>Z|rKF^6&$+Lbjube}Kl0vaB*@CnZgiXU z2}TC;`0?Wk`)OR%li9W~64Hu_iiH}tlcNI?(w8q^F1&G@ocyAZ6A=>=BILG~l$3-j zD=T9j`p*$;=-Jf9w`@56hehMXxm!p-x=JfVQrm_h<6~kqI zDN^C4w~x=ej~|21lQC=O_UKfK|)HZ z)17p&S@tc>^RTcm%<90=(GiEoU(=&$Vn1;Q2Zwy8oAozgVQSi_N}8IcVc3X-1O+4F@u>TXPSyv$Nk35YtkL(7h|<_8Un}N%=jH zt~f9_$i$+YK%TC8OD#jG|0gdWpBAd4%w{~TtW5LEmoKLCz41>?Oc>#>J)Np6D&%1O z!m(?MTQ_dpsP#1n3JmQ0S#16XQ|qOwqCyXqsj8uIGd(?>({)9Ab7vBvrrG zQ=_S=sim`1{+>aVY1`GJ72ny}S($XzPD&&18{fWtQ#CZa2N!`ENf61I=p8g!%xOE= znh%AV`&Ho}wZ5OBoOrMP^mzRnhL5zLB!Ua}o{UVO@b0Jyr|*%wfbUVo;K+#L!-ruj zKZ|AK;^S`$3F(<*6PoO`wPVOBC=}4>9CdZ|4x#lLMwIFDaGv10A8bcFe`GTbjE=JM z+5U=1SBzG8@+3*ecy#a(i!0vt_WB*Tfh$o8H&KLjza}QkRz?di)6m>CHa5O|<;unM>+*>pFu$25xYRgRoX4YI7$^a#& zp%LYJ7k+JOZr+*GF0=kLIzFx_B^A)SFCI8O+a7)`Zv9WR5e2Hq@6eysv};=?NBfd zXJWnnsJs3gN?uMb;^@eGabcmLqi|azHKZfl@5sc#)phtM^X=OTt}CPc`95T%L^uMP z9yCr?R<~8v)Vz*rGBa5Qe*Acskbs%xjm4f&L(#ku@!F-*2vtaLg3Yqimaku#!Z-Zm zq>3x!6Q6e@L8BN>^R<&OO*#8oT(bug`yb+nGkxo2s?7)l*~-cGMXoR!^hR3k!6LT9baK zA`il8ZAy>VFtyi!4P-SnDL_S_P~SzdcQx~L18*vR+{S7X4rLYEP6*!BDy}o7LcTcD|JUGN6t3ZK@d3i}WhL=1|PfyQ_aMYmLSwrIrP{;P%$}PD& zQC*@^W%>E}yU$rnMM5dqnqXZbK7D#cY3PoF!C+Ka$vZka8pcY|JH8R>tmL)5d?Xk3 zKF7xP4Gg3hmoUJ+is9`)Cr|^K2rN#h) z3inM0V6lkE$h57>j~^)l){zB0UromHsHMtfxxn#{0?NO>UQ9tj!5O1wX!us_^x(U_ zn;Tzc+romy(HviWBM<;71x3bIr60E3uX$~v+5wg;lt5T*cX@jH`HL60!kaB*1?A=K zaRN>pPIF2?>QkeICUWxfR|`xEi;J6MdC(EDv9FOu%{*&5W)1g$U|D_Bsy$%gUE-j2*DIWX&Jzj{i+I6+* zt3h>v_kkne-ITc)_UeN$>cHV)%@1hr_1ZoAlOvBB;GWS^G$kS_ffJ^t8Uyx6{EoGb zcFXIpN1)7?eEkl8Bt8Y~kKuPN*>=s2 zo{fzN(8m35Ckv6SN#~ZFH1|0gQ!3iuR6zv9Ce6jkNd}J}Cl^mCH4o+t7zC8n*ZU>b zmV=}m%n1lsFCy=!=ZVu52Dv%4urLZ+U7DNT(a|y20GG%l=-xd}LNXDij}@W8g{#+L z@42|}z)snjTcJ%0vstI=VWXAi-fnGc)2+s%ZUZk7#QHFTH~KzK6}oSYI)kl$reDN@ zc$k9N#A>X@g9`)f^_)G(0?)*YUPl*DCS1${96=ar*lM%yrL`2kNoerdk18a~=)?JOn?ISuSVDDpX{rpuF16ndnDURFwP1)N@Q+ zTadYw#5f2kUS8gh{5;@A&T$Zu^(XPdEy9XU|NcFQ+@dr^8+?9qY-y7-ka#a+CJ(p7 z*x>G^Qe7fCIyzv;y}d}d7$ss`Y71J}HsAR0hoF?;xT+KhD~>Yvm>-x%3StK89>iY-Wk0vrTv+7wIJVhbxMPYvJZu^s z9=@Cz7$O(k+GOwGa6ggdku$W)f6B`f~%{mOBERh8WATqcvesNZtC*tvF&7CSY#x5 zu2DTL@TPXHC(nx)FLG6*Z`uH`=GUJHqUbp|NPsppzh>D<70x}+AdwPlx(s$qYJ^8_ zZwS+WY^DIkR^D-q$BKMqrKj4q41~$ime?tmppcMD+jSZmL{}?)<|P7M)%^aZqVq0z zKSV-n)zF(nLU%p&eufyI085;!hvOl-#)nR}!Tqp#!&8`GQky=+r3nh}3pAV)<$bMz? zekvx%a=oLg3m27^o_+&xH}ydnXXPaZwV&G6D8!W?f}|uRA@T40z{1GQO`edDfS)Km z8dX~>0uX0yZOviUMQ;7G=qw6Q-AbJVQ|BWDFTfY@ZWyc$BLf4jt*x!St7}`XPO<&w zj7+oz_cP^G$IXD?Dr0c_Q-<=532=3@{)@?C3WGbV;=6${)D z1nec1uG;wX=T)`LN396Zf`~_#hlhvrW!J6E9|zOYJIFae`V#jL5HF z`j!?J5h*DQuim~z%oOO@q0iOWk;58~EvTypw!bQpwYq_Y%uY{^$HMDRPrNoaHX<4t z#1Cdd+0zOOA0y%wu1o=N1cH3fqdt4bve!#pJ#u$cIYIcALb@s>0Z;!{_Vo6Cqn!g7OR$!U>Pha77aC99nLiyLgcd^%Sfyss)2FOz>J0kXKfY2EV?$ zFY46HfjXExJvNHp%&$8HVGpM9zjq83%#qi{d}~II(RH>5;aaxC%_ zenYP~uo>0qqdHg;y;F*9zysmo;f1JXNB;fm7{G&$<9Cq!AFct2yz3adS8DQI?6d|I zAr*XS(OOSO=N4oGo`@sjp8vv}*&6%j8M=lV+BdUVq{;r#^}cNh&V> zG43+qlQtAeK~d35ghCDBsfg*hxgc;FGy9vf!}kJ1 z4mXx^@)`K}C_jDrq+Rd?2XKMF*$?sq{C1w&c3?e}e^3y9&GGK|xeFIw=;jUYW?0cm z_y783ZBI){8Ev>{q@@)M8_;BXp?^RB^pM^AXtRBe_Vp!`w>f!vMDVb8bbJAR2~$>A zSBH9{J_&Hi8TcIo@Fgm3cZMKI<3}{Tlbj)x_UEWLK?MmzHXni=8P| z_&IurMOS=%o%v4DNhUuf1y@H$XRO`{fwGTmdiDS*p}s_=Wo1i&-+|t!A&oe9=~58r zd0Jt2|4>TyCYS?xd3jj+=aR{w1HJC<1%Lj04FGK#3K^Va)6mcrc;9f@{h02USzLcG zM<{>H>IzJ^{o%GHYm`FmM|>%o>(}2wDA(1ckd~Qg0-&K?{45OPdXeHTYGcIpd>Cvo z{d!*mJ1@l{K6<4kQD%nAKQs?ws~pE$TV=rKVt=_QDu%jR(`()Otn24TnM5?AvB~}S zu1=Bky6xrI=()F-*Vfklen>o$_T9-b>I7#h-Ewr+8CDl6{qU&DW36%?&;JNpe_E}s zp&{?&R19Y00j-07UyVnST z+mbik(N4bKg!wmW4GoPH_1iMZDsq5njWz&?H-P2@-9GFeF6Wy;APJ$)sOUO#zm|_k z{2l~{*Ywp#DKQUUgxu|l)Tqn&`iqx^kofm)GqvS%X)50BFyE|vSfu$OEu$-XdgHWb z3g^tw=sO?-Q&d<@A&8Z)dh5VkMzm{8`qbzzLy}q?xe_GeLR|iGMoG7LC zR#7^ws!I3$hYw~DAw9LTV~44OxPc{8IdRzb#}4o7*pVQjYuj@Qa&janN4P=SB*f<%vuDhP?$c-8y}YE7Rp=QR&%l%o>D{#H5lb+z z)V#&V&7A~9%}%oC7FCqJqxa(3j{BaIv4zHw_+W<4m3-A~4wE)QCMKpQFd3eESf*tw zOUr(I4KpSU_Y zHi7Ajh>Lpz1gCRE^KMi0aDkCV$d#}jJF&j8*-n@G_3I_Y=zFU>BCxpHrB+vbPqq@9 zySp!H*_V(dtUXipeY&ak^zS3UQxWP_|<2XpNz4gfvUtu7zT)px~^R&?u zY&u1F*xl7;NU=ARPq&rFHc!5)@@D!f_T|#9dww{r(`?l%;{Eo;9mVgt&5Cp*pn_*1 z_8p5_9`y4G{0Yv6wmdsGm)qTCSS3ayXNU?U!|rL6LVDvWQ>Dy% z8XIw72<7jg)#8*dosm-!>c)nXtc^D=cm&pCKKP$NidQ61_pVK z`bdiaEIq8E{Zs?a>V!Ap=GGQM8UPkM-*>AL z_b^_>^WPI?fg@oQkjVsrRjSz;)?>YMr#atu=Z;Nvi};A$`P)$!#IQfV7npTZ2p|0Z zu)kKlj<|NPYV=%OTgk(_3#s8VeaTWtj|4gfNbtljD5z_FlAH?!GSVNst4VuK$ z$(1O3LJB=1j$ZgPJDa+-Y=u_K85;Y@2)&4qa};d4FL}_z+Xp;0xgb1f^F@gtWE_>v z8PjQbdkaI{`p^?vH+X>H_*p5z3)7|d$of^xdv6<=XxXCmt6d)^`0VNcT)YDv(gC@W zjP&n~>E_z6y|h^xU2Vg5D;HMl2!SX9Gyv}-BO^P8a zUSB^>`oRMQ3yUnJSZ;Z!>ekNA?DoJXVDe|y*V#WXKYZWUr}FB}n@C7;?VZqQ{O415mNdXx+{f(|n{1)EBsK48^&gG0`QeA{egIC4#tX2%X4u)eaPv`(`U8^b8*-dLF&zi-@y4 z*LU<=N_x8>#!D+;Y)rSLwDfA+kC?zGL5A>Hv1DfWu+eVBkb=WKsug~wEm%iN%kH5K z&%&)9*ILhR%`*(1F-UrVA91VRjLU7ueZ=3&s#*dl3bUGzYBtu~QaM{jP10}Qw5};F z9nkQ^if3bYm)Ek9jI>_`i8oAfGJ<}7)w1vI?j|yn;AQEt8Y9BR#m%*+fc%UWX#i7Q zDsC&Ii5aj;(#!$B**Cvh4gES}=vxMIK@L=eNYVmh+Z>61LXxEFr#U#J{Ts+<2LuTi zYdY-=zt6+BDy0VI1|3<{q(je;68s7<=59tN2U@9G!p!U@=%6G%b0gz2ELp>-6|`nE zo=`C}T>ogx1Anq~zhKwJWw^ba0O(ee|03iys&G*vuDKup63xM(p{sEp^6;g%IsVMg z>p{l!%o8gFy<_f!xGh$+55UguYE0OfeMZJ6X9O@E!(~Nk{9Q`Pc zy(R1aNUeUnRF`@l1)s+q7xQ=U0fQn8g|p!oM^2?DI;1iWAC|@5+1b0p+#hlR(*-vw z#915q9lM~!pFE+5^b>0kS$Z8JRQ8$;TvS7Ue_^}5R6z87Ixn^o`dJn*2 zM_g#0J2@cYjg7EcA!|^w>5>9ri!QM><5JTBRx`4>c>hMz#kIjcW%MLRw z=OJ)@dbqs^jm{R6aFGnHtFB}%iqMquF8P0e>5(BIh7UGbfRi1#ifeqf5EBIV<`wvYrkw()^@;N^xOC|f zKK9wanz_k7*+W+D?(Rp3K%8;4MLw!iy|q4Li&51;%D;E z>f+|*?fTOl{il;9k(_{lK)`J+&UG9p;3}VO-2UOAg01aWZfRFwcVSrweCzkO1c~X!bwVPR4tT^=0h<98ZxCti{-a|v|HTY!ciY{1VAvg{V4h}{P zGSaR@JUxio&R>;IfBI$VuE@&D#;-a#Ii2;l9xr=ng+?QZgzMU`TOf7c$HtDCuz{L& z++ESBbX!j#Cnpcd%gY1B-uXWz4|^CmFVKB*jP(-RoUk}K5`b7Z%pHOYHv0M&{+^ z1!)O~cK7CN`woVY!4c{MhaPe_!C5G&%T!dXAQAZX>k?wH^Rlq1xN-kzZ?|Ovv%o2W z*j{ZF6%v3o6>aShSPE3bbaOBc3Nrn{pTl7M;9+5D+4zc#<yeBv1th;&f?;^HV~r5HdeQ&T3SE6hg=U9{a@SMRNFeE8^3f-YYgH{q}aVn;z9 zNdX|b3PbP?5z5?$X5^p%euPYO0c5w0Lnp9baZ&1;n$S%9-z>KO-@ku-M^aU@okd;k z?NO*zgG>L5vEJ2o(?Y5o3<@bZIUWSkfs#0ZlF2?Ba=^ijy88P1p1E8C0#~8ww!hI# zjDs4M$ROPp=(O4&AG!d(NlI^=VAs!Ztbba9-tA?ei$e6s zJ)pK5pzGP|k2nXdN*4)aV40*J6kAZ)T3Jbgqv#zSG4cxo4}wQP&^$RwhbnQ?;fIRr zErU}U{62@=kqYUL#$Wt<8?1~C^m*dx(Y)_SZsnc83gp*9`r{DU=X}0DB$Sq?*8Fr1l?sO7MAV`hgl@vgEn)|XFg>B#JqAF zAD>!K)uHwE^^hcd5^&1Uuk+TCl$0#N8rJ*Pg33jU4c9;?jQ(#l=4|{3h`Z7)$}3ko zXIevBCngNMu%*zoRf6G^jOS|?0s|rEG={!ta6apy0+&x|WMrgM=UrKIF!y=PMoLnW zaCl(Evtq)sCxKSKtKTW6i?1x)Zu)2{V|*CIwlO3B1VMZ z^a!clH?DmtHkSv*{^iwPmv$rP)u``N1?7Qe7HxvOzi)8xCA7Db{^fc~U3HLJV+@Kf zy-2nAmPP;Jh=N`PsaVfzoBS(kqqvexcE{L(%(l%BL~#DO}D9nOiWDZo?S-*ZuL1BG6TaM)_p&cHzzLN(p}l%%ppo%=8^PQ$tN%V E4U;Q~PXGV_ diff --git a/layers/park/park.yaml b/layers/park/park.yaml index b7e5564c..5cc83a2a 100644 --- a/layers/park/park.yaml +++ b/layers/park/park.yaml @@ -1,15 +1,22 @@ layer: id: "park" description: | - The park layer contains parks from OpenStreetMap tagged with either [`boundary=national_park`](http://wiki.openstreetmap.org/wiki/Tag:boundary%3Dnational_park) or [`leisure=nature_reserve`](http://wiki.openstreetmap.org/wiki/Tag:leisure%3Dnature_reserve). + The park layer contains parks from OpenStreetMap tagged with + [`boundary=national_park`](http://wiki.openstreetmap.org/wiki/Tag:boundary%3Dnational_park), + [`boundary=protected_area`](http://wiki.openstreetmap.org/wiki/Tag:boundary%3Dprotected_area), + or [`leisure=nature_reserve`](http://wiki.openstreetmap.org/wiki/Tag:leisure%3Dnature_reserve). buffer_size: 4 fields: class: description: | Use the **class** to differentiate between different parks. - values: - - national_park - - nature_reserve + The class for `boundary=protected_area` parks is the lower-case of the + [`protection_title`](http://wiki.openstreetmap.org/wiki/key:protection_title) + value with blanks replaced by `_`. + `national_park` is the class of `protection_title=National Park` and `boundary=national_park`. + `nature_reserve` is the class of `protection_title=Nature Reserve` and `leisure=nature_reserve`. + The class for other [`protection_title`](http://wiki.openstreetmap.org/wiki/key:protection_title) + values is similarly assigned. name: The OSM [`name`](http://wiki.openstreetmap.org/wiki/Key:name) value of the park (point features only). name_en: English name `name:en` if available, otherwise `name` (point features only). name_de: German name `name:de` if available, otherwise `name` or `name:en` (point features only). From 2584489ad7345469cde4839691434f9457b1cfb4 Mon Sep 17 00:00:00 2001 From: zstadler Date: Sat, 4 Apr 2020 13:16:59 +0300 Subject: [PATCH 2/2] Continue conflict resolution --- layers/park/layer.sql | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/layers/park/layer.sql b/layers/park/layer.sql index 2d3e4f11..bb8162a0 100644 --- a/layers/park/layer.sql +++ b/layers/park/layer.sql @@ -50,12 +50,12 @@ RETURNS TABLE(osm_id bigint, geometry geometry, class text, name text, name_en t WHERE zoom_level = 12 AND geometry && bbox UNION ALL -- etldoc: osm_park_polygon_gen1 -> layer_park:z13 - SELECT osm_id, geometry, name, name_en, name_de, tags, leisure, boundary, protection_title, NULL::int as scalerank + SELECT osm_id, geometry, name, name_en, name_de, tags, leisure, boundary, protection_title FROM osm_park_polygon_gen1 WHERE zoom_level = 13 AND geometry && bbox UNION ALL -- etldoc: osm_park_polygon -> layer_park:z14 - SELECT osm_id, geometry, name, name_en, name_de, tags, leisure, boundary, protection_title, NULL::int as scalerank + SELECT osm_id, geometry, name, name_en, name_de, tags, leisure, boundary, protection_title FROM osm_park_polygon WHERE zoom_level >= 14 AND geometry && bbox ) AS park_polygon