From ff52cfda0881818d4b1cdbcb0e2270949a0c9ef6 Mon Sep 17 00:00:00 2001 From: lukasmartinelli Date: Fri, 28 Oct 2016 20:39:38 +0200 Subject: [PATCH] Remove unnecessary fields from boundary --- Makefile | 5 ++- layers/boundary/README.md | 19 ++++++++++ layers/boundary/boundary.sql | 65 ++++++++++------------------------ layers/boundary/boundary.yaml | 13 ++++--- layers/boundary/mapping.png | Bin 0 -> 6913 bytes 5 files changed, 49 insertions(+), 53 deletions(-) create mode 100644 layers/boundary/README.md create mode 100644 layers/boundary/mapping.png diff --git a/Makefile b/Makefile index eeebeb9..3c9d841 100644 --- a/Makefile +++ b/Makefile @@ -1,4 +1,4 @@ -all: build/openmaptiles.tm2source/data.yml build/mapping.yaml build/tileset.sql layers/railway/README.md +all: build/openmaptiles.tm2source/data.yml build/mapping.yaml build/tileset.sql layers/railway/README.md layers/boundary/README.md build/openmaptiles.tm2source/data.yml: mkdir -p build/openmaptiles.tm2source && generate-tm2source openmaptiles.yaml --host="postgres" --port=5432 --database="openmaptiles" --user="openmaptiles" --password="openmaptiles" > build/openmaptiles.tm2source/data.yml @@ -12,5 +12,8 @@ build/tileset.sql: layers/railway/README.md: generate-doc layers/railway/railway.yaml --diagram layers/railway/mapping > layers/railway/README.md +layers/boundary/README.md: + generate-doc layers/boundary/boundary.yaml --diagram layers/boundary/mapping > layers/boundary/README.md + clean: rm -f build/openmaptiles.tm2source/data.yml && rm -f build/mapping.yaml && rm -f build/tileset.sql && rm -f layers/**/README.md&& rm -f layers/**/*.png diff --git a/layers/boundary/README.md b/layers/boundary/README.md new file mode 100644 index 0000000..98e6827 --- /dev/null +++ b/layers/boundary/README.md @@ -0,0 +1,19 @@ +# boundary + +Contains administrative boundaries as linestrings (no maritime boundaries yet) as linestrings. +Until z7 [Natural Earth data](http://www.naturalearthdata.com/downloads/10m-cultural-vectors/10m-admin-0-countries/) +is used after which OSM boundaries ([`boundary=administrative`](http://wiki.openstreetmap.org/wiki/Tag:boundary%3Dadministrative)) are present from z8 to z14. +OSM data contains all [`admin_level`](http://wiki.openstreetmap.org/wiki/Tag:boundary%3Dadministrative#admin_level) +but for most styles it makes sense to just style `admin_level=2` and `admin_level=4`. + +## Fields + +- **admin_level**: OSM [admin_level](http://wiki.openstreetmap.org/wiki/Tag:boundary%3Dadministrative#admin_level) +indicating the level of importance of this boundary. +At low zoom levels the Natural Earth boundaries are mapped to the equivalent admin levels. + +## Mapping + +![](mapping.png) + + diff --git a/layers/boundary/boundary.sql b/layers/boundary/boundary.sql index 1b29d19..1e77514 100644 --- a/layers/boundary/boundary.sql +++ b/layers/boundary/boundary.sql @@ -1,114 +1,85 @@ -CREATE OR REPLACE FUNCTION boundary_class(featureclass VARCHAR) RETURNS VARCHAR -AS $$ -BEGIN - RETURN CASE - WHEN featureclass ILIKE 'line of control%' THEN 'control' - WHEN featureclass ILIKE 'disputed%' THEN 'dispute' - WHEN featureclass ILIKE 'lease%' THEN 'lease' - WHEN featureclass ILIKE 'overlay%' THEN 'overlay' - ELSE 'boundary' - END; -END; -$$ LANGUAGE plpgsql IMMUTABLE; - CREATE OR REPLACE VIEW boundary_z0 AS ( - SELECT geom, 2 AS admin_level, scalerank, - boundary_class(featurecla) AS class + SELECT geom, 2 AS admin_level FROM ne_110m_admin_0_boundary_lines_land ); CREATE OR REPLACE VIEW boundary_z1 AS ( - SELECT geom, 2 AS admin_level, scalerank, - boundary_class(featurecla) AS class + SELECT geom, 2 AS admin_level FROM ne_50m_admin_0_boundary_lines_land UNION ALL - SELECT geom, 4 AS admin_level, scalerank, - boundary_class(featurecla) AS class + SELECT geom, 4 AS admin_level FROM ne_50m_admin_1_states_provinces_lines WHERE scalerank <= 2 ); CREATE OR REPLACE VIEW boundary_z3 AS ( - SELECT geom, 2 AS admin_level, scalerank, - boundary_class(featurecla) AS class + SELECT geom, 2 AS admin_level FROM ne_50m_admin_0_boundary_lines_land UNION ALL - SELECT geom, 4 AS admin_level, scalerank, - boundary_class(featurecla) AS class + SELECT geom, 4 AS admin_level FROM ne_50m_admin_1_states_provinces_lines ); CREATE OR REPLACE VIEW boundary_z4 AS ( - SELECT geom, 2 AS admin_level, scalerank, - boundary_class(featurecla) AS class + SELECT geom, 2 AS admin_level FROM ne_10m_admin_0_boundary_lines_land UNION ALL - SELECT geom, 4 AS admin_level, scalerank, - boundary_class(featurecla) AS class + SELECT geom, 4 AS admin_level FROM ne_10m_admin_1_states_provinces_lines_shp WHERE scalerank <= 3 AND featurecla = 'Adm-1 boundary' ); CREATE OR REPLACE VIEW boundary_z5 AS ( - SELECT geom, 2 AS admin_level, scalerank, - boundary_class(featurecla) AS class + SELECT geom, 2 AS admin_level FROM ne_10m_admin_0_boundary_lines_land UNION ALL - SELECT geom, 4 AS admin_level, scalerank, - boundary_class(featurecla) AS class + SELECT geom, 4 AS admin_level FROM ne_10m_admin_1_states_provinces_lines_shp WHERE scalerank <= 7 AND featurecla = 'Adm-1 boundary' ); CREATE OR REPLACE VIEW boundary_z7 AS ( - SELECT geom, 2 AS admin_level, scalerank, - boundary_class(featurecla) AS class + SELECT geom, 2 AS admin_level FROM ne_10m_admin_0_boundary_lines_land UNION ALL - SELECT geom, 4 AS admin_level, scalerank, - boundary_class(featurecla) AS class + SELECT geom, 4 AS admin_level FROM ne_10m_admin_1_states_provinces_lines_shp WHERE featurecla = 'Adm-1 boundary' ); CREATE OR REPLACE VIEW boundary_z8 AS ( - SELECT geometry AS geom, admin_level, - NULL AS scalerank, NULL AS class + SELECT geometry AS geom, admin_level FROM osm_boundary_linestring_gen5 WHERE admin_level <= 4 AND ST_Length(geometry) > 1000 ); CREATE OR REPLACE VIEW boundary_z9 AS ( - SELECT geometry AS geom, admin_level, - NULL AS scalerank, NULL AS class + SELECT geometry AS geom, admin_level FROM osm_boundary_linestring_gen4 WHERE admin_level <= 6 ); CREATE OR REPLACE VIEW boundary_z10 AS ( - SELECT geometry AS geom, admin_level, - NULL AS scalerank, NULL AS class + SELECT geometry AS geom, admin_level FROM osm_boundary_linestring_gen3 WHERE admin_level <= 6 ); CREATE OR REPLACE VIEW boundary_z11 AS ( - SELECT geometry AS geom, admin_level, - NULL AS scalerank, NULL AS class + SELECT geometry AS geom, admin_level FROM osm_boundary_linestring_gen2 WHERE admin_level <= 8 ); CREATE OR REPLACE VIEW boundary_z12 AS ( - SELECT geometry AS geom, admin_level, - NULL AS scalerank, NULL AS class + SELECT geometry AS geom, admin_level FROM osm_boundary_linestring_gen1 ); CREATE OR REPLACE FUNCTION layer_boundary (bbox geometry, zoom_level int) -RETURNS TABLE(geom geometry, admin_level int, scalerank int, class text) AS $$ - SELECT geom, admin_level, scalerank::int, class FROM ( +RETURNS TABLE(geometry geometry, admin_level int) AS $$ + SELECT geom, admin_level FROM ( SELECT * FROM boundary_z0 WHERE geom && bbox AND zoom_level = 0 UNION ALL SELECT * FROM boundary_z1 WHERE geom && bbox AND zoom_level BETWEEN 1 AND 2 diff --git a/layers/boundary/boundary.yaml b/layers/boundary/boundary.yaml index 605c2a2..02cb723 100644 --- a/layers/boundary/boundary.yaml +++ b/layers/boundary/boundary.yaml @@ -1,17 +1,20 @@ layer: id: "boundary" description: | - Contains [administrative boundaries](http://wiki.openstreetmap.org/wiki/Tag:boundary%3Dadministrative) - (no maritime boundaries yet). - Until z7 Natural Earth data is used which switches to OSM boundaries after z8. - buffer_size: 4 + Contains administrative boundaries as linestrings (no maritime boundaries yet) as linestrings. + Until z7 [Natural Earth data](http://www.naturalearthdata.com/downloads/10m-cultural-vectors/10m-admin-0-countries/) + is used after which OSM boundaries ([`boundary=administrative`](http://wiki.openstreetmap.org/wiki/Tag:boundary%3Dadministrative)) are present from z8 to z14. + OSM data contains all [`admin_level`](http://wiki.openstreetmap.org/wiki/Tag:boundary%3Dadministrative#admin_level) + but for most styles it makes sense to just style `admin_level=2` and `admin_level=4`. fields: admin_level: | OSM [admin_level](http://wiki.openstreetmap.org/wiki/Tag:boundary%3Dadministrative#admin_level) indicating the level of importance of this boundary. At low zoom levels the Natural Earth boundaries are mapped to the equivalent admin levels. + buffer_size: 4 datasource: - query: (SELECT * FROM layer_boundary(!bbox!, z(!scale_denominator!))) AS t + geometry_field: geometry + query: (SELECT geometry, admin_level FROM layer_boundary(!bbox!, z(!scale_denominator!))) AS t schema: - ./boundary.sql datasources: diff --git a/layers/boundary/mapping.png b/layers/boundary/mapping.png new file mode 100644 index 0000000000000000000000000000000000000000..72032cdf65369536a080e39b0db7bf5ee77c2349 GIT binary patch literal 6913 zcmc&(gsZ|P?sI3y?+n*aQ+$9&jfa7O@c^VGr-gxmm4*H+fpZW2Dn=x*hJM3z z*HVr1hCUQH*}Q?7bSGh;C`{(H(< z9+eFz!e^UNQ#Cm6-~4+*@;>4O|N9kvt2X^jB3uukcl-DA(%>RV?7uJY0!P&l{x`@O z*;x8#GDb!jsCR(3sGF;X>*#4*x#!sE)65t2_3eE}HF`Do&nG#($d2r1e(w(2uPT-( zTxzegUv}JxT;H56uLR@s;jBiBnxd?oMbo~7QkYUo-d-QGpOx(YLkAGV-+s<~f|vl( z`t4RPAwGNXE`9hC#t=Yxx*T}>>v%*e48)!W+rnGm%tA~F&ln4;h$CS3+OfRMzrL}= zhRm4ymCLu48WBIlBz_pQFJqn`&W=apR3+`*L~Eib%J%DLB!BZbWcz5Iw=%^62K`%3 z=209>&aCLsiR!V}mip?B z-Y8TQC9P^L|K?*f30DcRJ8+QQ%ZEkB`s!@SJ1pqV{dbNPO@(itkusci;`4_@^0z-} zz1%MC;h(JX9FwOA9pq~%dzai*31XQMyjCa{{LRzz8D_?U8pk#>>T(>R&@Y!el?>#D zc6pEH?X0zt)1LH~AFH~#O3SonT!rW#TPgW$<%MmFSEPZtRuynZz$`Nfdx|6S|FJeo z@i}<&)?h0QCrSrffyz4Zi&+h;+3Wo2fIceQ%tzA(mQ(YKWRq_R#XoJFCQ+lV4mvC* zR7D>!KuAyicZ5LVwT7$<$mBXUTPgR7c zbXF=mP)F5^fwwn#`jw{Nfl0H4sW0$4rgxF%;n0mVTYn#b`cv0guLb8Dv6~mg>*ttv z?!i{>Us~OU0MsZ&=IuUy5g_^PeUu2?*;v20*;q#*jxqM&{F`~Z2SFxYb8Pe2%jxi` z9VOWxX!gRD`P)2%*7*&W7G_(#5A42*h3*9IlsDvazCG**=0u_S@D>W?jS=XjbVdLB zsYu85k+KlmaL3h7MT?8jIxoG?k0956wv?#CPdyU*jVvyo``N$SY!?^B)blW?enncE z1>PX-2FC(+=WKKKu3XxX({|P#PzFoEP@W33o!Xz-jWWJOYvNY!_)hd{jD$<3)8~GF zvrF6LAs^Jm=G8{ch$PK0*_Rxn*L8Myb!Wpb$re(K-9W$7092(YC%`w;Z@=m0DSyYc z+ck2=>?3DtTz%%j*2mZwv}>7MqgDS?UFv3S^T(OXGV}~7QrOz7HPh9v%7hG1MVwau zBKnTDIkXmoYuPr!Nhnk(9g9}g!i&#F04a%o9}$k@@#c%E-yRu-sm}@_ZLzGJ`8i1y zjsI=A|3TZ?5fBA%RE+zz%2QB-15y@+dDN30C{0|b2o958@UTJr_UcwkN-NSupr2)` z!NH$}x(EbG6XCUi*N1)H>!bw)(o}TNld+rg+Jm#@z}RQLC-3`c-BrYS(yhk=MdQc& z@$b{VdUGIHYL>U;e>_aFnG=ZW6j9f3s{sQoWi?kDI6$Yy#u*UP31yVsw6;_VL=U>a zQ;+iLA=8(0XL@hbhIA&C4p<&?fYd@)LMbl2F7>y4zX#qz4|aaMB~lyC=N;@rXP$~G z=r{=2gLcN&D(7iasbw&Cxz216ka?6COG{irMzt>r2P-KNz9Hr@$KND}Eoa{S&^&F1 zR8UGxd5*`q<7&U9{RU0&QtROHAdfbsF}fJ=zdcS(I_#z4A9}JHb(cZ8M&^>lD@PKF zcQsT(Y2YFn>9C?vlTMyp1ngH&C^%$A+u83No$SU7r8Z)%RceMFNAfGzu*UA9Z=h09 z>wUwIB|66?;^FqwbHC;tEAMJMbdBc8Li@9405sVw7pNo4{Af;u#d?xHq1-~oRH6yW z|7x${Z1bAsCIMphb_wHr*|m>ub0*mFEm{I}X7R#0LeS1hVK$>&q%jzJ{0`b?pe%=d za<2Yp$Ge$#N}FTY%yft6I}URj%JbWZfH}==ZU}4+hiXgqI3<(3Hcjdd(Rpp99cD8{ zFv#0r+;}v=ZQ`nOf1@uOD}UV5p-%*F(;|$HyqDH}D7d2-qOA=G96HlKd0}(M+O2L% z4}U}QAtjAd?9(HqmllJ_6?ATU6{vo#!uF@m^k7>dcsBBQiMQgh37?&4Gcq7` zhtTnxG!LeFxqWq9r+#JL0lg-X_0!FfvADh08)hY_kc$SEn_1qb z>O}J0Ef?;|v})xyaU^(=Kxq{iWT5ap81JQ`TT(J@qF2Q4QXtAQS~U)`1|)wOUkb2Y zpV-CY$wG0`m>PvfxhTz>DUp}m1c5_VEm2QCgNfcmsza{M^PN2&_??z&3D1ZhL zxg2$$-iL9wX)}8TE^)xKT_UKb!A+g(?6DEy@PIoDX3hk~L4d_;gj%qaZQJ#to!6MZ zJRpF0cW=xp0EiD8EOtVK0a&`d5(V?>z2ba zW%MhVyVqVSmb`3TCB?)G(lGjS**-`<01AtYe~*#VLgzKhWQ7n4(P2*n7!yWl~!mxjf)hlvN#U=;i_Ss zoTSYKjvS-Cjl4ue(V#16p5m@oVKt|3n_wG_i8oIn&g%ij{8?3tNH4)H;*G*@9B(7=^LgToH;>9s4K}ZkT4Sd9vlB1kBGxKb$6v}5= z^eZ-?8(m>0wSfhRpbb%K-c6fYHdiU4n>d+oq*CfER@2X=rg=WlQw7f37s(G=Ag-K( zqtF$@Q;6F_$oi2>>tXL9x*v(PDG!fg!R^q5IsLq*4g7kS!pD#m-s8Qvh@+*gPAnh6 zdaN9s+#qE5FhOy|2&JMvBPV-Ig*?u1qnARRug1@4Z~eN>`Lf_|bKLSQl%%+jl3{fv zjw7H3R_|C!#{$HB4E#0sW5mUjd0Ad7K5n2aev+n54J-(kzN~=rke_d@)^b^9Ii$jj z-%(SPI>wSEnl>gN1$F5QA}tmLTb}#-kuVl;k=V3i4U7~yK_!~n zoth|-fNs@P4iskS@e$FVUnGCqEtJ{}i)2s@p-s-xO?@*wzXdig7KpbL3~VcyuO+$FIu$+5us5qytjX1L3U+hRJgzouiOAaOaRD)wdgM>SXh_GC((Ve)JA?!( z98;K8j)MY>E;sLe7Q`0|p#ma?#S=bMrntIlOXP>rb`A1(w9?=xoESKW1+o>?AjWo* z{lypEN1j*hemYguIpQ0+vSW`H#6Qjn|Dvv=oK`M&+*%$a{RP3KBG%fgQb?@K<40kTV%79 z7=abWMeExfE~}tyAUZ7%)Y9kxe~OEcXRC zBT^_adgTIjsvHe<>sqJhHI<9RM*Vt-%d!h|FX)2rijXz~Icx3;b)(zPv6LgFd?$t% zX4%ToLt*(#S)q41E+n+^NX9w5MB}(=MJDu}dy%hV$T-5;P8^x*=Lr ziaot4dzJI<8Q=3-hI;c~z9}W(lLUPdc{li=lxV1?@%+`IuD(f9dN-JCnrnEt@oJP} zCX+0AzhT~?G@g9Tsb%-LwE*C_+CxF1uTi?$tQvkSL-I&rM*24I$SB@Tch+FaB0OgY zoHSu@$zPO{Sn^4)^n16#D@eXCEw^3YRWOg=gFz?) zM@l_$PDhWN?ZG;64?C^`0G=aEy;75|vIwO=MXM-X=4W z!oFPzqQF&U7!pM|R6|;*v@f8;D62*Gn0Z?)uwFg+W!&zOxbi_i8@sLnI=2x~ytq_P%zI`>qqWHDkKqy{OUFmLvrqU2Kasq> zrWC7B|1L+f2sn?bzRt0#?jd*A$JI_) zKS03NIQ9@0L=&MB!43|Ea4uCQG&!M%1s5<}H4!IKjg(-+wEnnr@j7q)w#OhbvC}`p zuzq6Ep8WAk_@a~EM80fIgpO~XR;cj2PI?9+2a9lROdeqsVCp_BtUc4UE)ck6BaA$8 z;y7G~8Ip;_41O-@&RrBcx~lO7RJz^?&f%NdBNSVE_|k<+-k1~KN3eEP;@PtDG;3Y0 zJBt9!{t_hzP+c4T7Memv>w6JQ>@%SP@|Ht~!momo0z*(!^~&O4%3C5)2ClL;1YzZ( zz&!syAQA*?=q-*rlh{+-wdb6)LUtP8Xw*OVd9H~K@C@L)3vSBd!YLHDCW>Ocmxh|s z-q2trfrke(c}g{OORDtt(luckqd9*2Vk62b7-XgCELxNRXpE3jiHGB0-V*f1JME`HeP z&cBmhE3JvcTvTl=APR_v`)83I_v5$uBHeltZ-$1W;e#hZ%GCF$%WT)NEj0@89M@w8 z_ig!l>4L=QL>HcvTxBTTJAWiUz07-ic2W0PfCt1E|Tcga}vQ2f!B zi;+5;2YWGBNIAXGS7uHMpIceSuEGOe)^;cE-hU40CJPhTn4p}~bK*Yo%j zkz0jYN9FO|Lg=ORxfTqSz*b{i08l}shL`G^GbLdarw{0IuXwT=S@(Ebp&L{10NYu6Ioiu)L;Pgvwf@F z_Gb~uUTcy1lTXOLW!x#e9IY#O((g=$X({))Sy{L({Iu1(b>@7cGwqE07QRL=o$-#1 zA$l?{5mb+2a88>~NSV(H1vUx?zRBMbU~YY{z%n(;mSX&qcpIjlFQcUQ-WaGA;emB( z5$>hGq3Ld;d7>j1@+)I{Pt$CjD=QUOVtz@h2ahMJFZt2af#FP-1zm1|uuVH@=>Ync z)yR!kbbAl_3G03>?&IZOIFQ!wyv|PqAxE|TgBwzc;ZA1Ie&XIE-ThIo?0!VH%PIoAY*Fao|ppVto3+Dbps6E1zY zp6D4yj{cnOyCS>6r2s>&s5If>k1*a_OI9eeZhtC%xUT|b14N-MRk^*Bnyk+uErVC1 zk2@pob)o4Btuc+IVgnOC(OrfkvPl(0#YJ;*tJOQ`~YPFdt3p9Dxg#bXH5l$+RTtl)YJ z+D&t=_!So}GMSqK5j6$o98=xH=jW2JzjkB_?&ybMHcd zq>R-XJmAgL$5-Rold{+s8$BeSH@)i?Z01_1l5*!gog{E_`Pd#wgE=#IH=j8aboPrG zZ1?3fHZ+MHrI3{v76{m!&0Mt>gKgV@2PJ#F+#Q<>KVu%^v$55){ttgrslnhX8L)aXW~ZyT?IJOwj`{ye-vW(G-$?+&tV3qegO%7&9Ff6 z?Cs--j}{RAV;oFkyEhn`hol7{zLy2f`KPTgAfTNNBW5|=3@n@C_29mF5#xve!k+SCq-C!Sav&Og4>vtJe zqY>~VoeC2{e;PLv2kqbJ%kPtmiKX>~=1q!NEg2qgNt9RJ)~3vt>)(w9nz}qT%!7Po z^xa?UiRavCK;7xCE|T-FUuwvq0d-2hA$B`Q$DN~@e0)kV99HOKzdGkJ)|OTDn&Sa_ z-1qy9KX^4{H+*=$+z#z3tAWpV3Vw3@v)8Cl`GJO+@qQ2A-&E&JF5-nwT~u;yN3t!F zboKhpRz|(Rw(X(ye+tBZjUbIByFM|;C{4%rw?4Dby4#MLl=-i%ew#}g4F=L+f9m@C d`4Ygnlp8cuUGn|9G