UNPKG

kepler.gl

Version:

kepler.gl is a webgl based application to visualize large scale location data in the browser

71 lines (63 loc) 7.92 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); exports.aggregate = aggregate; var _d3Array = require('d3-array'); var _defaultSettings = require('../constants/default-settings'); // Copyright (c) 2018 Uber Technologies, Inc. // // Permission is hereby granted, free of charge, to any person obtaining a copy // of this software and associated documentation files (the "Software"), to deal // in the Software without restriction, including without limitation the rights // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell // copies of the Software, and to permit persons to whom the Software is // furnished to do so, subject to the following conditions: // // The above copyright notice and this permission notice shall be included in // all copies or substantial portions of the Software. // // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN // THE SOFTWARE. var getFrenquency = function getFrenquency(data) { return data.reduce(function (uniques, val) { uniques[val] = (uniques[val] || 0) + 1; return uniques; }, {}); }; function getMode(data) { var occur = getFrenquency(data); return Object.keys(occur).reduce(function (prev, key) { return occur[prev] >= occur[key] ? prev : key; }, Object.keys(occur)[0]); } function aggregate(data, technique) { switch (technique) { case _defaultSettings.AGGREGATION_TYPES.average: return (0, _d3Array.mean)(data); case _defaultSettings.AGGREGATION_TYPES.countUnique: return Object.keys(data.reduce(function (uniques, val) { uniques[val] = uniques[val] || 0; uniques[val] += 1; return uniques; }, {})).length; case _defaultSettings.AGGREGATION_TYPES.mode: return getMode(data); case _defaultSettings.AGGREGATION_TYPES.maximum: return (0, _d3Array.max)(data); case _defaultSettings.AGGREGATION_TYPES.minimum: return (0, _d3Array.min)(data); case _defaultSettings.AGGREGATION_TYPES.median: return (0, _d3Array.median)(data); case _defaultSettings.AGGREGATION_TYPES.sum: return (0, _d3Array.sum)(data); default: return data.length; } } //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlscy9hZ2dyZWdhdGUtdXRpbHMuanMiXSwibmFtZXMiOlsiYWdncmVnYXRlIiwiZ2V0RnJlbnF1ZW5jeSIsImRhdGEiLCJyZWR1Y2UiLCJ1bmlxdWVzIiwidmFsIiwiZ2V0TW9kZSIsIm9jY3VyIiwiT2JqZWN0Iiwia2V5cyIsInByZXYiLCJrZXkiLCJ0ZWNobmlxdWUiLCJBR0dSRUdBVElPTl9UWVBFUyIsImF2ZXJhZ2UiLCJjb3VudFVuaXF1ZSIsImxlbmd0aCIsIm1vZGUiLCJtYXhpbXVtIiwibWluaW11bSIsIm1lZGlhbiIsInN1bSJdLCJtYXBwaW5ncyI6Ijs7Ozs7UUFrQ2dCQSxTLEdBQUFBLFM7O0FBZGhCOztBQUNBOztBQXJCQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFLQSxJQUFNQyxnQkFBZ0IsU0FBaEJBLGFBQWdCO0FBQUEsU0FBUUMsS0FBS0MsTUFBTCxDQUFZLFVBQUNDLE9BQUQsRUFBVUMsR0FBVixFQUFrQjtBQUMxREQsWUFBUUMsR0FBUixJQUFlLENBQUNELFFBQVFDLEdBQVIsS0FBZ0IsQ0FBakIsSUFBc0IsQ0FBckM7QUFDQSxXQUFPRCxPQUFQO0FBQ0QsR0FINkIsRUFHM0IsRUFIMkIsQ0FBUjtBQUFBLENBQXRCOztBQUtBLFNBQVNFLE9BQVQsQ0FBaUJKLElBQWpCLEVBQXVCO0FBQ3JCLE1BQU1LLFFBQVFOLGNBQWNDLElBQWQsQ0FBZDtBQUNBLFNBQU9NLE9BQU9DLElBQVAsQ0FBWUYsS0FBWixFQUFtQkosTUFBbkIsQ0FBMEIsVUFBQ08sSUFBRCxFQUFPQyxHQUFQO0FBQUEsV0FDL0JKLE1BQU1HLElBQU4sS0FBZUgsTUFBTUksR0FBTixDQUFmLEdBQTRCRCxJQUE1QixHQUFtQ0MsR0FESjtBQUFBLEdBQTFCLEVBQ21DSCxPQUFPQyxJQUFQLENBQVlGLEtBQVosRUFBbUIsQ0FBbkIsQ0FEbkMsQ0FBUDtBQUVEOztBQUVNLFNBQVNQLFNBQVQsQ0FBbUJFLElBQW5CLEVBQXlCVSxTQUF6QixFQUFvQztBQUN6QyxVQUFRQSxTQUFSO0FBQ0UsU0FBS0MsbUNBQWtCQyxPQUF2QjtBQUNFLGFBQU8sbUJBQUtaLElBQUwsQ0FBUDtBQUNGLFNBQUtXLG1DQUFrQkUsV0FBdkI7QUFDRSxhQUFPUCxPQUFPQyxJQUFQLENBQ0xQLEtBQUtDLE1BQUwsQ0FBWSxVQUFDQyxPQUFELEVBQVVDLEdBQVYsRUFBa0I7QUFDNUJELGdCQUFRQyxHQUFSLElBQWVELFFBQVFDLEdBQVIsS0FBZ0IsQ0FBL0I7QUFDQUQsZ0JBQVFDLEdBQVIsS0FBZ0IsQ0FBaEI7QUFDQSxlQUFPRCxPQUFQO0FBQ0QsT0FKRCxFQUlHLEVBSkgsQ0FESyxFQU1MWSxNQU5GO0FBT0YsU0FBS0gsbUNBQWtCSSxJQUF2QjtBQUNFLGFBQU9YLFFBQVFKLElBQVIsQ0FBUDs7QUFFRixTQUFLVyxtQ0FBa0JLLE9BQXZCO0FBQ0UsYUFBTyxrQkFBSWhCLElBQUosQ0FBUDtBQUNGLFNBQUtXLG1DQUFrQk0sT0FBdkI7QUFDRSxhQUFPLGtCQUFJakIsSUFBSixDQUFQO0FBQ0YsU0FBS1csbUNBQWtCTyxNQUF2QjtBQUNFLGFBQU8scUJBQU9sQixJQUFQLENBQVA7QUFDRixTQUFLVyxtQ0FBa0JRLEdBQXZCO0FBQ0UsYUFBTyxrQkFBSW5CLElBQUosQ0FBUDtBQUNGO0FBQ0UsYUFBT0EsS0FBS2MsTUFBWjtBQXZCSjtBQXlCRCIsImZpbGUiOiJhZ2dyZWdhdGUtdXRpbHMuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgKGMpIDIwMTggVWJlciBUZWNobm9sb2dpZXMsIEluYy5cbi8vXG4vLyBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5XG4vLyBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSBcIlNvZnR3YXJlXCIpLCB0byBkZWFsXG4vLyBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzXG4vLyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsXG4vLyBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXNcbi8vIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6XG4vL1xuLy8gVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW5cbi8vIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLlxuLy9cbi8vIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcIkFTIElTXCIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1Jcbi8vIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLFxuLy8gRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFXG4vLyBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSXG4vLyBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLFxuLy8gT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTlxuLy8gVEhFIFNPRlRXQVJFLlxuXG5pbXBvcnQge21pbiwgbWF4LCBtZWFuLCBtZWRpYW4sIHN1bX0gZnJvbSAnZDMtYXJyYXknO1xuaW1wb3J0IHtBR0dSRUdBVElPTl9UWVBFU30gZnJvbSAnY29uc3RhbnRzL2RlZmF1bHQtc2V0dGluZ3MnO1xuXG5jb25zdCBnZXRGcmVucXVlbmN5ID0gZGF0YSA9PiBkYXRhLnJlZHVjZSgodW5pcXVlcywgdmFsKSA9PiB7XG4gIHVuaXF1ZXNbdmFsXSA9ICh1bmlxdWVzW3ZhbF0gfHwgMCkgKyAxO1xuICByZXR1cm4gdW5pcXVlcztcbn0sIHt9KTtcblxuZnVuY3Rpb24gZ2V0TW9kZShkYXRhKSB7XG4gIGNvbnN0IG9jY3VyID0gZ2V0RnJlbnF1ZW5jeShkYXRhKTtcbiAgcmV0dXJuIE9iamVjdC5rZXlzKG9jY3VyKS5yZWR1Y2UoKHByZXYsIGtleSkgPT5cbiAgICBvY2N1cltwcmV2XSA+PSBvY2N1cltrZXldID8gcHJldiA6IGtleSwgT2JqZWN0LmtleXMob2NjdXIpWzBdKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGFnZ3JlZ2F0ZShkYXRhLCB0ZWNobmlxdWUpIHtcbiAgc3dpdGNoICh0ZWNobmlxdWUpIHtcbiAgICBjYXNlIEFHR1JFR0FUSU9OX1RZUEVTLmF2ZXJhZ2U6XG4gICAgICByZXR1cm4gbWVhbihkYXRhKTtcbiAgICBjYXNlIEFHR1JFR0FUSU9OX1RZUEVTLmNvdW50VW5pcXVlOlxuICAgICAgcmV0dXJuIE9iamVjdC5rZXlzKFxuICAgICAgICBkYXRhLnJlZHVjZSgodW5pcXVlcywgdmFsKSA9PiB7XG4gICAgICAgICAgdW5pcXVlc1t2YWxdID0gdW5pcXVlc1t2YWxdIHx8IDA7XG4gICAgICAgICAgdW5pcXVlc1t2YWxdICs9IDE7XG4gICAgICAgICAgcmV0dXJuIHVuaXF1ZXM7XG4gICAgICAgIH0sIHt9KVxuICAgICAgKS5sZW5ndGg7XG4gICAgY2FzZSBBR0dSRUdBVElPTl9UWVBFUy5tb2RlOlxuICAgICAgcmV0dXJuIGdldE1vZGUoZGF0YSk7XG5cbiAgICBjYXNlIEFHR1JFR0FUSU9OX1RZUEVTLm1heGltdW06XG4gICAgICByZXR1cm4gbWF4KGRhdGEpO1xuICAgIGNhc2UgQUdHUkVHQVRJT05fVFlQRVMubWluaW11bTpcbiAgICAgIHJldHVybiBtaW4oZGF0YSk7XG4gICAgY2FzZSBBR0dSRUdBVElPTl9UWVBFUy5tZWRpYW46XG4gICAgICByZXR1cm4gbWVkaWFuKGRhdGEpO1xuICAgIGNhc2UgQUdHUkVHQVRJT05fVFlQRVMuc3VtOlxuICAgICAgcmV0dXJuIHN1bShkYXRhKTtcbiAgICBkZWZhdWx0OlxuICAgICAgcmV0dXJuIGRhdGEubGVuZ3RoO1xuICB9XG59XG4iXX0=