@antv/l7-layers 2.17.2 → 2.17.4
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/Geometry/index.js +31 -9
- package/es/Geometry/models/billboard.js +89 -51
- package/es/Geometry/models/plane.js +143 -81
- package/es/Geometry/models/sprite.js +118 -60
- package/es/canvas/index.js +33 -10
- package/es/canvas/models/canvas.js +97 -41
- package/es/citybuliding/building.js +27 -8
- package/es/citybuliding/models/build.js +82 -57
- package/es/core/BaseLayer.js +478 -313
- package/es/core/BaseModel.js +80 -51
- package/es/core/CommonStyleAttribute.js +5 -2
- package/es/core/LayerPickService.js +32 -21
- package/es/core/TextureService.js +13 -0
- package/es/core/interface.js +24 -17
- package/es/core/shape/Path.js +20 -13
- package/es/core/shape/extrude.js +39 -27
- package/es/core/triangulation.js +136 -99
- package/es/earth/index.js +33 -9
- package/es/earth/models/atmosphere.js +54 -30
- package/es/earth/models/base.js +85 -47
- package/es/earth/models/bloomsphere.js +54 -30
- package/es/earth/utils.js +13 -9
- package/es/heatmap/index.js +40 -10
- package/es/heatmap/models/grid.js +52 -28
- package/es/heatmap/models/grid3d.js +52 -28
- package/es/heatmap/models/heatmap.js +149 -92
- package/es/heatmap/models/hexagon.js +52 -28
- package/es/heatmap/triangulation.js +4 -0
- package/es/image/index.js +28 -9
- package/es/image/models/image.js +100 -66
- package/es/index.js +17 -9
- package/es/line/index.js +35 -9
- package/es/line/models/arc.js +114 -64
- package/es/line/models/arc_3d.js +102 -58
- package/es/line/models/earthArc_3d.js +105 -60
- package/es/line/models/flow.js +60 -36
- package/es/line/models/great_circle.js +94 -53
- package/es/line/models/line.js +138 -86
- package/es/line/models/linearline.js +76 -43
- package/es/line/models/simpleLine.js +69 -39
- package/es/line/models/wall.js +92 -52
- package/es/mask/index.js +28 -9
- package/es/mask/models/fill.js +54 -29
- package/es/plugins/DataMappingPlugin.js +114 -78
- package/es/plugins/DataSourcePlugin.js +68 -45
- package/es/plugins/FeatureScalePlugin.js +122 -67
- package/es/plugins/LayerAnimateStylePlugin.js +5 -0
- package/es/plugins/LayerMaskPlugin.js +11 -3
- package/es/plugins/LayerModelPlugin.js +108 -69
- package/es/plugins/LayerStylePlugin.js +9 -3
- package/es/plugins/LightingPlugin.js +18 -12
- package/es/plugins/MultiPassRendererPlugin.js +16 -11
- package/es/plugins/PixelPickingPlugin.js +21 -12
- package/es/plugins/RegisterStyleAttributePlugin.js +12 -5
- package/es/plugins/ShaderUniformPlugin.js +27 -13
- package/es/plugins/UpdateModelPlugin.js +5 -0
- package/es/plugins/UpdateStyleAttributePlugin.js +11 -5
- package/es/point/index.js +78 -26
- package/es/point/models/earthExtrude.js +95 -58
- package/es/point/models/earthFill.js +80 -52
- package/es/point/models/extrude.js +94 -57
- package/es/point/models/fill.js +81 -56
- package/es/point/models/fillmage.js +100 -60
- package/es/point/models/image.js +83 -47
- package/es/point/models/index.js +2 -2
- package/es/point/models/normal.js +54 -30
- package/es/point/models/radar.js +63 -38
- package/es/point/models/simplePoint.js +62 -38
- package/es/point/models/text.js +296 -199
- package/es/point/shape/extrude.js +13 -4
- package/es/polygon/index.js +41 -11
- package/es/polygon/models/extrude.js +135 -87
- package/es/polygon/models/fill.js +79 -50
- package/es/polygon/models/index.js +2 -3
- package/es/polygon/models/ocean.js +76 -42
- package/es/polygon/models/water.js +71 -37
- package/es/raster/buffers/triangulation.js +4 -2
- package/es/raster/index.js +32 -9
- package/es/raster/models/raster.js +116 -80
- package/es/raster/models/rasterRgb.js +127 -84
- package/es/raster/models/rasterTerrainRgb.js +84 -56
- package/es/tile/interaction/getRasterData.js +20 -14
- package/es/tile/interaction/utils.js +9 -7
- package/es/tile/manager/base.js +96 -63
- package/es/tile/service/TileLayerService.js +55 -33
- package/es/tile/service/TilePickService.js +40 -26
- package/es/tile/service/TileSourceService.js +7 -3
- package/es/tile/tileFactory/DebugTile.js +46 -29
- package/es/tile/tileFactory/ImageTile.js +38 -20
- package/es/tile/tileFactory/MaskTile.js +43 -22
- package/es/tile/tileFactory/RasterRGBTile.js +42 -22
- package/es/tile/tileFactory/RasterTerrainRGBTile.js +38 -20
- package/es/tile/tileFactory/RasterTile.js +53 -30
- package/es/tile/tileFactory/Tile.js +97 -63
- package/es/tile/tileFactory/VectorTile.js +68 -41
- package/es/tile/tileFactory/index.js +11 -0
- package/es/tile/tileFactory/layers/TileDebugLayer.js +27 -6
- package/es/tile/tileFactory/util.js +3 -0
- package/es/tile/tileLayer/BaseLayer.js +146 -105
- package/es/tile/utils.js +1 -1
- package/es/utils/blend.js +2 -0
- package/es/utils/collision-index.js +16 -9
- package/es/utils/extrude_polyline.js +149 -101
- package/es/utils/grid-index.js +27 -2
- package/es/utils/identityScale.js +8 -0
- package/es/utils/layerData.js +44 -30
- package/es/utils/multiPassRender.js +13 -11
- package/es/utils/polylineNormal.js +37 -31
- package/es/utils/simpleLine.js +16 -2
- package/es/utils/stencil.js +3 -2
- package/es/utils/symbol-layout.js +53 -27
- package/es/wind/index.js +29 -9
- package/es/wind/models/utils.js +51 -26
- package/es/wind/models/wind.js +147 -101
- package/es/wind/models/windRender.js +66 -53
- package/lib/Geometry/index.js +38 -9
- package/lib/Geometry/models/billboard.js +97 -51
- package/lib/Geometry/models/index.js +5 -0
- package/lib/Geometry/models/plane.js +151 -79
- package/lib/Geometry/models/sprite.js +127 -60
- package/lib/canvas/index.js +40 -10
- package/lib/canvas/models/canvas.js +101 -41
- package/lib/canvas/models/index.js +3 -0
- package/lib/citybuliding/building.js +35 -8
- package/lib/citybuliding/models/build.js +92 -57
- package/lib/core/BaseLayer.js +469 -313
- package/lib/core/BaseModel.js +90 -51
- package/lib/core/CommonStyleAttribute.js +7 -2
- package/lib/core/LayerPickService.js +37 -21
- package/lib/core/TextureService.js +16 -0
- package/lib/core/interface.js +31 -21
- package/lib/core/schema.js +1 -0
- package/lib/core/shape/Path.js +31 -14
- package/lib/core/shape/extrude.js +62 -27
- package/lib/core/triangulation.js +177 -98
- package/lib/earth/index.js +43 -9
- package/lib/earth/models/atmosphere.js +63 -30
- package/lib/earth/models/base.js +90 -47
- package/lib/earth/models/bloomsphere.js +63 -30
- package/lib/earth/utils.js +31 -7
- package/lib/heatmap/index.js +48 -10
- package/lib/heatmap/models/grid.js +60 -28
- package/lib/heatmap/models/grid3d.js +60 -28
- package/lib/heatmap/models/heatmap.js +166 -92
- package/lib/heatmap/models/hexagon.js +60 -28
- package/lib/heatmap/models/index.js +6 -0
- package/lib/heatmap/triangulation.js +5 -0
- package/lib/image/index.js +36 -9
- package/lib/image/models/image.js +109 -66
- package/lib/image/models/index.js +3 -0
- package/lib/index.js +61 -7
- package/lib/line/index.js +40 -9
- package/lib/line/models/arc.js +124 -62
- package/lib/line/models/arc_3d.js +113 -56
- package/lib/line/models/earthArc_3d.js +115 -58
- package/lib/line/models/flow.js +70 -36
- package/lib/line/models/great_circle.js +104 -53
- package/lib/line/models/index.js +11 -0
- package/lib/line/models/line.js +146 -84
- package/lib/line/models/linearline.js +88 -43
- package/lib/line/models/simpleLine.js +79 -39
- package/lib/line/models/wall.js +103 -52
- package/lib/mask/index.js +36 -9
- package/lib/mask/models/fill.js +63 -29
- package/lib/mask/models/index.js +3 -0
- package/lib/plugins/DataMappingPlugin.js +125 -78
- package/lib/plugins/DataSourcePlugin.js +76 -45
- package/lib/plugins/FeatureScalePlugin.js +138 -67
- package/lib/plugins/LayerAnimateStylePlugin.js +10 -0
- package/lib/plugins/LayerMaskPlugin.js +17 -4
- package/lib/plugins/LayerModelPlugin.js +117 -70
- package/lib/plugins/LayerStylePlugin.js +14 -4
- package/lib/plugins/LightingPlugin.js +25 -12
- package/lib/plugins/MultiPassRendererPlugin.js +22 -11
- package/lib/plugins/PixelPickingPlugin.js +27 -12
- package/lib/plugins/RegisterStyleAttributePlugin.js +19 -5
- package/lib/plugins/ShaderUniformPlugin.js +34 -13
- package/lib/plugins/UpdateModelPlugin.js +10 -1
- package/lib/plugins/UpdateStyleAttributePlugin.js +16 -5
- package/lib/point/index.js +83 -26
- package/lib/point/models/earthExtrude.js +106 -58
- package/lib/point/models/earthFill.js +110 -52
- package/lib/point/models/extrude.js +103 -57
- package/lib/point/models/fill.js +90 -54
- package/lib/point/models/fillmage.js +107 -58
- package/lib/point/models/image.js +92 -47
- package/lib/point/models/index.js +12 -1
- package/lib/point/models/normal.js +64 -30
- package/lib/point/models/radar.js +72 -38
- package/lib/point/models/simplePoint.js +72 -38
- package/lib/point/models/text.js +305 -199
- package/lib/point/shape/extrude.js +20 -4
- package/lib/polygon/index.js +48 -11
- package/lib/polygon/models/extrude.js +146 -87
- package/lib/polygon/models/fill.js +89 -50
- package/lib/polygon/models/index.js +14 -2
- package/lib/polygon/models/ocean.js +88 -42
- package/lib/polygon/models/water.js +82 -37
- package/lib/raster/buffers/triangulation.js +7 -3
- package/lib/raster/index.js +40 -9
- package/lib/raster/models/index.js +5 -0
- package/lib/raster/models/raster.js +125 -80
- package/lib/raster/models/rasterRgb.js +139 -84
- package/lib/raster/models/rasterTerrainRgb.js +93 -56
- package/lib/tile/interaction/getRasterData.js +25 -14
- package/lib/tile/interaction/utils.js +19 -7
- package/lib/tile/manager/base.js +104 -63
- package/lib/tile/service/TileLayerService.js +60 -33
- package/lib/tile/service/TilePickService.js +48 -26
- package/lib/tile/service/TileSourceService.js +16 -2
- package/lib/tile/style/utils.js +3 -0
- package/lib/tile/tileFactory/DebugTile.js +54 -29
- package/lib/tile/tileFactory/ImageTile.js +46 -20
- package/lib/tile/tileFactory/MaskTile.js +51 -22
- package/lib/tile/tileFactory/RasterRGBTile.js +50 -22
- package/lib/tile/tileFactory/RasterTerrainRGBTile.js +46 -20
- package/lib/tile/tileFactory/RasterTile.js +63 -30
- package/lib/tile/tileFactory/Tile.js +102 -63
- package/lib/tile/tileFactory/VectorTile.js +76 -41
- package/lib/tile/tileFactory/index.js +25 -0
- package/lib/tile/tileFactory/layers/TileDebugLayer.js +32 -6
- package/lib/tile/tileFactory/util.js +9 -0
- package/lib/tile/tileLayer/BaseLayer.js +153 -105
- package/lib/tile/utils.js +5 -1
- package/lib/utils/blend.js +5 -0
- package/lib/utils/collision-index.js +25 -9
- package/lib/utils/extrude_polyline.js +181 -101
- package/lib/utils/grid-index.js +28 -2
- package/lib/utils/identityScale.js +9 -0
- package/lib/utils/layerData.js +49 -30
- package/lib/utils/multiPassRender.js +16 -11
- package/lib/utils/polylineNormal.js +66 -31
- package/lib/utils/simpleLine.js +21 -2
- package/lib/utils/stencil.js +4 -0
- package/lib/utils/symbol-layout.js +55 -27
- package/lib/wind/index.js +37 -9
- package/lib/wind/models/index.js +3 -0
- package/lib/wind/models/utils.js +62 -26
- package/lib/wind/models/wind.js +157 -101
- package/lib/wind/models/windRender.js +71 -53
- package/lib/wind/models/windShader.js +1 -0
- package/package.json +7 -7
|
@@ -6,32 +6,43 @@ import _inherits from "@babel/runtime/helpers/esm/inherits";
|
|
|
6
6
|
import _possibleConstructorReturn from "@babel/runtime/helpers/esm/possibleConstructorReturn";
|
|
7
7
|
import _getPrototypeOf from "@babel/runtime/helpers/esm/getPrototypeOf";
|
|
8
8
|
import _regeneratorRuntime from "@babel/runtime/regenerator";
|
|
9
|
+
|
|
9
10
|
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); }; }
|
|
11
|
+
|
|
10
12
|
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; } }
|
|
13
|
+
|
|
11
14
|
import { AttributeType, gl } from '@antv/l7-core';
|
|
12
15
|
import { Version } from '@antv/l7-maps';
|
|
13
16
|
import { isNumber } from 'lodash';
|
|
14
17
|
import BaseModel from "../../core/BaseModel";
|
|
15
18
|
import { polygonTriangulation } from "../../core/triangulation";
|
|
19
|
+
|
|
16
20
|
/* babel-plugin-inline-import '../shaders/water/polygon_water_frag.glsl' */
|
|
17
21
|
var water_frag = "uniform sampler2D u_texture;\nuniform float u_time: 0.0;\nuniform float u_speed: 1.0;\nuniform float u_opacity: 1.0;\n\nvarying vec4 v_Color;\nvarying vec2 v_uv;\n\nfloat rand(vec2 n) { return 0.5 + 0.5 * fract(sin(dot(n.xy, vec2(12.9898, 78.233)))* 43758.5453); }\n\nfloat water(vec3 p) {\n float t = u_time * u_speed;\n p.z += t * 2.; p.x += t * 2.;\n vec3 c1 = texture2D(u_texture, p.xz / 30.).xyz;\n p.z += t * 3.; p.x += t * 0.52;\n vec3 c2 = texture2D(u_texture, p.xz / 30.).xyz;\n p.z += t * 4.; p.x += t * 0.8;\n vec3 c3 = texture2D(u_texture, p.xz / 30.).xyz;\n c1 += c2 - c3;\n float z = (c1.x + c1.y + c1.z) / 3.;\n return p.y + z / 4.;\n}\n\nfloat map(vec3 p) {\n float d = 100.0;\n d = water(p);\n return d;\n}\n\nfloat intersect(vec3 ro, vec3 rd) {\n float d = 0.0;\n for (int i = 0; i <= 100; i++) {\n float h = map(ro + rd * d);\n if (h < 0.1) return d;\n d += h;\n }\n return 0.0;\n}\n\nvec3 norm(vec3 p) {\n float eps = .1;\n return normalize(vec3(\n map(p + vec3(eps, 0, 0)) - map(p + vec3(-eps, 0, 0)),\n map(p + vec3(0, eps, 0)) - map(p + vec3(0, -eps, 0)),\n map(p + vec3(0, 0, eps)) - map(p + vec3(0, 0, -eps))\n ));\n} \n\nfloat calSpc() {\n vec3 l1 = normalize(vec3(1, 1, 1));\n vec3 ro = vec3(-3, 20, -8);\n vec3 rc = vec3(0, 0, 0);\n vec3 ww = normalize(rc - ro);\n vec3 uu = normalize(cross(vec3(0,1,0), ww));\n vec3 vv = normalize(cross(rc - ro, uu));\n vec3 rd = normalize(uu * v_uv.x + vv * v_uv.y + ww);\n float d = intersect(ro, rd);\n vec3 p = ro + rd * d;\n vec3 n = norm(p);\n float spc = pow(max(0.0, dot(reflect(l1, n), rd)), 30.0);\n return spc;\n}\n\nvoid main() {\n float opacity = u_opacity;\n gl_FragColor = v_Color;\n gl_FragColor.a *= opacity;\n\n float spc = calSpc();\n gl_FragColor += spc * 0.4;\n}\n";
|
|
22
|
+
|
|
18
23
|
/* babel-plugin-inline-import '../shaders/water/polygon_water_vert.glsl' */
|
|
19
24
|
var water_vert = "attribute vec4 a_Color;\nattribute vec2 a_uv;\nattribute vec3 a_Position;\nuniform mat4 u_ModelMatrix;\nuniform mat4 u_Mvp;\n\nvarying vec4 v_Color;\nvarying vec2 v_uv;\nuniform float u_opacity: 1.0;\n\n\n#pragma include \"projection\"\n\nvoid main() {\n v_uv = a_uv;\n\n v_Color = a_Color;\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.xyz, 1.0));\n } else {\n gl_Position = project_common_position_to_clipspace(vec4(project_pos.xyz, 1.0));\n }\n}\n\n";
|
|
25
|
+
|
|
20
26
|
var WaterModel = /*#__PURE__*/function (_BaseModel) {
|
|
21
27
|
_inherits(WaterModel, _BaseModel);
|
|
28
|
+
|
|
22
29
|
var _super = _createSuper(WaterModel);
|
|
30
|
+
|
|
23
31
|
function WaterModel() {
|
|
24
32
|
_classCallCheck(this, WaterModel);
|
|
33
|
+
|
|
25
34
|
return _super.apply(this, arguments);
|
|
26
35
|
}
|
|
36
|
+
|
|
27
37
|
_createClass(WaterModel, [{
|
|
28
38
|
key: "getUninforms",
|
|
29
39
|
value: function getUninforms() {
|
|
30
40
|
var _ref = this.layer.getLayerConfig(),
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
41
|
+
_ref$opacity = _ref.opacity,
|
|
42
|
+
opacity = _ref$opacity === void 0 ? 1 : _ref$opacity,
|
|
43
|
+
_ref$speed = _ref.speed,
|
|
44
|
+
speed = _ref$speed === void 0 ? 0.5 : _ref$speed;
|
|
45
|
+
|
|
35
46
|
return {
|
|
36
47
|
u_texture: this.texture,
|
|
37
48
|
u_speed: speed,
|
|
@@ -50,19 +61,24 @@ var WaterModel = /*#__PURE__*/function (_BaseModel) {
|
|
|
50
61
|
value: function () {
|
|
51
62
|
var _initModels = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee() {
|
|
52
63
|
return _regeneratorRuntime.wrap(function _callee$(_context) {
|
|
53
|
-
while (1)
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
64
|
+
while (1) {
|
|
65
|
+
switch (_context.prev = _context.next) {
|
|
66
|
+
case 0:
|
|
67
|
+
this.loadTexture();
|
|
68
|
+
return _context.abrupt("return", this.buildModels());
|
|
69
|
+
|
|
70
|
+
case 2:
|
|
71
|
+
case "end":
|
|
72
|
+
return _context.stop();
|
|
73
|
+
}
|
|
60
74
|
}
|
|
61
75
|
}, _callee, this);
|
|
62
76
|
}));
|
|
77
|
+
|
|
63
78
|
function initModels() {
|
|
64
79
|
return _initModels.apply(this, arguments);
|
|
65
80
|
}
|
|
81
|
+
|
|
66
82
|
return initModels;
|
|
67
83
|
}()
|
|
68
84
|
}, {
|
|
@@ -71,48 +87,57 @@ var WaterModel = /*#__PURE__*/function (_BaseModel) {
|
|
|
71
87
|
var _buildModels = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee2() {
|
|
72
88
|
var model;
|
|
73
89
|
return _regeneratorRuntime.wrap(function _callee2$(_context2) {
|
|
74
|
-
while (1)
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
90
|
+
while (1) {
|
|
91
|
+
switch (_context2.prev = _context2.next) {
|
|
92
|
+
case 0:
|
|
93
|
+
_context2.next = 2;
|
|
94
|
+
return this.layer.buildLayerModel({
|
|
95
|
+
moduleName: 'polygonWater',
|
|
96
|
+
vertexShader: water_vert,
|
|
97
|
+
fragmentShader: water_frag,
|
|
98
|
+
triangulation: polygonTriangulation,
|
|
99
|
+
primitive: gl.TRIANGLES,
|
|
100
|
+
depth: {
|
|
101
|
+
enable: false
|
|
102
|
+
}
|
|
103
|
+
});
|
|
104
|
+
|
|
105
|
+
case 2:
|
|
106
|
+
model = _context2.sent;
|
|
107
|
+
return _context2.abrupt("return", [model]);
|
|
108
|
+
|
|
109
|
+
case 4:
|
|
110
|
+
case "end":
|
|
111
|
+
return _context2.stop();
|
|
112
|
+
}
|
|
93
113
|
}
|
|
94
114
|
}, _callee2, this);
|
|
95
115
|
}));
|
|
116
|
+
|
|
96
117
|
function buildModels() {
|
|
97
118
|
return _buildModels.apply(this, arguments);
|
|
98
119
|
}
|
|
120
|
+
|
|
99
121
|
return buildModels;
|
|
100
122
|
}()
|
|
101
123
|
}, {
|
|
102
124
|
key: "clearModels",
|
|
103
125
|
value: function clearModels() {
|
|
104
126
|
var _this$texture;
|
|
127
|
+
|
|
105
128
|
(_this$texture = this.texture) === null || _this$texture === void 0 ? void 0 : _this$texture.destroy();
|
|
106
129
|
}
|
|
107
130
|
}, {
|
|
108
131
|
key: "registerBuiltinAttributes",
|
|
109
132
|
value: function registerBuiltinAttributes() {
|
|
110
133
|
var bbox = this.layer.getSource().extent;
|
|
134
|
+
|
|
111
135
|
var _bbox = _slicedToArray(bbox, 4),
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
136
|
+
minLng = _bbox[0],
|
|
137
|
+
minLat = _bbox[1],
|
|
138
|
+
maxLng = _bbox[2],
|
|
139
|
+
maxLat = _bbox[3];
|
|
140
|
+
|
|
116
141
|
var lngLen = maxLng - minLng;
|
|
117
142
|
var latLen = maxLat - minLat;
|
|
118
143
|
this.styleAttributeService.registerStyleAttribute({
|
|
@@ -129,9 +154,11 @@ var WaterModel = /*#__PURE__*/function (_BaseModel) {
|
|
|
129
154
|
size: 2,
|
|
130
155
|
update: function update(feature, featureIdx, vertex, attributeIdx) {
|
|
131
156
|
var v = feature.version === Version['GAODE2.x'] ? feature.originCoordinates[0][attributeIdx] : vertex;
|
|
157
|
+
|
|
132
158
|
var _v = _slicedToArray(v, 2),
|
|
133
|
-
|
|
134
|
-
|
|
159
|
+
lng = _v[0],
|
|
160
|
+
lat = _v[1];
|
|
161
|
+
|
|
135
162
|
return [(lng - minLng) / lngLen, (lat - minLat) / latLen];
|
|
136
163
|
}
|
|
137
164
|
}
|
|
@@ -141,8 +168,10 @@ var WaterModel = /*#__PURE__*/function (_BaseModel) {
|
|
|
141
168
|
key: "loadTexture",
|
|
142
169
|
value: function loadTexture() {
|
|
143
170
|
var _this = this;
|
|
171
|
+
|
|
144
172
|
var _ref2 = this.layer.getLayerConfig(),
|
|
145
|
-
|
|
173
|
+
waterTexture = _ref2.waterTexture;
|
|
174
|
+
|
|
146
175
|
var createTexture2D = this.rendererService.createTexture2D;
|
|
147
176
|
this.texture = createTexture2D({
|
|
148
177
|
height: 0,
|
|
@@ -150,6 +179,7 @@ var WaterModel = /*#__PURE__*/function (_BaseModel) {
|
|
|
150
179
|
});
|
|
151
180
|
var image = new Image();
|
|
152
181
|
image.crossOrigin = '';
|
|
182
|
+
|
|
153
183
|
if (waterTexture) {
|
|
154
184
|
// custom texture
|
|
155
185
|
console.warn('L7 recommend:https://gw.alipayobjects.com/mdn/rms_816329/afts/img/A*EojwT4VzSiYAAAAAAAAAAAAAARQnAQ');
|
|
@@ -158,6 +188,7 @@ var WaterModel = /*#__PURE__*/function (_BaseModel) {
|
|
|
158
188
|
// default texture
|
|
159
189
|
image.src = 'https://gw.alipayobjects.com/mdn/rms_816329/afts/img/A*EojwT4VzSiYAAAAAAAAAAAAAARQnAQ';
|
|
160
190
|
}
|
|
191
|
+
|
|
161
192
|
image.onload = function () {
|
|
162
193
|
_this.texture = createTexture2D({
|
|
163
194
|
data: image,
|
|
@@ -168,10 +199,13 @@ var WaterModel = /*#__PURE__*/function (_BaseModel) {
|
|
|
168
199
|
min: gl.LINEAR,
|
|
169
200
|
mag: gl.LINEAR
|
|
170
201
|
});
|
|
202
|
+
|
|
171
203
|
_this.layerService.reRender();
|
|
172
204
|
};
|
|
173
205
|
}
|
|
174
206
|
}]);
|
|
207
|
+
|
|
175
208
|
return WaterModel;
|
|
176
209
|
}(BaseModel);
|
|
210
|
+
|
|
177
211
|
export { WaterModel as default };
|
|
@@ -2,16 +2,18 @@
|
|
|
2
2
|
import Martini from '@mapbox/martini';
|
|
3
3
|
export function RasterTriangulation(parserData) {
|
|
4
4
|
var data = parserData.data,
|
|
5
|
-
|
|
6
|
-
|
|
5
|
+
width = parserData.width,
|
|
6
|
+
height = parserData.height;
|
|
7
7
|
var maxlength = Math.max(width, height);
|
|
8
8
|
var gridSize = Math.pow(2, Math.ceil(Math.log2(maxlength))) + 1;
|
|
9
9
|
var terrain = new Float32Array(gridSize * gridSize);
|
|
10
|
+
|
|
10
11
|
for (var i = 0; i < width; i++) {
|
|
11
12
|
for (var j = 0; j < height; j++) {
|
|
12
13
|
terrain[i * gridSize + j] = data[i * width + j];
|
|
13
14
|
}
|
|
14
15
|
}
|
|
16
|
+
|
|
15
17
|
var martini = new Martini(gridSize);
|
|
16
18
|
var tile = martini.createTile(terrain);
|
|
17
19
|
var mesh = tile.getMesh(gridSize / 2);
|
package/es/raster/index.js
CHANGED
|
@@ -7,44 +7,61 @@ import _possibleConstructorReturn from "@babel/runtime/helpers/esm/possibleConst
|
|
|
7
7
|
import _getPrototypeOf from "@babel/runtime/helpers/esm/getPrototypeOf";
|
|
8
8
|
import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
|
|
9
9
|
import _regeneratorRuntime from "@babel/runtime/regenerator";
|
|
10
|
+
|
|
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
|
+
|
|
11
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
|
+
|
|
12
15
|
import BaseLayer from "../core/BaseLayer";
|
|
13
16
|
import RasterModels from "./models/index";
|
|
17
|
+
|
|
14
18
|
var RaterLayer = /*#__PURE__*/function (_BaseLayer) {
|
|
15
19
|
_inherits(RaterLayer, _BaseLayer);
|
|
20
|
+
|
|
16
21
|
var _super = _createSuper(RaterLayer);
|
|
22
|
+
|
|
17
23
|
function RaterLayer() {
|
|
18
24
|
var _this;
|
|
25
|
+
|
|
19
26
|
_classCallCheck(this, RaterLayer);
|
|
27
|
+
|
|
20
28
|
for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
|
|
21
29
|
args[_key] = arguments[_key];
|
|
22
30
|
}
|
|
31
|
+
|
|
23
32
|
_this = _super.call.apply(_super, [this].concat(args));
|
|
33
|
+
|
|
24
34
|
_defineProperty(_assertThisInitialized(_this), "type", 'RasterLayer');
|
|
35
|
+
|
|
25
36
|
return _this;
|
|
26
37
|
}
|
|
38
|
+
|
|
27
39
|
_createClass(RaterLayer, [{
|
|
28
40
|
key: "buildModels",
|
|
29
41
|
value: function () {
|
|
30
42
|
var _buildModels = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee() {
|
|
31
43
|
var modelType;
|
|
32
44
|
return _regeneratorRuntime.wrap(function _callee$(_context) {
|
|
33
|
-
while (1)
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
45
|
+
while (1) {
|
|
46
|
+
switch (_context.prev = _context.next) {
|
|
47
|
+
case 0:
|
|
48
|
+
modelType = this.getModelType();
|
|
49
|
+
this.layerModel = new RasterModels[modelType](this);
|
|
50
|
+
_context.next = 4;
|
|
51
|
+
return this.initLayerModels();
|
|
52
|
+
|
|
53
|
+
case 4:
|
|
54
|
+
case "end":
|
|
55
|
+
return _context.stop();
|
|
56
|
+
}
|
|
42
57
|
}
|
|
43
58
|
}, _callee, this);
|
|
44
59
|
}));
|
|
60
|
+
|
|
45
61
|
function buildModels() {
|
|
46
62
|
return _buildModels.apply(this, arguments);
|
|
47
63
|
}
|
|
64
|
+
|
|
48
65
|
return buildModels;
|
|
49
66
|
}()
|
|
50
67
|
}, {
|
|
@@ -64,18 +81,24 @@ var RaterLayer = /*#__PURE__*/function (_BaseLayer) {
|
|
|
64
81
|
value: function getModelType() {
|
|
65
82
|
// 根据 source 的类型判断 model type
|
|
66
83
|
var parserType = this.layerSource.getParserType();
|
|
84
|
+
|
|
67
85
|
switch (parserType) {
|
|
68
86
|
case 'raster':
|
|
69
87
|
return 'raster';
|
|
88
|
+
|
|
70
89
|
case 'rasterRgb':
|
|
71
90
|
return 'rasterRgb';
|
|
91
|
+
|
|
72
92
|
case 'image':
|
|
73
93
|
return 'rasterTerrainRgb';
|
|
94
|
+
|
|
74
95
|
default:
|
|
75
96
|
return 'raster';
|
|
76
97
|
}
|
|
77
98
|
}
|
|
78
99
|
}]);
|
|
100
|
+
|
|
79
101
|
return RaterLayer;
|
|
80
102
|
}(BaseLayer);
|
|
103
|
+
|
|
81
104
|
export { RaterLayer as default };
|
|
@@ -5,37 +5,48 @@ import _inherits from "@babel/runtime/helpers/esm/inherits";
|
|
|
5
5
|
import _possibleConstructorReturn from "@babel/runtime/helpers/esm/possibleConstructorReturn";
|
|
6
6
|
import _getPrototypeOf from "@babel/runtime/helpers/esm/getPrototypeOf";
|
|
7
7
|
import _regeneratorRuntime from "@babel/runtime/regenerator";
|
|
8
|
+
|
|
8
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); }; }
|
|
10
|
+
|
|
9
11
|
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; } }
|
|
12
|
+
|
|
10
13
|
import { AttributeType, gl } from '@antv/l7-core';
|
|
11
14
|
import { getDefaultDomain } from '@antv/l7-utils';
|
|
12
15
|
import BaseModel from "../../core/BaseModel";
|
|
13
16
|
import { RasterImageTriangulation } from "../../core/triangulation";
|
|
17
|
+
|
|
14
18
|
/* babel-plugin-inline-import '../shaders/raster_2d_frag.glsl' */
|
|
15
19
|
var rasterFrag = "precision mediump float;\nuniform float u_opacity: 1.0;\nuniform sampler2D u_texture;\nuniform sampler2D u_colorTexture;\nuniform float u_min;\nuniform float u_max;\nuniform vec2 u_domain;\nuniform float u_noDataValue;\nuniform bool u_clampLow: true;\nuniform bool u_clampHigh: true;\nvarying vec2 v_texCoord;\nbool isnan_emu(float x) { return (x > 0.0 || x < 0.0) ? x != x : x != 0.0; }\n\n\nvoid main() {\n\n float value = texture2D(u_texture,vec2(v_texCoord.x,v_texCoord.y)).r;\n if (value == u_noDataValue || isnan_emu(value))\n discard;\n else if ((!u_clampLow && value < u_domain[0]) || (!u_clampHigh && value > u_domain[1]))\n discard;\n else {\n float normalisedValue =(value - u_domain[0]) / (u_domain[1] -u_domain[0]);\n vec4 color = texture2D(u_colorTexture,vec2(normalisedValue, 0));\n \n gl_FragColor = color;\n gl_FragColor.a = gl_FragColor.a * u_opacity ;\n if(gl_FragColor.a < 0.01)\n discard;\n \n }\n}\n";
|
|
20
|
+
|
|
16
21
|
/* babel-plugin-inline-import '../shaders/raster_2d_vert.glsl' */
|
|
17
22
|
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";
|
|
23
|
+
|
|
18
24
|
var RasterModel = /*#__PURE__*/function (_BaseModel) {
|
|
19
25
|
_inherits(RasterModel, _BaseModel);
|
|
26
|
+
|
|
20
27
|
var _super = _createSuper(RasterModel);
|
|
28
|
+
|
|
21
29
|
function RasterModel() {
|
|
22
30
|
_classCallCheck(this, RasterModel);
|
|
31
|
+
|
|
23
32
|
return _super.apply(this, arguments);
|
|
24
33
|
}
|
|
34
|
+
|
|
25
35
|
_createClass(RasterModel, [{
|
|
26
36
|
key: "getUninforms",
|
|
27
37
|
value: function getUninforms() {
|
|
28
38
|
var _ref = this.layer.getLayerConfig(),
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
+
_ref$opacity = _ref.opacity,
|
|
40
|
+
opacity = _ref$opacity === void 0 ? 1 : _ref$opacity,
|
|
41
|
+
_ref$clampLow = _ref.clampLow,
|
|
42
|
+
clampLow = _ref$clampLow === void 0 ? true : _ref$clampLow,
|
|
43
|
+
_ref$clampHigh = _ref.clampHigh,
|
|
44
|
+
clampHigh = _ref$clampHigh === void 0 ? true : _ref$clampHigh,
|
|
45
|
+
_ref$noDataValue = _ref.noDataValue,
|
|
46
|
+
noDataValue = _ref$noDataValue === void 0 ? -9999999 : _ref$noDataValue,
|
|
47
|
+
domain = _ref.domain,
|
|
48
|
+
rampColors = _ref.rampColors;
|
|
49
|
+
|
|
39
50
|
var newdomain = domain || getDefaultDomain(rampColors);
|
|
40
51
|
this.colorTexture = this.layer.textureService.getColorTexture(rampColors, newdomain);
|
|
41
52
|
return {
|
|
@@ -53,40 +64,49 @@ var RasterModel = /*#__PURE__*/function (_BaseModel) {
|
|
|
53
64
|
value: function () {
|
|
54
65
|
var _getRasterData = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee(parserDataItem) {
|
|
55
66
|
var _yield$parserDataItem, rasterData, width, height;
|
|
67
|
+
|
|
56
68
|
return _regeneratorRuntime.wrap(function _callee$(_context) {
|
|
57
|
-
while (1)
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
width
|
|
79
|
-
height
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
69
|
+
while (1) {
|
|
70
|
+
switch (_context.prev = _context.next) {
|
|
71
|
+
case 0:
|
|
72
|
+
if (!Array.isArray(parserDataItem.data)) {
|
|
73
|
+
_context.next = 4;
|
|
74
|
+
break;
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
return _context.abrupt("return", {
|
|
78
|
+
data: parserDataItem.data,
|
|
79
|
+
width: parserDataItem.width,
|
|
80
|
+
height: parserDataItem.height
|
|
81
|
+
});
|
|
82
|
+
|
|
83
|
+
case 4:
|
|
84
|
+
_context.next = 6;
|
|
85
|
+
return parserDataItem.data;
|
|
86
|
+
|
|
87
|
+
case 6:
|
|
88
|
+
_yield$parserDataItem = _context.sent;
|
|
89
|
+
rasterData = _yield$parserDataItem.rasterData;
|
|
90
|
+
width = _yield$parserDataItem.width;
|
|
91
|
+
height = _yield$parserDataItem.height;
|
|
92
|
+
return _context.abrupt("return", {
|
|
93
|
+
data: Array.from(rasterData),
|
|
94
|
+
width: width,
|
|
95
|
+
height: height
|
|
96
|
+
});
|
|
97
|
+
|
|
98
|
+
case 11:
|
|
99
|
+
case "end":
|
|
100
|
+
return _context.stop();
|
|
101
|
+
}
|
|
84
102
|
}
|
|
85
103
|
}, _callee);
|
|
86
104
|
}));
|
|
105
|
+
|
|
87
106
|
function getRasterData(_x) {
|
|
88
107
|
return _getRasterData.apply(this, arguments);
|
|
89
108
|
}
|
|
109
|
+
|
|
90
110
|
return getRasterData;
|
|
91
111
|
}()
|
|
92
112
|
}, {
|
|
@@ -94,50 +114,58 @@ var RasterModel = /*#__PURE__*/function (_BaseModel) {
|
|
|
94
114
|
value: function () {
|
|
95
115
|
var _initModels = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee2() {
|
|
96
116
|
var source, createTexture2D, parserDataItem, _yield$this$getRaster, data, width, height, model;
|
|
117
|
+
|
|
97
118
|
return _regeneratorRuntime.wrap(function _callee2$(_context2) {
|
|
98
|
-
while (1)
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
119
|
+
while (1) {
|
|
120
|
+
switch (_context2.prev = _context2.next) {
|
|
121
|
+
case 0:
|
|
122
|
+
source = this.layer.getSource();
|
|
123
|
+
createTexture2D = this.rendererService.createTexture2D;
|
|
124
|
+
parserDataItem = source.data.dataArray[0];
|
|
125
|
+
_context2.next = 5;
|
|
126
|
+
return this.getRasterData(parserDataItem);
|
|
127
|
+
|
|
128
|
+
case 5:
|
|
129
|
+
_yield$this$getRaster = _context2.sent;
|
|
130
|
+
data = _yield$this$getRaster.data;
|
|
131
|
+
width = _yield$this$getRaster.width;
|
|
132
|
+
height = _yield$this$getRaster.height;
|
|
133
|
+
this.texture = createTexture2D({
|
|
134
|
+
data: data,
|
|
135
|
+
width: width,
|
|
136
|
+
height: height,
|
|
137
|
+
format: gl.LUMINANCE,
|
|
138
|
+
type: gl.FLOAT // aniso: 4,
|
|
139
|
+
|
|
140
|
+
});
|
|
141
|
+
_context2.next = 12;
|
|
142
|
+
return this.layer.buildLayerModel({
|
|
143
|
+
moduleName: 'rasterImageData',
|
|
144
|
+
vertexShader: rasterVert,
|
|
145
|
+
fragmentShader: rasterFrag,
|
|
146
|
+
triangulation: RasterImageTriangulation,
|
|
147
|
+
primitive: gl.TRIANGLES,
|
|
148
|
+
depth: {
|
|
149
|
+
enable: false
|
|
150
|
+
}
|
|
151
|
+
});
|
|
152
|
+
|
|
153
|
+
case 12:
|
|
154
|
+
model = _context2.sent;
|
|
155
|
+
return _context2.abrupt("return", [model]);
|
|
156
|
+
|
|
157
|
+
case 14:
|
|
158
|
+
case "end":
|
|
159
|
+
return _context2.stop();
|
|
160
|
+
}
|
|
135
161
|
}
|
|
136
162
|
}, _callee2, this);
|
|
137
163
|
}));
|
|
164
|
+
|
|
138
165
|
function initModels() {
|
|
139
166
|
return _initModels.apply(this, arguments);
|
|
140
167
|
}
|
|
168
|
+
|
|
141
169
|
return initModels;
|
|
142
170
|
}()
|
|
143
171
|
}, {
|
|
@@ -145,24 +173,30 @@ var RasterModel = /*#__PURE__*/function (_BaseModel) {
|
|
|
145
173
|
value: function () {
|
|
146
174
|
var _buildModels = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee3() {
|
|
147
175
|
return _regeneratorRuntime.wrap(function _callee3$(_context3) {
|
|
148
|
-
while (1)
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
176
|
+
while (1) {
|
|
177
|
+
switch (_context3.prev = _context3.next) {
|
|
178
|
+
case 0:
|
|
179
|
+
return _context3.abrupt("return", this.initModels());
|
|
180
|
+
|
|
181
|
+
case 1:
|
|
182
|
+
case "end":
|
|
183
|
+
return _context3.stop();
|
|
184
|
+
}
|
|
154
185
|
}
|
|
155
186
|
}, _callee3, this);
|
|
156
187
|
}));
|
|
188
|
+
|
|
157
189
|
function buildModels() {
|
|
158
190
|
return _buildModels.apply(this, arguments);
|
|
159
191
|
}
|
|
192
|
+
|
|
160
193
|
return buildModels;
|
|
161
194
|
}()
|
|
162
195
|
}, {
|
|
163
196
|
key: "clearModels",
|
|
164
197
|
value: function clearModels() {
|
|
165
198
|
var _this$texture, _this$colorTexture;
|
|
199
|
+
|
|
166
200
|
(_this$texture = this.texture) === null || _this$texture === void 0 ? void 0 : _this$texture.destroy();
|
|
167
201
|
(_this$colorTexture = this.colorTexture) === null || _this$colorTexture === void 0 ? void 0 : _this$colorTexture.destroy();
|
|
168
202
|
}
|
|
@@ -189,6 +223,8 @@ var RasterModel = /*#__PURE__*/function (_BaseModel) {
|
|
|
189
223
|
});
|
|
190
224
|
}
|
|
191
225
|
}]);
|
|
226
|
+
|
|
192
227
|
return RasterModel;
|
|
193
228
|
}(BaseModel);
|
|
229
|
+
|
|
194
230
|
export { RasterModel as default };
|