Skip to content

Commit bd07d83

Browse files
committed
add daylight landcover to tileset [#154]
* Use geopackage mirror of daylight dataset from https://daylightmap.org/2023/10/11/landcover.html * remap daylight classes to tilezen-like kinds
1 parent 4329cfb commit bd07d83

File tree

2 files changed

+47
-1
lines changed

2 files changed

+47
-1
lines changed

tiles/src/main/java/com/protomaps/basemap/Basemap.java

+7-1
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
import com.protomaps.basemap.layers.Buildings;
1010
import com.protomaps.basemap.layers.Earth;
1111
import com.protomaps.basemap.layers.Landuse;
12+
import com.protomaps.basemap.layers.Landcover;
1213
import com.protomaps.basemap.layers.Natural;
1314
import com.protomaps.basemap.layers.PhysicalLine;
1415
import com.protomaps.basemap.layers.PhysicalPoint;
@@ -37,6 +38,10 @@ public Basemap(NaturalEarthDb naturalEarthDb, QrankDb qrankDb) {
3738
registerHandler(landuse);
3839
registerSourceHandler("osm", landuse);
3940

41+
var landcover = new Landcover();
42+
registerHandler(landcover);
43+
registerSourceHandler("landcover", landcover::processLandcover);
44+
4045
var natural = new Natural();
4146
registerHandler(natural);
4247
registerSourceHandler("osm", natural);
@@ -127,7 +132,8 @@ static void run(Arguments args) throws Exception {
127132
.addShapefileSource("osm_water", sourcesDir.resolve("water-polygons-split-3857.zip"),
128133
"https://osmdata.openstreetmap.de/download/water-polygons-split-3857.zip")
129134
.addShapefileSource("osm_land", sourcesDir.resolve("land-polygons-split-3857.zip"),
130-
"https://osmdata.openstreetmap.de/download/land-polygons-split-3857.zip");
135+
"https://osmdata.openstreetmap.de/download/land-polygons-split-3857.zip")
136+
.addGeoPackageSource("landcover", sourcesDir.resolve("daylight-landcover.gpkg"), "https://r2-public.protomaps.com/datasets/daylight-landcover.gpkg");
131137

132138
// Downloader.create(planetiler.config()).add("ne", neUrl, nePath)
133139
// .add("qrank", "https://qrank.wmcloud.org/download/qrank.csv.gz", sourcesDir.resolve("qrank.csv.gz")).run();
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
package com.protomaps.basemap.layers;
2+
3+
import com.onthegomap.planetiler.FeatureCollector;
4+
import com.onthegomap.planetiler.ForwardingProfile;
5+
import com.onthegomap.planetiler.VectorTile;
6+
import com.onthegomap.planetiler.geo.GeometryException;
7+
import com.onthegomap.planetiler.reader.SourceFeature;
8+
import com.protomaps.basemap.feature.FeatureId;
9+
10+
import java.util.List;
11+
12+
public class Landcover implements ForwardingProfile.FeaturePostProcessor {
13+
14+
public void processLandcover(SourceFeature sf, FeatureCollector features) {
15+
String kind = sf.getString("class");
16+
if (kind.equals("urban")) kind = "urban_area";
17+
if (kind.equals("crop")) kind = "farmland";
18+
if (kind.equals("grass")) kind = "grassland";
19+
if (kind.equals("trees")) kind = "forest";
20+
if (kind.equals("snow")) kind = "glacier";
21+
if (kind.equals("shrub")) kind = "scrub";
22+
// barren is passed through
23+
24+
features.polygon(this.name())
25+
.setId(FeatureId.create(sf))
26+
.setAttr("pmap:kind", kind)
27+
.setZoomRange(0, 7)
28+
.setMinPixelSize(0.0);
29+
}
30+
31+
@Override
32+
public String name() {
33+
return "landcover";
34+
}
35+
36+
@Override
37+
public List<VectorTile.Feature> postProcess(int zoom, List<VectorTile.Feature> items) throws GeometryException {
38+
return items;
39+
}
40+
}

0 commit comments

Comments
 (0)