kopia lustrzana https://github.com/openmaptiles/openmaptiles
				
				
				
			Add countries based on Natural Earth tiles
							rodzic
							
								
									bed74283df
								
							
						
					
					
						commit
						0d38b8b3db
					
				
							
								
								
									
										25
									
								
								data.yml
								
								
								
								
							
							
						
						
									
										25
									
								
								data.yml
								
								
								
								
							| 
						 | 
				
			
			@ -170,6 +170,31 @@ Layer:
 | 
			
		|||
    properties: 
 | 
			
		||||
      "buffer-size": 64
 | 
			
		||||
    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
 | 
			
		||||
  - id: country
 | 
			
		||||
    Datasource: 
 | 
			
		||||
      dbname: osm
 | 
			
		||||
      extent: -20037508.34,-20037508.34,20037508.34,20037508.34
 | 
			
		||||
      geometry_field: geom
 | 
			
		||||
      geometry_table: ''
 | 
			
		||||
      host: db
 | 
			
		||||
      key_field: ''
 | 
			
		||||
      key_field_as_attribute: ''
 | 
			
		||||
      max_size: 512
 | 
			
		||||
      password: osm
 | 
			
		||||
      port: 5432
 | 
			
		||||
      srid: 900913
 | 
			
		||||
      table: (SELECT * FROM layer_country(!bbox!, z(!scale_denominator!))) AS t
 | 
			
		||||
      type: postgis
 | 
			
		||||
      user: osm
 | 
			
		||||
    description: Buildings
 | 
			
		||||
    fields: 
 | 
			
		||||
      abbrev: String
 | 
			
		||||
      labelrank: Number
 | 
			
		||||
      name: String
 | 
			
		||||
      scalerank: Number
 | 
			
		||||
    properties: 
 | 
			
		||||
      "buffer-size": 64
 | 
			
		||||
    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
 | 
			
		||||
maxzoom: 14
 | 
			
		||||
minzoom: 0
 | 
			
		||||
name: OSM2VectorTiles v3.0
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -0,0 +1,46 @@
 | 
			
		|||
CREATE TABLE IF NOT EXISTS country_label AS (
 | 
			
		||||
    SELECT topoint(geom) AS geom,
 | 
			
		||||
           name,
 | 
			
		||||
           adm0_a3, abbrev, postal,
 | 
			
		||||
           scalerank, labelrank,
 | 
			
		||||
           CASE WHEN tiny < 0 THEN 0 ELSE 1 END AS is_tiny
 | 
			
		||||
    FROM ne_10m_admin_0_countries
 | 
			
		||||
    WHERE scalerank <= 1
 | 
			
		||||
);
 | 
			
		||||
CREATE INDEX IF NOT EXISTS country_label_geom_idx ON country_label USING gist(geom);
 | 
			
		||||
 | 
			
		||||
CREATE OR REPLACE VIEW country_z1 AS (
 | 
			
		||||
    SELECT * FROM country_label WHERE scalerank = 0 AND is_tiny = 0 AND labelrank <= 2
 | 
			
		||||
);
 | 
			
		||||
 | 
			
		||||
CREATE OR REPLACE VIEW country_z2 AS (
 | 
			
		||||
    SELECT * FROM country_label WHERE scalerank = 0 AND is_tiny = 0 AND labelrank <= 3
 | 
			
		||||
);
 | 
			
		||||
 | 
			
		||||
CREATE OR REPLACE VIEW country_z3 AS (
 | 
			
		||||
    SELECT * FROM country_label WHERE scalerank = 0 AND is_tiny = 0
 | 
			
		||||
);
 | 
			
		||||
 | 
			
		||||
CREATE OR REPLACE VIEW country_z5 AS (
 | 
			
		||||
    SELECT * FROM country_label WHERE scalerank <= 1
 | 
			
		||||
);
 | 
			
		||||
 | 
			
		||||
CREATE OR REPLACE FUNCTION layer_country(bbox geometry, zoom_level int)
 | 
			
		||||
RETURNS TABLE(geom geometry, name text, abbrev text, postal text, scalerank int, labelrank int) AS $$
 | 
			
		||||
    WITH zoom_levels AS (
 | 
			
		||||
        SELECT * FROM country_z1
 | 
			
		||||
        WHERE zoom_level = 1
 | 
			
		||||
        UNION ALL
 | 
			
		||||
        SELECT * FROM country_z2
 | 
			
		||||
        WHERE zoom_level BETWEEN 2 AND 4
 | 
			
		||||
        UNION ALL
 | 
			
		||||
        SELECT * FROM country_z3
 | 
			
		||||
        WHERE zoom_level BETWEEN 3 AND 4
 | 
			
		||||
        UNION ALL
 | 
			
		||||
        SELECT * FROM country_z5
 | 
			
		||||
        WHERE zoom_level >= 5
 | 
			
		||||
    )
 | 
			
		||||
    SELECT geom, name, abbrev, postal, scalerank::int, labelrank::int FROM zoom_levels
 | 
			
		||||
    WHERE geom && bbox
 | 
			
		||||
    ORDER BY scalerank, labelrank, length(name);
 | 
			
		||||
$$ LANGUAGE SQL IMMUTABLE;
 | 
			
		||||
		Ładowanie…
	
		Reference in New Issue