All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.onthegomap.planetiler.validator.SchemaSpecification Maven / Gradle / Ivy

package com.onthegomap.planetiler.validator;

import static com.onthegomap.planetiler.config.PlanetilerConfig.MAX_MAXZOOM;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.onthegomap.planetiler.geo.GeometryType;
import com.onthegomap.planetiler.util.YAML;
import java.nio.file.Path;
import java.util.List;
import java.util.Map;

/**
 * A model of example input source features and expected output vector tile features that a schema should produce.
 * 

* Executed by a subclass of {@link BaseSchemaValidator}. */ @JsonIgnoreProperties(ignoreUnknown = true) public record SchemaSpecification(List examples) { public static SchemaSpecification load(Path path) { return YAML.load(path, SchemaSpecification.class); } public static SchemaSpecification load(String string) { return YAML.load(string, SchemaSpecification.class); } /** An individual test case */ public record Example( String name, InputFeature input, @JsonFormat(with = JsonFormat.Feature.ACCEPT_SINGLE_VALUE_AS_ARRAY) List output ) { @Override public List output() { return output == null ? List.of() : output; } } /** Description of an input feature from a source that the schema will process. */ public record InputFeature( String source, String geometry, Map tags ) { @Override public Map tags() { return tags == null ? Map.of() : tags; } } /** Description of an expected vector tile feature that the schema should produce. */ public record OutputFeature( String layer, GeometryType geometry, @JsonProperty("min_zoom") Integer minZoom, @JsonProperty("max_zoom") Integer maxZoom, @JsonProperty("min_size") Double minSize, @JsonProperty("at_zoom") Integer atZoom, @JsonProperty("allow_extra_tags") Boolean allowExtraTags, @JsonProperty("tags") Map tags ) { @Override public Map tags() { return tags == null ? Map.of() : tags; } @Override public Boolean allowExtraTags() { return allowExtraTags == null || allowExtraTags; } @Override public Integer atZoom() { return atZoom == null ? MAX_MAXZOOM : atZoom; } } }





© 2015 - 2025 Weber Informatics LLC | Privacy Policy