Git Product home page Git Product logo

tilelive-decorator's People

Contributors

defvol avatar mourner avatar tcql avatar tmcw avatar willwhite avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

tilelive-decorator's Issues

New property options

I think it's time we look at the requiredKeys / keepKeys and requiredKeysRedis / keepKeysRedis options and consider what effects we actually want to achieve by filtering and selecting data.

I'm mentally breaking down decoration processing into 3 stages:

  • source - the tile's property data
  • redis - the data we want to decorate onto the tile
  • output - the tile's properties post decoration

We can think of our two levers as filtering (via required keys) and selecting (via keep keys) for each stage. Here's a layout of the levers in each stage and what I think they let us do:

source:

  • required - allows us to filter out features that don't meet minimum criteria before we ever query redis. This has a potential for big performance savings when there's very mixed data in the tile.
  • keep - ​allows us to specify which properties to keep on the tile before applying decoration data. Possibly useful.

redis:

  • required - allows us to throw out records from decorate data that don't meet minimum requirements. Definitely useful.
  • keep - allows us to simplify data to be decorated onto tiles. Could be a performance boost when we only want a couple of properties to be applied from a heavy dataset. Possibly useful.

output:

  • required - allows us to specify that data must exist on the tile, regardless of where it came from earlier in the process.
  • keep - allow us to specify exactly what we expect output properties on the tile to look like.

Join lines that share specified properties

Features with the same properties within a tile should be joined to avoid the overhead of having distinct geometries. Ideally this is exposed as an option that is passed to the decorator.

For example: { linejoin: true, linejoinUniqueBy: [ 'speedClass', 'FRC' ] }

@mourner - Can you grab this?

cc @yhahn

All numbers are encoded as floats

All number values are encoded as floats. This has two consequences:

  • integers are not efficiently packed using varint, leading to bulkier size
  • bigger integers loose precision when packed as 32-bit floats

Instead integers should be encoded as either uint or sint depending on sign.

cc @aaronlidman

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.