@cesium/engine
Version:
CesiumJS is a JavaScript library for creating 3D globes and 2D maps in a web browser without a plugin.
95 lines (86 loc) • 2.24 kB
JavaScript
import defined from "../Core/defined.js";
import I3SDataProvider from "./I3SDataProvider.js";
import Resource from "../Core/Resource.js";
/**
* This class implements an I3S statistics for Building Scene Layer.
* <p>
* Do not construct this directly, instead access statistics through {@link I3SDataProvider}.
* </p>
* @alias I3SStatistics
* @internalConstructor
*/
function I3SStatistics(dataProvider, uri) {
this._dataProvider = dataProvider;
this._resource = new Resource({ url: uri });
this._resource.setQueryParameters(dataProvider.resource.queryParameters);
this._resource.appendForwardSlash();
}
Object.defineProperties(I3SStatistics.prototype, {
/**
* Gets the resource for the statistics
* @memberof I3SStatistics.prototype
* @type {Resource}
* @readonly
*/
resource: {
get: function () {
return this._resource;
},
},
/**
* Gets the I3S data for this object.
* @memberof I3SStatistics.prototype
* @type {object}
* @readonly
*/
data: {
get: function () {
return this._data;
},
},
/**
* Gets the collection of attribute names.
* @memberof I3SStatistics.prototype
* @type {string[]}
* @readonly
*/
names: {
get: function () {
const names = [];
const summary = this._data.summary;
if (defined(summary)) {
for (let i = 0; i < summary.length; ++i) {
names.push(summary[i].fieldName);
}
}
return names;
},
},
});
/**
* Loads the content.
* @returns {Promise<object>} A promise that is resolved when the data of the I3S statistics is loaded
* @private
*/
I3SStatistics.prototype.load = async function () {
this._data = await I3SDataProvider.loadJson(this._resource);
return this._data;
};
/**
* @private
*/
I3SStatistics.prototype._getValues = function (attributeName) {
const summary = this._data.summary;
if (defined(summary)) {
for (let i = 0; i < summary.length; ++i) {
const attribute = summary[i];
if (attribute.fieldName === attributeName) {
if (defined(attribute.mostFrequentValues)) {
return [...attribute.mostFrequentValues];
}
return [];
}
}
}
};
export default I3SStatistics;