OpenMapTiles v3.14 does not include the power
tag. This gist shows how to add it in a new layer with planetiler.
Fork OpenMapTiles, create a power
branch, add the following (see https://github.com/wipfli/openmaptiles/commit/88eae3f48dcf46588f24adc499bad0d725ecb7e7):
Add layers/power/mapping.yaml
:
generalized_tables:
# etldoc: osm_power_linestring_gen_z11 -> osm_power_linestring_gen_z10
power_linestring_gen_z10:
source: power_linestring_gen_z11
tolerance: ZRES11
# etldoc: osm_power_linestring_gen_z12 -> osm_power_linestring_gen_z11
power_linestring_gen_z11:
source: power_linestring_gen_z12
tolerance: ZRES12
# etldoc: osm_power_linestring -> osm_power_linestring_gen_z12
power_linestring_gen_z12:
source: power_linestring
sql_filter: ST_IsValid(geometry)
tolerance: ZRES13
power_field: &power
key: power
name: power
type: string
tables:
# etldoc: imposm3 -> osm_power_linestring
power_linestring:
type: linestring
columns:
- name: osm_id
type: id
- name: geometry
type: geometry
- name: power
key: power
type: string
mapping:
power:
- line
- minor_line
Add layers/power/power.yaml
:
layer:
id: "power"
description: |
Power lines [power](http://wiki.openstreetmap.org/wiki/power).
buffer_size: 4
fields:
power:
description: |
The original value of [`power`](http://wiki.openstreetmap.org/wiki/Key:power) tag
values:
- line
- minor_line
datasource:
geometry_field: geometry
query: (SELECT geometry, power FROM layer_power(!bbox!, z(!scale_denominator!))) AS t
schema:
- ./power.sql
datasources:
- type: imposm3
mapping_file: ./mapping.yaml
Add to openmaptiles.yaml
:
- layers/aeroway/aeroway.yaml
+ - layers/power/power.yaml
- layers/transportation/transportation.yaml
Fork planetiler.
Point the automatic java code generation to your OpenMapTiles fork (see https://github.com/wipfli/planetiler/commit/14f16fa5536c8a6e88f32f2b068cc247be54c3b8).
Edit in planetiler-basemap/src/main/java/com/onthegomap/planetiler/basemap/Generate.java
:
- String base = "https://raw.githubusercontent.com/openmaptiles/openmaptiles/" + tag + "/";
+ String base = "https://raw.githubusercontent.com/wipfli/openmaptiles/power/";
Regenerate the OpenMapTiles java code from your updated OpenMapTiles yaml files:
scripts/regenerate-openmaptiles.sh
Add planetiler-basemap/src/main/java/com/onthegomap/planetiler/basemap/layers/Power.java
:
package com.onthegomap.planetiler.basemap.layers;
import com.onthegomap.planetiler.FeatureCollector;
import com.onthegomap.planetiler.basemap.generated.OpenMapTilesSchema;
import com.onthegomap.planetiler.basemap.generated.Tables;
import com.onthegomap.planetiler.config.PlanetilerConfig;
import com.onthegomap.planetiler.stats.Stats;
import com.onthegomap.planetiler.util.Translations;
public class Power implements
OpenMapTilesSchema.Power,
Tables.OsmPowerLinestring.Handler {
public Power(Translations translations, PlanetilerConfig config, Stats stats) {}
@Override
public void process(Tables.OsmPowerLinestring element, FeatureCollector features) {
features.line(LAYER_NAME)
.setMinZoom(10)
.setAttr(Fields.POWER, element.power());
}
}
Compile planetier:
./mvnm clean package
Run planetiler:
java -jar planetiler-dist/target/*with-deps.jar --force=true --area=switzerland
Inspect tiles:
sudo docker run --rm -it -v "$(pwd)/data":/data -p 8080:8080 maptiler/tileserver-gl -p 8080