赣州市洪水风险预警系统三维版本
guoshilong
2023-02-27 4d8c6dd77427e8e581fda17b6b65ba86bfb7a815
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
import ComponentDatatype from '../Core/ComponentDatatype.js';
import defaultValue from '../Core/defaultValue.js';
import defined from '../Core/defined.js';
 
    /**
     * @private
     */
    function Cesium3DTileFeatureTable(featureTableJson, featureTableBinary) {
        this.json = featureTableJson;
        this.buffer = featureTableBinary;
        this._cachedTypedArrays = {};
        this.featuresLength = 0;
    }
 
    function getTypedArrayFromBinary(featureTable, semantic, componentType, componentLength, count, byteOffset) {
        var cachedTypedArrays = featureTable._cachedTypedArrays;
        var typedArray = cachedTypedArrays[semantic];
        if (!defined(typedArray)) {
            typedArray = ComponentDatatype.createArrayBufferView(componentType, featureTable.buffer.buffer, featureTable.buffer.byteOffset + byteOffset, count * componentLength);
            cachedTypedArrays[semantic] = typedArray;
        }
        return typedArray;
    }
 
    function getTypedArrayFromArray(featureTable, semantic, componentType, array) {
        var cachedTypedArrays = featureTable._cachedTypedArrays;
        var typedArray = cachedTypedArrays[semantic];
        if (!defined(typedArray)) {
            typedArray = ComponentDatatype.createTypedArray(componentType, array);
            cachedTypedArrays[semantic] = typedArray;
        }
        return typedArray;
    }
 
    Cesium3DTileFeatureTable.prototype.getGlobalProperty = function(semantic, componentType, componentLength) {
        var jsonValue = this.json[semantic];
        if (!defined(jsonValue)) {
            return undefined;
        }
 
        if (defined(jsonValue.byteOffset)) {
            componentType = defaultValue(componentType, ComponentDatatype.UNSIGNED_INT);
            componentLength = defaultValue(componentLength, 1);
            return getTypedArrayFromBinary(this, semantic, componentType, componentLength, 1, jsonValue.byteOffset);
        }
 
        return jsonValue;
    };
 
    Cesium3DTileFeatureTable.prototype.getPropertyArray = function(semantic, componentType, componentLength) {
        var jsonValue = this.json[semantic];
        if (!defined(jsonValue)) {
            return undefined;
        }
 
        if (defined(jsonValue.byteOffset)) {
            if (defined(jsonValue.componentType)) {
                componentType = ComponentDatatype.fromName(jsonValue.componentType);
            }
            return getTypedArrayFromBinary(this, semantic, componentType, componentLength, this.featuresLength, jsonValue.byteOffset);
        }
 
        return getTypedArrayFromArray(this, semantic, componentType, jsonValue);
    };
 
    Cesium3DTileFeatureTable.prototype.getProperty = function(semantic, componentType, componentLength, featureId, result) {
        var jsonValue = this.json[semantic];
        if (!defined(jsonValue)) {
            return undefined;
        }
 
        var typedArray = this.getPropertyArray(semantic, componentType, componentLength);
 
        if (componentLength === 1) {
            return typedArray[featureId];
        }
 
        for (var i = 0; i < componentLength; ++i) {
            result[i] = typedArray[componentLength * featureId + i];
        }
 
        return result;
    };
export default Cesium3DTileFeatureTable;