@deck.gl/carto 8.7.8 → 8.8.0-alpha.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/dist.dev.js +33261 -40106
- package/dist/es5/api/layer-map.js +60 -21
- package/dist/es5/api/layer-map.js.map +1 -1
- package/dist/es5/api/maps-api-common.js +1 -0
- package/dist/es5/api/maps-api-common.js.map +1 -1
- package/dist/es5/api/maps-v3-client.js +56 -31
- package/dist/es5/api/maps-v3-client.js.map +1 -1
- package/dist/es5/api/parseMap.js +14 -3
- package/dist/es5/api/parseMap.js.map +1 -1
- package/dist/es5/index.js +16 -0
- package/dist/es5/index.js.map +1 -1
- package/dist/es5/layers/carto-layer.js +35 -12
- package/dist/es5/layers/carto-layer.js.map +1 -1
- package/dist/es5/layers/h3-tile-layer.js +96 -0
- package/dist/es5/layers/h3-tile-layer.js.map +1 -0
- package/dist/es5/layers/h3-tileset-2d.js +165 -0
- package/dist/es5/layers/h3-tileset-2d.js.map +1 -0
- package/dist/es5/layers/quadkey-tile-layer.js +97 -0
- package/dist/es5/layers/quadkey-tile-layer.js.map +1 -0
- package/dist/es5/layers/quadkey-tileset-2d.js +89 -0
- package/dist/es5/layers/quadkey-tileset-2d.js.map +1 -0
- package/dist/esm/api/layer-map.js +39 -10
- package/dist/esm/api/layer-map.js.map +1 -1
- package/dist/esm/api/maps-api-common.js +1 -0
- package/dist/esm/api/maps-api-common.js.map +1 -1
- package/dist/esm/api/maps-v3-client.js +58 -30
- package/dist/esm/api/maps-v3-client.js.map +1 -1
- package/dist/esm/api/parseMap.js +15 -4
- package/dist/esm/api/parseMap.js.map +1 -1
- package/dist/esm/index.js +2 -0
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/layers/carto-layer.js +34 -7
- package/dist/esm/layers/carto-layer.js.map +1 -1
- package/dist/esm/layers/h3-tile-layer.js +61 -0
- package/dist/esm/layers/h3-tile-layer.js.map +1 -0
- package/dist/esm/layers/h3-tileset-2d.js +103 -0
- package/dist/esm/layers/h3-tileset-2d.js.map +1 -0
- package/dist/esm/layers/quadkey-tile-layer.js +61 -0
- package/dist/esm/layers/quadkey-tile-layer.js.map +1 -0
- package/dist/esm/layers/quadkey-tileset-2d.js +48 -0
- package/dist/esm/layers/quadkey-tileset-2d.js.map +1 -0
- package/dist.min.js +14 -14
- package/package.json +9 -8
- package/src/api/layer-map.ts +46 -10
- package/src/api/maps-api-common.ts +4 -3
- package/src/api/maps-v3-client.ts +78 -29
- package/src/api/parseMap.ts +20 -5
- package/src/index.ts +4 -0
- package/src/layers/{carto-layer.js → carto-layer.ts} +155 -22
- package/src/layers/h3-tile-layer.js +44 -0
- package/src/layers/h3-tileset-2d.js +82 -0
- package/src/layers/quadkey-tile-layer.js +42 -0
- package/src/layers/quadkey-tileset-2d.js +36 -0
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
|
|
5
|
+
Object.defineProperty(exports, "__esModule", {
|
|
6
|
+
value: true
|
|
7
|
+
});
|
|
8
|
+
exports.default = void 0;
|
|
9
|
+
|
|
10
|
+
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
|
|
11
|
+
|
|
12
|
+
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
|
|
13
|
+
|
|
14
|
+
var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
|
|
15
|
+
|
|
16
|
+
var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
|
|
17
|
+
|
|
18
|
+
var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
|
|
19
|
+
|
|
20
|
+
var _core = require("@deck.gl/core");
|
|
21
|
+
|
|
22
|
+
var _geoLayers = require("@deck.gl/geo-layers");
|
|
23
|
+
|
|
24
|
+
var _quadkeyTileset2d = _interopRequireDefault(require("./quadkey-tileset-2d"));
|
|
25
|
+
|
|
26
|
+
function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2.default)(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2.default)(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2.default)(this, result); }; }
|
|
27
|
+
|
|
28
|
+
function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
|
|
29
|
+
|
|
30
|
+
var renderSubLayers = function renderSubLayers(props) {
|
|
31
|
+
var data = props.data;
|
|
32
|
+
if (!data || !data.length) return null;
|
|
33
|
+
return new _geoLayers.QuadkeyLayer(props);
|
|
34
|
+
};
|
|
35
|
+
|
|
36
|
+
var QuadkeyTileLayer = function (_CompositeLayer) {
|
|
37
|
+
(0, _inherits2.default)(QuadkeyTileLayer, _CompositeLayer);
|
|
38
|
+
|
|
39
|
+
var _super = _createSuper(QuadkeyTileLayer);
|
|
40
|
+
|
|
41
|
+
function QuadkeyTileLayer() {
|
|
42
|
+
(0, _classCallCheck2.default)(this, QuadkeyTileLayer);
|
|
43
|
+
return _super.apply(this, arguments);
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
(0, _createClass2.default)(QuadkeyTileLayer, [{
|
|
47
|
+
key: "initializeState",
|
|
48
|
+
value: function initializeState() {
|
|
49
|
+
this.setState({
|
|
50
|
+
data: null,
|
|
51
|
+
tileJSON: null
|
|
52
|
+
});
|
|
53
|
+
}
|
|
54
|
+
}, {
|
|
55
|
+
key: "updateState",
|
|
56
|
+
value: function updateState(_ref) {
|
|
57
|
+
var props = _ref.props,
|
|
58
|
+
oldProps = _ref.oldProps,
|
|
59
|
+
context = _ref.context,
|
|
60
|
+
changeFlags = _ref.changeFlags;
|
|
61
|
+
|
|
62
|
+
if (changeFlags.dataChanged) {
|
|
63
|
+
var data = this.props.data;
|
|
64
|
+
var tileJSON = data;
|
|
65
|
+
data = tileJSON.tiles;
|
|
66
|
+
this.setState({
|
|
67
|
+
data: data,
|
|
68
|
+
tileJSON: tileJSON
|
|
69
|
+
});
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
}, {
|
|
73
|
+
key: "renderLayers",
|
|
74
|
+
value: function renderLayers() {
|
|
75
|
+
var _this$state = this.state,
|
|
76
|
+
data = _this$state.data,
|
|
77
|
+
tileJSON = _this$state.tileJSON;
|
|
78
|
+
var maxresolution = tileJSON.maxresolution;
|
|
79
|
+
var maxZoom = maxresolution - this.props.aggregationResLevel;
|
|
80
|
+
return [new _geoLayers.TileLayer(this.props, {
|
|
81
|
+
id: 'quadkey-tile-layer',
|
|
82
|
+
data: data,
|
|
83
|
+
getQuadkey: function getQuadkey(d) {
|
|
84
|
+
return d.id;
|
|
85
|
+
},
|
|
86
|
+
TilesetClass: _quadkeyTileset2d.default,
|
|
87
|
+
renderSubLayers: renderSubLayers,
|
|
88
|
+
maxZoom: maxZoom
|
|
89
|
+
})];
|
|
90
|
+
}
|
|
91
|
+
}]);
|
|
92
|
+
return QuadkeyTileLayer;
|
|
93
|
+
}(_core.CompositeLayer);
|
|
94
|
+
|
|
95
|
+
exports.default = QuadkeyTileLayer;
|
|
96
|
+
QuadkeyTileLayer.layerName = 'QuadkeyTileLayer';
|
|
97
|
+
//# sourceMappingURL=quadkey-tile-layer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/layers/quadkey-tile-layer.js"],"names":["renderSubLayers","props","data","length","QuadkeyLayer","QuadkeyTileLayer","setState","tileJSON","oldProps","context","changeFlags","dataChanged","tiles","state","maxresolution","maxZoom","aggregationResLevel","TileLayer","id","getQuadkey","d","TilesetClass","QuadkeyTileset2D","CompositeLayer","layerName"],"mappings":";;;;;;;;;;;;;;;;;;;AAAA;;AACA;;AACA;;;;;;AAEA,IAAMA,eAAe,GAAG,SAAlBA,eAAkB,CAAAC,KAAK,EAAI;AAC/B,MAAOC,IAAP,GAAeD,KAAf,CAAOC,IAAP;AACA,MAAI,CAACA,IAAD,IAAS,CAACA,IAAI,CAACC,MAAnB,EAA2B,OAAO,IAAP;AAC3B,SAAO,IAAIC,uBAAJ,CAAiBH,KAAjB,CAAP;AACD,CAJD;;IAMqBI,gB;;;;;;;;;;;;WACnB,2BAAkB;AAChB,WAAKC,QAAL,CAAc;AAACJ,QAAAA,IAAI,EAAE,IAAP;AAAaK,QAAAA,QAAQ,EAAE;AAAvB,OAAd;AACD;;;WAED,2BAAqD;AAAA,UAAxCN,KAAwC,QAAxCA,KAAwC;AAAA,UAAjCO,QAAiC,QAAjCA,QAAiC;AAAA,UAAvBC,OAAuB,QAAvBA,OAAuB;AAAA,UAAdC,WAAc,QAAdA,WAAc;;AACnD,UAAIA,WAAW,CAACC,WAAhB,EAA6B;AAC3B,YAAKT,IAAL,GAAa,KAAKD,KAAlB,CAAKC,IAAL;AACA,YAAMK,QAAQ,GAAGL,IAAjB;AACAA,QAAAA,IAAI,GAAGK,QAAQ,CAACK,KAAhB;AACA,aAAKN,QAAL,CAAc;AAACJ,UAAAA,IAAI,EAAJA,IAAD;AAAOK,UAAAA,QAAQ,EAARA;AAAP,SAAd;AACD;AACF;;;WAED,wBAAe;AACb,wBAAyB,KAAKM,KAA9B;AAAA,UAAOX,IAAP,eAAOA,IAAP;AAAA,UAAaK,QAAb,eAAaA,QAAb;AACA,UAAOO,aAAP,GAAwBP,QAAxB,CAAOO,aAAP;AACA,UAAMC,OAAO,GAAGD,aAAa,GAAG,KAAKb,KAAL,CAAWe,mBAA3C;AACA,aAAO,CACL,IAAIC,oBAAJ,CAAc,KAAKhB,KAAnB,EAA0B;AACxBiB,QAAAA,EAAE,EAAE,oBADoB;AAExBhB,QAAAA,IAAI,EAAJA,IAFwB;AAGxBiB,QAAAA,UAAU,EAAE,oBAAAC,CAAC;AAAA,iBAAIA,CAAC,CAACF,EAAN;AAAA,SAHW;AAIxBG,QAAAA,YAAY,EAAEC,yBAJU;AAKxBtB,QAAAA,eAAe,EAAfA,eALwB;AAMxBe,QAAAA,OAAO,EAAPA;AANwB,OAA1B,CADK,CAAP;AAUD;;;EA5B2CQ,oB;;;AA+B9ClB,gBAAgB,CAACmB,SAAjB,GAA6B,kBAA7B","sourcesContent":["import {CompositeLayer} from '@deck.gl/core';\nimport {QuadkeyLayer, TileLayer} from '@deck.gl/geo-layers';\nimport QuadkeyTileset2D from './quadkey-tileset-2d';\n\nconst renderSubLayers = props => {\n const {data} = props;\n if (!data || !data.length) return null;\n return new QuadkeyLayer(props);\n};\n\nexport default class QuadkeyTileLayer extends CompositeLayer {\n initializeState() {\n this.setState({data: null, tileJSON: null});\n }\n\n updateState({props, oldProps, context, changeFlags}) {\n if (changeFlags.dataChanged) {\n let {data} = this.props;\n const tileJSON = data;\n data = tileJSON.tiles;\n this.setState({data, tileJSON});\n }\n }\n\n renderLayers() {\n const {data, tileJSON} = this.state;\n const {maxresolution} = tileJSON;\n const maxZoom = maxresolution - this.props.aggregationResLevel;\n return [\n new TileLayer(this.props, {\n id: 'quadkey-tile-layer',\n data,\n getQuadkey: d => d.id,\n TilesetClass: QuadkeyTileset2D,\n renderSubLayers,\n maxZoom\n })\n ];\n }\n}\n\nQuadkeyTileLayer.layerName = 'QuadkeyTileLayer';\n"],"file":"quadkey-tile-layer.js"}
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
|
|
5
|
+
Object.defineProperty(exports, "__esModule", {
|
|
6
|
+
value: true
|
|
7
|
+
});
|
|
8
|
+
exports.default = void 0;
|
|
9
|
+
|
|
10
|
+
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
|
|
11
|
+
|
|
12
|
+
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
|
|
13
|
+
|
|
14
|
+
var _get2 = _interopRequireDefault(require("@babel/runtime/helpers/get"));
|
|
15
|
+
|
|
16
|
+
var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
|
|
17
|
+
|
|
18
|
+
var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
|
|
19
|
+
|
|
20
|
+
var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
|
|
21
|
+
|
|
22
|
+
var _geoLayers = require("@deck.gl/geo-layers");
|
|
23
|
+
|
|
24
|
+
function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2.default)(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2.default)(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2.default)(this, result); }; }
|
|
25
|
+
|
|
26
|
+
function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
|
|
27
|
+
|
|
28
|
+
function tileToQuadkey(tile) {
|
|
29
|
+
var index = '';
|
|
30
|
+
|
|
31
|
+
for (var z = tile.z; z > 0; z--) {
|
|
32
|
+
var b = 0;
|
|
33
|
+
var mask = 1 << z - 1;
|
|
34
|
+
if ((tile.x & mask) !== 0) b++;
|
|
35
|
+
if ((tile.y & mask) !== 0) b += 2;
|
|
36
|
+
index += b.toString();
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
return {
|
|
40
|
+
i: index
|
|
41
|
+
};
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
var QuadkeyTileset2D = function (_Tileset2D) {
|
|
45
|
+
(0, _inherits2.default)(QuadkeyTileset2D, _Tileset2D);
|
|
46
|
+
|
|
47
|
+
var _super = _createSuper(QuadkeyTileset2D);
|
|
48
|
+
|
|
49
|
+
function QuadkeyTileset2D() {
|
|
50
|
+
(0, _classCallCheck2.default)(this, QuadkeyTileset2D);
|
|
51
|
+
return _super.apply(this, arguments);
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
(0, _createClass2.default)(QuadkeyTileset2D, [{
|
|
55
|
+
key: "getTileIndices",
|
|
56
|
+
value: function getTileIndices(opts) {
|
|
57
|
+
return (0, _get2.default)((0, _getPrototypeOf2.default)(QuadkeyTileset2D.prototype), "getTileIndices", this).call(this, opts).map(tileToQuadkey);
|
|
58
|
+
}
|
|
59
|
+
}, {
|
|
60
|
+
key: "getTileId",
|
|
61
|
+
value: function getTileId(_ref) {
|
|
62
|
+
var i = _ref.i;
|
|
63
|
+
return i;
|
|
64
|
+
}
|
|
65
|
+
}, {
|
|
66
|
+
key: "getTileMetadata",
|
|
67
|
+
value: function getTileMetadata() {
|
|
68
|
+
return {};
|
|
69
|
+
}
|
|
70
|
+
}, {
|
|
71
|
+
key: "getTileZoom",
|
|
72
|
+
value: function getTileZoom(_ref2) {
|
|
73
|
+
var i = _ref2.i;
|
|
74
|
+
return i.length;
|
|
75
|
+
}
|
|
76
|
+
}, {
|
|
77
|
+
key: "getParentIndex",
|
|
78
|
+
value: function getParentIndex(index) {
|
|
79
|
+
var i = index.i.slice(0, -1);
|
|
80
|
+
return {
|
|
81
|
+
i: i
|
|
82
|
+
};
|
|
83
|
+
}
|
|
84
|
+
}]);
|
|
85
|
+
return QuadkeyTileset2D;
|
|
86
|
+
}(_geoLayers._Tileset2D);
|
|
87
|
+
|
|
88
|
+
exports.default = QuadkeyTileset2D;
|
|
89
|
+
//# sourceMappingURL=quadkey-tileset-2d.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/layers/quadkey-tileset-2d.js"],"names":["tileToQuadkey","tile","index","z","b","mask","x","y","toString","i","QuadkeyTileset2D","opts","map","length","slice","Tileset2D"],"mappings":";;;;;;;;;;;;;;;;;;;;;AAAA;;;;;;AAEA,SAASA,aAAT,CAAuBC,IAAvB,EAA6B;AAC3B,MAAIC,KAAK,GAAG,EAAZ;;AACA,OAAK,IAAIC,CAAC,GAAGF,IAAI,CAACE,CAAlB,EAAqBA,CAAC,GAAG,CAAzB,EAA4BA,CAAC,EAA7B,EAAiC;AAC/B,QAAIC,CAAC,GAAG,CAAR;AACA,QAAMC,IAAI,GAAG,KAAMF,CAAC,GAAG,CAAvB;AACA,QAAI,CAACF,IAAI,CAACK,CAAL,GAASD,IAAV,MAAoB,CAAxB,EAA2BD,CAAC;AAC5B,QAAI,CAACH,IAAI,CAACM,CAAL,GAASF,IAAV,MAAoB,CAAxB,EAA2BD,CAAC,IAAI,CAAL;AAC3BF,IAAAA,KAAK,IAAIE,CAAC,CAACI,QAAF,EAAT;AACD;;AACD,SAAO;AAACC,IAAAA,CAAC,EAAEP;AAAJ,GAAP;AACD;;IAEoBQ,gB;;;;;;;;;;;;WACnB,wBAAeC,IAAf,EAAqB;AACnB,aAAO,iHAAqBA,IAArB,EAA2BC,GAA3B,CAA+BZ,aAA/B,CAAP;AACD;;;WAED,yBAAe;AAAA,UAAJS,CAAI,QAAJA,CAAI;AACb,aAAOA,CAAP;AACD;;;WAED,2BAAkB;AAChB,aAAO,EAAP;AACD;;;WAED,4BAAiB;AAAA,UAAJA,CAAI,SAAJA,CAAI;AACf,aAAOA,CAAC,CAACI,MAAT;AACD;;;WAED,wBAAeX,KAAf,EAAsB;AACpB,UAAMO,CAAC,GAAGP,KAAK,CAACO,CAAN,CAAQK,KAAR,CAAc,CAAd,EAAiB,CAAC,CAAlB,CAAV;AACA,aAAO;AAACL,QAAAA,CAAC,EAADA;AAAD,OAAP;AACD;;;EApB2CM,qB","sourcesContent":["import {_Tileset2D as Tileset2D} from '@deck.gl/geo-layers';\n\nfunction tileToQuadkey(tile) {\n let index = '';\n for (let z = tile.z; z > 0; z--) {\n let b = 0;\n const mask = 1 << (z - 1);\n if ((tile.x & mask) !== 0) b++;\n if ((tile.y & mask) !== 0) b += 2;\n index += b.toString();\n }\n return {i: index};\n}\n\nexport default class QuadkeyTileset2D extends Tileset2D {\n getTileIndices(opts) {\n return super.getTileIndices(opts).map(tileToQuadkey);\n }\n\n getTileId({i}) {\n return i;\n }\n\n getTileMetadata() {\n return {};\n }\n\n getTileZoom({i}) {\n return i.length;\n }\n\n getParentIndex(index) {\n const i = index.i.slice(0, -1);\n return {i};\n }\n}\n"],"file":"quadkey-tileset-2d.js"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { deviation, extent, groupSort, median, variance } from 'd3-array';
|
|
2
2
|
import { rgb } from 'd3-color';
|
|
3
|
-
import { scaleLinear, scaleOrdinal, scaleLog, scalePoint, scaleQuantile, scaleQuantize, scaleSqrt } from 'd3-scale';
|
|
3
|
+
import { scaleLinear, scaleOrdinal, scaleLog, scalePoint, scaleQuantile, scaleQuantize, scaleSqrt, scaleThreshold } from 'd3-scale';
|
|
4
4
|
import { format as d3Format } from 'd3-format';
|
|
5
5
|
import moment from 'moment-timezone';
|
|
6
6
|
import { CPUGridLayer, HeatmapLayer, HexagonLayer } from '@deck.gl/aggregation-layers';
|
|
@@ -16,14 +16,21 @@ const SCALE_FUNCS = {
|
|
|
16
16
|
point: scalePoint,
|
|
17
17
|
quantile: scaleQuantile,
|
|
18
18
|
quantize: scaleQuantize,
|
|
19
|
-
sqrt: scaleSqrt
|
|
19
|
+
sqrt: scaleSqrt,
|
|
20
|
+
custom: scaleThreshold
|
|
20
21
|
};
|
|
22
|
+
const UNKNOWN_COLOR = '#868d91';
|
|
21
23
|
export const AGGREGATION = {
|
|
22
24
|
average: 'MEAN',
|
|
23
25
|
maximum: 'MAX',
|
|
24
26
|
minimum: 'MIN',
|
|
25
27
|
sum: 'SUM'
|
|
26
28
|
};
|
|
29
|
+
export const OPACITY_MAP = {
|
|
30
|
+
getFillColor: 'opacity',
|
|
31
|
+
getLineColor: 'strokeOpacity',
|
|
32
|
+
getTextColor: 'opacity'
|
|
33
|
+
};
|
|
27
34
|
const AGGREGATION_FUNC = {
|
|
28
35
|
'count unique': (values, accessor) => groupSort(values, v => v.length, accessor).length,
|
|
29
36
|
median,
|
|
@@ -56,7 +63,6 @@ const sharedPropMap = {
|
|
|
56
63
|
enable3d: 'extruded',
|
|
57
64
|
elevationScale: 'elevationScale',
|
|
58
65
|
filled: 'filled',
|
|
59
|
-
opacity: 'opacity',
|
|
60
66
|
strokeColor: 'getLineColor',
|
|
61
67
|
stroked: 'stroked',
|
|
62
68
|
thickness: 'getLineWidth',
|
|
@@ -209,7 +215,7 @@ function domainFromAttribute(attribute, scaleType) {
|
|
|
209
215
|
|
|
210
216
|
function domainFromValues(values, scaleType) {
|
|
211
217
|
if (scaleType === 'ordinal') {
|
|
212
|
-
return
|
|
218
|
+
return groupSort(values, g => -g.length, d => d);
|
|
213
219
|
} else if (scaleType === 'quantile') {
|
|
214
220
|
return values.sort((a, b) => a - b);
|
|
215
221
|
} else if (scaleType === 'log') {
|
|
@@ -252,6 +258,9 @@ function normalizeAccessor(accessor, data) {
|
|
|
252
258
|
return accessor;
|
|
253
259
|
}
|
|
254
260
|
|
|
261
|
+
export function opacityToAlpha(opacity) {
|
|
262
|
+
return opacity !== undefined ? Math.round(255 * Math.pow(opacity, 1 / 2.2)) : 255;
|
|
263
|
+
}
|
|
255
264
|
export function getColorValueAccessor({
|
|
256
265
|
name
|
|
257
266
|
}, colorAggregation, data) {
|
|
@@ -264,20 +273,40 @@ export function getColorValueAccessor({
|
|
|
264
273
|
export function getColorAccessor({
|
|
265
274
|
name
|
|
266
275
|
}, scaleType, {
|
|
267
|
-
colors
|
|
276
|
+
colors,
|
|
277
|
+
colorMap
|
|
268
278
|
}, opacity, data) {
|
|
269
279
|
const scale = SCALE_FUNCS[scaleType]();
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
280
|
+
let domain = [];
|
|
281
|
+
let scaleColor = [];
|
|
282
|
+
|
|
283
|
+
if (Array.isArray(colorMap)) {
|
|
284
|
+
colorMap.forEach(([value, color]) => {
|
|
285
|
+
domain.push(value);
|
|
286
|
+
scaleColor.push(color);
|
|
287
|
+
});
|
|
288
|
+
} else {
|
|
289
|
+
domain = calculateDomain(data, name, scaleType);
|
|
290
|
+
scaleColor = colors;
|
|
291
|
+
}
|
|
292
|
+
|
|
293
|
+
if (scaleType === 'ordinal') {
|
|
294
|
+
domain = domain.slice(0, scaleColor.length);
|
|
295
|
+
}
|
|
296
|
+
|
|
297
|
+
scale.domain(domain);
|
|
298
|
+
scale.range(scaleColor);
|
|
299
|
+
scale.unknown(UNKNOWN_COLOR);
|
|
300
|
+
const alpha = opacityToAlpha(opacity);
|
|
273
301
|
|
|
274
302
|
const accessor = properties => {
|
|
303
|
+
const propertyValue = properties[name];
|
|
275
304
|
const {
|
|
276
305
|
r,
|
|
277
306
|
g,
|
|
278
307
|
b
|
|
279
|
-
} = rgb(scale(
|
|
280
|
-
return [r, g, b, alpha];
|
|
308
|
+
} = rgb(scale(propertyValue));
|
|
309
|
+
return [r, g, b, propertyValue === null ? 0 : alpha];
|
|
281
310
|
};
|
|
282
311
|
|
|
283
312
|
return normalizeAccessor(accessor, data);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/api/layer-map.ts"],"names":["deviation","extent","groupSort","median","variance","rgb","scaleLinear","scaleOrdinal","scaleLog","scalePoint","scaleQuantile","scaleQuantize","scaleSqrt","format","d3Format","moment","CPUGridLayer","HeatmapLayer","HexagonLayer","GeoJsonLayer","H3HexagonLayer","MVTLayer","CartoTileLayer","TILE_FORMATS","assert","SCALE_FUNCS","linear","ordinal","log","point","quantile","quantize","sqrt","AGGREGATION","average","maximum","minimum","sum","AGGREGATION_FUNC","values","accessor","v","length","mode","pop","stddev","hexToRGBA","c","r","g","b","opacity","sharedPropMap","color","isVisible","label","textLabel","alignment","anchor","size","visConfig","enable3d","elevationScale","filled","strokeColor","stroked","thickness","radius","wireframe","aggregationVisConfig","colorAggregation","x","colorRange","colors","map","coverage","elevationPercentile","percentile","defaultProps","lineMiterLimit","lineWidthUnits","pointRadiusUnits","rounded","wrapLongitude","mergePropMaps","a","getLayer","type","config","dataset","getTileLayer","geoColumn","getPosition","d","coordinates","hexagonId","columns","hex_id","layer","Layer","propMap","outline","geojson","grid","worldUnitSize","cellSize","heatmap","hexagon","getHexagon","data","tiles","tileUrl","formatTiles","URL","searchParams","get","MVT","uniqueIdProperty","domainFromAttribute","attribute","scaleType","categories","category","filter","undefined","min","max","domainFromValues","Set","sort","d0","d1","calculateDomain","name","tilestats","attributes","layers","find","features","properties","Array","isArray","normalizeAccessor","getColorValueAccessor","aggregator","p","getColorAccessor","scale","domain","range","alpha","Math","round","pow","getSizeAccessor","FORMATS","date","s","utc","integer","float","timestamp","default","String","getTextAccessor","getTextPixelOffsetAccessor","padding","signX","signY","sizeOffset","calculateOffset","_domainFromValues"],"mappings":"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","sourcesContent":["import {deviation, extent, groupSort, median, variance} from 'd3-array';\nimport {rgb} from 'd3-color';\nimport {\n scaleLinear,\n scaleOrdinal,\n scaleLog,\n scalePoint,\n scaleQuantile,\n scaleQuantize,\n scaleSqrt\n} from 'd3-scale';\nimport {format as d3Format} from 'd3-format';\nimport moment from 'moment-timezone';\n\nimport {CPUGridLayer, HeatmapLayer, HexagonLayer} from '@deck.gl/aggregation-layers';\nimport {GeoJsonLayer} from '@deck.gl/layers';\nimport {H3HexagonLayer, MVTLayer} from '@deck.gl/geo-layers';\n\nimport CartoTileLayer from '../layers/carto-tile-layer';\nimport {TILE_FORMATS} from './maps-api-common';\nimport {assert} from '../utils';\n\nconst SCALE_FUNCS = {\n linear: scaleLinear,\n ordinal: scaleOrdinal,\n log: scaleLog,\n point: scalePoint,\n quantile: scaleQuantile,\n quantize: scaleQuantize,\n sqrt: scaleSqrt\n};\nexport type SCALE_TYPE = keyof typeof SCALE_FUNCS;\n\nexport const AGGREGATION = {\n average: 'MEAN',\n maximum: 'MAX',\n minimum: 'MIN',\n sum: 'SUM'\n};\n\nconst AGGREGATION_FUNC = {\n 'count unique': (values, accessor) => groupSort(values, v => v.length, accessor).length,\n median,\n // Unfortunately mode() is only available in d3-array@3+ which is ESM only\n mode: (values, accessor) => groupSort(values, v => v.length, accessor).pop(),\n stddev: deviation,\n variance\n};\n\nconst hexToRGBA = c => {\n const {r, g, b, opacity} = rgb(c);\n return [r, g, b, 255 * opacity];\n};\n\n// Kepler -> Deck.gl\nconst sharedPropMap = {\n color: 'getFillColor',\n isVisible: 'visible',\n label: 'cartoLabel',\n textLabel: {\n alignment: 'getTextAlignmentBaseline',\n anchor: 'getTextAnchor',\n color: 'getTextColor',\n size: 'getTextSize'\n },\n visConfig: {\n enable3d: 'extruded',\n elevationScale: 'elevationScale',\n filled: 'filled',\n opacity: 'opacity',\n strokeColor: 'getLineColor',\n stroked: 'stroked',\n thickness: 'getLineWidth',\n radius: 'getPointRadius',\n wireframe: 'wireframe'\n }\n};\n\nconst aggregationVisConfig = {\n colorAggregation: x => ({colorAggregation: AGGREGATION[x] || AGGREGATION.sum}),\n colorRange: x => ({colorRange: x.colors.map(hexToRGBA)}),\n coverage: 'coverage',\n elevationPercentile: ['elevationLowerPercentile', 'elevationUpperPercentile'],\n percentile: ['lowerPercentile', 'upperPercentile']\n};\n\nconst defaultProps = {\n lineMiterLimit: 2,\n lineWidthUnits: 'pixels',\n pointRadiusUnits: 'pixels',\n rounded: true,\n wrapLongitude: false\n};\n\nfunction mergePropMaps(a = {}, b = {}) {\n return {...a, ...b, visConfig: {...a.visConfig, ...b.visConfig}};\n}\n\nexport function getLayer(\n type: string,\n config,\n dataset\n): {Layer: any; propMap: any; defaultProps: any} {\n if (type === 'mvt' || type === 'tileset') {\n return getTileLayer(dataset);\n }\n\n const geoColumn = dataset?.geoColumn;\n const getPosition = d => d[geoColumn].coordinates;\n\n const hexagonId = config.columns?.hex_id;\n const layer = {\n point: {\n Layer: GeoJsonLayer,\n propMap: {visConfig: {outline: 'stroked'}}\n },\n geojson: {\n Layer: GeoJsonLayer\n },\n grid: {\n Layer: CPUGridLayer,\n propMap: {visConfig: {...aggregationVisConfig, worldUnitSize: x => ({cellSize: 1000 * x})}},\n defaultProps: {getPosition}\n },\n heatmap: {\n Layer: HeatmapLayer,\n propMap: {visConfig: {...aggregationVisConfig, radius: 'radiusPixels'}},\n defaultProps: {getPosition}\n },\n hexagon: {\n Layer: HexagonLayer,\n propMap: {visConfig: {...aggregationVisConfig, worldUnitSize: x => ({radius: 1000 * x})}},\n defaultProps: {getPosition}\n },\n hexagonId: {\n Layer: H3HexagonLayer,\n propMap: {visConfig: {coverage: 'coverage'}},\n defaultProps: {getHexagon: d => d[hexagonId], stroked: false}\n }\n }[type];\n\n assert(layer, `Unsupported layer type: ${type}`);\n layer.propMap = mergePropMaps(sharedPropMap, layer.propMap);\n layer.defaultProps = {...defaultProps, ...layer.defaultProps};\n return layer;\n}\n\nfunction getTileLayer(dataset) {\n const {\n data: {\n tiles: [tileUrl]\n }\n } = dataset;\n /* global URL */\n const formatTiles = new URL(tileUrl).searchParams.get('formatTiles') || TILE_FORMATS.MVT;\n\n return {\n Layer: formatTiles === TILE_FORMATS.MVT ? MVTLayer : CartoTileLayer,\n propMap: sharedPropMap,\n defaultProps: {\n ...defaultProps,\n uniqueIdProperty: 'geoid',\n formatTiles\n }\n };\n}\n\nfunction domainFromAttribute(attribute, scaleType: SCALE_TYPE) {\n if (scaleType === 'ordinal' || scaleType === 'point') {\n return attribute.categories.map(c => c.category).filter(c => c !== undefined && c !== null);\n }\n\n let {min} = attribute;\n if (scaleType === 'log' && min === 0) {\n min = 1e-5;\n }\n return [min, attribute.max];\n}\n\nfunction domainFromValues(values, scaleType: SCALE_TYPE) {\n if (scaleType === 'ordinal') {\n return [...new Set(values)].sort();\n } else if (scaleType === 'quantile') {\n return values.sort((a, b) => a - b);\n } else if (scaleType === 'log') {\n const [d0, d1] = extent(values as number[]);\n return [d0 === 0 ? 1e-5 : d0, d1];\n }\n return extent(values);\n}\n\nfunction calculateDomain(data, name, scaleType) {\n if (data.tilestats) {\n // Tileset data type\n const {attributes} = data.tilestats.layers[0];\n const attribute = attributes.find(a => a.attribute === name);\n return domainFromAttribute(attribute, scaleType);\n } else if (data.features) {\n // GeoJSON data type\n const values = data.features.map(({properties}) => properties[name]);\n return domainFromValues(values, scaleType);\n } else if (Array.isArray(data) && data[0][name] !== undefined) {\n // JSON data type\n const values = data.map(properties => properties[name]);\n return domainFromValues(values, scaleType);\n }\n\n return [0, 1];\n}\n\nfunction normalizeAccessor(accessor, data) {\n if (data.features || data.tilestats) {\n return ({properties}) => {\n return accessor(properties);\n };\n }\n return accessor;\n}\n\nexport function getColorValueAccessor({name}, colorAggregation, data: any) {\n const aggregator = AGGREGATION_FUNC[colorAggregation];\n const accessor = values => aggregator(values, p => p[name]);\n return normalizeAccessor(accessor, data);\n}\n\nexport function getColorAccessor(\n {name},\n scaleType: SCALE_TYPE,\n {colors},\n opacity: number | undefined,\n data: any\n) {\n const scale = SCALE_FUNCS[scaleType as any]();\n scale.domain(calculateDomain(data, name, scaleType));\n scale.range(colors);\n const alpha = opacity !== undefined ? Math.round(255 * Math.pow(opacity, 1 / 2.2)) : 255;\n\n const accessor = properties => {\n const {r, g, b} = rgb(scale(properties[name]));\n return [r, g, b, alpha];\n };\n return normalizeAccessor(accessor, data);\n}\n\nexport function getSizeAccessor({name}, scaleType: SCALE_TYPE, range: Iterable<Range>, data: any) {\n const scale = SCALE_FUNCS[scaleType as any]();\n scale.domain(calculateDomain(data, name, scaleType));\n scale.range(range);\n\n const accessor = properties => {\n return scale(properties[name]);\n };\n return normalizeAccessor(accessor, data);\n}\n\nconst FORMATS: Record<string, (value: any) => string> = {\n date: s => moment.utc(s).format('MM/DD/YY HH:mm:ssa'),\n integer: d3Format('i'),\n float: d3Format('.5f'),\n timestamp: s => moment.utc(s).format('X'),\n default: String\n};\n\nexport function getTextAccessor({name, type}, data) {\n const format = FORMATS[type] || FORMATS.default;\n const accessor = properties => {\n return format(properties[name]);\n };\n return normalizeAccessor(accessor, data);\n}\n\nexport function getTextPixelOffsetAccessor({alignment, anchor, size}, radius) {\n const padding = 20;\n const signX = anchor === 'middle' ? 0 : anchor === 'start' ? 1 : -1;\n const signY = alignment === 'center' ? 0 : alignment === 'bottom' ? 1 : -1;\n const sizeOffset = alignment === 'center' ? 0 : size;\n\n const calculateOffset = r => [signX * (r + padding), signY * (r + padding + sizeOffset)];\n\n return typeof radius === 'function'\n ? d => {\n return calculateOffset(radius(d));\n }\n : calculateOffset(radius);\n}\n\nexport {domainFromValues as _domainFromValues};\n"],"file":"layer-map.js"}
|
|
1
|
+
{"version":3,"sources":["../../../src/api/layer-map.ts"],"names":["deviation","extent","groupSort","median","variance","rgb","scaleLinear","scaleOrdinal","scaleLog","scalePoint","scaleQuantile","scaleQuantize","scaleSqrt","scaleThreshold","format","d3Format","moment","CPUGridLayer","HeatmapLayer","HexagonLayer","GeoJsonLayer","H3HexagonLayer","MVTLayer","CartoTileLayer","TILE_FORMATS","assert","SCALE_FUNCS","linear","ordinal","log","point","quantile","quantize","sqrt","custom","UNKNOWN_COLOR","AGGREGATION","average","maximum","minimum","sum","OPACITY_MAP","getFillColor","getLineColor","getTextColor","AGGREGATION_FUNC","values","accessor","v","length","mode","pop","stddev","hexToRGBA","c","r","g","b","opacity","sharedPropMap","color","isVisible","label","textLabel","alignment","anchor","size","visConfig","enable3d","elevationScale","filled","strokeColor","stroked","thickness","radius","wireframe","aggregationVisConfig","colorAggregation","x","colorRange","colors","map","coverage","elevationPercentile","percentile","defaultProps","lineMiterLimit","lineWidthUnits","pointRadiusUnits","rounded","wrapLongitude","mergePropMaps","a","getLayer","type","config","dataset","getTileLayer","geoColumn","getPosition","d","coordinates","hexagonId","columns","hex_id","layer","Layer","propMap","outline","geojson","grid","worldUnitSize","cellSize","heatmap","hexagon","getHexagon","data","tiles","tileUrl","formatTiles","URL","searchParams","get","MVT","uniqueIdProperty","domainFromAttribute","attribute","scaleType","categories","category","filter","undefined","min","max","domainFromValues","sort","d0","d1","calculateDomain","name","tilestats","attributes","layers","find","features","properties","Array","isArray","normalizeAccessor","opacityToAlpha","Math","round","pow","getColorValueAccessor","aggregator","p","getColorAccessor","colorMap","scale","domain","scaleColor","forEach","value","push","slice","range","unknown","alpha","propertyValue","getSizeAccessor","FORMATS","date","s","utc","integer","float","timestamp","default","String","getTextAccessor","getTextPixelOffsetAccessor","padding","signX","signY","sizeOffset","calculateOffset","_domainFromValues"],"mappings":"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","sourcesContent":["import {deviation, extent, groupSort, median, variance} from 'd3-array';\nimport {rgb} from 'd3-color';\nimport {\n scaleLinear,\n scaleOrdinal,\n scaleLog,\n scalePoint,\n scaleQuantile,\n scaleQuantize,\n scaleSqrt,\n scaleThreshold\n} from 'd3-scale';\nimport {format as d3Format} from 'd3-format';\nimport moment from 'moment-timezone';\n\nimport {CPUGridLayer, HeatmapLayer, HexagonLayer} from '@deck.gl/aggregation-layers';\nimport {GeoJsonLayer} from '@deck.gl/layers';\nimport {H3HexagonLayer, MVTLayer} from '@deck.gl/geo-layers';\n\nimport CartoTileLayer from '../layers/carto-tile-layer';\nimport {TILE_FORMATS} from './maps-api-common';\nimport {assert} from '../utils';\n\nconst SCALE_FUNCS = {\n linear: scaleLinear,\n ordinal: scaleOrdinal,\n log: scaleLog,\n point: scalePoint,\n quantile: scaleQuantile,\n quantize: scaleQuantize,\n sqrt: scaleSqrt,\n custom: scaleThreshold\n};\nexport type SCALE_TYPE = keyof typeof SCALE_FUNCS;\n\nconst UNKNOWN_COLOR = '#868d91';\n\nexport const AGGREGATION = {\n average: 'MEAN',\n maximum: 'MAX',\n minimum: 'MIN',\n sum: 'SUM'\n};\n\nexport const OPACITY_MAP = {\n getFillColor: 'opacity',\n getLineColor: 'strokeOpacity',\n getTextColor: 'opacity'\n};\n\nconst AGGREGATION_FUNC = {\n 'count unique': (values, accessor) => groupSort(values, v => v.length, accessor).length,\n median,\n // Unfortunately mode() is only available in d3-array@3+ which is ESM only\n mode: (values, accessor) => groupSort(values, v => v.length, accessor).pop(),\n stddev: deviation,\n variance\n};\n\nconst hexToRGBA = c => {\n const {r, g, b, opacity} = rgb(c);\n return [r, g, b, 255 * opacity];\n};\n\n// Kepler -> Deck.gl\nconst sharedPropMap = {\n color: 'getFillColor',\n isVisible: 'visible',\n label: 'cartoLabel',\n textLabel: {\n alignment: 'getTextAlignmentBaseline',\n anchor: 'getTextAnchor',\n color: 'getTextColor',\n size: 'getTextSize'\n },\n visConfig: {\n enable3d: 'extruded',\n elevationScale: 'elevationScale',\n filled: 'filled',\n strokeColor: 'getLineColor',\n stroked: 'stroked',\n thickness: 'getLineWidth',\n radius: 'getPointRadius',\n wireframe: 'wireframe'\n }\n};\n\nconst aggregationVisConfig = {\n colorAggregation: x => ({colorAggregation: AGGREGATION[x] || AGGREGATION.sum}),\n colorRange: x => ({colorRange: x.colors.map(hexToRGBA)}),\n coverage: 'coverage',\n elevationPercentile: ['elevationLowerPercentile', 'elevationUpperPercentile'],\n percentile: ['lowerPercentile', 'upperPercentile']\n};\n\nconst defaultProps = {\n lineMiterLimit: 2,\n lineWidthUnits: 'pixels',\n pointRadiusUnits: 'pixels',\n rounded: true,\n wrapLongitude: false\n};\n\nfunction mergePropMaps(a = {}, b = {}) {\n return {...a, ...b, visConfig: {...a.visConfig, ...b.visConfig}};\n}\n\nexport function getLayer(\n type: string,\n config,\n dataset\n): {Layer: any; propMap: any; defaultProps: any} {\n if (type === 'mvt' || type === 'tileset') {\n return getTileLayer(dataset);\n }\n\n const geoColumn = dataset?.geoColumn;\n const getPosition = d => d[geoColumn].coordinates;\n\n const hexagonId = config.columns?.hex_id;\n const layer = {\n point: {\n Layer: GeoJsonLayer,\n propMap: {visConfig: {outline: 'stroked'}}\n },\n geojson: {\n Layer: GeoJsonLayer\n },\n grid: {\n Layer: CPUGridLayer,\n propMap: {visConfig: {...aggregationVisConfig, worldUnitSize: x => ({cellSize: 1000 * x})}},\n defaultProps: {getPosition}\n },\n heatmap: {\n Layer: HeatmapLayer,\n propMap: {visConfig: {...aggregationVisConfig, radius: 'radiusPixels'}},\n defaultProps: {getPosition}\n },\n hexagon: {\n Layer: HexagonLayer,\n propMap: {visConfig: {...aggregationVisConfig, worldUnitSize: x => ({radius: 1000 * x})}},\n defaultProps: {getPosition}\n },\n hexagonId: {\n Layer: H3HexagonLayer,\n propMap: {visConfig: {coverage: 'coverage'}},\n defaultProps: {getHexagon: d => d[hexagonId], stroked: false}\n }\n }[type];\n\n assert(layer, `Unsupported layer type: ${type}`);\n layer.propMap = mergePropMaps(sharedPropMap, layer.propMap);\n layer.defaultProps = {...defaultProps, ...layer.defaultProps};\n return layer;\n}\n\nfunction getTileLayer(dataset) {\n const {\n data: {\n tiles: [tileUrl]\n }\n } = dataset;\n /* global URL */\n const formatTiles = new URL(tileUrl).searchParams.get('formatTiles') || TILE_FORMATS.MVT;\n\n return {\n Layer: formatTiles === TILE_FORMATS.MVT ? MVTLayer : CartoTileLayer,\n propMap: sharedPropMap,\n defaultProps: {\n ...defaultProps,\n uniqueIdProperty: 'geoid',\n formatTiles\n }\n };\n}\n\nfunction domainFromAttribute(attribute, scaleType: SCALE_TYPE) {\n if (scaleType === 'ordinal' || scaleType === 'point') {\n return attribute.categories.map(c => c.category).filter(c => c !== undefined && c !== null);\n }\n\n let {min} = attribute;\n if (scaleType === 'log' && min === 0) {\n min = 1e-5;\n }\n return [min, attribute.max];\n}\n\nfunction domainFromValues(values, scaleType: SCALE_TYPE) {\n if (scaleType === 'ordinal') {\n return groupSort(\n values,\n g => -g.length,\n d => d\n );\n } else if (scaleType === 'quantile') {\n return values.sort((a, b) => a - b);\n } else if (scaleType === 'log') {\n const [d0, d1] = extent(values as number[]);\n return [d0 === 0 ? 1e-5 : d0, d1];\n }\n return extent(values);\n}\n\nfunction calculateDomain(data, name, scaleType) {\n if (data.tilestats) {\n // Tileset data type\n const {attributes} = data.tilestats.layers[0];\n const attribute = attributes.find(a => a.attribute === name);\n return domainFromAttribute(attribute, scaleType);\n } else if (data.features) {\n // GeoJSON data type\n const values = data.features.map(({properties}) => properties[name]);\n return domainFromValues(values, scaleType);\n } else if (Array.isArray(data) && data[0][name] !== undefined) {\n // JSON data type\n const values = data.map(properties => properties[name]);\n return domainFromValues(values, scaleType);\n }\n\n return [0, 1];\n}\n\nfunction normalizeAccessor(accessor, data) {\n if (data.features || data.tilestats) {\n return ({properties}) => {\n return accessor(properties);\n };\n }\n return accessor;\n}\n\nexport function opacityToAlpha(opacity) {\n return opacity !== undefined ? Math.round(255 * Math.pow(opacity, 1 / 2.2)) : 255;\n}\n\nexport function getColorValueAccessor({name}, colorAggregation, data: any) {\n const aggregator = AGGREGATION_FUNC[colorAggregation];\n const accessor = values => aggregator(values, p => p[name]);\n return normalizeAccessor(accessor, data);\n}\n\nexport function getColorAccessor(\n {name},\n scaleType: SCALE_TYPE,\n {colors, colorMap},\n opacity: number | undefined,\n data: any\n) {\n const scale = SCALE_FUNCS[scaleType as any]();\n let domain: (string | number)[] = [];\n let scaleColor: string[] = [];\n\n if (Array.isArray(colorMap)) {\n colorMap.forEach(([value, color]) => {\n domain.push(value);\n scaleColor.push(color);\n });\n } else {\n domain = calculateDomain(data, name, scaleType);\n scaleColor = colors;\n }\n\n if (scaleType === 'ordinal') {\n domain = domain.slice(0, scaleColor.length);\n }\n\n scale.domain(domain);\n scale.range(scaleColor);\n scale.unknown(UNKNOWN_COLOR);\n const alpha = opacityToAlpha(opacity);\n\n const accessor = properties => {\n const propertyValue = properties[name];\n const {r, g, b} = rgb(scale(propertyValue));\n return [r, g, b, propertyValue === null ? 0 : alpha];\n };\n return normalizeAccessor(accessor, data);\n}\n\nexport function getSizeAccessor({name}, scaleType: SCALE_TYPE, range: Iterable<Range>, data: any) {\n const scale = SCALE_FUNCS[scaleType as any]();\n scale.domain(calculateDomain(data, name, scaleType));\n scale.range(range);\n\n const accessor = properties => {\n return scale(properties[name]);\n };\n return normalizeAccessor(accessor, data);\n}\n\nconst FORMATS: Record<string, (value: any) => string> = {\n date: s => moment.utc(s).format('MM/DD/YY HH:mm:ssa'),\n integer: d3Format('i'),\n float: d3Format('.5f'),\n timestamp: s => moment.utc(s).format('X'),\n default: String\n};\n\nexport function getTextAccessor({name, type}, data) {\n const format = FORMATS[type] || FORMATS.default;\n const accessor = properties => {\n return format(properties[name]);\n };\n return normalizeAccessor(accessor, data);\n}\n\nexport function getTextPixelOffsetAccessor({alignment, anchor, size}, radius) {\n const padding = 20;\n const signX = anchor === 'middle' ? 0 : anchor === 'start' ? 1 : -1;\n const signY = alignment === 'center' ? 0 : alignment === 'bottom' ? 1 : -1;\n const sizeOffset = alignment === 'center' ? 0 : size;\n\n const calculateOffset = r => [signX * (r + padding), signY * (r + padding + sizeOffset)];\n\n return typeof radius === 'function'\n ? d => {\n return calculateOffset(radius(d));\n }\n : calculateOffset(radius);\n}\n\nexport {domainFromValues as _domainFromValues};\n"],"file":"layer-map.js"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/api/maps-api-common.ts"],"names":["DEFAULT_USER_COMPONENT_IN_URL","DEFAULT_REGION_COMPONENT_IN_URL","API_VERSIONS","V1","V2","V3","DEFAULT_MAPS_URL_FORMAT","MAP_TYPES","QUERY","TABLE","TILESET","COLUMNS_SUPPORT","GEO_COLUMN_SUPPORT","FORMATS","GEOJSON","NDJSON","TILEJSON","JSON","TILE_FORMATS","MVT","BINARY","SchemaFieldType","encodeParameter","name","value","encodeURIComponent"],"mappings":"AAAA,OAAO,MAAMA,6BAA6B,GAAG,QAAtC;AACP,OAAO,MAAMC,+BAA+B,GAAG,UAAxC;AAGP,OAAO,MAAMC,YAAY,GAAG;AAC1BC,EAAAA,EAAE,EAAE,IADsB;AAE1BC,EAAAA,EAAE,EAAE,IAFsB;AAG1BC,EAAAA,EAAE,EAAE;AAHsB,CAArB;AAOP,OAAO,MAAMC,uBAAuB,GAAG;AACrC,GAACJ,YAAY,CAACC,EAAd,qBAA8BH,6BAA9B,0BADqC;AAErC,GAACE,YAAY,CAACE,EAAd,iCAA0CH,+BAA1C,6BAA4FD,6BAA5F;AAFqC,CAAhC;AAKP,OAAO,MAAMO,SAAS,GAAG;AACvBC,EAAAA,KAAK,EAAE,OADgB;AAEvBC,EAAAA,KAAK,EAAE,OAFgB;AAGvBC,EAAAA,OAAO,EAAE;AAHc,CAAlB;AAMP,OAAO,MAAMC,
|
|
1
|
+
{"version":3,"sources":["../../../src/api/maps-api-common.ts"],"names":["DEFAULT_USER_COMPONENT_IN_URL","DEFAULT_REGION_COMPONENT_IN_URL","API_VERSIONS","V1","V2","V3","DEFAULT_MAPS_URL_FORMAT","MAP_TYPES","QUERY","TABLE","TILESET","COLUMNS_SUPPORT","GEO_COLUMN_SUPPORT","FORMATS","GEOJSON","NDJSON","TILEJSON","JSON","TILE_FORMATS","MVT","BINARY","SchemaFieldType","encodeParameter","name","value","encodeURIComponent"],"mappings":"AAAA,OAAO,MAAMA,6BAA6B,GAAG,QAAtC;AACP,OAAO,MAAMC,+BAA+B,GAAG,UAAxC;AAGP,OAAO,MAAMC,YAAY,GAAG;AAC1BC,EAAAA,EAAE,EAAE,IADsB;AAE1BC,EAAAA,EAAE,EAAE,IAFsB;AAG1BC,EAAAA,EAAE,EAAE;AAHsB,CAArB;AAOP,OAAO,MAAMC,uBAAuB,GAAG;AACrC,GAACJ,YAAY,CAACC,EAAd,qBAA8BH,6BAA9B,0BADqC;AAErC,GAACE,YAAY,CAACE,EAAd,iCAA0CH,+BAA1C,6BAA4FD,6BAA5F;AAFqC,CAAhC;AAKP,OAAO,MAAMO,SAAS,GAAG;AACvBC,EAAAA,KAAK,EAAE,OADgB;AAEvBC,EAAAA,KAAK,EAAE,OAFgB;AAGvBC,EAAAA,OAAO,EAAE;AAHc,CAAlB;AAMP,OAAO,MAAMC,eAA0B,GAAG,CAACJ,SAAS,CAACE,KAAX,CAAnC;AACP,OAAO,MAAMG,kBAA6B,GAAG,CAACL,SAAS,CAACC,KAAX,EAAkBD,SAAS,CAACE,KAA5B,CAAtC;AAGP,OAAO,MAAMI,OAAO,GAAG;AACrBC,EAAAA,OAAO,EAAE,SADY;AAErBC,EAAAA,MAAM,EAAE,QAFa;AAGrBC,EAAAA,QAAQ,EAAE,UAHW;AAIrBC,EAAAA,IAAI,EAAE;AAJe,CAAhB;AASP,OAAO,MAAMC,YAAY,GAAG;AAC1BC,EAAAA,GAAG,EAAE,KADqB;AAE1BF,EAAAA,IAAI,EAAE,MAFoB;AAG1BH,EAAAA,OAAO,EAAE,SAHiB;AAI1BM,EAAAA,MAAM,EAAE;AAJkB,CAArB;AAQP,WAAYC,eAAZ;;WAAYA,e;AAAAA,EAAAA,e;AAAAA,EAAAA,e;AAAAA,EAAAA,e;AAAAA,EAAAA,e;AAAAA,EAAAA,e;AAAAA,EAAAA,e;AAAAA,EAAAA,e;AAAAA,EAAAA,e;AAAAA,EAAAA,e;GAAAA,e,KAAAA,e;;AAiCZ,OAAO,SAASC,eAAT,CAAyBC,IAAzB,EAAuCC,KAAvC,EAAiF;AACtF,mBAAUD,IAAV,cAAkBE,kBAAkB,CAACD,KAAD,CAApC;AACD","sourcesContent":["export const DEFAULT_USER_COMPONENT_IN_URL = '{user}';\nexport const DEFAULT_REGION_COMPONENT_IN_URL = '{region}';\n\nexport type ValuesOf<T extends {}> = T[keyof T];\nexport const API_VERSIONS = {\n V1: 'v1',\n V2: 'v2',\n V3: 'v3'\n} as const;\nexport type ApiVersion = ValuesOf<typeof API_VERSIONS>;\n\nexport const DEFAULT_MAPS_URL_FORMAT = {\n [API_VERSIONS.V1]: `https://${DEFAULT_USER_COMPONENT_IN_URL}.carto.com/api/v1/map`,\n [API_VERSIONS.V2]: `https://maps-api-v2.${DEFAULT_REGION_COMPONENT_IN_URL}.carto.com/user/${DEFAULT_USER_COMPONENT_IN_URL}`\n} as const;\n\nexport const MAP_TYPES = {\n QUERY: 'query',\n TABLE: 'table',\n TILESET: 'tileset'\n} as const;\nexport type MapType = ValuesOf<typeof MAP_TYPES>;\nexport const COLUMNS_SUPPORT: MapType[] = [MAP_TYPES.TABLE];\nexport const GEO_COLUMN_SUPPORT: MapType[] = [MAP_TYPES.QUERY, MAP_TYPES.TABLE];\n\n// AVAILABLE FORMATS\nexport const FORMATS = {\n GEOJSON: 'geojson',\n NDJSON: 'ndjson',\n TILEJSON: 'tilejson',\n JSON: 'json'\n} as const;\nexport type Format = ValuesOf<typeof FORMATS>;\n\n// AVAILABLE FORMATS FOR TILES\nexport const TILE_FORMATS = {\n MVT: 'mvt',\n JSON: 'json',\n GEOJSON: 'geojson',\n BINARY: 'binary'\n} as const;\nexport type TileFormat = ValuesOf<typeof TILE_FORMATS>;\n\nexport enum SchemaFieldType {\n Number = 'number',\n Bigint = 'bigint',\n String = 'string',\n Geometry = 'geometry',\n Timestamp = 'timestamp',\n Object = 'object',\n Boolean = 'boolean',\n Variant = 'variant',\n Unknown = 'unknown'\n}\nexport interface SchemaField {\n name: string;\n type: SchemaFieldType; // Field type in the CARTO stack, common for all providers\n}\n\nexport interface MapInstantiation extends MapInstantiationFormats {\n nrows: number;\n size?: number;\n schema: SchemaField[];\n}\n\ntype MapInstantiationFormats = Record<\n Format,\n {\n url: string[];\n error?: any;\n }\n>;\n\n/**\n * Simple encode parameter\n */\nexport function encodeParameter(name: string, value: string | boolean | number): string {\n return `${name}=${encodeURIComponent(value)}`;\n}\n"],"file":"maps-api-common.js"}
|
|
@@ -106,26 +106,30 @@ function getParameters({
|
|
|
106
106
|
source,
|
|
107
107
|
geoColumn,
|
|
108
108
|
columns,
|
|
109
|
-
|
|
110
|
-
|
|
109
|
+
clientId,
|
|
110
|
+
aggregationExp,
|
|
111
|
+
aggregationResLevel
|
|
111
112
|
}) {
|
|
112
113
|
const parameters = [encodeParameter('client', clientId || DEFAULT_CLIENT)];
|
|
113
|
-
|
|
114
|
-
if (schema) {
|
|
115
|
-
parameters.push(encodeParameter('schema', true));
|
|
116
|
-
}
|
|
117
|
-
|
|
118
114
|
const sourceName = type === MAP_TYPES.QUERY ? 'q' : 'name';
|
|
119
115
|
parameters.push(encodeParameter(sourceName, source));
|
|
120
116
|
|
|
121
|
-
if (
|
|
117
|
+
if (geoColumn) {
|
|
122
118
|
parameters.push(encodeParameter('geo_column', geoColumn));
|
|
123
119
|
}
|
|
124
120
|
|
|
125
|
-
if (
|
|
121
|
+
if (columns) {
|
|
126
122
|
parameters.push(encodeParameter('columns', columns.join(',')));
|
|
127
123
|
}
|
|
128
124
|
|
|
125
|
+
if (aggregationExp) {
|
|
126
|
+
parameters.push(encodeParameter('aggregationExp', aggregationExp));
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
if (aggregationResLevel) {
|
|
130
|
+
parameters.push(encodeParameter('aggregationResLevel', aggregationResLevel));
|
|
131
|
+
}
|
|
132
|
+
|
|
129
133
|
return parameters.join('&');
|
|
130
134
|
}
|
|
131
135
|
|
|
@@ -136,8 +140,9 @@ export async function mapInstantiation({
|
|
|
136
140
|
credentials,
|
|
137
141
|
geoColumn,
|
|
138
142
|
columns,
|
|
139
|
-
|
|
140
|
-
|
|
143
|
+
clientId,
|
|
144
|
+
aggregationExp,
|
|
145
|
+
aggregationResLevel
|
|
141
146
|
}) {
|
|
142
147
|
const baseUrl = "".concat(credentials.mapsUrl, "/").concat(connection, "/").concat(type);
|
|
143
148
|
const url = "".concat(baseUrl, "?").concat(getParameters({
|
|
@@ -145,8 +150,9 @@ export async function mapInstantiation({
|
|
|
145
150
|
source,
|
|
146
151
|
geoColumn,
|
|
147
152
|
columns,
|
|
148
|
-
|
|
149
|
-
|
|
153
|
+
clientId,
|
|
154
|
+
aggregationExp,
|
|
155
|
+
aggregationResLevel
|
|
150
156
|
}));
|
|
151
157
|
const {
|
|
152
158
|
accessToken
|
|
@@ -185,7 +191,11 @@ function checkFetchLayerDataParameters({
|
|
|
185
191
|
type,
|
|
186
192
|
source,
|
|
187
193
|
connection,
|
|
188
|
-
credentials
|
|
194
|
+
credentials,
|
|
195
|
+
geoColumn,
|
|
196
|
+
columns,
|
|
197
|
+
aggregationExp,
|
|
198
|
+
aggregationResLevel
|
|
189
199
|
}) {
|
|
190
200
|
assert(connection, 'Must define connection');
|
|
191
201
|
assert(type, 'Must define a type');
|
|
@@ -193,6 +203,21 @@ function checkFetchLayerDataParameters({
|
|
|
193
203
|
assert(credentials.apiVersion === API_VERSIONS.V3, 'Method only available for v3');
|
|
194
204
|
assert(credentials.apiBaseUrl, 'Must define apiBaseUrl');
|
|
195
205
|
assert(credentials.accessToken, 'Must define an accessToken');
|
|
206
|
+
|
|
207
|
+
if (columns) {
|
|
208
|
+
assert(COLUMNS_SUPPORT.includes(type), "The columns parameter is not supported by type ".concat(type));
|
|
209
|
+
}
|
|
210
|
+
|
|
211
|
+
if (geoColumn) {
|
|
212
|
+
assert(GEO_COLUMN_SUPPORT.includes(type), "The geoColumn parameter is not supported by type ".concat(type));
|
|
213
|
+
} else {
|
|
214
|
+
assert(!aggregationExp, 'Have aggregationExp, but geoColumn parameter is missing');
|
|
215
|
+
assert(!aggregationResLevel, 'Have aggregationResLevel, but geoColumn parameter is missing');
|
|
216
|
+
}
|
|
217
|
+
|
|
218
|
+
if (!aggregationExp) {
|
|
219
|
+
assert(!aggregationResLevel, 'Have aggregationResLevel, but aggregationExp parameter is missing');
|
|
220
|
+
}
|
|
196
221
|
}
|
|
197
222
|
|
|
198
223
|
export async function fetchLayerData({
|
|
@@ -204,8 +229,9 @@ export async function fetchLayerData({
|
|
|
204
229
|
columns,
|
|
205
230
|
format,
|
|
206
231
|
formatTiles,
|
|
207
|
-
|
|
208
|
-
|
|
232
|
+
clientId,
|
|
233
|
+
aggregationExp,
|
|
234
|
+
aggregationResLevel
|
|
209
235
|
}) {
|
|
210
236
|
const {
|
|
211
237
|
url,
|
|
@@ -221,8 +247,9 @@ export async function fetchLayerData({
|
|
|
221
247
|
columns,
|
|
222
248
|
format,
|
|
223
249
|
formatTiles,
|
|
224
|
-
|
|
225
|
-
|
|
250
|
+
clientId,
|
|
251
|
+
aggregationExp,
|
|
252
|
+
aggregationResLevel
|
|
226
253
|
});
|
|
227
254
|
const data = await requestData({
|
|
228
255
|
url,
|
|
@@ -231,13 +258,9 @@ export async function fetchLayerData({
|
|
|
231
258
|
});
|
|
232
259
|
const result = {
|
|
233
260
|
data,
|
|
234
|
-
format: mapFormat
|
|
261
|
+
format: mapFormat,
|
|
262
|
+
schema: metadata.schema
|
|
235
263
|
};
|
|
236
|
-
|
|
237
|
-
if (schema) {
|
|
238
|
-
result.schema = metadata.schema;
|
|
239
|
-
}
|
|
240
|
-
|
|
241
264
|
return result;
|
|
242
265
|
}
|
|
243
266
|
|
|
@@ -250,8 +273,9 @@ async function _fetchDataUrl({
|
|
|
250
273
|
columns,
|
|
251
274
|
format,
|
|
252
275
|
formatTiles,
|
|
253
|
-
|
|
254
|
-
|
|
276
|
+
clientId,
|
|
277
|
+
aggregationExp,
|
|
278
|
+
aggregationResLevel
|
|
255
279
|
}) {
|
|
256
280
|
const defaultCredentials = getDefaultCredentials();
|
|
257
281
|
const localCreds = { ...(defaultCredentials.apiVersion === API_VERSIONS.V3 && defaultCredentials),
|
|
@@ -261,7 +285,11 @@ async function _fetchDataUrl({
|
|
|
261
285
|
type,
|
|
262
286
|
source,
|
|
263
287
|
connection,
|
|
264
|
-
credentials: localCreds
|
|
288
|
+
credentials: localCreds,
|
|
289
|
+
geoColumn,
|
|
290
|
+
columns,
|
|
291
|
+
aggregationExp,
|
|
292
|
+
aggregationResLevel
|
|
265
293
|
});
|
|
266
294
|
|
|
267
295
|
if (!localCreds.mapsUrl) {
|
|
@@ -275,8 +303,9 @@ async function _fetchDataUrl({
|
|
|
275
303
|
credentials: localCreds,
|
|
276
304
|
geoColumn,
|
|
277
305
|
columns,
|
|
278
|
-
|
|
279
|
-
|
|
306
|
+
clientId,
|
|
307
|
+
aggregationExp,
|
|
308
|
+
aggregationResLevel
|
|
280
309
|
});
|
|
281
310
|
let url = null;
|
|
282
311
|
let mapFormat;
|
|
@@ -335,7 +364,6 @@ export async function getData({
|
|
|
335
364
|
geoColumn,
|
|
336
365
|
columns,
|
|
337
366
|
format,
|
|
338
|
-
schema: false,
|
|
339
367
|
clientId
|
|
340
368
|
});
|
|
341
369
|
return layerData.data;
|