A Node.js map tile library for PostGIS and torque.js, with CartoCSS styling

Related tags

Maps Windshaft
Overview

Windshaft Build Status

A Node.js map tile library for PostGIS and torque.js, with CartoCSS styling.

  • Can render arbitrary SQL queries
  • Generates image and UTFGrid interactivity tiles
  • Accepts, stores, serves, and applies map styles written in CartoCSS
  • Supports re-projections

Windshaft is a library used by CARTO, a location intelligence and data visualization tool.

Examples

Playing with colors by @andrewxhill Circumpolar Arctic Vegetation by @andrewxhill Bolivia deforestation by @saleiva Traffic accidents by @rochoa

Build

Requirements:

Install

To fetch and build all node-based dependencies, run:

$ npm install

Installing Mapnik

Note: only needed while developing Mapnik and/or node-mapnik.

node-mapnik comes compiled for some platforms and architectures, in case you need it you can always compile, package and install it manually. The recommended option is via binaries, see mason and install Mapnik like:

$ mason install mapnik <version>

Where <version> is the latest released version of Mapnik. You can also use other alternatives:

Usage

Probably one of the more advanced uses of Windshaft library can be found at Windshaft-cartodb project.

Test

$ npm test

Coverage

$ npm run cover

Open ./coverage/lcov-report/index.html.

Docker support

We provide docker images just for testing and continuous integration purposes:

You can find instructions to install Docker, download, and update images here.

Useful npm scripts

Run test in a docker image with a specific Node.js version:

$ DOCKER_IMAGE=<docker-image-tag> NODE_VERSION=<nodejs-version> npm run test:docker

Where:

  • <docker-image-tag>: the tag of required docker image, e.g. carto/nodejs-xenial-pg1121:latest
  • <nodejs-version>: the Node.js version, e.g. 10.15.1

In case you need to debug:

$ DOCKER_IMAGE=<docker-image-tag> npm run docker:bash

Troubleshooting

Fonts: Invalid value for text-face-name

You need to install fonts at system level to be able to use them. If you face an issue like Invalid value for text-face-name, the type font is expected. DejaVu Sans Book (of type string) was given. probably you don't have the required fonts, try to install DejaVu fonts or any other font needed.

Contributing

Versioning

We follow SemVer for versioning. For available versions, see the tags on this repository.

License

This project is licensed under the BSD 3-clause "New" or "Revised" License. See the LICENSE file for details.

Comments
  • acceptance/server.js test failing

    acceptance/server.js test failing

    uncaught undefined: Error: Images not equal(18.0864): /tmp/6223843058105558 /home/src/cartodb/Windshaft/test/fixtures/test_table_13_4011_3088.png at /home/src/cartodb/Windshaft/test/support/assert.js:29:27 at ChildProcess.exithandler (child_process.js:100:7) at ChildProcess.emit (events.js:67:17) at ChildProcess.onexit (child_process.js:192:12)

    See the image difference here: http://strk.keybit.net/tmp/acceptance_server_imgdiff.png

    Looks like bigger point size is expected.

    bug 
    opened by strk 28
  • grid request return wrong error when the table is empty

    grid request return wrong error when the table is empty

    steps to reproduce:

    1.- create a empty table 2.- GET http://development.localhost.lan:8181/tiles/untitled_table_7/4/6/6.grid.json?interactivity=cartodb_id&cache_buster=1351525379925&map_key=085c3759cab4c9d663dedfbf37374d7f6fd8327a

    the following error is in the response

    {
    error: "Cannot call method 'replace' of undefined"
    }
    

    it should return an empty grid or something useful description

    opened by javisantana 27
  • CartoCSS property text-wrap-width not working

    CartoCSS property text-wrap-width not working

    Moved to this repo from https://github.com/CartoDB/cartodb/issues/11768

    Context

    Using the property text-wrap-width to wrap long text labels

    Steps to Reproduce

    1. Label features
    2. Add the text property text-wrap-width with a value to the labeling CartoCSS

    Current Result

    screen shot 2017-03-15 at 12 05 00 pm

    Expected result

    screen shot 2017-03-15 at 12 05 18 pm

    Browser and version

    Chrome

    cc @makella @rochoa

    bug 
    opened by dgaubert 25
  • Clearing the renderers cache leaves something slowing down requests

    Clearing the renderers cache leaves something slowing down requests

    I've been debugging this for two days now so I tought I'd file a ticket before getting mad.

    The "master" branch of Windshaft shows a slowdown everytime caches are cleared due to "cache_buster". I suspect (but didn't verify) that the same slowdown happens when caches are cleared by their natural expiration (one minute by default). Only the use of "cache_buster" makes this more obvious, especially when you send 1000 requests and clear the caches at each and every one.

    The visible effect of expiring the caches at every request over 1000 requests, is that each chunk of 1000 requests are served on an average of twice the time it took serving the precedent chunk.

    Note that as of 09426f80f09f722431ec38e43a367c44794c0e31 it is not enough to include a "cache_buster=1" parameter in order to obtain cache clearing but you actually have to pass a different value on every request. The benchmark.js file needs manual editing to change the cache clearing strategy. By default it clears the cache every 16 requests as of ed6b79b

    bug 
    opened by strk 24
  • tiler shutdowns sometimes in OSX

    tiler shutdowns sometimes in OSX

    the trace is

    
    /Users/javi/wrk/viz/cartodb/Windshaft-cartodb/node_modules/step/lib/step.js:39
            throw arguments[0];
                           ^
    Redis connection to 127.0.0.1:6379 failed - connect EADDRINUSE
    

    this is not a problem in production but is a PITA for development

    opened by javisantana 23
  • Does windshaft now depend on cartodb enabled databases ?

    Does windshaft now depend on cartodb enabled databases ?

    I get this error upon sending a map config to Windshaft:

    {"errors":["function cdb_querytablestext(unknown) does not exist"]}
    

    Does this mean Windshaft now requires a cartodb-enabled database ? ( this wasn't the case until "recently" )

    \cc @rochoa @pramsey

    opened by strk 16
  • Race condition with external resources

    Race condition with external resources

    Sometimes the localized external resources needed by CartoCSS are removed from disk before their corresponding style expires.

    This seems to be due to the way filesystem path for the resources is determined. Originally reported here: https://groups.google.com/forum/#!topic/cartodb/m9t4iFdM-ok/discussion

    Jira ref: https://cartodb.atlassian.net/browse/CDB-67

    bug 
    opened by strk 16
  • 14 failing test on

    14 failing test on "make check"

    With current master, failures detail:

      480 passing (15s)
      7 pending
      14 failing
    
      1) external resources "before each" hook:
         Error: ENOENT, no such file or directory '/tmp/windshaft-test/millstone'
          at Object.fs.readdirSync (fs.js:654:18)
          at rmdir_recursive_sync (/usr/src/node/modules/Windshaft/test/acceptance/external_resources.js:12:18)
          at Context.<anonymous> (/usr/src/node/modules/Windshaft/test/acceptance/external_resources.js:36:9)
          at Hook.Runnable.run (/usr/src/node/modules/Windshaft/node_modules/mocha/lib/runnable.js:217:15)
          at next (/usr/src/node/modules/Windshaft/node_modules/mocha/lib/runner.js:258:10)
          at Object._onImmediate (/usr/src/node/modules/Windshaft/node_modules/mocha/lib/runner.js:275:5)
          at processImmediate [as _immediateCallback] (timers.js:330:15)
    
      2) external resources "after each" hook:
         TypeError: Cannot call method 'close' of undefined
          at Context.<anonymous> (/usr/src/node/modules/Windshaft/test/acceptance/external_resources.js:59:25)
          at Hook.Runnable.run (/usr/src/node/modules/Windshaft/node_modules/mocha/lib/runnable.js:217:15)
          at next (/usr/src/node/modules/Windshaft/node_modules/mocha/lib/runner.js:258:10)
          at Object._onImmediate (/usr/src/node/modules/Windshaft/node_modules/mocha/lib/runner.js:275:5)
          at processImmediate [as _immediateCallback] (timers.js:330:15)
    
      3) torque png renderer tiles should support marker-file with url:
         Uncaught 
      AssertionError: Error: Images are not similar (got 0.044952392578125 similarity, expected 0.02)
          at /usr/src/node/modules/Windshaft/test/acceptance/torque_png.js:147:36
          at /usr/src/node/modules/Windshaft/test/support/assert.js:102:9
          at imagesAreSimilar (/usr/src/node/modules/Windshaft/test/support/assert.js:146:9)
          at Function.assert.imageEqualsFile (/usr/src/node/modules/Windshaft/test/support/assert.js:96:5)
          at /usr/src/node/modules/Windshaft/test/acceptance/torque_png.js:146:32
          at /usr/src/node/modules/Windshaft/test/support/assert.js:102:9
          at imagesAreSimilar (/usr/src/node/modules/Windshaft/test/support/assert.js:146:9)
          at Function.assert.imageEqualsFile (/usr/src/node/modules/Windshaft/test/support/assert.js:96:5)
          at /usr/src/node/modules/Windshaft/test/acceptance/torque_png.js:144:24
          at /usr/src/node/modules/Windshaft/test/support/test_client.js:87:16
          at Function.<anonymous> (/usr/src/node/modules/Windshaft/lib/windshaft/backends/tile.js:61:13)
          at next (/usr/src/node/modules/Windshaft/node_modules/step/lib/step.js:51:23)
          at /usr/src/node/modules/Windshaft/lib/windshaft/renderers/base_adaptor.js:17:28
          at /usr/src/node/modules/Windshaft/lib/windshaft/renderers/torque/png_renderer.js:100:21
    
      4) static_maps center image:
         Error: Postgis Plugin: Bad connection
    Connection string: ' dbname=windshaft_test user=postgres connect_timeout=4'
      encountered during parsing of layer 'layer0' in Layer
    
    
      5) static_maps center image with invalid basemap:
         Error: Postgis Plugin: Bad connection
    Connection string: ' dbname=windshaft_test user=postgres connect_timeout=4'
      encountered during parsing of layer 'layer0' in Layer
    
    
      6) static_maps bbox:
         Error: Postgis Plugin: Bad connection
    Connection string: ' dbname=windshaft_test user=postgres connect_timeout=4'
      encountered during parsing of layer 'layer0' in Layer
    
    
      7) static_maps should not fail for coordinates out of range:
         Error: Postgis Plugin: Bad connection
    Connection string: ' dbname=windshaft_test user=postgres connect_timeout=4'
      encountered during parsing of layer 'layer0' in Layer
    
    
      8) static_maps should keep failing for other errors:  
         Uncaught AssertionError: null == true
          at /usr/src/node/modules/Windshaft/test/integration/static_maps.js:215:20
          at Function.handleImage (/usr/src/node/modules/Windshaft/lib/windshaft/backends/preview.js:71:20)
          at next (/usr/src/node/modules/Windshaft/node_modules/step/lib/step.js:51:23)
          at next (/usr/src/node/modules/Windshaft/node_modules/step/lib/step.js:54:7)
          at EventEmitter.CacheEntry.setReady (/usr/src/node/modules/Windshaft/lib/windshaft/cache/cache_entry.js:49:9)
          at Function.returnCallback (/usr/src/node/modules/Windshaft/lib/windshaft/renderers/renderer_factory.js:98:20)
          at next (/usr/src/node/modules/Windshaft/node_modules/step/lib/step.js:51:23)
          at next (/usr/src/node/modules/Windshaft/node_modules/step/lib/step.js:54:7)
          at rendererGetTileQueueFinish (/usr/src/node/modules/Windshaft/lib/windshaft/renderers/blend/factory.js:103:20)
          at notify (/usr/src/node/modules/Windshaft/node_modules/queue-async/queue.js:45:26)
          at /usr/src/node/modules/Windshaft/node_modules/queue-async/queue.js:35:11
          at cb (/usr/src/node/modules/Windshaft/lib/windshaft/renderers/blend/factory.js:54:28)
          at Function.returnCallback (/usr/src/node/modules/Windshaft/lib/windshaft/renderers/renderer_factory.js:98:20)
          at next (/usr/src/node/modules/Windshaft/node_modules/step/lib/step.js:51:23)
          at next (/usr/src/node/modules/Windshaft/node_modules/step/lib/step.js:54:7)
          at Function.returnCallback (/usr/src/node/modules/Windshaft/lib/windshaft/renderers/mapnik/factory.js:245:13)
          at MapnikSource.next (/usr/src/node/modules/Windshaft/node_modules/step/lib/step.js:51:23)
          at MapnikSource.g (events.js:180:16)
          at MapnikSource.EventEmitter.emit (events.js:95:17)
          at /usr/src/node/modules/Windshaft/node_modules/tilelive-mapnik/lib/mapnik_backend.js:142:20
          at process._tickCallback (node.js:415:13)
    
      9) render_cache can generate a tilelive object:
         Uncaught TypeError: Cannot call method 'get' of undefined
          at EventEmitter.CacheEntry.get (/usr/src/node/modules/Windshaft/lib/windshaft/cache/cache_entry.js:34:26)
          at /usr/src/node/modules/Windshaft/test/unit/render_cache.test.js:104:32
          at EventEmitter.CacheEntry.setReady (/usr/src/node/modules/Windshaft/lib/windshaft/cache/cache_entry.js:49:9)
          at Function.returnCallback (/usr/src/node/modules/Windshaft/lib/windshaft/renderers/renderer_factory.js:98:20)
          at next (/usr/src/node/modules/Windshaft/node_modules/step/lib/step.js:51:23)
          at next (/usr/src/node/modules/Windshaft/node_modules/step/lib/step.js:54:7)
          at Function.returnCallback (/usr/src/node/modules/Windshaft/lib/windshaft/renderers/mapnik/factory.js:245:13)
          at MapnikSource.next (/usr/src/node/modules/Windshaft/node_modules/step/lib/step.js:51:23)
          at MapnikSource.g (events.js:180:16)
          at MapnikSource.EventEmitter.emit (events.js:95:17)
          at /usr/src/node/modules/Windshaft/node_modules/tilelive-mapnik/lib/mapnik_backend.js:142:20
          at process._tickCallback (node.js:415:13)
    
      10) render_cache can generate > 1 tilelive object:
         Uncaught AssertionError: 1 == 2
          at /usr/src/node/modules/Windshaft/test/unit/render_cache.test.js:117:24
          at EventEmitter.CacheEntry.setReady (/usr/src/node/modules/Windshaft/lib/windshaft/cache/cache_entry.js:49:9)
          at Function.returnCallback (/usr/src/node/modules/Windshaft/lib/windshaft/renderers/renderer_factory.js:98:20)
          at next (/usr/src/node/modules/Windshaft/node_modules/step/lib/step.js:51:23)
          at next (/usr/src/node/modules/Windshaft/node_modules/step/lib/step.js:54:7)
          at Function.returnCallback (/usr/src/node/modules/Windshaft/lib/windshaft/renderers/mapnik/factory.js:245:13)
          at MapnikSource.next (/usr/src/node/modules/Windshaft/node_modules/step/lib/step.js:51:23)
          at MapnikSource.g (events.js:180:16)
          at MapnikSource.EventEmitter.emit (events.js:95:17)
          at /usr/src/node/modules/Windshaft/node_modules/tilelive-mapnik/lib/mapnik_backend.js:142:20
          at process._tickCallback (node.js:415:13)
    
      11) render_cache can delete all tilelive objects when reset:
         Uncaught AssertionError: 1 == 2
          at /usr/src/node/modules/Windshaft/test/unit/render_cache.test.js:145:24
          at EventEmitter.CacheEntry.setReady (/usr/src/node/modules/Windshaft/lib/windshaft/cache/cache_entry.js:49:9)
          at Function.returnCallback (/usr/src/node/modules/Windshaft/lib/windshaft/renderers/renderer_factory.js:98:20)
          at next (/usr/src/node/modules/Windshaft/node_modules/step/lib/step.js:51:23)
          at next (/usr/src/node/modules/Windshaft/node_modules/step/lib/step.js:54:7)
          at Function.returnCallback (/usr/src/node/modules/Windshaft/lib/windshaft/renderers/mapnik/factory.js:245:13)
          at MapnikSource.next (/usr/src/node/modules/Windshaft/node_modules/step/lib/step.js:51:23)
          at MapnikSource.g (events.js:180:16)
          at MapnikSource.EventEmitter.emit (events.js:95:17)
          at /usr/src/node/modules/Windshaft/node_modules/tilelive-mapnik/lib/mapnik_backend.js:142:20
          at process._tickCallback (node.js:415:13)
    
      12) render_cache can delete only related tilelive objects when reset:
         Uncaught AssertionError: 1 == 3
          at /usr/src/node/modules/Windshaft/test/unit/render_cache.test.js:164:28
          at EventEmitter.CacheEntry.setReady (/usr/src/node/modules/Windshaft/lib/windshaft/cache/cache_entry.js:49:9)
          at Function.returnCallback (/usr/src/node/modules/Windshaft/lib/windshaft/renderers/renderer_factory.js:98:20)
          at next (/usr/src/node/modules/Windshaft/node_modules/step/lib/step.js:51:23)
          at next (/usr/src/node/modules/Windshaft/node_modules/step/lib/step.js:54:7)
          at Function.returnCallback (/usr/src/node/modules/Windshaft/lib/windshaft/renderers/mapnik/factory.js:245:13)
          at MapnikSource.next (/usr/src/node/modules/Windshaft/node_modules/step/lib/step.js:51:23)
          at MapnikSource.g (events.js:180:16)
          at MapnikSource.EventEmitter.emit (events.js:95:17)
          at /usr/src/node/modules/Windshaft/node_modules/tilelive-mapnik/lib/mapnik_backend.js:142:20
          at process._tickCallback (node.js:415:13)
    
      13) render_cache clears both auth and non-auth renderer caches on reset:
         Uncaught AssertionError: 2 == 3
          at /usr/src/node/modules/Windshaft/test/unit/render_cache.test.js:195:28
          at EventEmitter.CacheEntry.setReady (/usr/src/node/modules/Windshaft/lib/windshaft/cache/cache_entry.js:49:9)
          at Function.returnCallback (/usr/src/node/modules/Windshaft/lib/windshaft/renderers/renderer_factory.js:98:20)
          at next (/usr/src/node/modules/Windshaft/node_modules/step/lib/step.js:51:23)
          at next (/usr/src/node/modules/Windshaft/node_modules/step/lib/step.js:54:7)
          at Function.returnCallback (/usr/src/node/modules/Windshaft/lib/windshaft/renderers/mapnik/factory.js:245:13)
          at MapnikSource.next (/usr/src/node/modules/Windshaft/node_modules/step/lib/step.js:51:23)
          at MapnikSource.g (events.js:180:16)
          at MapnikSource.EventEmitter.emit (events.js:95:17)
          at /usr/src/node/modules/Windshaft/node_modules/tilelive-mapnik/lib/mapnik_backend.js:142:20
          at process._tickCallback (node.js:415:13)
    
      14) render_cache can purge all tilelive objects:
         Uncaught AssertionError: 1 == 3
          at /usr/src/node/modules/Windshaft/test/unit/render_cache.test.js:220:28
          at EventEmitter.CacheEntry.setReady (/usr/src/node/modules/Windshaft/lib/windshaft/cache/cache_entry.js:49:9)
          at Function.returnCallback (/usr/src/node/modules/Windshaft/lib/windshaft/renderers/renderer_factory.js:98:20)
          at next (/usr/src/node/modules/Windshaft/node_modules/step/lib/step.js:51:23)
          at next (/usr/src/node/modules/Windshaft/node_modules/step/lib/step.js:54:7)
          at Function.returnCallback (/usr/src/node/modules/Windshaft/lib/windshaft/renderers/mapnik/factory.js:245:13)
          at MapnikSource.next (/usr/src/node/modules/Windshaft/node_modules/step/lib/step.js:51:23)
          at MapnikSource.g (events.js:180:16)
          at MapnikSource.EventEmitter.emit (events.js:95:17)
          at /usr/src/node/modules/Windshaft/node_modules/tilelive-mapnik/lib/mapnik_backend.js:142:20
          at process._tickCallback (node.js:415:13)
    
    
    
    Cleaning up
    make: *** [test] Error 14
    
    opened by strk 15
  • include layers metadata in layergroup creation response

    include layers metadata in layergroup creation response

    When an user instanciate a layergroup we should send info to the client related to the layergroup. Currently we send

    {
    layergroup_id:'xxxx',
    last_updated:'...'
    }
    

    my proposal is send information per layer:

    {
    layergroup_id:'xxxx',
    last_updated:'...'
    meta: {
       0: {
          // attributes returned by the renderer
       },
       1: {
        }
    }
    }
    
    opened by javisantana 15
  • date columns are not included in interaction

    date columns are not included in interaction

    Create a layergroup including a date column in the interaction:

    http://examples.cartodb.com/tiles/layergroup/39bd87a9c1a2ff02c52d192076ad3999:0/0/0/0/0.grid.json

     sql: 'select * from ne_10m_populated_p_2',
     cartocss: '#layer { marker-fill: black; line-color: #333; marker-width: 3 }',
     interactivity: 'cartodb_id, name, updated_at'
    
    

    fetch a grid, update_at is not included

    test with:

    curl 'http://examples.cartodb.com/tiles/layergroup?config=%7B%22version%22%3A%221.0.0%22%2C%22stat_tag%22%3A%22API%22%2C%22layers%22%3A%5B%7B%22type%22%3A%22cartodb%22%2C%22options%22%3A%7B%22sql%22%3A%22select%20*%20from%20ne_10m_populated_p_2%22%2C%22cartocss%22%3A%22%23layer%20%7B%20marker-fill%3A%20black%3B%20line-color%3A%20%23333%3B%20marker-width%3A%203%20%7D%22%2C%22cartocss_version%22%3A%222.1.0%22%2C%22interactivity%22%3A%5B%22cartodb_id%22%2C%22name%22%2C%22updated_at%22%5D%7D%7D%5D%7D&callback=jQuery17207429363711271435_1388760113074&_=1388760113193'
    

    and fetching the tile:

    curl "http://examples.cartodb.com/tiles/layergroup/39bd87a9c1a2ff02c52d192076ad3999:0/0/0/0/0.grid.json"
    
    bug 
    opened by javisantana 15
  • 500 when requested table does not exist

    500 when requested table does not exist

    example query:

    http://development.localhost.lan:8181/tiles/undefined/4/9/6.png?sql=&style=

    it should return 404

    EDIT: updated title and test to add 404

    bug 
    opened by javisantana 15
  • Bump flat and mocha

    Bump flat and mocha

    Bumps flat to 5.0.2 and updates ancestor dependency mocha. These dependencies need to be updated together.

    Updates flat from 4.1.0 to 5.0.2

    Commits
    • e5ffd66 Release 5.0.2
    • fdb79d5 Update dependencies, refresh lockfile, format with standard.
    • e52185d Test against node 14 in CI.
    • 0189cb1 Avoid arrow function syntax.
    • f25d3a1 Release 5.0.1
    • 54cc7ad use standard formatting
    • 779816e drop dependencies
    • 2eea6d3 Bump lodash from 4.17.15 to 4.17.19
    • a61a554 Bump acorn from 7.1.0 to 7.4.0
    • 20ef0ef Fix prototype pollution on unflatten
    • Additional commits viewable in compare view
    Maintainer changes

    This version was pushed to npm by timoxley, a new releaser for flat since your current version.


    Updates mocha from 7.2.0 to 10.2.0

    Release notes

    Sourced from mocha's releases.

    v10.2.0

    10.2.0 / 2022-12-11

    :tada: Enhancements

    • #4945: API: add possibility to decorate ESM name before import (@​j0tunn)

    :bug: Fixes

    :book: Documentation

    v10.1.0

    10.1.0 / 2022-10-16

    :tada: Enhancements

    :nut_and_bolt: Other

    v10.0.0

    10.0.0 / 2022-05-01

    :boom: Breaking Changes

    :nut_and_bolt: Other

    ... (truncated)

    Changelog

    Sourced from mocha's changelog.

    10.2.0 / 2022-12-11

    :tada: Enhancements

    • #4945: API: add possibility to decorate ESM name before import (@​j0tunn)

    :bug: Fixes

    :book: Documentation

    10.1.0 / 2022-10-16

    :tada: Enhancements

    :nut_and_bolt: Other

    10.0.0 / 2022-05-01

    :boom: Breaking Changes

    :nut_and_bolt: Other

    ... (truncated)

    Commits

    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] 0
  • Can't get torque map marker with relative path

    Can't get torque map marker with relative path

    Hi,

    I have a windshaft service and I need to get torque map but the marker based on a relative path doesn't works. In the root folder I have a images folder whit some images.

    { "type": "torque", "options": { "cartocss_version": "2.0.0", "sql": "SELECT geometry FROM mytable", "cartocss":" Map { -torque-frame-count:1; -torque-animation-duration:10; -torque-time-attribute:'total_count'; -torque-aggregation-function:'sum(total_count)'; -torque-resolution:2; -torque-data-aggregation:linear } #table_2_point { image-filters:colorize-alpha(blue,cyan,lightgreen,yellow,orange,red); marker-file:url('./images/torque_marker.png'); marker-width: 4; marker-fill-opacity: 0.3*[value]; [zoom > 6] { marker-width: 6; marker-fill-opacity: 0.4*[value]; } [zoom > 7] { marker-width: 9; marker-fill-opacity: 0.4*[value]; } } " } }

    I alway get the error: Couldn't get marker-file ./images/torque_marker.png

    Thanks, Daniele

    opened by DSpada 2
  • Bump express from 4.16.3 to 4.17.3

    Bump express from 4.16.3 to 4.17.3

    Bumps express from 4.16.3 to 4.17.3.

    Release notes

    Sourced from express's releases.

    4.17.3

    4.17.2

    4.17.1

    • Revert "Improve error message for null/undefined to res.status"

    4.17.0

    • Add express.raw to parse bodies into Buffer
    • Add express.text to parse bodies into string

    ... (truncated)

    Changelog

    Sourced from express's changelog.

    4.17.3 / 2022-02-16

    4.17.2 / 2021-12-16

    4.17.1 / 2019-05-25

    ... (truncated)

    Commits

    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] 0
  • Bump qs and express

    Bump qs and express

    Bumps qs to 6.5.3 and updates ancestor dependency express. These dependencies need to be updated together.

    Updates qs from 6.5.2 to 6.5.3

    Changelog

    Sourced from qs's changelog.

    6.5.3

    • [Fix] parse: ignore __proto__ keys (#428)
    • [Fix] utils.merge: avoid a crash with a null target and a truthy non-array source
    • [Fix] correctly parse nested arrays
    • [Fix] stringify: fix a crash with strictNullHandling and a custom filter/serializeDate (#279)
    • [Fix] utils: merge: fix crash when source is a truthy primitive & no options are provided
    • [Fix] when parseArrays is false, properly handle keys ending in []
    • [Fix] fix for an impossible situation: when the formatter is called with a non-string value
    • [Fix] utils.merge: avoid a crash with a null target and an array source
    • [Refactor] utils: reduce observable [[Get]]s
    • [Refactor] use cached Array.isArray
    • [Refactor] stringify: Avoid arr = arr.concat(...), push to the existing instance (#269)
    • [Refactor] parse: only need to reassign the var once
    • [Robustness] stringify: avoid relying on a global undefined (#427)
    • [readme] remove travis badge; add github actions/codecov badges; update URLs
    • [Docs] Clean up license text so it’s properly detected as BSD-3-Clause
    • [Docs] Clarify the need for "arrayLimit" option
    • [meta] fix README.md (#399)
    • [meta] add FUNDING.yml
    • [actions] backport actions from main
    • [Tests] always use String(x) over x.toString()
    • [Tests] remove nonexistent tape option
    • [Dev Deps] backport from main
    Commits
    • 298bfa5 v6.5.3
    • ed0f5dc [Fix] parse: ignore __proto__ keys (#428)
    • 691e739 [Robustness] stringify: avoid relying on a global undefined (#427)
    • 1072d57 [readme] remove travis badge; add github actions/codecov badges; update URLs
    • 12ac1c4 [meta] fix README.md (#399)
    • 0338716 [actions] backport actions from main
    • 5639c20 Clean up license text so it’s properly detected as BSD-3-Clause
    • 51b8a0b add FUNDING.yml
    • 45f6759 [Fix] fix for an impossible situation: when the formatter is called with a no...
    • f814a7f [Dev Deps] backport from main
    • Additional commits viewable in compare view

    Updates express from 4.16.3 to 4.18.2

    Release notes

    Sourced from express's releases.

    4.18.2

    4.18.1

    • Fix hanging on large stack of sync routes

    4.18.0

    ... (truncated)

    Changelog

    Sourced from express's changelog.

    4.18.2 / 2022-10-08

    4.18.1 / 2022-04-29

    • Fix hanging on large stack of sync routes

    4.18.0 / 2022-04-25

    ... (truncated)

    Commits

    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] 0
  • Bump tar from 4.4.13 to 4.4.19

    Bump tar from 4.4.13 to 4.4.19

    Bumps tar from 4.4.13 to 4.4.19.

    Commits
    • 9a6faa0 4.4.19
    • 70ef812 drop dirCache for symlink on all platforms
    • 3e35515 4.4.18
    • 52b09e3 fix: prevent path escape using drive-relative paths
    • bb93ba2 fix: reserve paths properly for unicode, windows
    • 2f1bca0 fix: prune dirCache properly for unicode, windows
    • 9bf70a8 4.4.17
    • 6aafff0 fix: skip extract if linkpath is stripped entirely
    • 5c5059a fix: reserve paths case-insensitively
    • fd6accb 4.4.16
    • 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 
    opened by dependabot[bot] 0
  • Bump path-parse from 1.0.6 to 1.0.7

    Bump path-parse from 1.0.6 to 1.0.7

    Bumps path-parse from 1.0.6 to 1.0.7.

    Commits

    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] 0
Owner
CARTO
The leading platform for Location Intelligence and Spatial Data Science
CARTO
Serverless raster and vector map tile generation using Mapnik and AWS Lambda

tilegarden ??️ ?? Contents About Usage Deployment to AWS Additional Configuration Options Required AWS Permissions Features Configuration Selection an

Azavea 89 Dec 22, 2022
Implements the tilelive API for generating vector tiles from PostGIS

tilelive-postgis Implements the tilelive API for generating mapnik vector tiles from PostGIS. Installation npm install @mapbox/tilelive tilelive-postg

Stepan Kuzmin 50 Dec 12, 2022
Utility to warm up your tile server cache

TileMantle A tool to warm up your tile server cache. Give it a URL template, geometry, and list of zoom levels and it will request tiles incrementally

Natural Atlas 34 Sep 12, 2022
This map is tracking the position of ISS(international space setallite) at every 1 second. I use Nasa's "where the iss" API and "Leaflet.js" for the map.

ISS-tracking-map About This map is tracking the position of ISS(international space setallite) at every 1 second. I use Nasa's "where the iss" API and

Waz.sheeran 2 Oct 25, 2021
Lightweight Node.js isochrone map server

Galton Lightweight Node.js isochrone server. Build isochrones using OSRM, Turf and concaveman. Francis Galton is the author of the first known isochro

Urbica 266 Dec 17, 2022
jQuery Vector Map Library

This project is a heavily modified version of jVectorMap as it was in April of 2012. I chose to start fresh rather than fork their project as my inten

10 Best Design 1.8k Dec 28, 2022
jQuery Vector Map Library

This project is a heavily modified version of jVectorMap as it was in April of 2012. I chose to start fresh rather than fork their project as my inten

10 Best Design 1.8k Dec 28, 2022
A library that makes Image Map Area responsive

A library that makes Image Map Area responsive

elenh 1 Jan 21, 2022
:ukraine: A self-hosted app for keeping track of employee wellbeing and dislocation during the Russo-Ukrainian war, with an interactive map.

Helping organizations stay together and help their members in times of disaster On February 24th, 2022, the lives of the entire Ukrainian nation were

MacPaw Inc. 111 Dec 15, 2022
JavaScript WebGL 3D map rendering engine

VTS Browser JS is a powerful JavaScript 3D map rendering engine with a very small footprint (about 163 kB of gziped JS code). It provides almost all f

Melown Technologies, SE 203 Dec 7, 2022
Mapbox Visual for Power BI - High performance, custom map visuals for Power BI dashboards

Mapbox Visual for Microsoft Power BI Make sense of your big & dynamic location data with the Mapbox Visual for Power BI. Quickly design high-performan

Mapbox 121 Nov 22, 2022
Add time dimension capabilities on a Leaflet map.

Leaflet TimeDimension Add time dimension capabilities on a Leaflet map. Examples and basic usage API L.Map L.TimeDimension L.TimeDimension.Layer L.Tim

SOCIB public code 379 Dec 23, 2022
A map tool with real-time collaboration 🗺️

Mapus Maps with real-time collaboration ??️ Mapus is a tool to explore and annotate collaboratively on a map. You can draw, add markers, lines, areas,

Alyssa X 3k Jan 4, 2023
3D web map rendering engine written in TypeScript using three.js

3D web map rendering engine written in TypeScript using three.js

HERE Technologies 1.2k Dec 30, 2022
Mind elixir is a free open source mind map core.

Mind-elixir is a framework agnostic mind map core

DJJo 1.4k Jan 2, 2023
Fast Map built for keys that are always fixed size uniformly distributed buffers.

turbo-hash-map Fast Map built for keys that are always fixed size uniformly distributed buffers. npm install turbo-hash-map Uses a prefix trie to map

Mathias Buus 39 Jun 20, 2022
Greasemonkey script to allow marking items on the interactive map of Elden Ring as completed.

Greasemonkey script (or Tampermonkey) to allow marking items on the interactive map of Elden Ring as completed. The interactive map is a Fextralife-project, all credits for the map go to them.

Daniel Tischner 6 Jun 19, 2022
Interactive map overlay for finding secrets hidden around the world of Lost Ark.

Lostark Map Overlay This is an interactive map overlay which is resizable, movable and can be kept up during gameplay for finding secrets hidden aroun

Omar Minaya 6 Dec 29, 2022
Generates an embeddable map that displays business info from an OSM object id.

# OSM Business Card Generates an embeddable map that displays business info from an OSM object id. Loads object type (n/w/r) and id from url parameter

Will Bennett 6 May 26, 2022