onthegomap/planetiler

Configurable schema followups

Opened this issue · 2 comments

Master ticket to track followup tasks for #160 and #323:

expose planetiler functionality:

  • #349
  • #350
  • #351
  • #348
  • Allow custom inputs (match_key/match_value/or an expression) as input to a match expression
  • Ensure attribute min size working as intended
  • #347

yaml config flexibility/ease of use:

  • #352
  • #353
  • Expose all parsing functions to CEL/type coercions (wayzorder, round_int, long, double, bool, bool_int, directions, meters)
  • Let configs use CEL expressions (almost) everywhere
  • Let configs reference other files so we can break up schema/test logic
  • Handle --only-layers and --include-layers arguments and limit the sources we process to only ones needed by those layers
  • Let attributes reference the value of other attributes or temporary vars to avoid repeating logic
  • Let features perform more complex manipulation on input feature geometries
  • Clean-up include_when/exclude_when (use require/reject filters like imposm3 or maplibre layer filter?
  • Keep track of parsing context for better error messages
  • Regex matching for structured boolean expressions
  • More forgiving CEL expressions (automatic coercion, null chaining, ...)
  • Pretty-print symmetric diff from validation failures
  • Try to avoid collisions more with automatic download file names
  • #233
  • #179

code cleanup

  • Verify configurable schemas work from CI
  • Format YAML in addition to java files with prettier
  • Run json schema validation in java
  • Rename Expression to BooleanExpression and MultiExpression to MatchExpression
  • Move TagValueProducer data types to an enum

It is nice to have type hints when writing config. Maybe we could use something like https://github.com/aws/jsii to generate the yamls from typed languages like TypeScript?

It is nice to have type hints when writing config. Maybe we could use something like https://github.com/aws/jsii to generate the yamls from typed languages like TypeScript?

I added json-schema definitions in #323 - you can use them in vscode by installing the YAML plugin then starting off a yaml file with:

# yaml-language-server: $schema=https://raw.githubusercontent.com/onthegomap/planetiler/main/planetiler-custommap/planetiler.schema.json