diff --git a/README.md b/README.md
index 181fe70..299e2a4 100644
--- a/README.md
+++ b/README.md
@@ -9,6 +9,7 @@ It is derived from the Lyrk mapstyle you can found at [https://github.com/lyrk/l
* [occitan](https://tile.openstreetmap.bzh/oc/)
* [basque](https://tile.openstreetmap.bzh/eu/)
* [alsacien](https://tile.openstreetmap.bzh/gsw/)
+* [catalan](https://tile.openstreetmap.bzh/ca/)
@@ -23,6 +24,7 @@ Il est dérivé du style Lyrk que vous pouvez trouver ici : [https://github.com/
* [occitan](https://tile.openstreetmap.bzh/oc/)
* [basque](https://tile.openstreetmap.bzh/eu/)
* [alsacien](https://tile.openstreetmap.bzh/gsw/)
+* [catalan](https://tile.openstreetmap.bzh/ca/)
# Preview
@@ -129,7 +131,7 @@ It will :
## See the map
-You can set up a whole tile server (see [here](https://switch2osm.org/serving-tiles/)) or, easier and faster, use [Kosmtik](https://github.com/kosmtik/kosmtik).
+You can set up a whole tile server (see [here](https://switch2osm.org/serving-tiles/)) or, easier and faster and for developement purposes, use [Kosmtik](https://github.com/kosmtik/kosmtik).
diff --git a/data/perpignan.osm b/data/perpignan.osm
new file mode 100644
index 0000000..0e95d02
--- /dev/null
+++ b/data/perpignan.osm
@@ -0,0 +1,14 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/data/perpignan.poly b/data/perpignan.poly
new file mode 100644
index 0000000..b438885
--- /dev/null
+++ b/data/perpignan.poly
@@ -0,0 +1,9 @@
+perpignan
+1
+ 3.218993 42.944361
+ 2.381285 42.927269
+ 2.367551 42.324034
+ 3.260190 42.401152
+ 3.218993 42.944361
+END
+END
diff --git a/osm_ca.xml b/osm_ca.xml
new file mode 100644
index 0000000..65c0c8c
--- /dev/null
+++ b/osm_ca.xml
@@ -0,0 +1,54526 @@
+
+
+
+
diff --git a/osm_ca.yml b/osm_ca.yml
new file mode 100644
index 0000000..0ffc940
--- /dev/null
+++ b/osm_ca.yml
@@ -0,0 +1,680 @@
+name: OpenStreetMap en català
+description: 'A general-purpose OpenStreetMap mapnik style, focused on minored langages, in CartoCSS'
+attribution: 'CC-BY-SA OSM-BZH'
+scale: 1
+metatile: 2
+bounds: &world
+ - -180
+ - -85
+ - 180
+ - 85
+center:
+ - -2.96
+ - 48.03
+ - 8
+format: 'png'
+interactivity: false
+minzoom: 4
+maxzoom: 18
+srs: "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over"
+
+
+_parts:
+ # default values used by layers
+ extents: &extents
+ extent: *world
+ srs-name: "3857"
+ srs: "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over"
+ class: ''
+ status: 'on'
+
+ extents84: &extents84
+ extent: *world
+ srs-name: "WGS84"
+ srs: "+proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs"
+
+ osm2pgsql: &osm2pgsql
+ type: "postgis"
+ dbname: "osm"
+ key_field: ""
+ geometry_field: "way"
+ extent: "-20037508,-20037508,20037508,20037508"
+ host: db.openstreetmap.world
+ user: osmbr
+ password: m4d31nbr31zh
+ asynchronous_request: true
+ max_async_connection: 4
+ max_size: 50
+ cursor_size: 5000
+
+
+# stylesheets
+Stylesheet:
+ - styles/palette.mss
+ - styles/base.mss
+ - styles/landcover.mss
+ - styles/admin.mss
+ - styles/roads.mss
+ - styles/placenames.mss
+ - styles/labels.mss
+
+
+# the layers
+Layer:
+
+ - id: land_low
+ geometry: polygon
+ <<: *extents
+ Datasource:
+ file: /data/styles/data/simplified-land-polygons-complete-3857/simplified_land_polygons.shp
+ type: shape
+ properties:
+ maxzoom: 10
+
+
+ - id: land_high
+ geometry: polygon
+ <<: *extents
+ Datasource:
+ file: /data/styles/data/land-polygons-split-3857/land_polygons.shp
+ type: shape
+
+
+ - id: landcover_low
+ geometry: polygon
+ <<: *extents
+ Datasource:
+ <<: *osm2pgsql
+ table: |-
+ (SELECT
+ osm_id, way, way_area AS area, COALESCE(landuse, leisure, "natural", highway, amenity, tourism) AS type
+ FROM
+ planet_osm_polygon
+ WHERE
+ landuse IN ('forest')
+ AND way && !bbox!
+ AND way_area > 0.01*!pixel_width!::real*!pixel_height!::real
+ ) AS landcover_low
+ simplify_geometries: 'true'
+ properties:
+ minzoom: 6
+ maxzoom: 9
+
+
+ - id: landcover
+ geometry: polygon
+ <<: *extents
+ Datasource:
+ <<: *osm2pgsql
+ table: |-
+ (SELECT
+ osm_id, way, way_area AS area, COALESCE(landuse, leisure, "natural", highway, amenity, tourism) AS type
+ FROM
+ planet_osm_polygon
+ WHERE
+ way && !bbox!
+ AND way_area > 1*!pixel_width!::real*!pixel_height!::real
+ ORDER BY z_order, way_area DESC
+ ) AS landcover
+ simplify_geometries: 'true'
+ properties:
+ minzoom: 10
+
+
+ - id: aeroway
+ geometry: polygon
+ <<: *extents
+ Datasource:
+ <<: *osm2pgsql
+ table: |-
+ (SELECT
+ osm_id, way, aeroway AS type
+ FROM
+ planet_osm_line
+ WHERE
+ aeroway IN ('apron', 'runway', 'taxiway')
+ ) AS aeroway
+ properties:
+ minzoom: 10
+
+
+ - id: waterarea_low
+ geometry: polygon
+ <<: *extents
+ Datasource:
+ <<: *osm2pgsql
+ table: |-
+ (SELECT
+ osm_id, way, "natural" AS type, way_area AS area
+ FROM
+ planet_osm_polygon
+ WHERE
+ ("natural" IN ('water', 'pond')
+ OR waterway IN ('basin', 'canal', 'mill_pond', 'pond', 'riverbank', 'stream'))
+ AND way_area > 75000
+ ) AS waterarea_low
+ simplify_geometries: 'true'
+ properties:
+ minzoom: 7
+ maxzoom: 10
+
+ - id: waterarea_med
+ geometry: polygon
+ <<: *extents
+ Datasource:
+ <<: *osm2pgsql
+ table: |-
+ (SELECT
+ osm_id, way, "natural" AS type, way_area AS area
+ FROM
+ planet_osm_polygon
+ WHERE
+ ("natural" IN ('water', 'pond')
+ OR waterway IN ('basin', 'canal', 'mill_pond', 'pond', 'riverbank', 'stream'))
+ AND way_area > 50000
+ ) AS waterarea_med
+ simplify_geometries: 'true'
+ properties:
+ minzoom: 10
+ maxzoom: 12
+
+ - id: waterarea
+ geometry: polygon
+ <<: *extents
+ Datasource:
+ <<: *osm2pgsql
+ table: |-
+ (SELECT
+ osm_id,
+ way,
+ way_area AS area,
+ COALESCE(tags -> 'name:ca'::text) as name,
+ COALESCE(waterway, '') || COALESCE(landuse, '') || COALESCE("natural", '') as type
+ FROM
+ planet_osm_polygon
+ WHERE
+ waterway IN ('riverbank')
+ OR (landuse = ANY (ARRAY['reservoir'::text, 'water'::text, 'basin'::text, 'salt_pond'::text]))
+ OR ("natural" = ANY (ARRAY['lake'::text, 'water'::text])) OR amenity = 'swimming_pool'::text
+ OR leisure = 'swimming_pool'::text
+ ) AS waterarea
+ properties:
+ minzoom: 12
+
+
+ - id: waterway_low
+ geometry: linestring
+ <<: *extents
+ Datasource:
+ <<: *osm2pgsql
+ table: |-
+ (SELECT
+ osm_id, COALESCE(tags -> 'name:ca'::text) as name, COALESCE(waterway, '') as type, way
+ FROM
+ planet_osm_line
+ WHERE
+ waterway in ('river','canal')
+ ORDER BY z_order
+ ) AS waterway_low
+ simplify_geometries: 'true'
+ properties:
+ minzoom: 8
+ maxzoom: 12
+
+
+ - id: waterway_med
+ geometry: linestring
+ <<: *extents
+ Datasource:
+ <<: *osm2pgsql
+ table: |-
+ (SELECT
+ osm_id, COALESCE(tags -> 'name:ca'::text) as name, COALESCE(waterway, '') as type, way
+ FROM
+ planet_osm_line
+ WHERE
+ waterway in ('stream','river','canal')
+ ORDER BY z_order
+ ) AS waterway_med
+ simplify_geometries: 'true'
+ properties:
+ minzoom: 13
+ maxzoom: 14
+
+ - id: waterway_high
+ geometry: linestring
+ <<: *extents
+ Datasource:
+ <<: *osm2pgsql
+ table: |-
+ (SELECT
+ osm_id, COALESCE(tags -> 'name:ca'::text) as name, COALESCE(waterway, '') as type, way
+ FROM
+ planet_osm_line
+ WHERE
+ waterway in ('weir','river','canal','derelict_canal','stream','drain','ditch','wadi')
+ ORDER BY z_order
+ ) AS waterway_high
+ properties:
+ minzoom: 15
+
+
+ - id: buildings
+ geometry: polygon
+ <<: *extents
+ Datasource:
+ <<: *osm2pgsql
+ table: |-
+ (SELECT
+ osm_id, way, 'building' AS type
+ FROM
+ planet_osm_polygon
+ WHERE
+ building NOT IN ('', '0','false', 'no')
+ ORDER BY z_order, way_area DESC
+ ) AS buildings
+ properties:
+ minzoom: 13
+
+
+ - id: rail_low
+ geometry: linestring
+ <<: *extents
+ Datasource:
+ <<: *osm2pgsql
+ table: |-
+ (SELECT
+ osm_id,
+ way,
+ COALESCE(railway) AS type,
+ tags->'usage'::text AS usage,
+ tunnel,
+ bridge
+ FROM
+ planet_osm_line
+ WHERE
+ railway IN ('rail') AND tags->'usage'::text IN ('main', 'branch')
+ ) AS rail_low
+ simplify_geometries: 'true'
+ properties:
+ minzoom: 6
+ maxzoom: 8
+
+
+ - id: tunnel
+ geometry: linestring
+ <<: *extents
+ Datasource:
+ <<: *osm2pgsql
+ table: |-
+ (SELECT
+ osm_id,
+ way,
+ COALESCE(highway, railway) AS type,
+ 0 AS bridge,
+ access,
+ render,
+ layer,
+ 1 as tunnel,
+ CASE
+ WHEN highway IN ('motorway', 'trunk') THEN 'motorway'
+ WHEN highway IN ('primary', 'secondary') THEN 'mainroad'
+ WHEN highway IN ('motorway_link', 'trunk_link', 'primary_link', 'secondary_link', 'tertiary', 'tertiary_link', 'residential', 'unclassified', 'road', 'living_street') THEN 'minorroad'
+ WHEN highway IN ('service', 'track') THEN 'service'
+ WHEN highway IN ('path', 'cycleway', 'footway', 'pedestrian', 'steps', 'bridleway') THEN 'noauto'
+ WHEN railway IN ('light_rail', 'subway', 'narrow_gauge', 'rail', 'tram') THEN 'railway'
+ ELSE
+ 'other'
+ END AS stylegroup
+ FROM
+ (
+ SELECT *, '1_outline' AS render
+ FROM planet_osm_line
+ WHERE tunnel NOT IN ('', '0', 'no')
+ UNION ALL
+ SELECT *, '2_line' AS render
+ FROM planet_osm_line
+ WHERE tunnel NOT IN ('', '0', 'no')
+ UNION ALL
+ SELECT *, '3_inline' AS render
+ FROM planet_osm_line
+ WHERE tunnel NOT IN ('', '0', 'no')
+ ) AS tunnels
+ ORDER BY layer ASC, render ASC ) AS tunnel
+ simplify_geometries: 'true'
+ properties:
+ minzoom: 11
+
+
+ - id: roads_low
+ geometry: linestring
+ <<: *extents
+ Datasource:
+ <<: *osm2pgsql
+ table: |-
+ (SELECT
+ osm_id,
+ way,
+ COALESCE(highway, railway) AS type,
+ 0 AS tunnel,
+ 0 AS bridge,
+ access,
+ 'fill' AS render,
+ CASE
+ WHEN highway IN ('motorway', 'trunk') THEN 'motorway'
+ WHEN highway IN ('primary') THEN 'mainroad'
+ WHEN railway IN ('rail') THEN 'railway'
+ ELSE 'other'
+ END AS stylegroup
+ FROM planet_osm_line
+ WHERE
+ highway IN ('motorway', 'trunk', 'primary')
+ OR railway IN ('rail')
+ AND (tunnel IS NULL OR tunnel = 'no')
+ AND (bridge IS NULL OR bridge = 'no')
+ ORDER BY z_order ) AS roads_low
+ simplify_geometries: 'true'
+ properties:
+ minzoom: 6
+ maxzoom: 8
+
+
+ - id: roads_med
+ geometry: linestring
+ <<: *extents
+ Datasource:
+ <<: *osm2pgsql
+ table: |-
+ (SELECT
+ osm_id,
+ way,
+ COALESCE(highway, railway) AS type,
+ 0 AS tunnel, 0 AS bridge, access, 'fill' AS render,
+ CASE
+ WHEN highway IN ('motorway', 'trunk') THEN 'motorway'
+ WHEN highway IN ('primary', 'secondary') THEN 'mainroad'
+ WHEN highway IN ('motorway_link', 'trunk_link', 'primary_link', 'secondary_link', 'tertiary', 'tertiary_link') THEN 'minorroad'
+ WHEN railway IN ('light_rail', 'subway', 'narrow_gauge', 'rail', 'tram') THEN 'railway'
+ ELSE 'other'
+ END AS stylegroup
+ FROM planet_osm_line
+ WHERE
+ highway IN ('motorway', 'trunk', 'primary', 'secondary', 'motorway_link', 'trunk_link', 'primary_link', 'secondary_link', 'tertiary', 'tertiary_link')
+ OR railway IN ('light_rail', 'subway', 'narrow_gauge', 'rail', 'tram')
+ AND (tunnel IS NULL OR tunnel = 'no') AND (bridge IS NULL OR bridge = 'no')
+ ORDER BY z_order ) AS roads_med
+ simplify_geometries: 'true'
+ properties:
+ minzoom: 9
+ maxzoom: 10
+
+
+ - id: roads_high
+ geometry: linestring
+ <<: *extents
+ Datasource:
+ <<: *osm2pgsql
+ table: |-
+ (SELECT
+ osm_id,
+ way,
+ COALESCE(highway, railway) AS type,
+ 0 AS tunnel,
+ 0 AS bridge,
+ access,
+ 'fill' AS render,
+ CASE
+ WHEN highway IN ('motorway', 'trunk') THEN 'motorway'
+ WHEN highway IN ('primary', 'secondary') THEN 'mainroad'
+ WHEN highway IN ('motorway_link', 'trunk_link', 'primary_link', 'secondary_link', 'tertiary', 'tertiary_link', 'residential', 'unclassified', 'road', 'living_street') THEN 'minorroad'
+ WHEN highway IN ('service', 'track') THEN 'service'
+ WHEN highway IN ('path', 'cycleway', 'footway', 'pedestrian', 'steps', 'bridleway') THEN 'noauto'
+ WHEN railway IN ('light_rail', 'subway', 'narrow_gauge', 'rail', 'tram') THEN 'railway'
+ ELSE 'other'
+ END AS stylegroup
+ FROM planet_osm_line
+ WHERE
+ (highway IS NOT NULL OR railway IS NOT NULL)
+ AND (tunnel IS NULL OR tunnel = 'no')
+ AND (bridge IS NULL OR bridge = 'no')
+ ORDER BY z_order ) AS roads_high
+ simplify_geometries: 'true'
+ properties:
+ minzoom: 11
+
+
+ - id: bridge
+ geometry: linestring
+ <<: *extents
+ Datasource:
+ <<: *osm2pgsql
+ table: |-
+ (SELECT
+ way,
+ COALESCE(highway, railway) AS type,
+ 1 AS bridge, access, render, layer,
+ 0 as tunnel,
+ CASE
+ WHEN highway IN ('motorway', 'trunk') THEN 'motorway'
+ WHEN highway IN ('primary', 'secondary') THEN 'mainroad'
+ WHEN highway IN ('motorway_link', 'trunk_link', 'primary_link', 'secondary_link', 'tertiary', 'tertiary_link', 'residential', 'unclassified', 'road', 'living_street') THEN 'minorroad'
+ WHEN highway IN ('service', 'track') THEN 'service'
+ WHEN highway IN ('path', 'cycleway', 'footway', 'pedestrian', 'steps', 'bridleway') THEN 'noauto'
+ WHEN railway IN ('light_rail', 'subway', 'narrow_gauge', 'rail', 'tram') THEN 'railway'
+ ELSE 'other'
+ END AS stylegroup
+ FROM
+ (
+ SELECT *, '1_outline' AS render
+ FROM planet_osm_line
+ WHERE bridge NOT IN ('', '0', 'no')
+ UNION ALL
+ SELECT *, '2_line' AS render
+ FROM planet_osm_line
+ WHERE bridge NOT IN ('', '0', 'no')
+ UNION ALL
+ SELECT *, '3_inline' AS render
+ FROM planet_osm_line
+ WHERE bridge NOT IN ('', '0', 'no')
+ ) AS bridges
+ ORDER BY layer ASC, render ASC ) AS bridge
+ simplify_geometries: 'true'
+ properties:
+ minzoom: 11
+
+
+ - id: admin_boundaries
+ geometry: linestring
+ <<: *extents
+ Datasource:
+ <<: *osm2pgsql
+ table: |-
+ (SELECT
+ ST_Simplify(b.way,!pixel_width!/4) as way,
+ admin_level::integer AS admin_level,
+ coalesce(b.tags->'maritime','no') AS maritime,
+ count(r.*)::integer AS nb,
+ string_agg(id::text,',') AS rels
+ FROM planet_osm_roads b
+ LEFT JOIN planet_osm_rels r ON (r.parts @> ARRAY[osm_id]
+ AND r.members @> ARRAY['w' || osm_id]
+ AND regexp_replace(r.tags::text,'[{}]',',') ~ format('(,admin_level,%s.*,boundary,administrative|,boundary,administrative.*,admin_level,%s,)',admin_level,admin_level))
+ WHERE
+ way && !bbox!
+ AND boundary='administrative'
+ AND admin_level IS NOT NULL
+ GROUP BY 1,2,3
+ ORDER BY admin_level DESC ) AS admin_boundaries
+ simplify_geometries: 'true'
+ properties:
+ minzoom: 11
+
+
+ - id: placenames_medium
+ geometry: point
+ <<: *extents
+ Datasource:
+ <<: *osm2pgsql
+ table: |-
+ (SELECT name, place, admin_level, way
+ FROM
+ (
+ SELECT
+ ROW_NUMBER() OVER(PARTITION BY p.osm_id
+ ORDER BY substring(substring(r.tags::text,'admin_level,[0-9]'),'[0-9]') ASC) AS rank
+ , p.osm_id
+ , p.place
+ , COALESCE(p.tags -> 'name:ca'::text,'') as name
+ , substring(substring(r.tags::text,'admin_level,[0-9]'),'[0-9]')::integer AS admin_level
+ , p.way
+ FROM planet_osm_point p
+ LEFT JOIN planet_osm_rels r ON (r.parts @> ARRAY[p.osm_id] AND r.members @> ARRAY['n' || p.osm_id])
+ WHERE
+ way && !bbox!
+ AND p.place IN ('town','city')
+ AND r.members::text ~ 'admin_centre'
+ AND r.tags::text ~ 'admin_level,[0-9]' = TRUE
+ GROUP BY osm_id, place, COALESCE(p.tags -> 'name:ca'::text,''), way, substring(substring(r.tags::text,'admin_level,[0-9]'),'[0-9]')
+ ) AS src
+ WHERE rank = 1 AND name <> ''
+ ORDER BY admin_level, name ) AS placenames_medium
+ properties:
+ cache-features: true
+ minzoom: 4
+ maxzoom: 15
+
+
+ - id: placenames_small
+ geometry: point
+ <<: *extents
+ Datasource:
+ <<: *osm2pgsql
+ table: |-
+ (SELECT
+ way,
+ place,
+ COALESCE(tags -> 'name:ca'::text,'') as name
+ FROM planet_osm_point
+ WHERE
+ place IN ('suburb','village','locality','hamlet','quarter','neighbourhood','isolated_dwelling','farm')
+ AND COALESCE(tags -> 'name:ca'::text) IS NOT NULL
+ AND NOT tags @> 'capital=>yes'
+ ORDER BY CASE
+ WHEN place = 'suburb' THEN 7
+ WHEN place = 'village' THEN 6
+ WHEN place IN ('locality','hamlet') THEN 5
+ WHEN place = 'quarter' THEN 4
+ WHEN place = 'neighbourhood' THEN 3
+ WHEN place = 'isolated_dwelling' THEN 2
+ WHEN place = 'farm' THEN 1
+ END DESC) AS placenames_small
+ properties:
+ cache-features: true
+ minzoom: 10
+ maxzoom: 17
+
+
+ - id: motorway_label
+ geometry: linestring
+ <<: *extents
+ Datasource:
+ <<: *osm2pgsql
+ table: |-
+ (SELECT
+ osm_id,
+ COALESCE(highway, '') as type,
+ COALESCE(tags -> 'name:ca'::text,'') as name,
+ ref,
+ oneway,
+ CHAR_LENGTH(ref) AS reflen,
+ way
+ FROM
+ planet_osm_line
+ WHERE
+ highway IN ('motorway', 'trunk')
+ AND (COALESCE(tags -> 'name:ca'::text,'') IS NOT NULL OR ref IS NOT NULL) ) AS motorway_label
+ simplify_geometries: 'true'
+ properties:
+ minzoom: 9
+
+
+ - id: mainroad_label
+ geometry: linestring
+ <<: *extents
+ Datasource:
+ <<: *osm2pgsql
+ table: |-
+ (SELECT
+ osm_id,
+ COALESCE(highway, '') as type,
+ COALESCE(tags -> 'name:ca'::text,'') as name,
+ way
+ FROM
+ planet_osm_line
+ WHERE
+ highway IN ('primary', 'secondary', 'tertiary') ) AS mainroad_label
+ simplify_geometries: 'true'
+ properties:
+ minzoom: 12
+
+
+ - id: minorroad_label
+ geometry: linestring
+ <<: *extents
+ Datasource:
+ <<: *osm2pgsql
+ table: |-
+ (SELECT
+ osm_id,
+ COALESCE(highway, '') as type,
+ COALESCE(tags -> 'name:ca'::text,'') as name,
+ way
+ FROM
+ planet_osm_line
+ WHERE
+ highway IN ('motorway','motorway_link','trunk','trunk_link','primary','primary_link','secondary','secondary_link','tertiary','tertiary_link','road','path','track','service','footway','bridleway','cycleway','steps','pedestrian','living_street','unclassified','residential','raceway') ) AS minorroad_label
+ simplify_geometries: 'true'
+ properties:
+ minzoom: 14
+
+
+ - id: building_label
+ geometry: polygon
+ <<: *extents
+ Datasource:
+ <<: *osm2pgsql
+ table: |-
+ (SELECT
+ COALESCE(tags -> 'name:ca'::text) as name,
+ way,
+ way_area/NULLIF(!pixel_width!::real*!pixel_height!::real,0) AS way_pixels
+ FROM planet_osm_polygon
+ WHERE building IS NOT NULL
+ AND building NOT IN ('no')
+ AND name IS NOT NULL
+ ORDER BY way_area DESC
+ ) AS building_text
+ properties:
+ minzoom: 14
+
+
+ - id: leisure_label
+ geometry: polygon
+ <<: *extents
+ Datasource:
+ <<: *osm2pgsql
+ table: |-
+ (SELECT
+ COALESCE(tags -> 'name:ca'::text) as name,
+ way,
+ way_area/NULLIF(!pixel_width!::real*!pixel_height!::real,0) AS way_pixels
+ FROM planet_osm_polygon
+ WHERE leisure IN ('park', 'sports_centre', 'stadium', 'pitch')
+ AND name IS NOT NULL
+ ORDER BY way_area DESC
+ ) AS leisure_text
+ properties:
+ minzoom: 14
+
+
+
diff --git a/osm_ca_control.xml b/osm_ca_control.xml
new file mode 100644
index 0000000..3e18e6e
--- /dev/null
+++ b/osm_ca_control.xml
@@ -0,0 +1,277 @@
+
+
+
+
diff --git a/osm_ca_control.yml b/osm_ca_control.yml
new file mode 100644
index 0000000..1abb63a
--- /dev/null
+++ b/osm_ca_control.yml
@@ -0,0 +1,120 @@
+name: OpenStreetMap en català - control layer
+description: 'A general-purpose OpenStreetMap mapnik style, focused on minored langages, in CartoCSS'
+attribution: 'CC-BY-SA OSM-BZH'
+scale: 1
+metatile: 2
+bounds: &world
+ - -180
+ - -85
+ - 180
+ - 85
+center:
+ - -2.96
+ - 48.03
+ - 8
+format: 'png'
+interactivity: false
+minzoom: 4
+maxzoom: 18
+srs: "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over"
+
+
+_parts:
+ # default values used by layers
+ extents: &extents
+ extent: *world
+ srs-name: "3857"
+ srs: "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over"
+ class: ''
+ status: 'on'
+
+ extents84: &extents84
+ extent: *world
+ srs-name: "WGS84"
+ srs: "+proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs"
+
+ osm2pgsql: &osm2pgsql
+ type: "postgis"
+ dbname: "osm"
+ key_field: ""
+ geometry_field: "way"
+ extent: "-20037508,-20037508,20037508,20037508"
+ host: db.openstreetmap.world
+ user: osmbr
+ password: m4d31nbr31zh
+ asynchronous_request: true
+ max_async_connection: 4
+ max_size: 50
+ cursor_size: 5000
+
+
+# stylesheets
+Stylesheet:
+ - styles/control_map.mss
+
+
+# the layers
+Layer:
+
+ - id: land_high
+ geometry: polygon
+ <<: *extents
+ Datasource:
+ file: /data/styles/data/land-polygons-split-3857/land_polygons.shp
+ type: shape
+
+
+ - id: places
+ geometry: point
+ <<: *extents
+ Datasource:
+ <<: *osm2pgsql
+ table: |-
+ (SELECT
+ a.osm_id, a.name, b.local_name,
+ CASE
+ WHEN b.local_name IS NULL THEN 'null'
+ ELSE 'done'
+ END AS check,
+ a.way
+ FROM planet_osm_point a
+ FULL JOIN
+ (
+ SELECT osm_id, tags -> 'name:ca' AS local_name
+ FROM planet_osm_point
+ WHERE (tags -> 'name:ca'::text IS NOT NULL)
+ ) AS b ON a.osm_id = b.osm_id
+ WHERE name IS NOT NULL AND place IS NOT NULL
+ ) AS places
+ simplify_geometries: 'false'
+ properties:
+ minzoom: 10
+
+
+ - id: ways
+ geometry: linestring
+ <<: *extents
+ Datasource:
+ <<: *osm2pgsql
+ table: |-
+ (SELECT
+ a.osm_id, a.name, b.local_name,
+ CASE
+ WHEN b.local_name IS NULL THEN 'null'
+ ELSE 'done'
+ END AS check,
+ a.way
+ FROM planet_osm_line a
+ FULL JOIN
+ (
+ SELECT osm_id, tags -> 'name:ca' AS local_name
+ FROM planet_osm_line
+ WHERE (tags -> 'name:ca'::text IS NOT NULL)
+ ) AS b ON a.osm_id = b.osm_id
+ WHERE name IS NOT NULL AND highway IS NOT NULL
+ ) AS ways
+ simplify_geometries: 'true'
+ properties:
+ minzoom: 10
+
+
diff --git a/scripts/yaml2xml.sh b/scripts/yaml2xml.sh
index 52913c5..a9df390 100755
--- a/scripts/yaml2xml.sh
+++ b/scripts/yaml2xml.sh
@@ -34,6 +34,13 @@ cp osm_gsw.yml osm_gsw.mml
carto osm_gsw.mml > osm_gsw.xml
rm osm_gsw.mml
+echo ""
+echo "++++++++++++++++++++++++++++++++++++++++++++++++++++++"
+echo " CA"
+
+cp osm_ca.yml osm_ca.mml
+carto osm_ca.mml > osm_ca.xml
+rm osm_ca.mml
echo ""
echo ""
diff --git a/scripts/yaml2xml_control.sh b/scripts/yaml2xml_control.sh
index bbc62de..490a50a 100755
--- a/scripts/yaml2xml_control.sh
+++ b/scripts/yaml2xml_control.sh
@@ -34,6 +34,13 @@ cp osm_gsw_control.yml osm_gsw_control.mml
carto osm_gsw_control.mml > osm_gsw_control.xml
rm osm_gsw_control.mml
+echo ""
+echo "++++++++++++++++++++++++++++++++++++++++++++++++++++++"
+echo " CA"
+
+cp osm_ca_control.yml osm_ca_control.mml
+carto osm_ca_control.mml > osm_ca_control.xml
+rm osm_ca_control.mml
echo ""
echo ""