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/[email protected]/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/[email protected]/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
Location field and widget for Django. It supports Google Maps, OpenStreetMap and Mapbox

django-location-field Let users pick locations using a map widget and store its latitude and longitude. Stable version: django-location-field==2.1.0 D

Caio Ariede 481 Dec 29, 2022
pure-Python (Numpy optional) 3D coordinate conversions for geospace ecef enu eci

Python 3-D coordinate conversions Pure Python (no prerequistes beyond Python itself) 3-D geographic coordinate conversions and geodesy. API similar to

Geospace code 292 Dec 29, 2022
A Python package for delineating nested surface depressions from digital elevation data.

Welcome to the lidar package lidar is Python package for delineating the nested hierarchy of surface depressions in digital elevation models (DEMs). I

Qiusheng Wu 166 Jan 03, 2023
This repository contains the scripts to derivate the ENU and ECEF coordinates from the longitude, latitude, and altitude values encoded in the NAD83 coordinates.

This repository contains the scripts to derivate the ENU and ECEF coordinates from the longitude, latitude, and altitude values encoded in the NAD83 coordinates.

Luigi Cruz 1 Feb 07, 2022
This is the antenna performance plotted from tinyGS reception data.

tinyGS-antenna-map This is the antenna performance plotted from tinyGS reception data. See their repository. The code produces a plot that provides Az

Martin J. Levy 14 Aug 21, 2022
Evaluation of file formats in the context of geo-referenced 3D geometries.

Geo-referenced Geometry File Formats Classic geometry file formats as .obj, .off, .ply, .stl or .dae do not support the utilization of coordinate syst

Advanced Information Systems and Technology 11 Mar 02, 2022
ESMAC diags - Earth System Model Aerosol-Cloud Diagnostics Package

Earth System Model Aerosol-Cloud Diagnostics Package This Earth System Model (ES

Pacific Northwest National Laboratory 1 Jan 04, 2022
Color correction plugin for rasterio

rio-color A rasterio plugin for applying basic color-oriented image operations to geospatial rasters. Goals No heavy dependencies: rio-color is purpos

Mapbox 111 Nov 15, 2022
Creates 3D geometries from 2D vector graphics, for use in geodynamic models

geomIO - creating 3D geometries from 2D input This is the Julia and Python version of geomIO, a free open source software to generate 3D volumes and s

3 Feb 01, 2022
Open Data Cube analyses continental scale Earth Observation data through time

Open Data Cube Core Overview The Open Data Cube Core provides an integrated gridded data analysis environment for decades of analysis ready earth obse

Open Data Cube 410 Dec 13, 2022
Python package for earth-observing satellite data processing

Satpy The Satpy package is a python library for reading and manipulating meteorological remote sensing data and writing it to various image and data f

PyTroll 882 Dec 27, 2022
The geospatial toolkit for redistricting data.

maup maup is the geospatial toolkit for redistricting data. The package streamlines the basic workflows that arise when working with blocks, precincts

Metric Geometry and Gerrymandering Group 60 Dec 05, 2022
A Python interface between Earth Engine and xarray

eexarray A Python interface between Earth Engine and xarray Description eexarray was built to make processing gridded, mesoscale time series data quic

Aaron Zuspan 159 Dec 23, 2022
Google maps for Jupyter notebooks

gmaps gmaps is a plugin for including interactive Google maps in the IPython Notebook. Let's plot a heatmap of taxi pickups in San Francisco: import g

Pascal Bugnion 747 Dec 19, 2022
Manage your XYZ Hub or HERE Data Hub spaces from Python.

XYZ Spaces for Python Manage your XYZ Hub or HERE Data Hub spaces and Interactive Map Layer from Python. FEATURED IN: Online Python Machine Learning C

HERE Technologies 30 Oct 18, 2022
LEOGPS - Satellite Navigation with GPS on Python!

LEOGPS is an open-source Python software which performs relative satellite navigation between two formation flying satellites, with the objective of high accuracy relative positioning. Specifically,

Samuel Low 50 Dec 13, 2022
PySAL: Python Spatial Analysis Library Meta-Package

Python Spatial Analysis Library PySAL, the Python spatial analysis library, is an open source cross-platform library for geospatial data science with

Python Spatial Analysis Library 1.1k Dec 18, 2022
Stitch image tiles into larger composite TIFs

untiler Utility to take a directory of {z}/{x}/{y}.(jpg|png) tiles, and stitch into a scenetiff (tif w/ exact merc tile bounds). Future versions will

Mapbox 38 Dec 16, 2022
An API built to format given addresses using Python and Flask.

An API built to format given addresses using Python and Flask. About The API returns properly formatted data, i.e. removing duplicate fields, distingu

1 Feb 27, 2022
Simulation and Parameter Estimation in Geophysics

Simulation and Parameter Estimation in Geophysics - A python package for simulation and gradient based parameter estimation in the context of geophysical applications.

SimPEG 390 Dec 15, 2022