kopia lustrzana https://github.com/openmaptiles/openmaptiles
				
				
				
			Add waterway layer
							rodzic
							
								
									250bcd01a4
								
							
						
					
					
						commit
						446544f5c8
					
				
							
								
								
									
										2
									
								
								Makefile
								
								
								
								
							
							
						
						
									
										2
									
								
								Makefile
								
								
								
								
							| 
						 | 
				
			
			@ -10,4 +10,4 @@ build/tileset.sql:
 | 
			
		|||
	mkdir -p build && generate-sql openmaptiles.yaml > build/tileset.sql
 | 
			
		||||
 | 
			
		||||
clean:
 | 
			
		||||
	rm -rf build
 | 
			
		||||
	rm -f build/openmaptiles.tm2source/data.yml && rm -f build/mapping.yaml && rm -f build/tileset.sql
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -92,7 +92,7 @@ docker-compose run import-sql
 | 
			
		|||
```
 | 
			
		||||
 | 
			
		||||
To look at the vector tiles you can start up Mapbox Studio Classic in a container
 | 
			
		||||
and visit `localhost:3000` and open the vector source project under `projects/osm2vectortiles.tm2source`.
 | 
			
		||||
and visit `localhost:3000` and open the vector source project under `/projects`.
 | 
			
		||||
 | 
			
		||||
```bash
 | 
			
		||||
docker-compose up mapbox-studio
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -22,6 +22,8 @@ services:
 | 
			
		|||
  import-osm:
 | 
			
		||||
    image: "openmaptiles/import-osm"
 | 
			
		||||
    env_file: .env
 | 
			
		||||
    environment:
 | 
			
		||||
      DIFF_MODE: "false"
 | 
			
		||||
    links:
 | 
			
		||||
    - postgres
 | 
			
		||||
    volumes:
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -16,49 +16,28 @@ CREATE OR REPLACE VIEW water_z2 AS (
 | 
			
		|||
    SELECT geom, 'lake' AS class FROM ne_110m_lakes
 | 
			
		||||
);
 | 
			
		||||
 | 
			
		||||
CREATE OR REPLACE VIEW water_z3 AS (
 | 
			
		||||
    SELECT geom, 'ocean' AS class FROM ne_50m_ocean
 | 
			
		||||
    UNION ALL
 | 
			
		||||
    SELECT geom, 'lake' AS class FROM ne_110m_lakes
 | 
			
		||||
    UNION ALL
 | 
			
		||||
    SELECT geom, 'river' AS class FROM ne_110m_rivers_lake_centerlines
 | 
			
		||||
    WHERE featurecla = 'River'
 | 
			
		||||
);
 | 
			
		||||
 | 
			
		||||
CREATE OR REPLACE VIEW water_z4 AS (
 | 
			
		||||
    SELECT geom, 'ocean' AS class FROM ne_50m_ocean
 | 
			
		||||
    UNION ALL
 | 
			
		||||
    SELECT geom, 'lake' AS class FROM ne_50m_lakes
 | 
			
		||||
    UNION ALL
 | 
			
		||||
    SELECT geom, 'river' AS class FROM ne_50m_rivers_lake_centerlines
 | 
			
		||||
    WHERE featurecla = 'River'
 | 
			
		||||
);
 | 
			
		||||
 | 
			
		||||
CREATE OR REPLACE VIEW water_z5 AS (
 | 
			
		||||
    SELECT geom, 'ocean' AS class FROM ne_10m_ocean
 | 
			
		||||
    UNION ALL
 | 
			
		||||
    SELECT geom, 'lake' AS class FROM ne_10m_lakes
 | 
			
		||||
    UNION ALL
 | 
			
		||||
    SELECT geom, 'river' AS class FROM ne_50m_rivers_lake_centerlines
 | 
			
		||||
    WHERE featurecla = 'River'
 | 
			
		||||
);
 | 
			
		||||
 | 
			
		||||
CREATE OR REPLACE VIEW water_z6 AS (
 | 
			
		||||
    SELECT geom, 'ocean' AS class FROM ne_10m_ocean
 | 
			
		||||
    UNION ALL
 | 
			
		||||
    SELECT geom, 'lake' AS class FROM ne_10m_lakes
 | 
			
		||||
    UNION ALL
 | 
			
		||||
    SELECT geom, 'river' AS class FROM ne_10m_rivers_lake_centerlines
 | 
			
		||||
    WHERE featurecla = 'River'
 | 
			
		||||
);
 | 
			
		||||
 | 
			
		||||
CREATE TABLE IF NOT EXISTS water_z7 AS (
 | 
			
		||||
    SELECT geom, 'ocean' AS class FROM ne_10m_ocean
 | 
			
		||||
    UNION ALL
 | 
			
		||||
    SELECT geometry AS geom, 'lake' AS class FROM osm_water_polygon_gen3
 | 
			
		||||
    UNION ALL
 | 
			
		||||
    SELECT geom, 'river' AS class FROM ne_10m_rivers_lake_centerlines
 | 
			
		||||
    WHERE featurecla = 'River'
 | 
			
		||||
);
 | 
			
		||||
CREATE INDEX IF NOT EXISTS water_z7_geom_idx ON water_z7 USING gist(geom);
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -66,57 +45,38 @@ CREATE TABLE IF NOT EXISTS water_z8 AS (
 | 
			
		|||
    SELECT geom, 'ocean' AS class FROM ne_10m_ocean
 | 
			
		||||
    UNION ALL
 | 
			
		||||
    SELECT geometry AS geom, 'lake' AS class FROM osm_water_polygon_gen2
 | 
			
		||||
    UNION ALL
 | 
			
		||||
    SELECT ST_Simplify(geometry, 200) AS geom, waterway AS class FROM osm_water_linestring
 | 
			
		||||
    WHERE waterway IN ('river') AND ST_Length(geometry) > 10000
 | 
			
		||||
);
 | 
			
		||||
CREATE INDEX IF NOT EXISTS water_z8_geom_idx ON water_z8 USING gist(geom);
 | 
			
		||||
 | 
			
		||||
CREATE TABLE IF NOT EXISTS water_z9 AS (
 | 
			
		||||
    SELECT geometry AS geom, 'lake' AS class FROM osm_water_polygon_gen1
 | 
			
		||||
    UNION ALL
 | 
			
		||||
    SELECT ST_Simplify(geometry, 100) AS geom, waterway AS class FROM osm_water_linestring
 | 
			
		||||
    WHERE waterway IN ('river') AND ST_Length(geometry) > 5000
 | 
			
		||||
    SELECT geometry AS geom, 'lake'::text AS class FROM osm_water_polygon_gen1
 | 
			
		||||
);
 | 
			
		||||
CREATE INDEX IF NOT EXISTS water_z9_geom_idx ON water_z9 USING gist(geom);
 | 
			
		||||
 | 
			
		||||
CREATE OR REPLACE VIEW water_z11 AS (
 | 
			
		||||
    SELECT geometry AS geom, 'lake' AS class FROM osm_water_polygon WHERE area > 40000
 | 
			
		||||
    UNION ALL
 | 
			
		||||
    SELECT geometry AS geom, waterway AS class FROM osm_water_linestring
 | 
			
		||||
    WHERE waterway IN ('river') AND ST_Length(geometry) > 5000
 | 
			
		||||
);
 | 
			
		||||
 | 
			
		||||
CREATE OR REPLACE VIEW water_z12 AS (
 | 
			
		||||
    SELECT geometry AS geom, 'lake' AS class FROM osm_water_polygon WHERE area > 10000
 | 
			
		||||
    UNION ALL
 | 
			
		||||
    SELECT geometry AS geom, waterway AS class FROM osm_water_linestring
 | 
			
		||||
    WHERE waterway IN ('river', 'canal') OR (waterway = 'stream' AND ST_Length(geometry) > 1000)
 | 
			
		||||
);
 | 
			
		||||
 | 
			
		||||
CREATE OR REPLACE VIEW water_z13 AS (
 | 
			
		||||
    SELECT geometry AS geom, 'lake' AS class FROM osm_water_polygon WHERE area > 5000
 | 
			
		||||
    UNION ALL
 | 
			
		||||
    SELECT geometry AS geom, waterway AS class FROM osm_water_linestring
 | 
			
		||||
    WHERE waterway IN ('river', 'canal', 'stream', 'drain', 'ditch') AND ST_Length(geometry) > 300
 | 
			
		||||
);
 | 
			
		||||
 | 
			
		||||
CREATE OR REPLACE VIEW water_z14 AS (
 | 
			
		||||
    SELECT geometry AS geom, 'lake' AS class FROM osm_water_polygon
 | 
			
		||||
    UNION ALL
 | 
			
		||||
    SELECT geometry AS geom, waterway AS class FROM osm_water_linestring
 | 
			
		||||
);
 | 
			
		||||
 | 
			
		||||
CREATE OR REPLACE FUNCTION layer_water (bbox geometry, zoom_level int)
 | 
			
		||||
RETURNS TABLE(geom geometry, class text) AS $$
 | 
			
		||||
    SELECT geom, class FROM (
 | 
			
		||||
    SELECT geom, class::text FROM (
 | 
			
		||||
        SELECT * FROM water_z0 WHERE zoom_level = 0
 | 
			
		||||
        UNION ALL
 | 
			
		||||
        SELECT * FROM water_z1 WHERE zoom_level = 1
 | 
			
		||||
        UNION ALL
 | 
			
		||||
        SELECT * FROM water_z2 WHERE zoom_level = 2
 | 
			
		||||
        UNION ALL
 | 
			
		||||
        SELECT * FROM water_z3 WHERE zoom_level = 3
 | 
			
		||||
        SELECT * FROM water_z2 WHERE zoom_level BETWEEN 2 AND 3
 | 
			
		||||
        UNION ALL
 | 
			
		||||
        SELECT * FROM water_z4 WHERE zoom_level = 4
 | 
			
		||||
        UNION ALL
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -0,0 +1,24 @@
 | 
			
		|||
tables:
 | 
			
		||||
  waterway_linestring:
 | 
			
		||||
    type: linestring
 | 
			
		||||
    fields:
 | 
			
		||||
    - name: osm_id
 | 
			
		||||
      type: id
 | 
			
		||||
    - name: geometry
 | 
			
		||||
      type: geometry
 | 
			
		||||
    - name: waterway
 | 
			
		||||
      key: waterway
 | 
			
		||||
      type: string
 | 
			
		||||
    - key: name
 | 
			
		||||
      name: name
 | 
			
		||||
      type: string
 | 
			
		||||
    - name: name_en
 | 
			
		||||
      key: name:en
 | 
			
		||||
      type: string
 | 
			
		||||
    mapping:
 | 
			
		||||
      waterway:
 | 
			
		||||
      - stream
 | 
			
		||||
      - river
 | 
			
		||||
      - canal
 | 
			
		||||
      - drain
 | 
			
		||||
      - ditch
 | 
			
		||||
| 
						 | 
				
			
			@ -0,0 +1,69 @@
 | 
			
		|||
CREATE OR REPLACE VIEW waterway_z3 AS (
 | 
			
		||||
    SELECT geom, 'river' AS class FROM ne_110m_rivers_lake_centerlines
 | 
			
		||||
    WHERE featurecla = 'River'
 | 
			
		||||
);
 | 
			
		||||
 | 
			
		||||
CREATE OR REPLACE VIEW waterway_z4 AS (
 | 
			
		||||
    SELECT geom, 'river' AS class FROM ne_50m_rivers_lake_centerlines
 | 
			
		||||
    WHERE featurecla = 'River'
 | 
			
		||||
);
 | 
			
		||||
 | 
			
		||||
CREATE OR REPLACE VIEW waterway_z6 AS (
 | 
			
		||||
    SELECT geom, 'river' AS class FROM ne_10m_rivers_lake_centerlines
 | 
			
		||||
    WHERE featurecla = 'River'
 | 
			
		||||
);
 | 
			
		||||
 | 
			
		||||
CREATE TABLE IF NOT EXISTS waterway_z8 AS (
 | 
			
		||||
    SELECT ST_Simplify(geometry, 200) AS geom, waterway AS class FROM osm_waterway_linestring
 | 
			
		||||
    WHERE waterway IN ('river') AND ST_Length(geometry) > 10000
 | 
			
		||||
);
 | 
			
		||||
CREATE INDEX IF NOT EXISTS waterway_z8_geom_idx ON waterway_z8 USING gist(geom);
 | 
			
		||||
 | 
			
		||||
CREATE TABLE IF NOT EXISTS waterway_z9 AS (
 | 
			
		||||
    SELECT ST_Simplify(geometry, 100) AS geom, waterway AS class FROM osm_waterway_linestring
 | 
			
		||||
    WHERE waterway IN ('river') AND ST_Length(geometry) > 5000
 | 
			
		||||
);
 | 
			
		||||
CREATE INDEX IF NOT EXISTS waterway_z9_geom_idx ON waterway_z9 USING gist(geom);
 | 
			
		||||
 | 
			
		||||
CREATE OR REPLACE VIEW waterway_z11 AS (
 | 
			
		||||
    SELECT geometry AS geom, waterway AS class FROM osm_waterway_linestring
 | 
			
		||||
    WHERE waterway IN ('river') AND ST_Length(geometry) > 5000
 | 
			
		||||
);
 | 
			
		||||
 | 
			
		||||
CREATE OR REPLACE VIEW waterway_z12 AS (
 | 
			
		||||
    SELECT geometry AS geom, waterway AS class FROM osm_waterway_linestring
 | 
			
		||||
    WHERE waterway IN ('river', 'canal') OR (waterway = 'stream' AND ST_Length(geometry) > 1000)
 | 
			
		||||
);
 | 
			
		||||
 | 
			
		||||
CREATE OR REPLACE VIEW waterway_z13 AS (
 | 
			
		||||
    SELECT geometry AS geom, waterway AS class FROM osm_waterway_linestring
 | 
			
		||||
    WHERE waterway IN ('river', 'canal', 'stream', 'drain', 'ditch') AND ST_Length(geometry) > 300
 | 
			
		||||
);
 | 
			
		||||
 | 
			
		||||
CREATE OR REPLACE VIEW waterway_z14 AS (
 | 
			
		||||
    SELECT geometry AS geom, waterway AS class FROM osm_waterway_linestring
 | 
			
		||||
);
 | 
			
		||||
 | 
			
		||||
CREATE OR REPLACE FUNCTION layer_waterway(bbox geometry, zoom_level int)
 | 
			
		||||
RETURNS TABLE(geom geometry, waterway text) AS $$
 | 
			
		||||
    SELECT geom, class FROM (
 | 
			
		||||
        SELECT * FROM waterway_z3 WHERE zoom_level = 3
 | 
			
		||||
        UNION ALL
 | 
			
		||||
        SELECT * FROM waterway_z4 WHERE zoom_level BETWEEN 4 AND 5
 | 
			
		||||
        UNION ALL
 | 
			
		||||
        SELECT * FROM waterway_z6 WHERE zoom_level BETWEEN 6 AND 7
 | 
			
		||||
        UNION ALL
 | 
			
		||||
        SELECT * FROM waterway_z8 WHERE zoom_level = 8
 | 
			
		||||
        UNION ALL
 | 
			
		||||
        SELECT * FROM waterway_z9 WHERE zoom_level BETWEEN 9 AND 10
 | 
			
		||||
        UNION ALL
 | 
			
		||||
        SELECT * FROM waterway_z11 WHERE zoom_level = 11
 | 
			
		||||
        UNION ALL
 | 
			
		||||
        SELECT * FROM waterway_z12 WHERE zoom_level = 12
 | 
			
		||||
        UNION ALL
 | 
			
		||||
        SELECT * FROM waterway_z13 WHERE zoom_level = 13
 | 
			
		||||
        UNION ALL
 | 
			
		||||
        SELECT * FROM waterway_z14 WHERE zoom_level >= 14
 | 
			
		||||
    ) AS zoom_levels
 | 
			
		||||
    WHERE geom && bbox;
 | 
			
		||||
$$ LANGUAGE SQL IMMUTABLE;
 | 
			
		||||
| 
						 | 
				
			
			@ -0,0 +1,12 @@
 | 
			
		|||
layer:
 | 
			
		||||
  id: "waterway"
 | 
			
		||||
  description: |
 | 
			
		||||
      OpenStreetMap waterways.
 | 
			
		||||
  buffer_size: 4
 | 
			
		||||
  datasource:
 | 
			
		||||
    query: (SELECT * FROM layer_waterway(!bbox!, z(!scale_denominator!))) AS t
 | 
			
		||||
schema:
 | 
			
		||||
  - ./waterway.sql
 | 
			
		||||
datasources:
 | 
			
		||||
  - type: imposm3
 | 
			
		||||
    mapping_file: ./mapping.yaml
 | 
			
		||||
| 
						 | 
				
			
			@ -10,6 +10,7 @@ tileset:
 | 
			
		|||
      #- layers/rail/rail.yaml
 | 
			
		||||
    - layers/urban/urban.yaml
 | 
			
		||||
    - layers/water/water.yaml
 | 
			
		||||
    - layers/waterway/waterway.yaml
 | 
			
		||||
    - layers/landcover/landcover.yaml
 | 
			
		||||
  name: OpenMapTiles v1.0
 | 
			
		||||
  description: "A tileset showcasing all layers in OpenMapTiles. http://openmaptiles.org"
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Ładowanie…
	
		Reference in New Issue