@vcmap/core 6.0.0-rc.4 → 6.0.0-rc.6

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.
Files changed (209) hide show
  1. package/dist/cesium.d.ts +11 -0
  2. package/dist/index.d.ts +23 -16
  3. package/dist/index.js +21 -14
  4. package/dist/index.js.map +1 -1
  5. package/dist/ol.d.ts +15 -2
  6. package/dist/src/layer/cesium/clusterContext.d.ts +8 -14
  7. package/dist/src/layer/cesium/clusterContext.js +62 -41
  8. package/dist/src/layer/cesium/clusterContext.js.map +1 -1
  9. package/dist/src/layer/cesium/vectorCesiumImpl.d.ts +2 -3
  10. package/dist/src/layer/cesium/vectorCesiumImpl.js +16 -10
  11. package/dist/src/layer/cesium/vectorCesiumImpl.js.map +1 -1
  12. package/dist/src/layer/cesium/vectorContext.d.ts +10 -53
  13. package/dist/src/layer/cesium/vectorContext.js +88 -172
  14. package/dist/src/layer/cesium/vectorContext.js.map +1 -1
  15. package/dist/src/layer/geojsonHelpers.d.ts +1 -1
  16. package/dist/src/layer/geojsonHelpers.js +5 -10
  17. package/dist/src/layer/geojsonHelpers.js.map +1 -1
  18. package/dist/src/layer/oblique/obliqueHelpers.js +6 -6
  19. package/dist/src/layer/oblique/obliqueHelpers.js.map +1 -1
  20. package/dist/src/layer/vectorLayer.d.ts +0 -37
  21. package/dist/src/layer/vectorLayer.js.map +1 -1
  22. package/dist/src/layer/vectorProperties.d.ts +8 -3
  23. package/dist/src/layer/vectorProperties.js +30 -5
  24. package/dist/src/layer/vectorProperties.js.map +1 -1
  25. package/dist/src/map/baseOLMap.js +1 -1
  26. package/dist/src/map/baseOLMap.js.map +1 -1
  27. package/dist/src/map/obliqueMap.d.ts +3 -0
  28. package/dist/src/map/obliqueMap.js +27 -6
  29. package/dist/src/map/obliqueMap.js.map +1 -1
  30. package/dist/src/map/vcsMap.d.ts +8 -0
  31. package/dist/src/map/vcsMap.js +11 -0
  32. package/dist/src/map/vcsMap.js.map +1 -1
  33. package/dist/src/oblique/helpers.js +5 -5
  34. package/dist/src/oblique/helpers.js.map +1 -1
  35. package/dist/src/oblique/obliqueDataSet.js +4 -4
  36. package/dist/src/oblique/obliqueDataSet.js.map +1 -1
  37. package/dist/src/ol/geom/geometryCollection.js +19 -2
  38. package/dist/src/ol/geom/geometryCollection.js.map +1 -1
  39. package/dist/src/style/arcStyle.js +1 -0
  40. package/dist/src/style/arcStyle.js.map +1 -1
  41. package/dist/src/util/editor/createFeatureSession.d.ts +5 -1
  42. package/dist/src/util/editor/createFeatureSession.js +48 -4
  43. package/dist/src/util/editor/createFeatureSession.js.map +1 -1
  44. package/dist/src/util/editor/editFeaturesSession.d.ts +10 -4
  45. package/dist/src/util/editor/editFeaturesSession.js +74 -37
  46. package/dist/src/util/editor/editFeaturesSession.js.map +1 -1
  47. package/dist/src/util/editor/editGeometrySession.d.ts +5 -1
  48. package/dist/src/util/editor/editGeometrySession.js +77 -55
  49. package/dist/src/util/editor/editGeometrySession.js.map +1 -1
  50. package/dist/src/util/editor/editorHelpers.d.ts +12 -6
  51. package/dist/src/util/editor/editorHelpers.js +47 -20
  52. package/dist/src/util/editor/editorHelpers.js.map +1 -1
  53. package/dist/src/util/editor/editorSessionHelpers.d.ts +5 -0
  54. package/dist/src/util/editor/editorSessionHelpers.js +1 -0
  55. package/dist/src/util/editor/editorSessionHelpers.js.map +1 -1
  56. package/dist/src/util/editor/editorSymbols.d.ts +1 -1
  57. package/dist/src/util/editor/editorSymbols.js +1 -1
  58. package/dist/src/util/editor/editorSymbols.js.map +1 -1
  59. package/dist/src/util/editor/interactions/createBBoxInteraction.d.ts +1 -0
  60. package/dist/src/util/editor/interactions/createBBoxInteraction.js +20 -16
  61. package/dist/src/util/editor/interactions/createBBoxInteraction.js.map +1 -1
  62. package/dist/src/util/editor/interactions/createCircleInteraction.js +1 -1
  63. package/dist/src/util/editor/interactions/createCircleInteraction.js.map +1 -1
  64. package/dist/src/util/editor/interactions/createLineStringInteraction.js +3 -3
  65. package/dist/src/util/editor/interactions/createLineStringInteraction.js.map +1 -1
  66. package/dist/src/util/editor/interactions/createPointInteraction.js +1 -1
  67. package/dist/src/util/editor/interactions/createPointInteraction.js.map +1 -1
  68. package/dist/src/util/editor/interactions/createPolygonInteraction.d.ts +4 -0
  69. package/dist/src/util/editor/interactions/createPolygonInteraction.js +9 -3
  70. package/dist/src/util/editor/interactions/createPolygonInteraction.js.map +1 -1
  71. package/dist/src/util/editor/interactions/creationSnapping.d.ts +26 -0
  72. package/dist/src/util/editor/interactions/creationSnapping.js +139 -0
  73. package/dist/src/util/editor/interactions/creationSnapping.js.map +1 -0
  74. package/dist/src/util/editor/interactions/editGeometryMouseOverInteraction.js +3 -2
  75. package/dist/src/util/editor/interactions/editGeometryMouseOverInteraction.js.map +1 -1
  76. package/dist/src/util/editor/interactions/insertVertexInteraction.d.ts +3 -1
  77. package/dist/src/util/editor/interactions/insertVertexInteraction.js +14 -6
  78. package/dist/src/util/editor/interactions/insertVertexInteraction.js.map +1 -1
  79. package/dist/src/util/editor/interactions/layerSnapping.d.ts +19 -0
  80. package/dist/src/util/editor/interactions/layerSnapping.js +87 -0
  81. package/dist/src/util/editor/interactions/layerSnapping.js.map +1 -0
  82. package/dist/src/util/editor/interactions/translateVertexInteraction.js +2 -2
  83. package/dist/src/util/editor/interactions/translateVertexInteraction.js.map +1 -1
  84. package/dist/src/util/editor/interactions/translationSnapping.d.ts +25 -0
  85. package/dist/src/util/editor/interactions/translationSnapping.js +179 -0
  86. package/dist/src/util/editor/interactions/translationSnapping.js.map +1 -0
  87. package/dist/src/util/editor/snappingHelpers.d.ts +44 -0
  88. package/dist/src/util/editor/snappingHelpers.js +329 -0
  89. package/dist/src/util/editor/snappingHelpers.js.map +1 -0
  90. package/dist/src/util/editor/transformation/create2DHandlers.js +26 -26
  91. package/dist/src/util/editor/transformation/create2DHandlers.js.map +1 -1
  92. package/dist/src/util/editor/transformation/create3DHandlers.js +65 -14
  93. package/dist/src/util/editor/transformation/create3DHandlers.js.map +1 -1
  94. package/dist/src/util/editor/transformation/scaleInteraction.js +27 -5
  95. package/dist/src/util/editor/transformation/scaleInteraction.js.map +1 -1
  96. package/dist/src/util/editor/transformation/transformationHandler.js +56 -38
  97. package/dist/src/util/editor/transformation/transformationHandler.js.map +1 -1
  98. package/dist/src/util/editor/transformation/transformationTypes.d.ts +2 -0
  99. package/dist/src/util/editor/transformation/transformationTypes.js +4 -0
  100. package/dist/src/util/editor/transformation/transformationTypes.js.map +1 -1
  101. package/dist/src/util/featureconverter/arcToCesium.d.ts +5 -19
  102. package/dist/src/util/featureconverter/arcToCesium.js +15 -42
  103. package/dist/src/util/featureconverter/arcToCesium.js.map +1 -1
  104. package/dist/src/util/featureconverter/circleToCesium.d.ts +2 -27
  105. package/dist/src/util/featureconverter/circleToCesium.js +84 -63
  106. package/dist/src/util/featureconverter/circleToCesium.js.map +1 -1
  107. package/dist/src/util/featureconverter/clampedPrimitive.d.ts +2 -0
  108. package/dist/src/util/featureconverter/clampedPrimitive.js +29 -0
  109. package/dist/src/util/featureconverter/clampedPrimitive.js.map +1 -0
  110. package/dist/src/util/featureconverter/convert.d.ts +26 -7
  111. package/dist/src/util/featureconverter/convert.js +221 -44
  112. package/dist/src/util/featureconverter/convert.js.map +1 -1
  113. package/dist/src/util/featureconverter/extent3D.d.ts +4 -3
  114. package/dist/src/util/featureconverter/extent3D.js +4 -3
  115. package/dist/src/util/featureconverter/extent3D.js.map +1 -1
  116. package/dist/src/util/featureconverter/lineStringToCesium.d.ts +12 -27
  117. package/dist/src/util/featureconverter/lineStringToCesium.js +85 -107
  118. package/dist/src/util/featureconverter/lineStringToCesium.js.map +1 -1
  119. package/dist/src/util/featureconverter/pointHelpers.d.ts +8 -11
  120. package/dist/src/util/featureconverter/pointHelpers.js +134 -120
  121. package/dist/src/util/featureconverter/pointHelpers.js.map +1 -1
  122. package/dist/src/util/featureconverter/pointToCesium.d.ts +14 -17
  123. package/dist/src/util/featureconverter/pointToCesium.js +47 -96
  124. package/dist/src/util/featureconverter/pointToCesium.js.map +1 -1
  125. package/dist/src/util/featureconverter/polygonToCesium.d.ts +2 -26
  126. package/dist/src/util/featureconverter/polygonToCesium.js +62 -72
  127. package/dist/src/util/featureconverter/polygonToCesium.js.map +1 -1
  128. package/dist/src/util/featureconverter/storeyHelpers.d.ts +17 -0
  129. package/dist/src/util/featureconverter/storeyHelpers.js +78 -0
  130. package/dist/src/util/featureconverter/storeyHelpers.js.map +1 -0
  131. package/dist/src/util/featureconverter/vectorGeometryFactory.d.ts +54 -0
  132. package/dist/src/util/featureconverter/vectorGeometryFactory.js +278 -0
  133. package/dist/src/util/featureconverter/vectorGeometryFactory.js.map +1 -0
  134. package/dist/src/util/featureconverter/vectorHeightInfo.d.ts +86 -0
  135. package/dist/src/util/featureconverter/vectorHeightInfo.js +242 -0
  136. package/dist/src/util/featureconverter/vectorHeightInfo.js.map +1 -0
  137. package/dist/src/util/geometryHelpers.d.ts +22 -1
  138. package/dist/src/util/geometryHelpers.js +65 -2
  139. package/dist/src/util/geometryHelpers.js.map +1 -1
  140. package/dist/src/util/mapCollection.js +8 -0
  141. package/dist/src/util/mapCollection.js.map +1 -1
  142. package/dist/src/util/math.d.ts +6 -2
  143. package/dist/src/util/math.js +34 -12
  144. package/dist/src/util/math.js.map +1 -1
  145. package/dist/tests/unit/helpers/cesiumHelpers.js +3 -1
  146. package/dist/tests/unit/helpers/cesiumHelpers.js.map +1 -1
  147. package/dist/tests/unit/helpers/helpers.d.ts +2 -9
  148. package/dist/tests/unit/helpers/helpers.js +2 -8
  149. package/dist/tests/unit/helpers/helpers.js.map +1 -1
  150. package/index.ts +74 -35
  151. package/package.json +3 -3
  152. package/src/cesium/cesium.d.ts +11 -0
  153. package/src/layer/cesium/clusterContext.ts +82 -91
  154. package/src/layer/cesium/vectorCesiumImpl.ts +17 -11
  155. package/src/layer/cesium/vectorContext.ts +120 -348
  156. package/src/layer/geojsonHelpers.ts +9 -12
  157. package/src/layer/oblique/obliqueHelpers.ts +6 -6
  158. package/src/layer/vectorLayer.ts +0 -71
  159. package/src/layer/vectorProperties.ts +46 -9
  160. package/src/map/baseOLMap.ts +1 -1
  161. package/src/map/obliqueMap.ts +46 -6
  162. package/src/map/vcsMap.ts +20 -2
  163. package/src/oblique/helpers.ts +11 -5
  164. package/src/oblique/obliqueDataSet.ts +4 -4
  165. package/src/ol/geom/geometryCollection.js +21 -2
  166. package/src/ol/ol.d.ts +15 -2
  167. package/src/style/arcStyle.ts +1 -0
  168. package/src/util/editor/createFeatureSession.ts +64 -6
  169. package/src/util/editor/editFeaturesSession.ts +105 -39
  170. package/src/util/editor/editGeometrySession.ts +118 -75
  171. package/src/util/editor/editorHelpers.ts +78 -30
  172. package/src/util/editor/editorSessionHelpers.ts +7 -0
  173. package/src/util/editor/editorSymbols.ts +1 -1
  174. package/src/util/editor/interactions/createBBoxInteraction.ts +25 -16
  175. package/src/util/editor/interactions/createCircleInteraction.ts +1 -1
  176. package/src/util/editor/interactions/createLineStringInteraction.ts +9 -3
  177. package/src/util/editor/interactions/createPointInteraction.ts +1 -1
  178. package/src/util/editor/interactions/createPolygonInteraction.ts +16 -3
  179. package/src/util/editor/interactions/creationSnapping.ts +226 -0
  180. package/src/util/editor/interactions/editGeometryMouseOverInteraction.ts +3 -2
  181. package/src/util/editor/interactions/insertVertexInteraction.ts +27 -7
  182. package/src/util/editor/interactions/layerSnapping.ts +136 -0
  183. package/src/util/editor/interactions/translateVertexInteraction.ts +8 -2
  184. package/src/util/editor/interactions/translationSnapping.ts +302 -0
  185. package/src/util/editor/snappingHelpers.ts +490 -0
  186. package/src/util/editor/transformation/create2DHandlers.ts +38 -26
  187. package/src/util/editor/transformation/create3DHandlers.ts +84 -22
  188. package/src/util/editor/transformation/scaleInteraction.ts +28 -5
  189. package/src/util/editor/transformation/transformationHandler.ts +72 -41
  190. package/src/util/editor/transformation/transformationTypes.ts +5 -0
  191. package/src/util/featureconverter/arcToCesium.ts +25 -95
  192. package/src/util/featureconverter/circleToCesium.ts +127 -113
  193. package/src/util/featureconverter/clampedPrimitive.ts +70 -0
  194. package/src/util/featureconverter/convert.ts +446 -114
  195. package/src/util/featureconverter/extent3D.ts +13 -6
  196. package/src/util/featureconverter/lineStringToCesium.ts +132 -179
  197. package/src/util/featureconverter/pointHelpers.ts +271 -214
  198. package/src/util/featureconverter/pointToCesium.ts +111 -175
  199. package/src/util/featureconverter/polygonToCesium.ts +98 -117
  200. package/src/util/featureconverter/storeyHelpers.ts +104 -0
  201. package/src/util/featureconverter/vectorGeometryFactory.ts +601 -0
  202. package/src/util/featureconverter/vectorHeightInfo.ts +393 -0
  203. package/src/util/geometryHelpers.ts +79 -5
  204. package/src/util/mapCollection.ts +8 -0
  205. package/src/util/math.ts +59 -12
  206. package/dist/src/util/featureconverter/featureconverterHelper.d.ts +0 -35
  207. package/dist/src/util/featureconverter/featureconverterHelper.js +0 -404
  208. package/dist/src/util/featureconverter/featureconverterHelper.js.map +0 -1
  209. package/src/util/featureconverter/featureconverterHelper.ts +0 -672
@@ -1,76 +1,253 @@
1
1
  import { Polygon, LineString, Circle, Point, MultiPoint, MultiLineString, MultiPolygon, } from 'ol/geom.js';
2
+ import { ClassificationPrimitive, GroundPolylinePrimitive, GroundPrimitive, } from '@vcmap-cesium/engine';
2
3
  import Style from 'ol/style/Style.js';
3
4
  import GeometryCollection from 'ol/geom/GeometryCollection.js';
4
- import polygonToCesium from './polygonToCesium.js';
5
- import circleToCesium from './circleToCesium.js';
6
- import lineStringToCesium from './lineStringToCesium.js';
7
- import pointToCesium from './pointToCesium.js';
8
- import arcToCesium from './arcToCesium.js';
9
- import ArcStyle, { featureArcStruct } from '../../style/arcStyle.js';
10
- async function convertGeometry(feature, geometry, style, vectorProperties, scene, context) {
5
+ import { getPolygonGeometryFactory } from './polygonToCesium.js';
6
+ import { getCircleGeometryFactory } from './circleToCesium.js';
7
+ import { getArrowHeadPrimitives, getLineStringGeometryFactory, } from './lineStringToCesium.js';
8
+ import { getPointPrimitives, validatePoint, } from './pointToCesium.js';
9
+ import { getArcGeometryFactory } from './arcToCesium.js';
10
+ import { featureArcStruct } from '../../style/arcStyle.js';
11
+ import { setupClampedPrimitive } from './clampedPrimitive.js';
12
+ import { getHeightInfo, isClampedHeightReference, isRelativeHeightReference, } from './vectorHeightInfo.js';
13
+ import { createClassificationPrimitiveItem, createGroundLinePrimitiveItem, createGroundPrimitiveItem, createLinePrimitiveItem, createOutlinePrimitiveItem, createSolidPrimitiveItem, getCesiumGeometriesOptions, } from './vectorGeometryFactory.js';
14
+ import ArrowStyle from '../../style/arrowStyle.js';
15
+ export function getStylesArray(style, feature, resolution = 1) {
16
+ const styles = [];
17
+ if (typeof style === 'function') {
18
+ styles.push(...getStylesArray(style(feature, resolution), feature, resolution));
19
+ }
20
+ else if (Array.isArray(style)) {
21
+ style.forEach((currentStyle) => {
22
+ styles.push(...getStylesArray(currentStyle, feature, resolution));
23
+ });
24
+ }
25
+ else if (style instanceof Style) {
26
+ styles.push(style);
27
+ }
28
+ return styles;
29
+ }
30
+ function getSingleGeometriesFromGeometry(geometry) {
31
+ if (geometry instanceof Point ||
32
+ geometry instanceof Polygon ||
33
+ geometry instanceof LineString ||
34
+ geometry instanceof Circle) {
35
+ return [geometry];
36
+ }
37
+ if (geometry instanceof MultiPoint) {
38
+ return geometry.getPoints();
39
+ }
40
+ else if (geometry instanceof MultiPolygon) {
41
+ return geometry.getPolygons();
42
+ }
43
+ else if (geometry instanceof MultiLineString) {
44
+ return geometry.getLineStrings();
45
+ }
46
+ else if (geometry instanceof GeometryCollection) {
47
+ return geometry
48
+ .getGeometriesArray()
49
+ .map(getSingleGeometriesFromGeometry)
50
+ .flat();
51
+ }
52
+ throw new Error('Not an implemented geometry');
53
+ }
54
+ async function getCesiumOptionsForSingleGeometry(feature, geometry, style, vectorProperties, scene) {
55
+ const heightInfo = getHeightInfo(feature, geometry, vectorProperties);
11
56
  if (geometry instanceof Point) {
12
- await pointToCesium(feature, style, [geometry], vectorProperties, scene, context);
57
+ if ((!style.getImage() && !style.getText()?.getText()) ||
58
+ !validatePoint(geometry)) {
59
+ return [];
60
+ }
61
+ const pointPrimitives = await getPointPrimitives(feature, geometry, style, vectorProperties, scene, heightInfo);
62
+ return pointPrimitives;
13
63
  }
14
- else if (geometry instanceof Polygon) {
15
- polygonToCesium(feature, style, [geometry], vectorProperties, scene, context);
64
+ let geometryFactory;
65
+ let arcStyle;
66
+ if (geometry instanceof Polygon) {
67
+ geometryFactory = getPolygonGeometryFactory();
16
68
  }
17
69
  else if (geometry instanceof LineString) {
18
- if (style instanceof ArcStyle && feature[featureArcStruct]?.coordinates) {
19
- await arcToCesium(feature, style, [geometry], vectorProperties, scene, context);
70
+ if (style instanceof ArrowStyle) {
71
+ if (feature[featureArcStruct]?.coordinates) {
72
+ geometryFactory = getArcGeometryFactory(feature[featureArcStruct]?.coordinates, heightInfo.heightReference);
73
+ }
74
+ else {
75
+ geometryFactory = getLineStringGeometryFactory();
76
+ }
77
+ arcStyle = style;
20
78
  }
21
79
  else {
22
- await lineStringToCesium(feature, style, [geometry], vectorProperties, scene, context);
80
+ geometryFactory = getLineStringGeometryFactory();
23
81
  }
24
82
  }
25
- else if (geometry instanceof Circle) {
26
- circleToCesium(feature, style, [geometry], vectorProperties, scene, context);
83
+ else {
84
+ geometryFactory = getCircleGeometryFactory();
27
85
  }
28
- else if (geometry instanceof MultiPoint) {
29
- await pointToCesium(feature, style, geometry.getPoints(), vectorProperties, scene, context);
86
+ if ((!style.getFill() && !style.getStroke()) ||
87
+ !geometryFactory.validateGeometry(geometry)) {
88
+ return [];
30
89
  }
31
- else if (geometry instanceof MultiPolygon) {
32
- polygonToCesium(feature, style, geometry.getPolygons(), vectorProperties, scene, context);
33
- }
34
- else if (geometry instanceof MultiLineString) {
35
- await lineStringToCesium(feature, style, geometry.getLineStrings(), vectorProperties, scene, context);
90
+ const geometryOptions = getCesiumGeometriesOptions(style, geometry, geometryFactory, heightInfo);
91
+ let convertedItems = [];
92
+ if (arcStyle) {
93
+ convertedItems = getArrowHeadPrimitives(feature, arcStyle, geometry, vectorProperties, scene, feature[featureArcStruct]?.coordinates);
36
94
  }
37
- else if (geometry instanceof GeometryCollection) {
38
- await Promise.all(geometry.getGeometries().map(async (currentGeometry) => {
39
- await convertGeometry(feature, currentGeometry, style, vectorProperties, scene, context);
40
- }));
95
+ return [...geometryOptions, ...convertedItems];
96
+ }
97
+ function createPrimitiveBatches() {
98
+ return {
99
+ classificationPrimitive: [],
100
+ groundPrimitive: [],
101
+ solidPrimitive: [],
102
+ outlinePrimitive: [],
103
+ linePrimitive: [],
104
+ groundLinePrimitive: [],
105
+ clampedPrimitives: new Map(),
106
+ };
107
+ }
108
+ function addRelativeGeometryOptions(item, origin, clampedPrimitivesMap) {
109
+ const clampOriginHash = `${origin.join(':')}:${item.heightInfo.heightReference}`;
110
+ if (!clampedPrimitivesMap.has(clampOriginHash)) {
111
+ clampedPrimitivesMap.set(clampOriginHash, []);
41
112
  }
113
+ clampedPrimitivesMap.get(clampOriginHash).push(item);
42
114
  }
43
- export function getStylesArray(style, feature, resolution = 1) {
44
- const styles = [];
45
- if (typeof style === 'function') {
46
- styles.push(...getStylesArray(style(feature, resolution), feature, resolution));
115
+ function getPrimitiveBatches(items, feature, vectorProperties, scene) {
116
+ const convertedItems = [];
117
+ const batches = createPrimitiveBatches();
118
+ const classification = vectorProperties.getClassificationType(feature);
119
+ const classificationSupported = ClassificationPrimitive.isSupported(scene);
120
+ const groundPrimitiveSupported = GroundPrimitive.isSupported(scene);
121
+ const groundLinePrimitiveSupported = GroundPolylinePrimitive.isSupported(scene);
122
+ items.forEach((item) => {
123
+ if (item.type === 'primitive' ||
124
+ item.type === 'billboard' ||
125
+ item.type === 'label') {
126
+ convertedItems.push(item);
127
+ }
128
+ else if (item.type === 'groundLine') {
129
+ if (groundLinePrimitiveSupported) {
130
+ batches.groundLinePrimitive.push(item);
131
+ }
132
+ }
133
+ else {
134
+ const options = item;
135
+ const { heightReference } = options.heightInfo;
136
+ if (isRelativeHeightReference(heightReference) &&
137
+ options.heightInfo
138
+ .clampOrigin) {
139
+ addRelativeGeometryOptions(options, options.heightInfo
140
+ .clampOrigin, batches.clampedPrimitives);
141
+ }
142
+ else if (item.type === 'fill' || item.type === 'solid') {
143
+ if (isClampedHeightReference(heightReference)) {
144
+ if (groundPrimitiveSupported) {
145
+ batches.groundPrimitive.push(item);
146
+ }
147
+ }
148
+ else if (classification != null) {
149
+ if (classificationSupported) {
150
+ batches.classificationPrimitive.push(item);
151
+ }
152
+ }
153
+ else {
154
+ batches.solidPrimitive.push(item);
155
+ }
156
+ }
157
+ else if (item.type === 'outline') {
158
+ // never clamped, never classified
159
+ batches.outlinePrimitive.push(item);
160
+ }
161
+ else if (item.type === 'line') {
162
+ // never clamped, never classified
163
+ batches.linePrimitive.push(item);
164
+ }
165
+ }
166
+ });
167
+ return { batches, convertedItems };
168
+ }
169
+ function getClampedPrimitiveBatches(options) {
170
+ const batches = createPrimitiveBatches();
171
+ options.forEach((item) => {
172
+ if (item.type === 'solid' || item.type === 'fill') {
173
+ batches.solidPrimitive.push(item);
174
+ }
175
+ else if (item.type === 'outline') {
176
+ batches.outlinePrimitive.push(item);
177
+ }
178
+ else if (item.type === 'line') {
179
+ batches.linePrimitive.push(item);
180
+ }
181
+ });
182
+ return batches;
183
+ }
184
+ function batchPrimitives(batches, feature, style, vectorProperties, scene) {
185
+ const convertedItems = [];
186
+ if (batches.classificationPrimitive.length) {
187
+ convertedItems.push(createClassificationPrimitiveItem(feature, style, vectorProperties, batches.classificationPrimitive));
47
188
  }
48
- else if (Array.isArray(style)) {
49
- style.forEach((currentStyle) => {
50
- styles.push(...getStylesArray(currentStyle, feature, resolution));
51
- });
189
+ if (batches.solidPrimitive.length) {
190
+ convertedItems.push(createSolidPrimitiveItem(feature, style, vectorProperties, scene, batches.solidPrimitive));
52
191
  }
53
- else if (style instanceof Style) {
54
- styles.push(style);
192
+ if (batches.outlinePrimitive.length) {
193
+ convertedItems.push(createOutlinePrimitiveItem(feature, style, vectorProperties, batches.outlinePrimitive));
55
194
  }
56
- return styles;
195
+ if (batches.linePrimitive.length) {
196
+ convertedItems.push(createLinePrimitiveItem(feature, style, vectorProperties, batches.linePrimitive));
197
+ }
198
+ if (batches.groundLinePrimitive.length) {
199
+ convertedItems.push(createGroundLinePrimitiveItem(feature, style, vectorProperties, batches.groundLinePrimitive));
200
+ }
201
+ if (batches.groundPrimitive.length) {
202
+ convertedItems.push(createGroundPrimitiveItem(feature, style, vectorProperties, scene, batches.groundPrimitive));
203
+ }
204
+ batches.clampedPrimitives.forEach((options, originHash) => {
205
+ const [x, y, heightReference] = originHash.split(':').map(Number);
206
+ const clampedBatches = getClampedPrimitiveBatches(options);
207
+ const clampedItems = batchPrimitives(clampedBatches, feature, style, vectorProperties, scene);
208
+ clampedItems.forEach(({ item }) => {
209
+ setupClampedPrimitive(scene, item, [x, y], heightReference);
210
+ });
211
+ convertedItems.push(...clampedItems);
212
+ });
213
+ return convertedItems;
57
214
  }
58
215
  /**
59
- * function to convert a feature to an array of Cesium.Primitives given a style and default properties. the resulting primitives
60
- * must be added to the modules collections here
216
+ * Converts a feature and all its associated geometries to items which can be added to
217
+ * cesium collections directly: Primitives, BillboardOptions or LabelOptions. This is
218
+ * an internal API, typically it is enough to simple use a `VectorLayer` to handle conversions for you.
219
+ * 1. All styles provided by the style like are flattened.
220
+ * 2. All single OL geometries which should be rendered with each style are extracted
221
+ * 3. Cesium geometry options are extracted from each OL geometry based on the geometry, feature & vector properties
222
+ * 4. Cesium geometries which can be batched into a single primitive (for instance, an extruded volume would have all its solids batched and all its outlines batched
223
+ * In case of relativeTo* altitude modes, primitives are batched based _on the clamp origin_
224
+ * 5. The converted items are returned, typically to the vector context which called convert in the first place.
61
225
  * @param feature
62
226
  * @param style
63
227
  * @param vectorProperties
64
- * @param context
65
228
  * @param scene
66
229
  */
67
- export default async function convert(feature, style, vectorProperties, context, scene) {
230
+ export default async function convert(feature, style, vectorProperties, scene) {
68
231
  const styles = getStylesArray(feature.getStyle() || style, feature, 0);
69
- await Promise.all(styles.map(async (currentStyle) => {
232
+ const styledGeometries = styles.map((currentStyle) => {
70
233
  const geometry = currentStyle.getGeometryFunction()(feature);
71
234
  if (geometry) {
72
- await convertGeometry(feature, geometry, currentStyle, vectorProperties, scene, context);
235
+ return {
236
+ style: currentStyle,
237
+ geometries: getSingleGeometriesFromGeometry(geometry),
238
+ };
73
239
  }
74
- }));
240
+ return {
241
+ style: currentStyle,
242
+ geometries: [],
243
+ };
244
+ });
245
+ return (await Promise.all(styledGeometries.map(async ({ geometries, style: currentStyle }) => {
246
+ const itemArrays = await Promise.all(geometries.map((geometry) => getCesiumOptionsForSingleGeometry(feature, geometry, currentStyle, vectorProperties, scene)));
247
+ const items = itemArrays.flat();
248
+ const { batches, convertedItems } = getPrimitiveBatches(items, feature, vectorProperties, scene);
249
+ convertedItems.push(...batchPrimitives(batches, feature, currentStyle, vectorProperties, scene));
250
+ return convertedItems;
251
+ }))).flat();
75
252
  }
76
253
  //# sourceMappingURL=convert.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"convert.js","sourceRoot":"","sources":["../../../../src/util/featureconverter/convert.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"convert.js","sourceRoot":"","sources":["../../../../src/util/featureconverter/convert.ts"],"names":[],"mappings":"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"}
@@ -1,14 +1,15 @@
1
1
  import type { Geometry } from 'ol/geom.js';
2
2
  import type { Extent } from 'ol/extent.js';
3
3
  import type { Coordinate } from 'ol/coordinate.js';
4
- import { VectorHeightInfo } from '../../layer/vectorLayer.js';
4
+ import { HeightReference } from '@vcmap-cesium/engine';
5
+ import { VectorHeightInfo } from './vectorHeightInfo.js';
5
6
  declare class Extent3D {
6
7
  static fromArray(array: [number, number, number, number, number, number]): Extent3D;
7
8
  static fromGeometry(geometry?: Geometry): Extent3D;
8
9
  /**
9
10
  * @param heightInfo
10
11
  */
11
- static fromHeightInfo(heightInfo: VectorHeightInfo): Extent3D;
12
+ static fromHeightInfo(heightInfo: VectorHeightInfo<HeightReference.NONE>): Extent3D;
12
13
  static fromCoordinates(coordinates: Coordinate[]): Extent3D;
13
14
  minX: number;
14
15
  minY: number;
@@ -18,7 +19,7 @@ declare class Extent3D {
18
19
  maxZ: number;
19
20
  constructor(minX?: number, minY?: number, minZ?: number, maxX?: number, maxY?: number, maxZ?: number);
20
21
  extendWithGeometry(geometry?: Geometry): void;
21
- extendWithHeightInfo(heightInfo: VectorHeightInfo): void;
22
+ extendWithHeightInfo(heightInfo: VectorHeightInfo<HeightReference.NONE>): void;
22
23
  extendXYZ(x: number, y: number, z: number): void;
23
24
  extendXY(x: number, y: number): void;
24
25
  extendZ(z: number): void;
@@ -67,12 +67,12 @@ class Extent3D {
67
67
  }
68
68
  extendWithHeightInfo(heightInfo) {
69
69
  if (heightInfo.extruded) {
70
- const calculatedFeatureMaxHeight = heightInfo.groundLevel +
70
+ const calculatedFeatureMaxHeight = heightInfo.groundLevelOrMinHeight +
71
71
  heightInfo.storeyHeightsAboveGround.reduce((accumulator, currentValue) => {
72
72
  return accumulator + currentValue;
73
73
  }, 0);
74
74
  this.extendZ(calculatedFeatureMaxHeight);
75
- const calculatedFeatureMinHeight = heightInfo.groundLevel -
75
+ const calculatedFeatureMinHeight = heightInfo.groundLevelOrMinHeight -
76
76
  heightInfo.storeyHeightsBelowGround.reduce((accumulator, currentValue) => {
77
77
  return accumulator + currentValue;
78
78
  }, 0);
@@ -126,10 +126,11 @@ class Extent3D {
126
126
  if (this.isEmpty()) {
127
127
  return [0, 0, 0];
128
128
  }
129
+ const minZ = this.minZ + (this.maxZ - this.minZ) / 2;
129
130
  return [
130
131
  this.minX + (this.maxX - this.minX) / 2,
131
132
  this.minY + (this.maxY - this.minY) / 2,
132
- this.minZ + (this.maxZ - this.minZ) / 2,
133
+ Number.isFinite(minZ) ? minZ : 0,
133
134
  ];
134
135
  }
135
136
  getSize() {
@@ -1 +1 @@
1
- {"version":3,"file":"extent3D.js","sourceRoot":"","sources":["../../../../src/util/featureconverter/extent3D.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"extent3D.js","sourceRoot":"","sources":["../../../../src/util/featureconverter/extent3D.ts"],"names":[],"mappings":"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"}
@@ -1,43 +1,28 @@
1
- import { Cartesian3, WallGeometry, WallOutlineGeometry, GroundPolylineGeometry, PolylineGeometry, type Scene, PolygonGeometry } from '@vcmap-cesium/engine';
1
+ import { type Scene } from '@vcmap-cesium/engine';
2
2
  import { Feature } from 'ol';
3
3
  import { type LineString } from 'ol/geom.js';
4
4
  import type { Coordinate } from 'ol/coordinate.js';
5
5
  import type { Style } from 'ol/style.js';
6
6
  import ArrowStyle from '../../style/arrowStyle.js';
7
7
  import type VectorProperties from '../../layer/vectorProperties.js';
8
- import type { VectorGeometryFactoryType } from '../../layer/vectorLayer.js';
9
- import type { AsyncCesiumVectorContext } from '../../layer/cesium/vectorContext.js';
10
- export declare function addArrowsToContext(feature: Feature, style: ArrowStyle, validGeometries: LineString[], vectorProperties: VectorProperties, scene: Scene, lineGeometryFactory: VectorGeometryFactoryType, context: AsyncCesiumVectorContext): Promise<void>;
11
- export type LineGeometryOptions = {
12
- positions: Cartesian3[];
13
- };
14
- export declare function createSolidGeometries(options: LineGeometryOptions, height: number, perPositionHeight: boolean, extrudedHeight?: number): WallGeometry[];
15
- export declare function createOutlineGeometries(options: LineGeometryOptions, height: number, perPositionHeight: boolean, extrudedHeight?: number): WallOutlineGeometry[];
16
- export declare function createFillGeometries(_options: LineGeometryOptions, _height: number, _perPositionHeight: boolean): PolygonGeometry[];
17
- export declare function createGroundLineGeometries(options: LineGeometryOptions, style: Style): GroundPolylineGeometry[];
18
- export declare function createLineGeometries(options: LineGeometryOptions, style: Style): PolylineGeometry[];
8
+ import { ConvertedItem } from './convert.js';
9
+ import { VectorHeightInfo } from './vectorHeightInfo.js';
10
+ import { CesiumGeometryOption, PolylineGeometryOptions, VectorGeometryFactory } from './vectorGeometryFactory.js';
11
+ export declare function getArrowHeadPrimitives(feature: Feature, style: ArrowStyle, geometry: LineString, vectorProperties: VectorProperties, scene: Scene, inputCoordinates?: Coordinate[]): ConvertedItem<'primitive'>[];
12
+ export declare function createSolidGeometries(options: PolylineGeometryOptions, heightInfo: VectorHeightInfo, height: number, perPositionHeight: boolean, extrudedHeight?: number): CesiumGeometryOption<'solid'>[];
13
+ export declare function createOutlineGeometries(options: PolylineGeometryOptions, heightInfo: VectorHeightInfo, height: number, perPositionHeight: boolean, extrudedHeight?: number): CesiumGeometryOption<'outline'>[];
14
+ export declare function createGroundLineGeometries(options: PolylineGeometryOptions, heightInfo: VectorHeightInfo, style: Style): CesiumGeometryOption<'groundLine'>[];
15
+ export declare function createLineGeometries(options: PolylineGeometryOptions, heightInfo: VectorHeightInfo, style: Style): CesiumGeometryOption<'line'>[];
19
16
  /**
20
17
  * Creates the positions array for PolylineGeometry
21
18
  * @param geometry
22
- * @param positionHeightAdjustment
23
- * @param perPositionHeight
24
- * @param groundLevelOrMinHeight
19
+ * @param heightInfo
25
20
  * @private
26
21
  */
27
- export declare function getGeometryOptions(geometry: LineString, positionHeightAdjustment: number, perPositionHeight: boolean, groundLevelOrMinHeight: number): LineGeometryOptions;
28
- export declare function getCoordinates(geometries: LineString[]): Coordinate[];
22
+ export declare function getGeometryOptions(geometry: LineString, heightInfo: VectorHeightInfo): PolylineGeometryOptions;
29
23
  /**
30
24
  * validates if a lineString is renderable
31
25
  * @param lineString
32
26
  */
33
27
  export declare function validateLineString(lineString: LineString): boolean;
34
- /**
35
- * converts a linestring to a a cesium primitive, with optional labels
36
- * @param feature
37
- * @param style
38
- * @param geometries
39
- * @param vectorProperties
40
- * @param scene
41
- * @param context
42
- */
43
- export default function lineStringToCesium(feature: Feature, style: Style, geometries: LineString[], vectorProperties: VectorProperties, scene: Scene, context: AsyncCesiumVectorContext): Promise<void>;
28
+ export declare function getLineStringGeometryFactory(): VectorGeometryFactory<'lineString'>;