WebGL2 powered geospatial visualization layers

Overview

version build downloads Coverage Status

deck.gl | Website

WebGL2-powered, highly performant large-scale data visualization

docs

deck.gl is designed to simplify high-performance, WebGL-based visualization of large data sets. Users can quickly get impressive visual results with minimal effort by composing existing layers, or leverage deck.gl's extensible architecture to address custom needs.

deck.gl maps data (usually an array of JSON objects) into a stack of visual layers - e.g. icons, polygons, texts; and look at them with views: e.g. map, first-person, orthographic.

deck.gl handles a number of challenges out of the box:

  • Performant rendering and updating of large data sets
  • Interactive event handling such as picking, highlighting and filtering
  • Cartographic projections and integration with major basemap providers
  • A catalog of proven, well-tested layers

Deck.gl is designed to be highly customizable. All layers come with flexible APIs to allow programmatic control of each aspect of the rendering. All core classes such are easily extendable by the users to address custom use cases.

Flavors

Script Tag

<script src="https://unpkg.com/deck.gl@latest/dist.min.js"></script>

NPM Module

npm install deck.gl

Pure JS

React

Python

pip install pydeck

Third-Party Bindings

Learning Resources

Contributing

deck.gl is part of vis.gl, a Urban Computing Foundation project. Read the contribution guidelines if you are intrested in contributing.

Attributions

Data sources

Data sources are listed in each example.

The deck.gl project is supported by

BrowserStack
Comments
  • Interleaving DeckGL layers with a base map

    Interleaving DeckGL layers with a base map

    Hello, this is just a continuation #4529. After successfully integrating harp.gl's map with deck.gl, I was experimenting with things and found my Icon Layer laid on top of the buildings of the map.

    Normally in mapbox this could be solved by using the mapboxLayer and adding the icon layer beneath the building layer but harp.gl doesn't provide that sort of functionality.

    In essence deckgl is just drawing to an overlay canvas which is laid on top of the base canvas (harpgl's map in this case) if I understood correct. Is there any way to inform the overlay canvas of the depth buffer of the base canvas so everything renders correctly?

    An example screen. the red circles show where the icon should be behind the buildings. testt

    Thanks.

    question 
    opened by gallickgunner 61
  • initial integration of deck.gl with Google Maps

    initial integration of deck.gl with Google Maps

    For #1122 , provide an example to be updated of the integration of deck.gl with Google Maps.

    @Pessimistress and @ibgreen , feel free to use your (mapping) expertise to correct this semi working example.

    opened by MeTaNoV 35
  • v3 - scatterplot not rendering anymore

    v3 - scatterplot not rendering anymore

    Works fine on latest 2.x, updating to 3.x causes scatterplots to quit rendering.

    Additional info:

    • Tested on 3.0.0-beta17
    • Present on both core and fp64 layers
    • Choropleth layer in the dame overlay works fine
    • Using OSX Sierra on a MBP

    Tested the latest dev branch demo and the core scatter layer works, but the fp64 does not.

    Not sure if you're worried about it since it is a dev branch, but these layers don't work on the 3.x dev branch demo:

    • Solid Choropleth
    • Hexagon Select
    • Extruded Choropleth
    P0 
    opened by yocontra 32
  • heatmap layer shows only one color from colorRange

    heatmap layer shows only one color from colorRange

    Description

    Repro Steps

    const heatMap_layer = new HeatmapLayer({ data: this.geoJson.features, id: 'heatmp-layer', opacity: 0.6, getPosition: d => d.geometry.coordinates, getWeight: d => d.properties['Max Capacity'], colorFormat: 'RGBA', colorRange: [[1, 152, 189, 255], [73, 227, 206, 255], [216, 254, 181, 255], [254, 237, 177, 255],[254, 173, 84, 255],[209, 55, 78, 255]], intensity: 1, radiusPixels: 80, threshold: 0.9 });

    -->

    Environment (please complete the following information):

    • Framework Version: [e.g. deck.gl 7.2.3]
    • Browser Version: [e.g. Chrome 71.0]
    • OS: [e.g. Mac OS X 10.4]
    bug 
    opened by UttamRahane 31
  • Memory Size and TileCache

    Memory Size and TileCache

    Target Use case

    Hello! I am developing something that looks like it will have off-screen (i.e not visible) custom BaseTileLayers that I would like to have loaded for quick use and I would love to be able to allocate cache size equally and/or have each layer take up a predetermined percentage of the memory.

    Proposed feature

    I'd like if we could implement the maxCacheSize of the TileCache as a function of memory (allowing the user to control a percentage config, perhaps). I see that there is a TODO for it already here so I just wanted to make my use-case known. I am aware that my last PR seems to have opened something of a can of worms as per #4139 (very excited for these improvements, by the way!!!) so I understand if this is not coming for a while (until the API and location of the TileCache are finalized).

    feature 
    opened by ilan-gold 28
  • Unknown shader module project32

    Unknown shader module project32

    Description

    My usage of path layer leads to error: "Unknown shader module project32" Same goes for this example: https://deck.gl/showcases/gallery/highway

    Repro Steps

    Use example above.

    Environment (please complete the following information):

    • Framework Version:
    • Browser Version: Version 76.0.3809.6 (Official Build) canary (64-bit)
    • OS: Mac OS X 10.14.5

    Logs

    dist.min.js:1 deck: error while initializing PathLayer({id: 'path-layer'}) Error: Unknown shader module project32 at i (dist.min.js:1) at e.value (dist.min.js:1) at dist.min.js:1 at Array.map () at e.value (dist.min.js:1) at h (dist.min.js:1) at T (dist.min.js:1) at t.value (dist.min.js:1) at t.value (dist.min.js:1) at t.value (dist.min.js:1) value @ dist.min.js:1 value @ dist.min.js:1 value @ dist.min.js:1 value @ dist.min.js:1 value @ dist.min.js:1 value @ dist.min.js:1 setProps @ dist.min.js:12 value @ dist.min.js:1 value @ dist.min.js:1 value @ dist.min.js:1 (anonymous) @ dist.min.js:1 Promise.then (async) value @ dist.min.js:1 e @ dist.min.js:1 o @ dist.min.js:12 (anonymous) @ 2416456071?v=5:147 dist.min.js:1 Uncaught (in promise) Error: Unknown shader module project32 at i (dist.min.js:1) at e.value (dist.min.js:1) at dist.min.js:1 at Array.map () at e.value (dist.min.js:1) at h (dist.min.js:1) at T (dist.min.js:1) at t.value (dist.min.js:1) at t.value (dist.min.js:1) at t.value (dist.min.js:1) i @ dist.min.js:1 value @ dist.min.js:1 (anonymous) @ dist.min.js:1 value @ dist.min.js:1 h @ dist.min.js:1 T @ dist.min.js:1 value @ dist.min.js:1 value @ dist.min.js:1 value @ dist.min.js:1 e @ dist.min.js:1 t @ dist.min.js:1 value @ dist.min.js:1 value @ dist.min.js:1 value @ dist.min.js:1 value @ dist.min.js:1 value @ dist.min.js:1 value @ dist.min.js:1 value @ dist.min.js:1 value @ dist.min.js:1 value @ dist.min.js:1 value @ dist.min.js:1 setProps @ dist.min.js:12 value @ dist.min.js:1 value @ dist.min.js:1 value @ dist.min.js:1 (anonymous) @ dist.min.js:1 Promise.then (async) value @ dist.min.js:1 e @ dist.min.js:1 o @ dist.min.js:12 (anonymous) @ 2416456071?v=5:147

    bug 
    opened by cschlueter 27
  • The correct way to hide scatterplot items and practical count limits?

    The correct way to hide scatterplot items and practical count limits?

    I've got a Scatterplot that hides items in response to a time scrubber, which I've implemented by returning 0 from getRadius for items outside the active time range. getRadius is specified in updateTriggers as well, but I'm wondering if this is the most performant way to do this.

    Would setting the alpha to 0 or filtering the items out of the data ahead of time be a better approach? I'm also curious if smoothly scrubbing through 1M+ points is a realistic goal or not. I've rendered up to about 7M points but things get pretty bogged down.

    question bug 
    opened by bclinkinbeard 27
  • Highlight features spread across tiles

    Highlight features spread across tiles

    Background

    Right now, only one feature is highlighted when autoHighlight property is enabled and the feature is split into several tiles. We would need to highlight the whole feature instead of only the hovered part.

    I misunderstood the object index and returned the index within the provided data array instead of the picking index. Is there a way to get the picking index from a given property?

    Change List

    • Add highlightedObjectIndex to rendered sublayers in TileLayer.
    • Implement getHighlightedObjectIndex in MVTTileLayer.
    • Save hoveredFeatureId into MVTTileLayer state.
    opened by jesusbotella 26
  • IconLayer (png) render artifacts

    IconLayer (png) render artifacts

    I use IconLayer with png sprite. Icons render with a small glitch, something like a gray border or shadow but originally they have only a white border.

    Preview

    opened by jarekpelczynski 25
  • [Feat] Masking based on a polygon

    [Feat] Masking based on a polygon

    Target Use Case

    Currently deck.gl has a ClipExtension which allows rendering of layers clipped to rectangular region. This feature proposes adds a new extension, MaskExtension, which performs masking based on an arbitrary polygon region.

    The MaskExtension would enable richer visualizations as clipping only by a rectangle is of limited use.

    Proposal

    The MaskExtension can be added to a deck.gl layer in the standard fashion:

    const maskExtension = new MaskExtension();
    new SolidPolygonLayer({
      data,
      getFillColor: [255, 0, 0],
      extensions: [maskExtension],
      maskPolygon: [[0, 0], [0, 1], [1, 1], [1, 0], [0, 0]]
    });
    
    

    The MaskExtension adds the following props:

    • maskPolygon: polygon outline (format the same as that used by the SolidPolygonLayer data prop)
    • maskEnabled: set to false to disable masking
    • maskByInstance: whether to clip by pixel or by the geometry instance (analogous to ClipExtension.clipByInstance)

    Below is a short video showing the MaskExtension in action.

    Mask_demo

    The demo is composed of a number of different layers using the MaskExtension in different fashions:

    • A GeoJsonLayer with US states. When a state is selected, its geometry is used for the maskPolygon
    • A SolidPolygonLayer covering the entire USA with a solid green fill. This is masked using the maskPolygon. Thus when Texas is selected, it appears to have a green background
    • A ArcLayer showing the links between sources and target (flights between cities). As the maskByInstance prop is true, all arcs originating inside the mask are showing in their entirety
    • A ScatterplotLayer showing a buffer around each target. As the maskByInstance prop is set to false, these regions (in white) are clipped to the mask by pixel, and thus appear to be within the selected state.
    • 2 ScatterplotLayers showing the sources and targets for the sources and targets. As the maskByInstance prop is true, the red and green circles are not clipped by pixel
    feature 
    opened by felixpalmer 24
  • Deck.gl fails to initialize when run with AOT compilation with Angular

    Deck.gl fails to initialize when run with AOT compilation with Angular

    Description

    I am using the Deck.gl GoogleMapsOverlay with a Google map in an Angular application. It works just fine with the JIT compilation used most commonly by angular during development, but when the application is run with AOT compilation w/ Webpack as one would in a production environment, the resulting bundles don't load deck.gl correctly and all I see is the default google map. I believe it may be a treeshaking bug similar to #3213.

    My current work-around is to load it via the CDN link (https://unpkg.com/deck.gl@latest/dist.min.js) but that increases the bundle size considerably and breaks all IDE code suggestion support and whatnot.

    Repro Steps

    I created a simple angular project which demonstrates the issue. Refer to the README to get running quickly. https://github.com/SterlingMcCall/angular-deck-gl-error-demo

    Environment:

    • Framework Version: deck.gl 7.2.3 and earlier, 7.3.0-alpha.6
    • Browser Version: Chrome, Firefox
    • Webpack: tested with versions 4.19.1, 4.23.1, and 4.39.3

    Logs

    Unhandled Promise rejection: TIMER_QUERY ; Zone: <root> ; Task: Promise.then ; Value: Error: TIMER_QUERY
        at r (assert.js.pre-build-optimizer.js:3)
        at c (features.js.pre-build-optimizer.js:30)
        at features.js.pre-build-optimizer.js:10
        at Array.every (<anonymous>)
        at s (features.js.pre-build-optimizer.js:9)
        at Function.value (query.js.pre-build-optimizer.js:27)
        at animation-loop.js.pre-build-optimizer.js:147
        at e.invoke (zone.js.pre-build-optimizer.js:391)
        at t.run (zone.js.pre-build-optimizer.js:150)
        at zone.js.pre-build-optimizer.js:910 Error: TIMER_QUERY
        at r (http://localhost:4201/vendor.6ff8643349f59a82f6c2.js:1:211879)
        at c (http://localhost:4201/vendor.6ff8643349f59a82f6c2.js:1:494543)
        at http://localhost:4201/vendor.6ff8643349f59a82f6c2.js:1:494339
        at Array.every (<anonymous>)
        at s (http://localhost:4201/vendor.6ff8643349f59a82f6c2.js:1:494314)
        at Function.value (http://localhost:4201/vendor.6ff8643349f59a82f6c2.js:1:384784)
        at http://localhost:4201/vendor.6ff8643349f59a82f6c2.js:1:613204
        at e.invoke (http://localhost:4201/polyfills.42fc305c63116b2cde64.js:1:7375)
        at t.run (http://localhost:4201/polyfills.42fc305c63116b2cde64.js:1:2578)
        at http://localhost:4201/polyfills.42fc305c63116b2cde64.js:1:14554
    
    bug 
    opened by SterlingMcCall 23
  • [Bug] Incorrect prop type on `internalTextures`

    [Bug] Incorrect prop type on `internalTextures`

    Description

    https://github.com/visgl/deck.gl/blob/master/modules/core/src/utils/texture.ts#L14

    I think this:

    const internalTextures: Record<string, Texture2D> = {};
    

    should actually be this:

    const internalTextures: Record<string, boolean> = {};
    

    https://github.com/visgl/deck.gl/blob/master/modules/core/src/utils/texture.ts#L14

    Flavors

    • [ ] React
    • [ ] Python/Jupyter notebook
    • [ ] MapboxLayer
    • [ ] GoogleMapsOverlay
    • [ ] CartoLayer
    • [ ] DeckLayer/DeckRenderer for ArcGIS

    Expected Behavior

    n/a

    Steps to Reproduce

    n/a

    Environment

    • Framework version:
    • Browser:
    • OS:

    Logs

    No response

    bug 
    opened by jeffpeck10x 0
  • FillStyleExtension leverages new default props behavior

    FillStyleExtension leverages new default props behavior

    Follow up of #7496

    Change List

    • Remove ad-hoc prop handling in FillStyleExtension, use core async resolution system
    • image prop type accepts a new option to override default texture parameters
    • Tests
    • Docs
    opened by Pessimistress 0
  • [Bug]Tile3DLayer example is broken

    [Bug]Tile3DLayer example is broken

    Description

    Tile3DLayer example is broken. This link https://deck.gl/examples/tile-3d-layer/ is not rendering the 3d tile.

    Flavors

    • [ ] React
    • [ ] Python/Jupyter notebook
    • [ ] MapboxLayer
    • [ ] GoogleMapsOverlay
    • [ ] CartoLayer
    • [ ] DeckLayer/DeckRenderer for ArcGIS

    Expected Behavior

    No response

    Steps to Reproduce

    Go to this link https://deck.gl/examples/tile-3d-layer/, it is not rendering the 3d tile. I also can't render 3d tile from cesium ION in my code.

    Environment

    • Framework version:8.8.21
    • Browser: Chrome

    Logs

    No response

    bug 
    opened by Piaotian 6
  • [Bug] Globe View Tooltips show on other side of globe

    [Bug] Globe View Tooltips show on other side of globe

    Description

    Hey all, if I have a ArcLine with a tooltip on the other side of the globe, the picking engine incorrectly assumes I am hovering over the line, despite it behind occluded by the globe itself.

    This definitely does not seem like intended behavior, but I am not really sure how to go about fixing it.

    Flavors

    • [ ] React
    • [ ] Python/Jupyter notebook
    • [ ] MapboxLayer
    • [ ] GoogleMapsOverlay
    • [ ] CartoLayer
    • [ ] DeckLayer/DeckRenderer for ArcGIS

    Expected Behavior

    Tooltip only shows if you hover over the ArcLayer

    Steps to Reproduce

    Draw an ArcLayer from Australia to California. Add a tooltip and follow line beyond what is visible. Tooltip continues to show even when occluded by the globe.

    Environment

    Logs

    No response

    bug 
    opened by DrewRidley 1
  • [Bug] ScatterplotLayer hover/click not working properly when circles overlap

    [Bug] ScatterplotLayer hover/click not working properly when circles overlap

    Description

    https://user-images.githubusercontent.com/20474783/209679807-02fa8bc2-4311-478e-b762-9cb3505c3926.mp4

    I'm using ScatterplotLayer and the circles that are drawn first (bottom ones) are hovered instead of the ones at the top when there's an overlap. Same with onClick.

    Although it works fine when the map is pitched and billboard is set to true. Also works when interleaved:false

    const overlay = useControl<IControl>(() => {
        return new MapboxOverlay({
          layers: [
             new ScatterplotLayer({
                  data: [...],
                  visible: true,
                  pickable: true,
                  stroked: true,
                  autoHighlight: true,
                  billboard: true,
                  highlightColor: [...],
                  radiusUnits: "meters",
                  getRadius: 70,
                  getLineColor: ...,
                  getLineWidth: ...,
                  beforeId: "country-label-lg"
             })
         ],
          interleaved: true,
        }) as IControl;
    });
    

    Is this a known issue or am I doing something wrong here ?

    Flavors

    • [ ] React
    • [ ] Python/Jupyter notebook
    • [X] MapboxLayer
    • [ ] GoogleMapsOverlay
    • [ ] CartoLayer
    • [ ] DeckLayer/DeckRenderer for ArcGIS

    Expected Behavior

    • Circles that are on top should be picked (hovered/clicked)

    Steps to Reproduce

    /

    Environment

    • Framework version: 8.8.20
    • Browser: Chromium 108.0.5359.125; Safari 16.1
    • OS: macOS Ventura 13.0.1
    bug 
    opened by dusanjovanov 0
  • Bump wheel from 0.37.1 to 0.38.1 in /bindings/pydeck-carto/requirements

    Bump wheel from 0.37.1 to 0.38.1 in /bindings/pydeck-carto/requirements

    Bumps wheel from 0.37.1 to 0.38.1.

    Changelog

    Sourced from wheel's changelog.

    Release Notes

    UNRELEASED

    • Updated vendored packaging to 22.0

    0.38.4 (2022-11-09)

    • Fixed PKG-INFO conversion in bdist_wheel mangling UTF-8 header values in METADATA (PR by Anderson Bravalheri)

    0.38.3 (2022-11-08)

    • Fixed install failure when used with --no-binary, reported on Ubuntu 20.04, by removing setup_requires from setup.cfg

    0.38.2 (2022-11-05)

    • Fixed regression introduced in v0.38.1 which broke parsing of wheel file names with multiple platform tags

    0.38.1 (2022-11-04)

    • Removed install dependency on setuptools
    • The future-proof fix in 0.36.0 for converting PyPy's SOABI into a abi tag was faulty. Fixed so that future changes in the SOABI will not change the tag.

    0.38.0 (2022-10-21)

    • Dropped support for Python < 3.7
    • Updated vendored packaging to 21.3
    • Replaced all uses of distutils with setuptools
    • The handling of license_files (including glob patterns and default values) is now delegated to setuptools>=57.0.0 (#466). The package dependencies were updated to reflect this change.
    • Fixed potential DoS attack via the WHEEL_INFO_RE regular expression
    • Fixed ValueError: ZIP does not support timestamps before 1980 when using SOURCE_DATE_EPOCH=0 or when on-disk timestamps are earlier than 1980-01-01. Such timestamps are now changed to the minimum value before packaging.

    0.37.1 (2021-12-22)

    • Fixed wheel pack duplicating the WHEEL contents when the build number has changed (#415)
    • Fixed parsing of file names containing commas in RECORD (PR by Hood Chatham)

    0.37.0 (2021-08-09)

    • Added official Python 3.10 support
    • Updated vendored packaging library to v20.9

    ... (truncated)

    Commits
    • 6f1608d Created a new release
    • cf8f5ef Moved news item from PR #484 to its proper place
    • 9ec2016 Removed install dependency on setuptools (#483)
    • 747e1f6 Fixed PyPy SOABI parsing (#484)
    • 7627548 [pre-commit.ci] pre-commit autoupdate (#480)
    • 7b9e8e1 Test on Python 3.11 final
    • a04dfef Updated the pypi-publish action
    • 94bb62c Fixed docs not building due to code style changes
    • d635664 Updated the codecov action to the latest version
    • fcb94cd Updated version to match the release
    • Additional commits viewable in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language

    You can disable automated security fix PRs for this repo from the Security Alerts page.

    dependencies python 
    opened by dependabot[bot] 1
Releases(v8.8.22)
  • v8.8.22(Jan 7, 2023)

    • Fix FillStyleExtension (#7568)
    • Fix SimpleMeshLayerProps.wireframe and SimpleMeshLayerProps._instanced type (#7556)
    • Improve logic to update auto highlight module settings (#7562)
    Source code(tar.gz)
    Source code(zip)
  • v8.8.21(Dec 28, 2022)

    • Fix disablePickingColor with externally supplied startIndices (#7543)
    • Update types for MapViewProps (#7519)
    • Improve filtered data rendering performance (#7510)
    Source code(tar.gz)
    Source code(zip)
  • v8.8.20(Nov 15, 2022)

    • CARTO: Include aggregation and geoColumn in POST (#7404)
    • CARTO: better API error reporting (#7340)
    • CARTO: Support JSON format in QuadbinLayer (#7383)
    Source code(tar.gz)
    Source code(zip)
  • v8.8.19(Nov 12, 2022)

  • v8.8.18(Nov 10, 2022)

  • v8.8.17(Nov 4, 2022)

  • v8.8.16(Nov 2, 2022)

  • v8.8.15(Oct 27, 2022)

    • CARTO: fetchMap disable depthTest for point layers (#7332)
    • [CARTO] Support custom markers with original colors (#7311)
    • CARTO: Pass access token in load options (#7287)
    • CARTO: switch to using quadbin library (#7257)
    • Display helpful error if h3 v4 is accidentally included (#7283)
    • Chore: Bump loaders to 3.2.10 (#7305)
    Source code(tar.gz)
    Source code(zip)
  • v8.9.0-alpha.5(Oct 20, 2022)

    • Support MaskExtension in FirstPersonView (#7240)
    • CARTO: Encode stats URL query value (#7319)
    • Chore: Bump loaders to 3.2.10 (#7305)
    • Font Atlas Manager: Always update the atlas with the cached version (#7337)
    • CARTO: Explicitly set geoColumn when requesting GeoJSON (#7338)
    • Display helpful error if h3 v4 is accidentally included (#7283)
    • CARTO: fetchMap disable depthTest for point layers (#7332)
    • Fix pydeck render in Google Colab (#7325)
    • Minor fix in widget-tooltip: reset value on every iteration (#7329)
    • Update MapboxOverlay docs (#7320)
    • Fix altitude projection dependence on geometry.worldPosition (#7318)
    • [pydeck-carto] fixed example for H3 strokes (#7306)
    Source code(tar.gz)
    Source code(zip)
  • v8.8.14(Oct 20, 2022)

    • Minor fix in widget-tooltip: reset value on every iteration (#7329)
    • CARTO: Explicitly set geoColumn when requesting GeoJSON (#7338)
    • add Encode stats URL query value #7319
    Source code(tar.gz)
    Source code(zip)
  • v8.8.13(Oct 12, 2022)

  • v8.9.0-alpha.4(Oct 5, 2022)

  • v8.9.0-alpha.3(Sep 27, 2022)

    • CARTO: Pass access token in load options (#7287)
    • Improve makeTooltip template in jupyter-widget (#7278)
    • Add configuration attribute in pydeck. Fix css_background_color (#7255)
    • Carto: fetchMap support for custom markers (#7250)
    • Text-Layer: Improve SDF Font Rendering (Text Outlines) (#7212)
    • Add styling functions in pydeck (#7249)
    • CARTO: Support fields when parsing CartoVectorTiles (#7248)
    • CARTO: Tidy up binary loaders (#7194)
    • CARTO: CartoTileLayer picking coordinates correct (#7242)
    • Support dynamic functions in configuration (#7253)
    • CARTO fetchMap fix: parametrized queries are not working (#7238)
    • Use correct parameters when resizing icon atlas (#7232)
    Source code(tar.gz)
    Source code(zip)
  • v8.8.11(Sep 16, 2022)

  • v8.8.10(Sep 8, 2022)

    • CARTO: Support fields when parsing CartoVectorTiles (#7248, #7194)
    • CARTO: CartoTileLayer picking coordinates correct (#7242)
    • Support dynamic functions in configuration (#7253)
    • CARTO fetchMap fix: parametrized queries are not working (#7238)
    • Use correct parameters when resizing icon atlas (#7232)
    Source code(tar.gz)
    Source code(zip)
  • v8.9.0-alpha.1(Sep 1, 2022)

    • [feat] Add a _full3d prop that uses the plane with the maximum area to tesselate (#7205)
    • [mapbox] Match base map camera when terrain is used (#7114)
    Source code(tar.gz)
    Source code(zip)
  • v8.8.9(Aug 22, 2022)

  • v8.8.8(Aug 13, 2022)

  • v8.8.7(Aug 11, 2022)

  • v8.8.6(Jul 28, 2022)

  • v8.8.5(Jul 25, 2022)

    • Support customising textureParameters on auto-packed texture (#7126) (#7136)
    • Fix MapboxLayer index resolution (#7164)
    • CARTO: fetchMap support spatial index layers (#7065)
    Source code(tar.gz)
    Source code(zip)
  • v8.8.4(Jul 11, 2022)

    • Bump dependency versions (#7134)
    • Fix TRANSITION_EVENTS export (#7131)
    • Fixing issue where event listeners were not being removed after finalizing DeckGL when used with google maps (#7127)
    • [ts] Improve carto/style typings. (#7120)
    Source code(tar.gz)
    Source code(zip)
  • v8.8.3(Jul 5, 2022)

  • v8.8.2(Jul 2, 2022)

  • v8.8.1(Jul 1, 2022)

  • v8.8.0(Jul 1, 2022)

    • Official TypeScript typings are now available for public preview
    • TileLayer supports custom indexing systems
    • The @deck.gl/mapbox module now exports a new class MapboxOverlay, which implements Mapbox GL JS's IControl API. This control supports both overlaid and interleaved rendering modes.
    • CartoLayer includes native support to work with spatial indexes like H3 or QuadBin
    • Views now accept a padding option to offset the focal point
    • Improved performance when there are many invisible layers
    • Improved picking performance when using the TileLayer

    Visit the upgrade guide for deprecations and breacking changes.

    Source code(tar.gz)
    Source code(zip)
  • v8.8.0-beta.5(Jun 30, 2022)

    • CARTO: Handle minZoom&maxZoom in H3TileLayer (#7108)
    • CARTO: document use of spatial indices (#7107)
    • CARTO: Remove CARTO 2 for documentation (#7106)
    • CARTO - H3Tileset handles large latitude span (#7103)
    • CARTO: Add QuadbinTileLayer (#7095)
    • Add annotation to all layer classes (#7099)
    • Resolve async prop to null if fetch is undefined (#7098)
    Source code(tar.gz)
    Source code(zip)
  • v8.8.0-beta.4(Jun 27, 2022)

    • Fix arcgis integration (#7092)
    • Fix DeckGL component event root (#7091)
    • Add isInitialized flag to Deck class (#7084)
    • Fix FillStyleExtension precision (#7074)
    • GoogleMapsOverlay: Force useDevicePixels to true in interleaved mode (#7066)
    • GoogleMapsOverlay: HeatmapLayer weightsTransform uses correct clearColor (#7071)
    • CARTO: Remove deprecated getData function (#7063)
    • CARTO: Remove format prop from CartoLayer (#7056)
    • Add runtime check for H3 library (#7058)
    Source code(tar.gz)
    Source code(zip)
  • v8.7.12(Jun 23, 2022)

    • Fix FillStyleExtension precision (#7074)
    • GoogleMapsOverlay: Force useDevicePixels to true in interleaved mode (#7066)
    • GoogleMapsOverlay: HeatmapLayer weightsTransform uses correct clearColor (#7071)
    Source code(tar.gz)
    Source code(zip)
  • v8.8.0-beta.3(Jun 27, 2022)

    • Avoid mutating iconMapping value in autopacking (#7060)
    • Fix picking in non-geospatial TileLayer (#7052)
    • Do not access viewports before viewManager initialization (#7049)
    • QuadkeyTileset2D add missing metadata (#7047)
    • Add type for textureParameters (#7045)
    • [ts] Types for CartoLayer aggregation parameters (#7048)
    • Geohash layer (#6917)
    • [ts] TerrainLayer (#7044)
    • Cull TileLayer sub layers during picking (#6733)
    Source code(tar.gz)
    Source code(zip)
Owner
Vis.gl
Frameworks for WebGL-powered large-scale data visualization
Vis.gl
Dashboards-maps is a frontend plugin that helps you in uploading custom GeoJSON to OpenSearch and communicates with the geospatial backend plugin for the same.

Welcome! Project Resources Code of Conduct License Copyright Dashboards-Maps Dashboards-maps is a frontend plugin that helps you in uploading custom G

null 9 Dec 28, 2022
geotiff.js is a small library to parse TIFF files for visualization or analysis. It is written in pure JavaScript, and is usable in both the browser and node.js applications.

geotiff.js Read (geospatial) metadata and raw array data from a wide variety of different (Geo)TIFF files types. Features Currently available function

geotiff.js 649 Dec 21, 2022
Visualization of all roads within any city

city-roads Render every single road in any city at once: https://anvaka.github.io/city-roads/ How it is made? The data is fetched from OpenStreetMap u

Andrei Kashcha 5.3k Jan 3, 2023
Interactive, thoroughly customizable maps in the browser, powered by vector tiles and WebGL

Mapbox GL JS is a JavaScript library for interactive, customizable vector maps on the web. It takes map styles that conform to the Mapbox Style Specif

Mapbox 9.4k Jan 7, 2023
Globe.GL - A web component to represent data visualization layers on a 3-dimensional globe in a spherical projection

A web component to represent data visualization layers on a 3-dimensional globe in a spherical projection. This library is a convenience wrap

Vasco Asturiano 1.3k Jan 3, 2023
⚗️ Zeplin extension that generates Swift snippets from colors, fonts, and layers

Zeplin extension that generates Swift snippets from colors, fonts and layers. Features ?? Color pallette for iOS Example import UIKit extension UICol

Artem Novichkov 83 May 29, 2022
A very fast geospatial point clustering library for browsers and Node.

supercluster A very fast JavaScript library for geospatial point clustering for browsers and Node. <script src="https://unpkg.com/[email protected]/d

Mapbox 1.6k Jan 7, 2023
A modular geospatial engine written in JavaScript

A modular geospatial engine written in JavaScript turfjs.org Turf is a JavaScript library for spatial analysis. It includes traditional spatial operat

turf 7.6k Jan 3, 2023
App for displaying geospatial data on queues on the Polish-Ukrainian border.

Live app embedded here. App helps coordinate volunteer work with refugees from Ukraine on Polish-Belarusian Border. Data comes from Grupa Granica – a

null 3 Mar 10, 2022
Low-Level GeoSpatial Masking Functions

geomask Low-Level GeoSpatial Masking Functions features calculate raster pixels inside and outside a geometry mask built-in reprojection support for a

Daniel J. Dufour 4 Jul 22, 2022
A generative engine that takes various png layers on a sprite sheet format, combines them and then converts them into a .gif file

Welcome to the Generative GIF Engine v2.0.4 ?? [8 minute read] This python and node app generates layered-based gifs to create NFT gif art! It is fast

Jalagar 112 Jan 2, 2023
A generative engine that takes various png layers on a sprite sheet format, combines them and then converts them into a .gif file

Welcome to the Generative Animated Engine v3.0.1 ?? [8 minute read] This repo used to be called jalagar/Generative_Gif_Engine but because it now suppo

Jalagar 47 May 24, 2022
Dashboards-maps is a frontend plugin that helps you in uploading custom GeoJSON to OpenSearch and communicates with the geospatial backend plugin for the same.

Welcome! Project Resources Code of Conduct License Copyright Dashboards-Maps Dashboards-maps is a frontend plugin that helps you in uploading custom G

null 9 Dec 28, 2022
All-in-one package for maptalks webgl layers

@maptalks/gl-layers maptalks webgl 图层的汇总包,包含了@maptalks命名空间下webgl基础设施和所有webgl图层插件。 使用时无需再单独安装和引入其他webgl插件,而可以统一从此包中安装引用。 包含的插件 @maptalks/gl @maptalks/v

Fu Zhen 20 Dec 23, 2022
Bertin.js is a JavaScript library for visualizing geospatial data and make thematic maps for the web.

Bertin.js is a JavaScript library for visualizing geospatial data and make thematic maps for the web. The project is under active development. Some of

Nicolas LAMBERT 229 Dec 20, 2022
This Photoshop script exports all top-level layers and groups to cropped PNG and JPEG files and creates a file usable in Tumult Hype 4 based on your Photoshop document.

Export To Hype (Photoshop Edition) This Photoshop script exports all top-level layers and groups to cropped PNG and JPEG files and creates a file usab

Max Ziebell 6 Nov 9, 2022
🚀 Blazing Fast S3 Powered CDN ✨ Powered By Fastify, S3 Buckets & Docker!

?? WasiCDN Blazing Fast S3 Powered CDN, Powered By Fastify, S3 Compatible Buckets & Docker! Core DockerHub: https://hub.docker.com/r/maximking19/wasic

Maxim 5 Aug 31, 2022
Apache ECharts is a powerful, interactive charting and data visualization library for browser

Apache ECharts Apache ECharts is a free, powerful charting and visualization library offering an easy way of adding intuitive, interactive, and highly

The Apache Software Foundation 53.8k Jan 9, 2023
Data Visualization Components

react-vis | Demos | Docs A COMPOSABLE VISUALIZATION SYSTEM Overview A collection of react components to render common data visualization charts, such

Uber Open Source 8.4k Jan 2, 2023
📊 A highly interactive data-driven visualization grammar for statistical charts.

English | 简体中文 G2 A highly interactive data-driven visualization grammar for statistical charts. Website • Tutorial Docs • Blog • G2Plot G2 is a visua

AntV team 11.5k Dec 30, 2022