Mike Barry 2023-12-14 07:07:27 -05:00
rodzic c5fb5e30bf
commit e2e8b1adfa
2 zmienionych plików z 9 dodań i 3 usunięć

Wyświetl plik

@ -81,7 +81,7 @@ public class VectorTile {
private static final int EXTENT = 4096;
private static final double SIZE = 256d;
private final Map<String, Layer> layers = new LinkedHashMap<>();
private LayerAttrStats.Updater.ForZoom layerStatsTracker = LayerAttrStats.Updater.ForZoom.NO_OP;
private LayerAttrStats.Updater.ForZoom layerStatsTracker = LayerAttrStats.Updater.ForZoom.NOOP;
private static int[] getCommands(Geometry input, int scale) {
var encoder = new CommandEncoder(scale);
@ -599,6 +599,11 @@ public class VectorTile {
return layers.values().stream().allMatch(v -> v.encodedFeatures.isEmpty()) || containsOnlyFillsOrEdges();
}
/**
* Call back to {@code layerStats} as vector tile features are being encoded in
* {@link #addLayerFeatures(String, List)} to track attribute types present on features in each layer, for example to
* emit in tilejson metadata stats.
*/
public void trackLayerStats(LayerAttrStats.Updater.ForZoom layerStats) {
this.layerStatsTracker = layerStats;
}

Wyświetl plik

@ -61,6 +61,7 @@ public class LayerAttrStats {
.toList();
}
/** Shortcut for tests */
void accept(String layer, int zoom, String key, Object value) {
handlerForThread().forZoom(zoom).forLayer(layer).accept(key, value);
}
@ -160,7 +161,7 @@ public class LayerAttrStats {
interface ForZoom {
ForZoom NO_OP = layer -> (key, value) -> {
ForZoom NOOP = layer -> (key, value) -> {
};
ForLayer forLayer(String layer);
@ -171,7 +172,7 @@ public class LayerAttrStats {
}
}
public static class StatsForLayer {
private static class StatsForLayer {
private final String layer;
private final Map<String, FieldType> fields = new HashMap<>();