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
Issues
  • 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
  • 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
  • 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
  • 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
  • cannot get accurate position using meter offset in scatterplot

    cannot get accurate position using meter offset in scatterplot

    I used the below to plot using METER_OFFSET. Results are quite good until the points are very far from the Origin, where they start moving away from their positions plotted using LNGLAT. Any idea to get it more accurate with the lnglat positions?

    class Layer extends ScatterplotLayer {
        constructor(props) {
            super(props)
        }
    
        calculateInstancePositions(attribute) {
            const { data, getPosition, projectionMode, positionOrigin } = this.props
            const { viewport } = this.context
            const { value } = attribute
            let i = 0
            for (const point of data) {
                let position = getPosition(point)
                if (projectionMode === COORDINATE_SYSTEM.METER_OFFSETS) {
                    const lngLatDelta = [
                        position[0] - positionOrigin[0],
                        position[1] - positionOrigin[1]
                    ]
                    position = viewport.lngLatDeltaToMeters(lngLatDelta)
                    if (
                        (lngLatDelta[0] < 0 && position[0] > 0) ||
                        (lngLatDelta[0] > 0 && position[0] < 0)
                    ) {
                        position[0] *= -1
                    }
                    if (
                        (lngLatDelta[1] < 0 && position[1] < 0) ||
                        (lngLatDelta[1] > 0 && position[1] > 0)
                    ) {
                        position[1] *= -1
                    }
                }
                value[i++] = get(position, 0)
                value[i++] = get(position, 1)
                value[i++] = get(position, 2) || 0
            }
        }
    }
    
    P2 
    opened by CrokinoleMaster 23
  • [Bug] pydeck tooltips doesn't support displaying nested JSON values

    [Bug] pydeck tooltips doesn't support displaying nested JSON values

    Description

    Trying to show

           "html": '<b>value:</b> {properties.valuePerSqm}',
    

    But it doesn't seem to support the substitution. image

    Flavors

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

    Expected Behavior

    No response

    Steps to Reproduce

    import pydeck
    
    DATA_URL = "https://raw.githubusercontent.com/visgl/deck.gl-data/master/examples/geojson/vancouver-blocks.json"
    LAND_COVER = [[[-123.0, 49.196], [-123.0, 49.324], [-123.306, 49.324], [-123.306, 49.196]]]
    
    INITIAL_VIEW_STATE = pydeck.ViewState(
      latitude=49.254,
      longitude=-123.13,
      zoom=11,
      max_zoom=16,
      pitch=45,
      bearing=0
    )
    
    geojson = pydeck.Layer(
        'GeoJsonLayer',
        DATA_URL,
        opacity=0.8,
        stroked=False,
        filled=True,
        extruded=True,
        wireframe=True,
        get_elevation='properties.valuePerSqm / 20',
        get_fill_color='[255, 255, properties.growth * 255]',
        get_line_color=[255, 255, 255],
        pickable=True
    )
    
    r = pydeck.Deck(
        layers=[geojson],
        initial_view_state=INITIAL_VIEW_STATE,
        tooltip={
           "html": '<b>value:</b> {properties.valuePerSqm}',
           "style": {
                "backgroundColor": "steelblue",
                "color": "white"
           }
        }
    )
    
    r
    

    Environment

    Logs

    No response

    bug 
    opened by andhuang-CLGX 0
  • Support multiple masks

    Support multiple masks

    For #4161

    Support up to 4 mask layers. maskId is now required to enable masking. If maskId is not found, it is treated as if maskEnabled: false.

    @felixpalmer Do we still need maskEnabled in this case?

    Screen Shot 2022-01-26 at 3 16 39 PM

    Change List

    • MaskEffect
    • MaskExtension
    • Test app
    • Unit tests
    opened by Pessimistress 1
  • Is there a way to make Hover tooltips stick on click like Folium markers in pydeck?

    Is there a way to make Hover tooltips stick on click like Folium markers in pydeck?

    Target Use Case

    So someone can view multiple tooltips at once

    Proposal

    Like folium markers? https://python-visualization.github.io/folium/quickstart.html

    feature 
    opened by andhuang-CLGX 0
  • [Bug] Mapbox integration, layer get repeated even with renderWorldCopies set to false

    [Bug] Mapbox integration, layer get repeated even with renderWorldCopies set to false

    Description

    I followed the example to use a DeckGL custom layer in Mapox.

    It works well but the Custom Layer gets repeated even if I set the renderWorldCopies to false in Mapbox.

    Is there any way we can prevent this behaviour Screen Shot 2022-01-25 at 4 41 17 PM

    Screen Shot 2022-01-25 at 4 41 27 PM ?

    Flavors

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

    Expected Behavior

    No response

    Steps to Reproduce

    var map = new mapboxgl.Map({ container: 'ParcoursMap', center: [-20.276018, 50.220830], zoom: 1.6, pitch: 25, //maxPitch: 50, bearing: 0, minZoom: 1, maxZoom: 15, renderWorldCopies: false, });

    Environment

    Logs

    No response

    bug 
    opened by inwebitrust 0
  • Felix/carto binary format

    Felix/carto binary format

    For https://github.com/visgl/deck.gl/issues/6508

    Change List

    • Add pbf dependency
    • Schema for binary data format
    • Parse pbf and display using CartoLayer
    opened by felixpalmer 0
  • Cannot read properties of null (reading 'isVisible') [Bug]

    Cannot read properties of null (reading 'isVisible') [Bug]

    Description

    Tooltip throws error in edge cases o clear way to reproduce. After look in codebase it seems that the "this.tooltip" is not there

    // If view state has changed, clear tooltip if (this.tooltip.isVisible && this.viewManager.needsRedraw()) { this.tooltip.setTooltip(null); }

    Code Loc

    Flavors

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

    Expected Behavior

    Should not make an error

    Steps to Reproduce

    ` <DeckGL viewState={viewport} layers={deckGlLayers} ContextProvider={MapContext.Provider} onViewStateChange={({ viewState }) =>{ mapControl.updateViewPort({ ...viewState, }); }} controller={{inertia: true}} onLoad={() => updateMapState(true)} onError={() => {}} getCursor={({isDragging}) => isDragging ? 'grabbing' : 'default'} onClick={(e) => mapControl.clickHandler(e)} getTooltip={(e) => { if (!e.layer) return null;

                    // console.log(e.layer)
                    if (!e.object) {
                        return null;
                    }
            
                    // Sensor markers
                    if (e.object.isMarker) {
                        return e.object.name;
                    }
    
                    return null;
                }}
            >
    

    `

    Environment

    Logs

    No response

    bug 
    opened by SadikMoazzem 4
  • Allow setting FontAtlasManager LRU Cache limit

    Allow setting FontAtlasManager LRU Cache limit

    For #6575

    Background

    FontAtlasManager uses LRU Cache to keep 3 most used font atlases in memory. This is fine for typical use cases but it becomes performance bottleneck when much more than 3 fonts (or combination of font-family, font-weight ...) is needed.

    Change List

    • Introduce TextLayer.fontAtlasCacheLimit static setter to recreate the LRU cache with new limit
    • Add documentation to TexLayer
    • Add tests
    opened by urdeveloper 1
  • [Feat] Allow setting FontAtlasManager LRU Cache Limit

    [Feat] Allow setting FontAtlasManager LRU Cache Limit

    Target Use Case

    FontAtlasManager uses LRU Cache to keep 3 most used font atlases in memory. This is fine for typical use cases but it becomes performance bottleneck when much more than 3 fonts (or combination of font-family, font-weight ...) is needed.

    If you need for example 15 different fonts in your application, FontAtlasManager keeps recreating them because it can't keep all of them in memory.

    Proposal

    Introduce a function that allows setting the LRU cache limit in such use cases.

    feature 
    opened by urdeveloper 0
  • [Bug] Google map satellite 3D view rotation bug

    [Bug] Google map satellite 3D view rotation bug

    Description

    I am developing an application with is using Google Maps as a base map (using Angular front-end) and Deck.gl to render layers on top of the map. first of all, I find out that deck gl is not supporting rendering layers on the 3D view so I turned the layers off as soon as the user zoom-in in satellite view which will cause to turn on the 3D mode. after google map will reach to the level which can show 3D map there will be another feature that let user rotate the map by 90 degrees either clockwise or counterclockwise. this feature will work just for 90 degrees counterclockwise and 90 degrees back to the default view. I have checked the example on google official website which is using deck.gl as an example and appears they are facing the same issue. here is the link to an example: https://developers.google.com/maps/documentation/javascript/examples/deckgl-points

    The steps to reproduce the bug is: 1- click on satellite view 2- zoom-in to metro areas such as San Francisco up to the level where you get a tilt button on the left-bottom of the map 3- click on clockwise rotation or double click on counter clockwise rotation

    here is my browser console after facing the problem:

    zone.js:182 Uncaught TypeError: Cannot read properties of null (reading '0')
        at Module.transformMat4 (vec4.js:486:1)
        at transformVector (math-utils.js:6:18)
        at pixelsToWorld (web-mercator-utils.js:179:33)
        at WebMercatorViewport.unproject (viewport.js:87:32)
        at getBounds (get-bounds.js:14:1)
        at WebMercatorViewport.getBounds (web-mercator-viewport.js:154:30)
        at WebMercatorViewport.get subViewports [as subViewports] (web-mercator-viewport.js:101:1)
        at DrawLayersPass._drawLayers (layers-pass.js:36:1)
        at DrawLayersPass.render (layers-pass.js:9:1)
        at DeckRenderer.renderLayers (deck-renderer.js:40:1)
    

    you can see obviously some tiles will get missed and all text become funky: image

    Flavors

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

    Expected Behavior

    No response

    Steps to Reproduce

    1- click on satellite view 2- zoom-in to metro areas such as San Francisco up to the level where you get a tilt button on the left-bottom of the map 3- click on clockwise rotation or double click on counter clockwise rotation

    Environment

    • Framework version: Angular version 12, googlemaps version 1.12.0, deck.gl version 8.6.4
    • Browser: Chrome Version 97.0.4692.71, Edge Version 97.0.1072.62, Safari Version 15.2
    • OS: Windows pro10/11, macOS Monterey 12.1

    Logs

    No response

    bug 
    opened by dana-ngis 3
  • Bump trim-off-newlines from 1.0.1 to 1.0.3

    Bump trim-off-newlines from 1.0.1 to 1.0.3

    Bumps trim-off-newlines from 1.0.1 to 1.0.3.

    Commits
    • c3b28d3 1.0.3
    • 6226c95 Merge pull request #4 from Trott/fix-it-again
    • c77691d fix: remediate ReDOS further
    • 76ca93c chore: pin mocha to version that works with 0.10.x
    • 8cd3f73 1.0.2
    • fcbb73d Merge pull request #3 from Trott/patch-1
    • 6d89476 fix: update regular expression to remove ReDOS
    • 0cd87f5 chore: pin xo to latest version that works with current code
    • See full diff in compare view
    Maintainer changes

    This version was pushed to npm by trott, a new releaser for trim-off-newlines since your current version.


    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 
    opened by dependabot[bot] 1
Releases(v8.7.0-beta.1)
  • v8.7.0-beta.1(Jan 26, 2022)

    • Add MaskExtension (#6554)
    • Add getBounds method to Attribute (#6583)
    • Update to new Google Maps API (#6579)
    • CARTO fetchMap: Fix no layer shown if one of the map layers fails (#6573)
    • Add uniqueIdProperty to mvt layer props (#6572)
    • Fix fetchMap in Carto module (#6569)
    • Migrate core/passes to TypeScript (#6488)
    • Fix TileLayer url template resolution (#6566)
    • Fix z-index of MapboxLayers (#6565)
    • Fix highlighting in GeoJsonLayer when it’s used as a sub layer (#6563)
    • Correctly calculate GLViewport with Framebuffer (#6553)
    Source code(tar.gz)
    Source code(zip)
  • v8.6.6(Jan 19, 2022)

    • Fix TileLayer url template resolution (#6566)
    • Fix z-index of MapboxLayers (#6565)
    • Fix highlighting in GeoJsonLayer when it’s used as a sub layer (#6563)
    • Bump loaders.gl to 3.1.5 (#6561)
    Source code(tar.gz)
    Source code(zip)
  • v8.7.0-alpha.11(Dec 30, 2021)

  • v8.7.0-alpha.10(Dec 28, 2021)

  • v8.7.0-alpha.9(Dec 17, 2021)

  • v8.7.0-alpha.8(Dec 13, 2021)

  • v8.7.0-alpha.7(Dec 10, 2021)

  • v8.7.0-alpha.6(Dec 9, 2021)

  • v8.7.0-alpha.5(Dec 9, 2021)

  • v8.7.0-alpha.4(Dec 9, 2021)

    • TileLayer: reduce flashing when using no-overlap strategy (#6477)
    • feat(geo): controller position (#6478)
    • chore: Bump to [email protected] (#6484)
    • chore(core): Move utils to .ts (#6452)
    • CARTO: Fix domain length for CartoColors in colorBins (#6475)
    • Migrate core/lifecycle to TypeScript (#6454)
    • feat(geo-layers): Tile3DLayer pass coordinateSystem as prop (#6466)
    • Fix project_normal in GlobeView (#6445)
    • Add flatShading prop to ColumnLayer (#6392)
    • TerrainLayer handle non-WebMercator viewports (#6461)
    • colorContinuous - Use domain length to get palette (#6447)
    • fix(geo-layers): _MeshLayer & repeating textures (#6468)
    • TileLayer support custom refinementStrategy (#6382)
    • chore: Move to @math.gl/core (#6405)
    • chore: Lint fixes (#6443)
    • chore: Move controllers to .ts (#6440)
    • chore: [email protected] (#6388)
    • feat: Typescript monorepo (#6381)
    • chore: Replace global with globalThis (#6407)
    • feat: Upgrade tooling to support TypeScript (#6390)
    Source code(tar.gz)
    Source code(zip)
  • v8.6.5(Dec 9, 2021)

    • Avoid mutating coordinateOrigin (#6491)
    • Fix MVTLayer functional highlightColor (#6479)
    • Fix crash when diffing extensions (#6474)
    • TerrainLayer handle non-WebMercator viewports (#6461)
    Source code(tar.gz)
    Source code(zip)
  • v8.7.0-alpha.3(Nov 25, 2021)

    • Fix: Rename publicToken to token (#6425)
    • Fix: CartoLayer support format prop (#6416)
    • Default to cartodb_id for uniqueIdProperty in CartoLayer (#6404)
    • Deprecate CartoBQTilerLayer and CartoSQLLayer (#6402)
    Source code(tar.gz)
    Source code(zip)
  • v8.7.0-alpha.2(Nov 16, 2021)

  • v8.6.4(Nov 14, 2021)

  • v8.7.0-alpha.1(Nov 8, 2021)

    • Add missing prop mappings for GeoJsonLayer (#6336)
    • Add fetchMap function to carto module (#6341)
    • CARTO: fix layer credentials overwrite (#6349)
    • Skip rendering out-of-DOM Google Maps (#6340)
    • [arcgis] support ES modules (#6313)
    • Multi-view picking consistency (#6306)
    Source code(tar.gz)
    Source code(zip)
  • v8.6.3(Nov 7, 2021)

  • v8.6.2(Nov 3, 2021)

  • v8.6.1(Nov 2, 2021)

  • v8.6.0(Oct 11, 2021)

    • Google Maps Overlay: Safely invoke onRender by resetting arrayBuffer (#6224)
    • Bump luma to 8.5.10 (#6267)
    • Update HexagonLayer to use the new unit system (#6260)
    • Use accurate meter size in Web Mercator projection (#6117)
    • Improve picking index encoding (#6184)
    • H3HexagonLayer: force low precision; early exit for data analysis loop (#6242)
    • TileLayer retains cache on data change (#6194)
    • Check visible recursively (#6190)
    • Use layerFilter in MapboxLayer (#6189)
    • Google overlay state synchronization (#6177)
    • Add geoColumn & columns props to CartoLayer (#6097)
    • Bug fixes in google overlay (#6083)
    • OrthographicView supports independent x/y zoom levels (#6116)
    • Only call layerFilter with top-level layers (#6049)
    • Support vector maps in google module (#5981)
    Source code(tar.gz)
    Source code(zip)
  • v8.6.0-beta.1(Oct 9, 2021)

  • v8.6.0-alpha.4(Oct 6, 2021)

    • Google Maps Overlay: Safely invoke onRender by resetting arrayBuffer (#6224)
    • Bump luma to 8.5.10 (#6267)
    • Update HexagonLayer to use the new unit system (#6260)
    • Use accurate meter size in Web Mercator projection (#6117)
    • Improve picking index encoding (#6184)
    • H3HexagonLayer: force low precision; early exit for data analysis loop (#6242)
    • TileLayer retains cache on data change (#6194)
    • Fix excessive allocation for constant attributes (#6233)
    • Fix Heatmap data update (#6231)
    • Fix diffProps when an async prop is set synchronously (#6193)
    • Fix TileLayer getTileData not using the latest loadOptions (#6209)
    • Fix missing picking radius for onClick handlers (#6208)
    • Check visible recursively (#6190)
    • TileLayer uses props.extent to cull tiles in geospatial mode (#6191)
    • Use layerFilter in MapboxLayer (#6189)
    Source code(tar.gz)
    Source code(zip)
  • v8.5.10(Sep 24, 2021)

  • v8.5.9(Sep 21, 2021)

    • Fix diffProps when an async prop is set synchronously (#6193)
    • Fix TileLayer getTileData not using the latest loadOptions (#6209)
    • [google-maps] Fix missing picking radius for onClick handlers (#6208)
    Source code(tar.gz)
    Source code(zip)
  • v8.5.8(Sep 13, 2021)

  • v8.6.0-alpha.3(Sep 9, 2021)

  • v8.6.0-alpha.2(Sep 9, 2021)

    • Drop sublayers with no data even if the _subLayerProps prop contains (#6160)
    • Heatmap - expose additional properties (#6158)
    • pydeck: Enable custom_map_style and file encoding for HTML on Windows (#6121)
    • Additional reference points for bounding volume calculation - globe view (#6148)
    • CARTO: include API error at the exception message (#6143)
    • Bump luma.gl to 8.5.5 (#6132)
    • Fix Default Values in AttributeManager add method (#6130)
    • Fix TileLayer and Tile3DLayer visiblility (#6123)
    • Add geoColumn & columns props to CartoLayer (#6097)
    • Bug fixes in google overlay (#6083)
    • OrthographicView supports independent x/y zoom levels (#6116)
    • Only call layerFilter with top-level layers (#6049)
    • Add zero _offset to Tile3DLayer (#6108)
    • Fix MVTLayer autoHighlight with binary data (#6098)
    • Improve tile traversal in GlobeView (#6106)
    • Bump loaders to 3.0.8 (#6075)
    • Scatterplot layer: smooth edges prop (#6081)
    Source code(tar.gz)
    Source code(zip)
  • v8.5.7(Sep 4, 2021)

    • Drop sublayers with no data even if the _subLayerProps prop contains (#6160)
    • HeatmapLayer - expose additional properties (#6158)
    • GlobeView - Additional reference points for bounding volume calculation (#6148)
    Source code(tar.gz)
    Source code(zip)
  • v8.5.6(Aug 28, 2021)

  • v8.5.5(Aug 26, 2021)

    • Bump luma.gl to 8.5.5 (#6132)
    • Fix Default Values in AttributeManager add method (#6130)
    • Fix TileLayer and Tile3DLayer visiblility (#6123)
    Source code(tar.gz)
    Source code(zip)
  • v8.5.4(Aug 17, 2021)

    • Fix polygon offset in Tile3DLayer (#6108)
    • Fix MVTLayer autoHighlight with binary data (#6098)
    • Improve tile traversal in GlobeView (#6106)
    • Bump loaders to 3.0.8 (#6075)
    Source code(tar.gz)
    Source code(zip)
Owner
Vis.gl
Frameworks for WebGL-powered large-scale data visualization
Vis.gl
Summary statistics of geospatial raster datasets based on vector geometries.

rasterstats rasterstats is a Python module for summarizing geospatial raster datasets based on vector geometries. It includes functions for zonal stat

Matthew Perry 396 Jan 22, 2022
gpdvega is a bridge between GeoPandas and Altair that allows to seamlessly chart geospatial data

gpdvega gpdvega is a bridge between GeoPandas a geospatial extension of Pandas and the declarative statistical visualization library Altair, which all

Ilia Timofeev 46 Dec 31, 2021
Geospatial Image Processing for Python

GIPPY Gippy is a Python library for image processing of geospatial raster data. The core of the library is implemented as a C++ library, libgip, with

GIPIT 80 Aug 17, 2021
leafmap - A Python package for geospatial analysis and interactive mapping in a Jupyter environment.

A Python package for geospatial analysis and interactive mapping with minimal coding in a Jupyter environment

Qiusheng Wu 1.1k Jan 25, 2022
GeoNode is an open source platform that facilitates the creation, sharing, and collaborative use of geospatial data.

Table of Contents What is GeoNode? Try out GeoNode Install Learn GeoNode Development Contributing Roadmap Showcase Most useful links Licensing What is

GeoNode Development Team 1.1k Jan 27, 2022
🌐 Local tile server for viewing geospatial raster files with ipyleaflet

?? Local Tile Server for Geospatial Rasters Need to visualize a rather large raster (gigabytes) you have locally? This is for you. A Flask application

Bane Sullivan 111 Jan 16, 2022
Minimum Bounding Box of Geospatial data

BBOX Problem definition: The spatial data users often are required to obtain the coordinates of the minimum bounding box of vector and raster data in

Ali Khosravi Kazazi 1 Dec 5, 2021
h3-js provides a JavaScript version of H3, a hexagon-based geospatial indexing system.

h3-js The h3-js library provides a pure-JavaScript version of the H3 Core Library, a hexagon-based geographic grid system. It can be used either in No

Uber Open Source 520 Jan 28, 2022
🌐 Local tile server for viewing geospatial raster files with ipyleaflet or folium

?? Local Tile Server for Geospatial Rasters Need to visualize a rather large (gigabytes) raster you have locally? This is for you. A Flask application

Bane Sullivan 111 Jan 16, 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 47 Nov 18, 2021
A part of HyRiver software stack for handling geospatial data manipulations

Package Description Status PyNHD Navigate and subset NHDPlus (MR and HR) using web services Py3DEP Access topographic data through National Map's 3DEP

Taher Chegini 4 Jan 10, 2022
Simple, concise geographical visualization in Python

Geographic visualizations for HoloViews. Build Status Coverage Latest dev release Latest release Docs What is it? GeoViews is a Python library that ma

HoloViz 391 Jan 13, 2022
Compare outputs between layers written in Tensorflow and layers written in Pytorch

Compare outputs of Wasserstein GANs between TensorFlow vs Pytorch This is our testing module for the implementation of improved WGAN in Pytorch Prereq

Hung Nguyen 70 Dec 17, 2021
High-level geospatial data visualization library for Python.

geoplot: geospatial data visualization geoplot is a high-level Python geospatial plotting library. It's an extension to cartopy and matplotlib which m

Aleksey Bilogur 981 Jan 16, 2022
πŸŽ† A visualization of the CapsNet layers to better understand how it works

CapsNet-Visualization For more information on capsule networks check out my Medium articles here and here. Setup Use pip to install the required pytho

Nick Bourdakos 383 Jan 19, 2022
This is a super simple visualization toolbox (script) for transformer attention visualization ✌

Trans_attention_vis This is a super simple visualization toolbox (script) for transformer attention visualization ✌ 1. How to prepare your attention m

Mingyu Wang 2 Jan 12, 2022
Rasterio reads and writes geospatial raster datasets

Rasterio Rasterio reads and writes geospatial raster data. Geographic information systems use GeoTIFF and other formats to organize and store gridded,

Mapbox 1.7k Jan 31, 2022
Summary statistics of geospatial raster datasets based on vector geometries.

rasterstats rasterstats is a Python module for summarizing geospatial raster datasets based on vector geometries. It includes functions for zonal stat

Matthew Perry 396 Jan 22, 2022
gpdvega is a bridge between GeoPandas and Altair that allows to seamlessly chart geospatial data

gpdvega gpdvega is a bridge between GeoPandas a geospatial extension of Pandas and the declarative statistical visualization library Altair, which all

Ilia Timofeev 46 Dec 31, 2021
Geospatial Image Processing for Python

GIPPY Gippy is a Python library for image processing of geospatial raster data. The core of the library is implemented as a C++ library, libgip, with

GIPIT 80 Aug 17, 2021
leafmap - A Python package for geospatial analysis and interactive mapping in a Jupyter environment.

A Python package for geospatial analysis and interactive mapping with minimal coding in a Jupyter environment

Qiusheng Wu 1.1k Jan 25, 2022
TorchGeo is a PyTorch domain library, similar to torchvision, that provides datasets, transforms, samplers, and pre-trained models specific to geospatial data.

TorchGeo is a PyTorch domain library, similar to torchvision, that provides datasets, transforms, samplers, and pre-trained models specific to geospatial data.

Microsoft 572 Feb 1, 2022
GeoNode is an open source platform that facilitates the creation, sharing, and collaborative use of geospatial data.

Table of Contents What is GeoNode? Try out GeoNode Install Learn GeoNode Development Contributing Roadmap Showcase Most useful links Licensing What is

GeoNode Development Team 1.1k Jan 27, 2022
🌐 Local tile server for viewing geospatial raster files with ipyleaflet

?? Local Tile Server for Geospatial Rasters Need to visualize a rather large raster (gigabytes) you have locally? This is for you. A Flask application

Bane Sullivan 111 Jan 16, 2022
PySpark bindings for H3, a hierarchical hexagonal geospatial indexing system

h3-pyspark: Uber's H3 Hexagonal Hierarchical Geospatial Indexing System in PySpark PySpark bindings for the H3 core library. For available functions,

Kevin Schaich 2 Jan 5, 2022
Minimum Bounding Box of Geospatial data

BBOX Problem definition: The spatial data users often are required to obtain the coordinates of the minimum bounding box of vector and raster data in

Ali Khosravi Kazazi 1 Dec 5, 2021
h3-js provides a JavaScript version of H3, a hexagon-based geospatial indexing system.

h3-js The h3-js library provides a pure-JavaScript version of the H3 Core Library, a hexagon-based geographic grid system. It can be used either in No

Uber Open Source 520 Jan 28, 2022
🌐 Local tile server for viewing geospatial raster files with ipyleaflet or folium

?? Local Tile Server for Geospatial Rasters Need to visualize a rather large (gigabytes) raster you have locally? This is for you. A Flask application

Bane Sullivan 111 Jan 16, 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 47 Nov 18, 2021