Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Indexed vector sources #1377

Closed
wants to merge 28 commits into from
Closed

Conversation

tmcw
Copy link
Contributor

@tmcw tmcw commented Jul 19, 2015

Style, context, polish

  • @chelm is there any git history for the initial development on this branch?
  • demo/mapbox-gl-dev.js and demo/streets-mobile.json probably shouldn't be checked in
  • esri- files follow a dashed naming convention that diverges from the underscored naming convention of the rest of the lib
  • esri- code needs JSDoc strings like the rest of the lib
  • esri-tile-pyramid differs more in functionality than proprietariness to the TilePyramid code, and it is exposed via GL styles as indexedVector: should it be titled IndexedTilePyramid instead?
  • The new tile pyramid contains a lot of code verbatim from the existing one: parts in common should be unified by inheritance or modularization.

indexedVector tech

  • Are there any benchmarks or tests that have informed your decision to have an indexed tile pyramid? I can imagine there being a performance benefit, but would prefer concrete numbers to point to. Also, is the avoidance of 404s currently commented-out?

merge blockers


High-level there are three outcomes:

  1. indexedVector is a performance optimization. If it can't be confirmed as an improvement, then we may not accept it.
  2. If indexedVector's performance wins are clear-cut then it's possible we'll accept it as a default and integrate it into v8 rather than having two ways to load vector tiles
  3. For routes in the middle, we'll help get this branch landed

/cc @chelm @jcardonadcdev @ycabon


module.exports = TilePyramid;

function TilePyramid(options) {
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This and the rest of the new functionality needs JSDoc documentation information to match the rest of mapbox-gl-js.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Could this be re-titled IndexedTilePyramid to match its difference in functionality?

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I've removed the concept of "indexedVector" for now, and all new files (esri-*) and datasources that were originally in this branch/PR are gone. In its place I've modified 5 files (in each very subtly). Will call each change out separately below.

@chelm
Copy link

chelm commented Jul 20, 2015

@tmcw Thanks for starting this. The intention of checking the original code in (all the esri-* files) was to have a temp reference to how the original code was changed. I'll remove it since what I've done here is actually remove the concept of an "indexedVector" and have changed the behavior of the existing "vector" data sources.

I'll explain the changes better with line notes, and will sync the PR to remove unneeded cruft.

@@ -32,7 +33,22 @@ exports._loadTileJSON = function(options) {
redoPlacement: this._redoTilePlacement ? this._redoTilePlacement.bind(this) : undefined
});

this.fire('load');
// if index is defined, fetch the index json, then extend the pyramid
if (tileJSON.index) {
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is the entry point for the difference in behavior. If an index exists (as a url) on the data source "tileJSON" the index gets requested. The returned index is added to the tile pyramid.

@chelm
Copy link

chelm commented Jul 28, 2015

Just to comment on the status here: The team inside Esri is focusing on cooking up some benchmarks on using a tile index across our stack. This will help us understand the impact of the index on tile generation (less tiles) and the impact at render time (data clipping vs requesting/rendering very small tiles). It may be some time still, but everyone is eager to keep this moving forward.

@ycabon ycabon force-pushed the indexed-vector-sources branch from 56bb519 to 8140de4 Compare October 5, 2015 23:09
@odoe
Copy link

odoe commented Oct 13, 2015

Here is a gist that discusses the concept of the Indexing of Vector Tiles and the justification for Clipping.

https://gist.github.com/odoe/ce6a150658526901ef27#file-vector-tile-pr-md

cc @tmcw @ycabon @jcardonadcdev

@ycabon
Copy link

ycabon commented Oct 13, 2015

related PR mapbox/vector-tile-js#37

@jcardonadcdev
Copy link

Tests used to compare processing times for indexed tile vs. non-indexed tile - https://github.com/jcardonadcdev/vt-performance-tests

@tmcw
Copy link
Contributor Author

tmcw commented Aug 15, 2016

The Esri side of this fork hasn't been updated since November 2015, and Mapbox GL JS has changed massively since then. It doesn't look like there are any active branches on the Esri project anymore.

Happy to take a look at an updated branch that resolves some of the initial issues outlined in this PR! Closing this specific PR as stale.

@tmcw tmcw closed this Aug 15, 2016
@chelm
Copy link

chelm commented Aug 15, 2016

😞

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

8 participants