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

Client-side vector support #4633

Closed
19 of 24 tasks
nf-s opened this issue Aug 13, 2020 · 7 comments
Closed
19 of 24 tasks

Client-side vector support #4633

nf-s opened this issue Aug 13, 2020 · 7 comments

Comments

@nf-s
Copy link
Contributor

nf-s commented Aug 13, 2020

Terria/Cesium's client-side vector support is not ideal.

Why

  • Lots of features / highly complex features will crash the browser
  • In a lot of cases WMS for vector datasets use more bandwidth, are slow and ugly.
    • And we may be able to eliminate Geoserver from a few deployments
  • Render place names/roads on top of raster layers (in a nice way)
  • 3D/Rotation support for text/labels
  • Having features client-side means we can do interactive styling/filtering, and also "analytics"
  • Vector tiles are beautiful (I mean seriously):

What we need:

  • - Mvt support for all geometry types
  • - use geojson-vt for large geojson layers
  • - property-based styling (something like mapbox style/expressions)

What would be nice:

  • - zipped file support
  • - Shapefile support
  • - Vector features rendered as nicely as mapbox gl (not quite as nice, but good enough for the moment)
  • Deckgl style data vis layers - https://deck.gl/examples/screen-grid-layer/

Example use cases:

  • - 100MB of geojson
  • - Road network vector tile layer
  • - Style road network by attribute (eg speed)
  • - Place names vector tile layer
  • - Show 500,000 2D points
  • - Style points by attribute
  • - Cluster points by zoom level
  • - Animated (time-series) 50,000 points
  • - MVT basemap?

Related issues:

Related PRs:

@KeyboardSounds
Copy link
Contributor

KeyboardSounds commented Aug 13, 2020

I think the easiest way to implement this is to convert things into 3dtiles' vector tiles format on the fly in the browser if we can. That way, we take advantage of Cesium's existing rendering code rather than having to write our own.

Oh, but a little birdy told me that the 3d tiles vector format is going to change in the next few months, so we should wait for that.

@nf-s nf-s added the Version 8 formerly MobX label Aug 13, 2020
@KeyboardSounds
Copy link
Contributor

This: CesiumGS/cesium#9102 might also improve vector performance a bit.

@nf-s
Copy link
Contributor Author

nf-s commented Nov 25, 2020

Potential ways forward:

get geojson-vt converting geojson to mvt on the fly, then improve mvt support by either:

  • improve mvtImageryProvider:
    • Add line/point support
    • Add basic styling - like continuous colour scale
  • Look into loaders/deck.gl mvt renderer:
    • Shove it into an imagery provider
    • Get everything for free (+ support for other deck.gl layers)
  • Look into Cesium's vector tiles and write a converter

my vote is on trying loaders/deck.gl - it is quite a small dependency - and if it works we'd get a heap of other good stuff

@KeyboardSounds
Copy link
Contributor

Related: #5513

@nf-s
Copy link
Contributor Author

nf-s commented Sep 22, 2021

#5736 has been merged - this adds MVT support through protomapsjs

@nf-s nf-s removed their assignment Sep 23, 2021
@AnaBelgun
Copy link
Member

TODO next:

  • dynamic styling - @nf-s to write ticket / connect to this

@nf-s
Copy link
Contributor Author

nf-s commented Mar 2, 2022

I'm going to close this for the moment, majority of tasks have been completed

@nf-s nf-s closed this as completed Mar 2, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

3 participants