@antv/l7-layers 2.9.32 → 2.9.33
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/es/core/BaseLayer.d.ts +1 -0
- package/es/core/BaseLayer.js +12 -1
- package/es/core/interface.d.ts +3 -0
- package/es/plugins/DataMappingPlugin.d.ts +0 -1
- package/es/plugins/DataMappingPlugin.js +1 -8
- package/es/plugins/ShaderUniformPlugin.js +1 -9
- package/es/raster/index.d.ts +1 -1
- package/es/raster/index.js +4 -0
- package/es/raster/models/index.d.ts +1 -1
- package/es/raster/models/index.js +2 -0
- package/es/raster/models/raster.d.ts +2 -1
- package/es/raster/models/raster.js +118 -44
- package/es/raster/models/rasterRgb.d.ts +20 -0
- package/es/raster/models/rasterRgb.js +226 -0
- package/es/raster/shaders/raster_rgb_frag.glsl +12 -0
- package/es/tile/tileFactory/rasterData.js +6 -1
- package/es/tile/tileFactory/rasterDataLayer.d.ts +2 -1
- package/es/tile/tileFactory/rasterDataLayer.js +6 -1
- package/lib/core/BaseLayer.js +12 -1
- package/lib/plugins/DataMappingPlugin.js +1 -8
- package/lib/plugins/ShaderUniformPlugin.js +1 -9
- package/lib/raster/index.js +4 -0
- package/lib/raster/models/index.js +3 -0
- package/lib/raster/models/raster.js +120 -44
- package/lib/raster/models/rasterRgb.js +241 -0
- package/lib/raster/shaders/raster_rgb_frag.glsl +12 -0
- package/lib/tile/tileFactory/rasterData.js +6 -1
- package/lib/tile/tileFactory/rasterDataLayer.js +7 -1
- package/package.json +6 -6
package/es/core/BaseLayer.d.ts
CHANGED
|
@@ -6,6 +6,7 @@ import { Container } from 'inversify';
|
|
|
6
6
|
export default class BaseLayer<ChildLayerStyleOptions = {}> extends EventEmitter<LayerEventType> implements ILayer {
|
|
7
7
|
id: string;
|
|
8
8
|
name: string;
|
|
9
|
+
coordCenter: number[];
|
|
9
10
|
type: string;
|
|
10
11
|
visible: boolean;
|
|
11
12
|
zIndex: number;
|
package/es/core/BaseLayer.js
CHANGED
|
@@ -500,7 +500,7 @@ var BaseLayer = (_dec = lazyInject(TYPES.IGlobalConfigService), (_class = /*#__P
|
|
|
500
500
|
}, {
|
|
501
501
|
key: "source",
|
|
502
502
|
value: function source(data, options) {
|
|
503
|
-
if (data
|
|
503
|
+
if ((data === null || data === void 0 ? void 0 : data.type) === 'source') {
|
|
504
504
|
// 判断是否为source
|
|
505
505
|
this.setSource(data);
|
|
506
506
|
return this;
|
|
@@ -1045,6 +1045,15 @@ var BaseLayer = (_dec = lazyInject(TYPES.IGlobalConfigService), (_class = /*#__P
|
|
|
1045
1045
|
|
|
1046
1046
|
|
|
1047
1047
|
this.layerSource.on('sourceUpdate', function () {
|
|
1048
|
+
if (_this8.coordCenter === undefined) {
|
|
1049
|
+
var layerCenter = _this8.layerSource.center;
|
|
1050
|
+
_this8.coordCenter = layerCenter;
|
|
1051
|
+
_this8.mapService.setCoordCenter && _this8.mapService.setCoordCenter(layerCenter); // // @ts-ignore
|
|
1052
|
+
// this.mapService.map.customCoords.setCenter(layerCenter);
|
|
1053
|
+
// // @ts-ignore
|
|
1054
|
+
// this.mapService.setCustomCoordCenter(layerCenter);
|
|
1055
|
+
}
|
|
1056
|
+
|
|
1048
1057
|
_this8.sourceEvent();
|
|
1049
1058
|
});
|
|
1050
1059
|
}
|
|
@@ -1176,6 +1185,8 @@ var BaseLayer = (_dec = lazyInject(TYPES.IGlobalConfigService), (_class = /*#__P
|
|
|
1176
1185
|
return reject(err);
|
|
1177
1186
|
});
|
|
1178
1187
|
} else {
|
|
1188
|
+
// console.log(this.encodedData[1].originCoordinates[0])
|
|
1189
|
+
// console.log(this.encodedData[1].coordinates[0])
|
|
1179
1190
|
var _this9$styleAttribute = _this9.styleAttributeService.createAttributesAndIndices(_this9.encodedData, triangulation, segmentNumber),
|
|
1180
1191
|
attributes = _this9$styleAttribute.attributes,
|
|
1181
1192
|
elements = _this9$styleAttribute.elements,
|
package/es/core/interface.d.ts
CHANGED
|
@@ -217,5 +217,8 @@ export interface IRasterLayerStyleOptions extends IBaseLayerStyleOptions {
|
|
|
217
217
|
clampHigh: boolean;
|
|
218
218
|
rampColors: IColorRamp;
|
|
219
219
|
rampColorsData?: ImageData | IImagedata;
|
|
220
|
+
channelRMax?: number;
|
|
221
|
+
channelGMax?: number;
|
|
222
|
+
channelBMax?: number;
|
|
220
223
|
}
|
|
221
224
|
export {};
|
|
@@ -11,7 +11,6 @@ export default class DataMappingPlugin implements ILayerPlugin {
|
|
|
11
11
|
private mapLayerMapping;
|
|
12
12
|
private adjustData2Amap2Coordinates;
|
|
13
13
|
private adjustData2SimpleCoordinates;
|
|
14
|
-
private getLayerCenter;
|
|
15
14
|
private unProjectCoordinates;
|
|
16
15
|
private applyAttributeMapping;
|
|
17
16
|
private applyMapLayerAttributeMapping;
|
|
@@ -254,7 +254,7 @@ var DataMappingPlugin = (_dec = injectable(), _dec2 = inject(TYPES.IMapService),
|
|
|
254
254
|
|
|
255
255
|
// 根据地图的类型判断是否需要对点位数据进行处理, 若是高德2.0则需要对坐标进行相对偏移
|
|
256
256
|
if (mappedData.length > 0 && this.mapService.version === Version['GAODE2.x']) {
|
|
257
|
-
var layerCenter =
|
|
257
|
+
var layerCenter = layer.coordCenter;
|
|
258
258
|
|
|
259
259
|
if (typeof mappedData[0].coordinates[0] === 'number') {
|
|
260
260
|
// 单个的点数据
|
|
@@ -273,7 +273,6 @@ var DataMappingPlugin = (_dec = injectable(), _dec2 = inject(TYPES.IMapService),
|
|
|
273
273
|
});
|
|
274
274
|
} else {
|
|
275
275
|
// 连续的线、面数据
|
|
276
|
-
// @ts-ignore
|
|
277
276
|
mappedData // TODO: 避免经纬度被重复计算导致坐标位置偏移
|
|
278
277
|
.filter(function (d) {
|
|
279
278
|
return !d.originCoordinates;
|
|
@@ -303,12 +302,6 @@ var DataMappingPlugin = (_dec = injectable(), _dec2 = inject(TYPES.IMapService),
|
|
|
303
302
|
});
|
|
304
303
|
}
|
|
305
304
|
}
|
|
306
|
-
}, {
|
|
307
|
-
key: "getLayerCenter",
|
|
308
|
-
value: function getLayerCenter(layer) {
|
|
309
|
-
var source = layer.getSource();
|
|
310
|
-
return source.center;
|
|
311
|
-
}
|
|
312
305
|
}, {
|
|
313
306
|
key: "unProjectCoordinates",
|
|
314
307
|
value: function unProjectCoordinates(coordinates) {
|
|
@@ -48,15 +48,7 @@ var ShaderUniformPlugin = (_dec = injectable(), _dec2 = inject(TYPES.ICameraServ
|
|
|
48
48
|
_this.coordinateSystemService.refresh(offset);
|
|
49
49
|
|
|
50
50
|
if (version === 'GAODE2.x') {
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
_this.mapService.map.customCoords.setCenter(layerCenter); // @ts-ignore
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
_this.mapService.setCustomCoordCenter(layerCenter); // @ts-ignore
|
|
58
|
-
|
|
59
|
-
|
|
51
|
+
// @ts-ignore
|
|
60
52
|
mvp = _this.mapService.map.customCoords.getMVPMatrix(); // mvp = amapCustomCoords.getMVPMatrix()
|
|
61
53
|
// @ts-ignore
|
|
62
54
|
|
package/es/raster/index.d.ts
CHANGED
package/es/raster/index.js
CHANGED
|
@@ -73,6 +73,7 @@ var RaterLayer = /*#__PURE__*/function (_BaseLayer) {
|
|
|
73
73
|
var type = this.getModelType();
|
|
74
74
|
var defaultConfig = {
|
|
75
75
|
raster: {},
|
|
76
|
+
rasterRgb: {},
|
|
76
77
|
raster3d: {},
|
|
77
78
|
rasterTile: {}
|
|
78
79
|
};
|
|
@@ -88,6 +89,9 @@ var RaterLayer = /*#__PURE__*/function (_BaseLayer) {
|
|
|
88
89
|
case 'raster':
|
|
89
90
|
return 'raster';
|
|
90
91
|
|
|
92
|
+
case 'rasterRgb':
|
|
93
|
+
return 'rasterRgb';
|
|
94
|
+
|
|
91
95
|
case 'rasterTile':
|
|
92
96
|
return 'rasterTile';
|
|
93
97
|
|
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
import RasterTileModel from "../../tile/models/tileModel";
|
|
2
2
|
import RasterModel from "./raster";
|
|
3
|
+
import RasterRgbModel from "./rasterRgb";
|
|
3
4
|
var RasterModels = {
|
|
4
5
|
raster: RasterModel,
|
|
6
|
+
rasterRgb: RasterRgbModel,
|
|
5
7
|
raster3d: RasterModel,
|
|
6
8
|
rasterTile: RasterTileModel
|
|
7
9
|
};
|
|
@@ -13,7 +13,8 @@ export default class RasterModel extends BaseModel {
|
|
|
13
13
|
u_noDataValue: number;
|
|
14
14
|
u_colorTexture: ITexture2D;
|
|
15
15
|
};
|
|
16
|
-
|
|
16
|
+
private getRasterData;
|
|
17
|
+
initModels(callbackModel: (models: IModel[]) => void): Promise<void>;
|
|
17
18
|
buildModels(callbackModel: (models: IModel[]) => void): void;
|
|
18
19
|
clearModels(): void;
|
|
19
20
|
protected registerBuiltinAttributes(): void;
|
|
@@ -1,8 +1,10 @@
|
|
|
1
|
+
import _asyncToGenerator from "@babel/runtime/helpers/asyncToGenerator";
|
|
1
2
|
import _classCallCheck from "@babel/runtime/helpers/classCallCheck";
|
|
2
3
|
import _createClass from "@babel/runtime/helpers/createClass";
|
|
3
4
|
import _inherits from "@babel/runtime/helpers/inherits";
|
|
4
5
|
import _possibleConstructorReturn from "@babel/runtime/helpers/possibleConstructorReturn";
|
|
5
6
|
import _getPrototypeOf from "@babel/runtime/helpers/getPrototypeOf";
|
|
7
|
+
import _regeneratorRuntime from "@babel/runtime/regenerator";
|
|
6
8
|
|
|
7
9
|
function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }
|
|
8
10
|
|
|
@@ -62,53 +64,125 @@ var RasterModel = /*#__PURE__*/function (_BaseModel) {
|
|
|
62
64
|
u_colorTexture: this.colorTexture
|
|
63
65
|
};
|
|
64
66
|
}
|
|
67
|
+
}, {
|
|
68
|
+
key: "getRasterData",
|
|
69
|
+
value: function () {
|
|
70
|
+
var _getRasterData = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee(parserDataItem) {
|
|
71
|
+
var _yield$parserDataItem, rasterData, width, height;
|
|
72
|
+
|
|
73
|
+
return _regeneratorRuntime.wrap(function _callee$(_context) {
|
|
74
|
+
while (1) {
|
|
75
|
+
switch (_context.prev = _context.next) {
|
|
76
|
+
case 0:
|
|
77
|
+
if (!Array.isArray(parserDataItem.data)) {
|
|
78
|
+
_context.next = 4;
|
|
79
|
+
break;
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
return _context.abrupt("return", {
|
|
83
|
+
data: parserDataItem.data,
|
|
84
|
+
width: parserDataItem.width,
|
|
85
|
+
height: parserDataItem.height
|
|
86
|
+
});
|
|
87
|
+
|
|
88
|
+
case 4:
|
|
89
|
+
_context.next = 6;
|
|
90
|
+
return parserDataItem.data;
|
|
91
|
+
|
|
92
|
+
case 6:
|
|
93
|
+
_yield$parserDataItem = _context.sent;
|
|
94
|
+
rasterData = _yield$parserDataItem.rasterData;
|
|
95
|
+
width = _yield$parserDataItem.width;
|
|
96
|
+
height = _yield$parserDataItem.height;
|
|
97
|
+
return _context.abrupt("return", {
|
|
98
|
+
data: Array.from(rasterData),
|
|
99
|
+
width: width,
|
|
100
|
+
height: height
|
|
101
|
+
});
|
|
102
|
+
|
|
103
|
+
case 11:
|
|
104
|
+
case "end":
|
|
105
|
+
return _context.stop();
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
}, _callee);
|
|
109
|
+
}));
|
|
110
|
+
|
|
111
|
+
function getRasterData(_x) {
|
|
112
|
+
return _getRasterData.apply(this, arguments);
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
return getRasterData;
|
|
116
|
+
}()
|
|
65
117
|
}, {
|
|
66
118
|
key: "initModels",
|
|
67
|
-
value: function
|
|
68
|
-
var
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
119
|
+
value: function () {
|
|
120
|
+
var _initModels = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee2(callbackModel) {
|
|
121
|
+
var _ref2, _ref2$mask, mask, _ref2$maskInside, maskInside, rampColorsData, rampColors, source, createTexture2D, parserDataItem, _yield$this$getRaster, data, width, height, imageData;
|
|
122
|
+
|
|
123
|
+
return _regeneratorRuntime.wrap(function _callee2$(_context2) {
|
|
124
|
+
while (1) {
|
|
125
|
+
switch (_context2.prev = _context2.next) {
|
|
126
|
+
case 0:
|
|
127
|
+
_ref2 = this.layer.getLayerConfig(), _ref2$mask = _ref2.mask, mask = _ref2$mask === void 0 ? false : _ref2$mask, _ref2$maskInside = _ref2.maskInside, maskInside = _ref2$maskInside === void 0 ? true : _ref2$maskInside, rampColorsData = _ref2.rampColorsData, rampColors = _ref2.rampColors;
|
|
128
|
+
source = this.layer.getSource();
|
|
129
|
+
createTexture2D = this.rendererService.createTexture2D;
|
|
130
|
+
parserDataItem = source.data.dataArray[0];
|
|
131
|
+
_context2.next = 6;
|
|
132
|
+
return this.getRasterData(parserDataItem);
|
|
133
|
+
|
|
134
|
+
case 6:
|
|
135
|
+
_yield$this$getRaster = _context2.sent;
|
|
136
|
+
data = _yield$this$getRaster.data;
|
|
137
|
+
width = _yield$this$getRaster.width;
|
|
138
|
+
height = _yield$this$getRaster.height;
|
|
139
|
+
this.texture = createTexture2D({
|
|
140
|
+
data: data,
|
|
141
|
+
width: width,
|
|
142
|
+
height: height,
|
|
143
|
+
format: gl.LUMINANCE,
|
|
144
|
+
type: gl.FLOAT // aniso: 4,
|
|
145
|
+
|
|
146
|
+
});
|
|
147
|
+
imageData = rampColorsData ? rampColorsData : generateColorRamp(rampColors);
|
|
148
|
+
this.colorTexture = createTexture2D({
|
|
149
|
+
data: imageData.data,
|
|
150
|
+
width: imageData.width,
|
|
151
|
+
height: imageData.height,
|
|
152
|
+
flipY: false
|
|
153
|
+
});
|
|
154
|
+
this.layer.buildLayerModel({
|
|
155
|
+
moduleName: 'rasterImageData',
|
|
156
|
+
vertexShader: rasterVert,
|
|
157
|
+
fragmentShader: rasterFrag,
|
|
158
|
+
triangulation: RasterImageTriangulation,
|
|
159
|
+
primitive: gl.TRIANGLES,
|
|
160
|
+
depth: {
|
|
161
|
+
enable: false
|
|
162
|
+
},
|
|
163
|
+
stencil: getMask(mask, maskInside),
|
|
164
|
+
pick: false
|
|
165
|
+
}).then(function (model) {
|
|
166
|
+
callbackModel([model]);
|
|
167
|
+
}).catch(function (err) {
|
|
168
|
+
console.warn(err);
|
|
169
|
+
callbackModel([]);
|
|
170
|
+
});
|
|
171
|
+
|
|
172
|
+
case 14:
|
|
173
|
+
case "end":
|
|
174
|
+
return _context2.stop();
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
}, _callee2, this);
|
|
178
|
+
}));
|
|
85
179
|
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
flipY: false
|
|
93
|
-
});
|
|
94
|
-
this.layer.buildLayerModel({
|
|
95
|
-
moduleName: 'rasterImageData',
|
|
96
|
-
vertexShader: rasterVert,
|
|
97
|
-
fragmentShader: rasterFrag,
|
|
98
|
-
triangulation: RasterImageTriangulation,
|
|
99
|
-
primitive: gl.TRIANGLES,
|
|
100
|
-
depth: {
|
|
101
|
-
enable: false
|
|
102
|
-
},
|
|
103
|
-
stencil: getMask(mask, maskInside),
|
|
104
|
-
pick: false
|
|
105
|
-
}).then(function (model) {
|
|
106
|
-
callbackModel([model]);
|
|
107
|
-
}).catch(function (err) {
|
|
108
|
-
console.warn(err);
|
|
109
|
-
callbackModel([]);
|
|
110
|
-
});
|
|
111
|
-
}
|
|
180
|
+
function initModels(_x2) {
|
|
181
|
+
return _initModels.apply(this, arguments);
|
|
182
|
+
}
|
|
183
|
+
|
|
184
|
+
return initModels;
|
|
185
|
+
}()
|
|
112
186
|
}, {
|
|
113
187
|
key: "buildModels",
|
|
114
188
|
value: function buildModels(callbackModel) {
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { IModel, ITexture2D } from '@antv/l7-core';
|
|
2
|
+
import BaseModel from '../../core/BaseModel';
|
|
3
|
+
export default class RasterModel extends BaseModel {
|
|
4
|
+
protected texture: ITexture2D;
|
|
5
|
+
protected channelRMax: number;
|
|
6
|
+
protected channelGMax: number;
|
|
7
|
+
protected channelBMax: number;
|
|
8
|
+
getUninforms(): {
|
|
9
|
+
u_opacity: number;
|
|
10
|
+
u_texture: ITexture2D;
|
|
11
|
+
u_channelRMax: number;
|
|
12
|
+
u_channelGMax: number;
|
|
13
|
+
u_channelBMax: number;
|
|
14
|
+
};
|
|
15
|
+
private getRasterData;
|
|
16
|
+
initModels(callbackModel: (models: IModel[]) => void): Promise<void>;
|
|
17
|
+
buildModels(callbackModel: (models: IModel[]) => void): void;
|
|
18
|
+
clearModels(): void;
|
|
19
|
+
protected registerBuiltinAttributes(): void;
|
|
20
|
+
}
|
|
@@ -0,0 +1,226 @@
|
|
|
1
|
+
import _asyncToGenerator from "@babel/runtime/helpers/asyncToGenerator";
|
|
2
|
+
import _classCallCheck from "@babel/runtime/helpers/classCallCheck";
|
|
3
|
+
import _createClass from "@babel/runtime/helpers/createClass";
|
|
4
|
+
import _assertThisInitialized from "@babel/runtime/helpers/assertThisInitialized";
|
|
5
|
+
import _inherits from "@babel/runtime/helpers/inherits";
|
|
6
|
+
import _possibleConstructorReturn from "@babel/runtime/helpers/possibleConstructorReturn";
|
|
7
|
+
import _getPrototypeOf from "@babel/runtime/helpers/getPrototypeOf";
|
|
8
|
+
import _defineProperty from "@babel/runtime/helpers/defineProperty";
|
|
9
|
+
import _regeneratorRuntime from "@babel/runtime/regenerator";
|
|
10
|
+
|
|
11
|
+
function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }
|
|
12
|
+
|
|
13
|
+
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; } }
|
|
14
|
+
|
|
15
|
+
import { AttributeType, gl } from '@antv/l7-core';
|
|
16
|
+
import { getMask } from '@antv/l7-utils';
|
|
17
|
+
import BaseModel from "../../core/BaseModel";
|
|
18
|
+
import { RasterImageTriangulation } from "../../core/triangulation";
|
|
19
|
+
|
|
20
|
+
/* babel-plugin-inline-import '../shaders/raster_rgb_frag.glsl' */
|
|
21
|
+
var rasterFrag = "precision mediump float;\nuniform float u_opacity: 1.0;\nuniform sampler2D u_texture;\nuniform float u_channelRMax: 256.;\nuniform float u_channelGMax: 256.;\nuniform float u_channelBMax: 256.;\nvarying vec2 v_texCoord;\n\nvoid main() {\n vec3 rgb = texture2D(u_texture,vec2(v_texCoord.x,v_texCoord.y)).rgb;\n gl_FragColor = vec4(rgb.r/u_channelRMax, rgb.g/u_channelGMax, rgb.b/u_channelBMax, u_opacity);\n}";
|
|
22
|
+
|
|
23
|
+
/* babel-plugin-inline-import '../shaders/raster_2d_vert.glsl' */
|
|
24
|
+
var rasterVert = "precision highp float;\nuniform mat4 u_ModelMatrix;\nuniform mat4 u_Mvp;\nattribute vec3 a_Position;\nattribute vec2 a_Uv;\nvarying vec2 v_texCoord;\n#pragma include \"projection\"\nvoid main() {\n v_texCoord = a_Uv;\n vec4 project_pos = project_position(vec4(a_Position, 1.0));\n\n if(u_CoordinateSystem == COORDINATE_SYSTEM_P20_2) { // gaode2.x\n gl_Position = u_Mvp * (vec4(project_pos.xy,0., 1.0));\n } else {\n gl_Position = project_common_position_to_clipspace(vec4(project_pos.xy,0., 1.0));\n }\n}\n";
|
|
25
|
+
|
|
26
|
+
var RasterModel = /*#__PURE__*/function (_BaseModel) {
|
|
27
|
+
_inherits(RasterModel, _BaseModel);
|
|
28
|
+
|
|
29
|
+
var _super = _createSuper(RasterModel);
|
|
30
|
+
|
|
31
|
+
function RasterModel() {
|
|
32
|
+
var _this;
|
|
33
|
+
|
|
34
|
+
_classCallCheck(this, RasterModel);
|
|
35
|
+
|
|
36
|
+
for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
|
|
37
|
+
args[_key] = arguments[_key];
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
_this = _super.call.apply(_super, [this].concat(args));
|
|
41
|
+
|
|
42
|
+
_defineProperty(_assertThisInitialized(_this), "channelRMax", 256);
|
|
43
|
+
|
|
44
|
+
_defineProperty(_assertThisInitialized(_this), "channelGMax", 256);
|
|
45
|
+
|
|
46
|
+
_defineProperty(_assertThisInitialized(_this), "channelBMax", 256);
|
|
47
|
+
|
|
48
|
+
return _this;
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
_createClass(RasterModel, [{
|
|
52
|
+
key: "getUninforms",
|
|
53
|
+
value: function getUninforms() {
|
|
54
|
+
var _ref = this.layer.getLayerConfig(),
|
|
55
|
+
_ref$opacity = _ref.opacity,
|
|
56
|
+
opacity = _ref$opacity === void 0 ? 1 : _ref$opacity,
|
|
57
|
+
channelRMax = _ref.channelRMax,
|
|
58
|
+
channelGMax = _ref.channelGMax,
|
|
59
|
+
channelBMax = _ref.channelBMax;
|
|
60
|
+
|
|
61
|
+
return {
|
|
62
|
+
u_opacity: opacity || 1,
|
|
63
|
+
u_texture: this.texture,
|
|
64
|
+
u_channelRMax: channelRMax !== undefined ? channelRMax : this.channelRMax,
|
|
65
|
+
u_channelGMax: channelGMax !== undefined ? channelGMax : this.channelGMax,
|
|
66
|
+
u_channelBMax: channelBMax !== undefined ? channelBMax : this.channelBMax
|
|
67
|
+
};
|
|
68
|
+
}
|
|
69
|
+
}, {
|
|
70
|
+
key: "getRasterData",
|
|
71
|
+
value: function () {
|
|
72
|
+
var _getRasterData = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee(parserDataItem) {
|
|
73
|
+
var _yield$parserDataItem, rasterData, width, height, channelR, channelG, channelB;
|
|
74
|
+
|
|
75
|
+
return _regeneratorRuntime.wrap(function _callee$(_context) {
|
|
76
|
+
while (1) {
|
|
77
|
+
switch (_context.prev = _context.next) {
|
|
78
|
+
case 0:
|
|
79
|
+
if (!Array.isArray(parserDataItem.data)) {
|
|
80
|
+
_context.next = 4;
|
|
81
|
+
break;
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
return _context.abrupt("return", {
|
|
85
|
+
data: parserDataItem.data,
|
|
86
|
+
width: parserDataItem.width,
|
|
87
|
+
height: parserDataItem.height
|
|
88
|
+
});
|
|
89
|
+
|
|
90
|
+
case 4:
|
|
91
|
+
_context.next = 6;
|
|
92
|
+
return parserDataItem.data;
|
|
93
|
+
|
|
94
|
+
case 6:
|
|
95
|
+
_yield$parserDataItem = _context.sent;
|
|
96
|
+
rasterData = _yield$parserDataItem.rasterData;
|
|
97
|
+
width = _yield$parserDataItem.width;
|
|
98
|
+
height = _yield$parserDataItem.height;
|
|
99
|
+
channelR = _yield$parserDataItem.channelR;
|
|
100
|
+
channelG = _yield$parserDataItem.channelG;
|
|
101
|
+
channelB = _yield$parserDataItem.channelB;
|
|
102
|
+
this.channelRMax = channelR;
|
|
103
|
+
this.channelGMax = channelG;
|
|
104
|
+
this.channelBMax = channelB;
|
|
105
|
+
return _context.abrupt("return", {
|
|
106
|
+
data: Array.from(rasterData),
|
|
107
|
+
width: width,
|
|
108
|
+
height: height
|
|
109
|
+
});
|
|
110
|
+
|
|
111
|
+
case 17:
|
|
112
|
+
case "end":
|
|
113
|
+
return _context.stop();
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
}, _callee, this);
|
|
117
|
+
}));
|
|
118
|
+
|
|
119
|
+
function getRasterData(_x) {
|
|
120
|
+
return _getRasterData.apply(this, arguments);
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
return getRasterData;
|
|
124
|
+
}()
|
|
125
|
+
}, {
|
|
126
|
+
key: "initModels",
|
|
127
|
+
value: function () {
|
|
128
|
+
var _initModels = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee2(callbackModel) {
|
|
129
|
+
var _ref2, _ref2$mask, mask, _ref2$maskInside, maskInside, source, createTexture2D, parserDataItem, _yield$this$getRaster, data, width, height;
|
|
130
|
+
|
|
131
|
+
return _regeneratorRuntime.wrap(function _callee2$(_context2) {
|
|
132
|
+
while (1) {
|
|
133
|
+
switch (_context2.prev = _context2.next) {
|
|
134
|
+
case 0:
|
|
135
|
+
_ref2 = this.layer.getLayerConfig(), _ref2$mask = _ref2.mask, mask = _ref2$mask === void 0 ? false : _ref2$mask, _ref2$maskInside = _ref2.maskInside, maskInside = _ref2$maskInside === void 0 ? true : _ref2$maskInside;
|
|
136
|
+
source = this.layer.getSource();
|
|
137
|
+
createTexture2D = this.rendererService.createTexture2D;
|
|
138
|
+
parserDataItem = source.data.dataArray[0];
|
|
139
|
+
_context2.next = 6;
|
|
140
|
+
return this.getRasterData(parserDataItem);
|
|
141
|
+
|
|
142
|
+
case 6:
|
|
143
|
+
_yield$this$getRaster = _context2.sent;
|
|
144
|
+
data = _yield$this$getRaster.data;
|
|
145
|
+
width = _yield$this$getRaster.width;
|
|
146
|
+
height = _yield$this$getRaster.height;
|
|
147
|
+
this.texture = createTexture2D({
|
|
148
|
+
// @ts-ignore
|
|
149
|
+
data: data,
|
|
150
|
+
width: width,
|
|
151
|
+
height: height,
|
|
152
|
+
format: gl.RGB,
|
|
153
|
+
type: gl.FLOAT
|
|
154
|
+
});
|
|
155
|
+
this.layer.buildLayerModel({
|
|
156
|
+
moduleName: 'rasterImageDataRGBA',
|
|
157
|
+
vertexShader: rasterVert,
|
|
158
|
+
fragmentShader: rasterFrag,
|
|
159
|
+
triangulation: RasterImageTriangulation,
|
|
160
|
+
primitive: gl.TRIANGLES,
|
|
161
|
+
depth: {
|
|
162
|
+
enable: false
|
|
163
|
+
},
|
|
164
|
+
stencil: getMask(mask, maskInside),
|
|
165
|
+
pick: false
|
|
166
|
+
}).then(function (model) {
|
|
167
|
+
callbackModel([model]);
|
|
168
|
+
}).catch(function (err) {
|
|
169
|
+
console.warn(err);
|
|
170
|
+
callbackModel([]);
|
|
171
|
+
});
|
|
172
|
+
|
|
173
|
+
case 12:
|
|
174
|
+
case "end":
|
|
175
|
+
return _context2.stop();
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
}, _callee2, this);
|
|
179
|
+
}));
|
|
180
|
+
|
|
181
|
+
function initModels(_x2) {
|
|
182
|
+
return _initModels.apply(this, arguments);
|
|
183
|
+
}
|
|
184
|
+
|
|
185
|
+
return initModels;
|
|
186
|
+
}()
|
|
187
|
+
}, {
|
|
188
|
+
key: "buildModels",
|
|
189
|
+
value: function buildModels(callbackModel) {
|
|
190
|
+
this.initModels(callbackModel);
|
|
191
|
+
}
|
|
192
|
+
}, {
|
|
193
|
+
key: "clearModels",
|
|
194
|
+
value: function clearModels() {
|
|
195
|
+
var _this$texture;
|
|
196
|
+
|
|
197
|
+
(_this$texture = this.texture) === null || _this$texture === void 0 ? void 0 : _this$texture.destroy();
|
|
198
|
+
}
|
|
199
|
+
}, {
|
|
200
|
+
key: "registerBuiltinAttributes",
|
|
201
|
+
value: function registerBuiltinAttributes() {
|
|
202
|
+
// point layer size;
|
|
203
|
+
this.styleAttributeService.registerStyleAttribute({
|
|
204
|
+
name: 'uv',
|
|
205
|
+
type: AttributeType.Attribute,
|
|
206
|
+
descriptor: {
|
|
207
|
+
name: 'a_Uv',
|
|
208
|
+
buffer: {
|
|
209
|
+
// give the WebGL driver a hint that this buffer may change
|
|
210
|
+
usage: gl.DYNAMIC_DRAW,
|
|
211
|
+
data: [],
|
|
212
|
+
type: gl.FLOAT
|
|
213
|
+
},
|
|
214
|
+
size: 2,
|
|
215
|
+
update: function update(feature, featureIdx, vertex) {
|
|
216
|
+
return [vertex[3], vertex[4]];
|
|
217
|
+
}
|
|
218
|
+
}
|
|
219
|
+
});
|
|
220
|
+
}
|
|
221
|
+
}]);
|
|
222
|
+
|
|
223
|
+
return RasterModel;
|
|
224
|
+
}(BaseModel);
|
|
225
|
+
|
|
226
|
+
export { RasterModel as default };
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
precision mediump float;
|
|
2
|
+
uniform float u_opacity: 1.0;
|
|
3
|
+
uniform sampler2D u_texture;
|
|
4
|
+
uniform float u_channelRMax: 256.;
|
|
5
|
+
uniform float u_channelGMax: 256.;
|
|
6
|
+
uniform float u_channelBMax: 256.;
|
|
7
|
+
varying vec2 v_texCoord;
|
|
8
|
+
|
|
9
|
+
void main() {
|
|
10
|
+
vec3 rgb = texture2D(u_texture,vec2(v_texCoord.x,v_texCoord.y)).rgb;
|
|
11
|
+
gl_FragColor = vec4(rgb.r/u_channelRMax, rgb.g/u_channelGMax, rgb.b/u_channelBMax, u_opacity);
|
|
12
|
+
}
|
|
@@ -30,6 +30,8 @@ var RasterTiffTile = /*#__PURE__*/function (_TileFactory) {
|
|
|
30
30
|
_createClass(RasterTiffTile, [{
|
|
31
31
|
key: "createTile",
|
|
32
32
|
value: function createTile(tile, initOptions) {
|
|
33
|
+
var _this$parentLayer, _this$parentLayer$get, _this$parentLayer$get2;
|
|
34
|
+
|
|
33
35
|
var colorTexture = initOptions.colorTexture,
|
|
34
36
|
opacity = initOptions.opacity,
|
|
35
37
|
domain = initOptions.domain,
|
|
@@ -46,12 +48,14 @@ var RasterTiffTile = /*#__PURE__*/function (_TileFactory) {
|
|
|
46
48
|
};
|
|
47
49
|
}
|
|
48
50
|
|
|
51
|
+
var dataType = (_this$parentLayer = this.parentLayer) === null || _this$parentLayer === void 0 ? void 0 : (_this$parentLayer$get = _this$parentLayer.getSource()) === null || _this$parentLayer$get === void 0 ? void 0 : (_this$parentLayer$get2 = _this$parentLayer$get.parser) === null || _this$parentLayer$get2 === void 0 ? void 0 : _this$parentLayer$get2.dataType;
|
|
49
52
|
var layer = new RasterDataLayer({
|
|
50
53
|
visible: tile.isVisible,
|
|
51
54
|
mask: mask
|
|
52
55
|
}).source(rasterData.data, {
|
|
53
56
|
parser: {
|
|
54
|
-
|
|
57
|
+
// 数据栅格分为单通道栅格和多通道彩色栅格
|
|
58
|
+
type: dataType === 'rgb' ? 'rasterRgb' : 'raster',
|
|
55
59
|
width: rasterData.width,
|
|
56
60
|
height: rasterData.height,
|
|
57
61
|
extent: tile.bboxPolygon.bbox
|
|
@@ -59,6 +63,7 @@ var RasterTiffTile = /*#__PURE__*/function (_TileFactory) {
|
|
|
59
63
|
}).style({
|
|
60
64
|
colorTexture: colorTexture,
|
|
61
65
|
opacity: opacity,
|
|
66
|
+
// TODO: 目前从 domain 从父瓦片图层的 style 进行配置,后续考虑从每个时机请求的栅格文件中进行配置
|
|
62
67
|
domain: domain,
|
|
63
68
|
clampHigh: clampHigh,
|
|
64
69
|
clampLow: clampLow
|
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
import BaseLayer from '../../core/BaseLayer';
|
|
2
2
|
import { IRasterLayerStyleOptions } from '../../core/interface';
|
|
3
3
|
import RasterModel from '../../raster/models/rasterTile';
|
|
4
|
+
import RasterRgbModel from '../../raster/models/rasterRgb';
|
|
4
5
|
export default class RasterTiffLayer extends BaseLayer<Partial<IRasterLayerStyleOptions>> {
|
|
5
6
|
type: string;
|
|
6
7
|
buildModels(): void;
|
|
7
8
|
rebuildModels(): void;
|
|
8
|
-
protected getModelType(): typeof RasterModel;
|
|
9
|
+
protected getModelType(): typeof RasterModel | typeof RasterRgbModel;
|
|
9
10
|
protected getConfigSchema(): {
|
|
10
11
|
properties: {
|
|
11
12
|
opacity: {
|