|
29 | 29 |
|
30 | 30 | public class Basemap extends ForwardingProfile {
|
31 | 31 |
|
32 |
| - public Basemap(NaturalEarthDb naturalEarthDb, QrankDb qrankDb, CountryCoder countryCoder, Clip clip) { |
33 |
| - |
34 |
| - var admin = new Boundaries(); |
35 |
| - registerHandler(admin); |
36 |
| - registerSourceHandler("osm", admin::processOsm); |
37 |
| - registerSourceHandler("ne", admin::processNe); |
| 32 | + public Basemap(NaturalEarthDb naturalEarthDb, QrankDb qrankDb, CountryCoder countryCoder, Clip clip, |
| 33 | + String layer) { |
| 34 | + |
| 35 | + if (layer.isEmpty() || layer.equals(Boundaries.LAYER_NAME)) { |
| 36 | + var admin = new Boundaries(); |
| 37 | + registerHandler(admin); |
| 38 | + registerSourceHandler("osm", admin::processOsm); |
| 39 | + registerSourceHandler("ne", admin::processNe); |
| 40 | + } |
38 | 41 |
|
39 |
| - var buildings = new Buildings(); |
40 |
| - registerHandler(buildings); |
41 |
| - registerSourceHandler("osm", buildings::processOsm); |
| 42 | + if (layer.isEmpty() || layer.equals(Buildings.LAYER_NAME)) { |
| 43 | + var buildings = new Buildings(); |
| 44 | + registerHandler(buildings); |
| 45 | + registerSourceHandler("osm", buildings::processOsm); |
| 46 | + } |
42 | 47 |
|
43 |
| - var landuse = new Landuse(); |
44 |
| - registerHandler(landuse); |
45 |
| - registerSourceHandler("osm", landuse::processOsm); |
| 48 | + if (layer.isEmpty() || layer.equals(Landuse.LAYER_NAME)) { |
| 49 | + var landuse = new Landuse(); |
| 50 | + registerHandler(landuse); |
| 51 | + registerSourceHandler("osm", landuse::processOsm); |
| 52 | + } |
46 | 53 |
|
47 |
| - var landcover = new Landcover(); |
48 |
| - registerHandler(landcover); |
49 |
| - registerSourceHandler("landcover", landcover::processLandcover); |
| 54 | + if (layer.isEmpty() || layer.equals(Landcover.LAYER_NAME)) { |
| 55 | + var landcover = new Landcover(); |
| 56 | + registerHandler(landcover); |
| 57 | + registerSourceHandler("landcover", landcover::processLandcover); |
| 58 | + } |
50 | 59 |
|
51 |
| - var place = new Places(naturalEarthDb); |
52 |
| - registerHandler(place); |
53 |
| - registerSourceHandler("osm", place::processOsm); |
| 60 | + if (layer.isEmpty() || layer.equals(Places.LAYER_NAME)) { |
| 61 | + var place = new Places(naturalEarthDb); |
| 62 | + registerHandler(place); |
| 63 | + registerSourceHandler("osm", place::processOsm); |
| 64 | + } |
54 | 65 |
|
55 |
| - var poi = new Pois(qrankDb); |
56 |
| - registerHandler(poi); |
57 |
| - registerSourceHandler("osm", poi::processOsm); |
| 66 | + if (layer.isEmpty() || layer.equals(Pois.LAYER_NAME)) { |
| 67 | + var poi = new Pois(qrankDb); |
| 68 | + registerHandler(poi); |
| 69 | + registerSourceHandler("osm", poi::processOsm); |
| 70 | + } |
58 | 71 |
|
59 |
| - var roads = new Roads(countryCoder); |
60 |
| - registerHandler(roads); |
61 |
| - registerSourceHandler("osm", roads::processOsm); |
| 72 | + if (layer.isEmpty() || layer.equals(Roads.LAYER_NAME)) { |
| 73 | + var roads = new Roads(countryCoder); |
| 74 | + registerHandler(roads); |
| 75 | + registerSourceHandler("osm", roads::processOsm); |
| 76 | + } |
62 | 77 |
|
63 |
| - var transit = new Transit(); |
64 |
| - registerHandler(transit); |
65 |
| - registerSourceHandler("osm", transit::processOsm); |
| 78 | + if (layer.isEmpty() || layer.equals(Transit.LAYER_NAME)) { |
| 79 | + var transit = new Transit(); |
| 80 | + registerHandler(transit); |
| 81 | + registerSourceHandler("osm", transit::processOsm); |
| 82 | + } |
66 | 83 |
|
67 |
| - var water = new Water(); |
68 |
| - registerHandler(water); |
69 |
| - registerSourceHandler("osm", water::processOsm); |
70 |
| - registerSourceHandler("osm_water", water::processPreparedOsm); |
71 |
| - registerSourceHandler("ne", water::processNe); |
| 84 | + if (layer.isEmpty() || layer.equals(Water.LAYER_NAME)) { |
| 85 | + var water = new Water(); |
| 86 | + registerHandler(water); |
| 87 | + registerSourceHandler("osm", water::processOsm); |
| 88 | + registerSourceHandler("osm_water", water::processPreparedOsm); |
| 89 | + registerSourceHandler("ne", water::processNe); |
| 90 | + } |
72 | 91 |
|
73 |
| - var earth = new Earth(); |
74 |
| - registerHandler(earth); |
| 92 | + if (layer.isEmpty() || layer.equals(Earth.LAYER_NAME)) { |
| 93 | + var earth = new Earth(); |
| 94 | + registerHandler(earth); |
75 | 95 |
|
76 |
| - registerSourceHandler("osm", earth::processOsm); |
77 |
| - registerSourceHandler("osm_land", earth::processPreparedOsm); |
78 |
| - registerSourceHandler("ne", earth::processNe); |
| 96 | + registerSourceHandler("osm", earth::processOsm); |
| 97 | + registerSourceHandler("osm_land", earth::processPreparedOsm); |
| 98 | + registerSourceHandler("ne", earth::processNe); |
| 99 | + } |
79 | 100 |
|
80 | 101 | if (clip != null) {
|
81 | 102 | registerHandler(clip);
|
@@ -173,9 +194,30 @@ static void run(Arguments args) throws IOException {
|
173 | 194 | Paths.get(clipArg));
|
174 | 195 | }
|
175 | 196 |
|
| 197 | + List<String> availableLayers = List.of( |
| 198 | + Boundaries.LAYER_NAME, |
| 199 | + Buildings.LAYER_NAME, |
| 200 | + Landuse.LAYER_NAME, |
| 201 | + Landcover.LAYER_NAME, |
| 202 | + Places.LAYER_NAME, |
| 203 | + Pois.LAYER_NAME, |
| 204 | + Roads.LAYER_NAME, |
| 205 | + Transit.LAYER_NAME, |
| 206 | + Water.LAYER_NAME, |
| 207 | + Earth.LAYER_NAME |
| 208 | + ); |
| 209 | + |
| 210 | + String layer = args.getString("layer", |
| 211 | + "Process only a single layer. Possible values are: " + String.join(", ", availableLayers), ""); |
| 212 | + if (!(layer.isEmpty() || availableLayers.contains(layer))) { |
| 213 | + System.err.println("Error: --layer=" + layer + " is not a valid option. Possible values are: " + |
| 214 | + String.join(", ", availableLayers)); |
| 215 | + System.exit(1); |
| 216 | + } |
| 217 | + |
176 | 218 | fontRegistry.loadFontBundle("NotoSansDevanagari-Regular", "1", "Devanagari");
|
177 | 219 |
|
178 |
| - planetiler.setProfile(new Basemap(naturalEarthDb, qrankDb, countryCoder, clip)) |
| 220 | + planetiler.setProfile(new Basemap(naturalEarthDb, qrankDb, countryCoder, clip, layer)) |
179 | 221 | .setOutput(Path.of(area + ".pmtiles"))
|
180 | 222 | .run();
|
181 | 223 | }
|
|
0 commit comments