@loaders.gl/wkt 4.0.0-beta.2 → 4.0.0-beta.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.
Files changed (236) hide show
  1. package/dist/{dist.min.js → dist.dev.js} +563 -606
  2. package/dist/hex-wkb-loader.d.ts.map +1 -0
  3. package/dist/{esm/hex-wkb-loader.js → hex-wkb-loader.js} +3 -3
  4. package/dist/hex-wkb-loader.js.map +1 -0
  5. package/dist/index.cjs +1799 -0
  6. package/dist/index.d.ts.map +1 -0
  7. package/dist/index.js +14 -0
  8. package/dist/index.js.map +1 -0
  9. package/dist/lib/encode-twkb.d.ts.map +1 -0
  10. package/dist/{esm/lib → lib}/encode-twkb.js +2 -2
  11. package/dist/lib/encode-twkb.js.map +1 -0
  12. package/dist/lib/encode-wkb.d.ts.map +1 -0
  13. package/dist/{esm/lib → lib}/encode-wkb.js +3 -3
  14. package/dist/lib/encode-wkb.js.map +1 -0
  15. package/dist/lib/encode-wkt-crs.d.ts.map +1 -0
  16. package/dist/{esm/lib → lib}/encode-wkt-crs.js +4 -4
  17. package/dist/lib/encode-wkt-crs.js.map +1 -0
  18. package/dist/lib/encode-wkt.d.ts.map +1 -0
  19. package/dist/{esm/lib → lib}/encode-wkt.js +8 -8
  20. package/dist/lib/encode-wkt.js.map +1 -0
  21. package/dist/lib/parse-hex-wkb.d.ts.map +1 -0
  22. package/dist/lib/parse-hex-wkb.js.map +1 -0
  23. package/dist/lib/parse-twkb.d.ts.map +1 -0
  24. package/dist/{esm/lib → lib}/parse-twkb.js +3 -3
  25. package/dist/lib/parse-twkb.js.map +1 -0
  26. package/dist/lib/parse-wkb-header.d.ts.map +1 -0
  27. package/dist/{esm/lib → lib}/parse-wkb-header.js +1 -1
  28. package/dist/lib/parse-wkb-header.js.map +1 -0
  29. package/dist/lib/parse-wkb.d.ts.map +1 -0
  30. package/dist/{esm/lib → lib}/parse-wkb.js +2 -2
  31. package/dist/lib/parse-wkb.js.map +1 -0
  32. package/dist/lib/parse-wkt-crs.d.ts.map +1 -0
  33. package/dist/{esm/lib → lib}/parse-wkt-crs.js +7 -7
  34. package/dist/lib/parse-wkt-crs.js.map +1 -0
  35. package/dist/lib/parse-wkt.d.ts.map +1 -0
  36. package/dist/lib/parse-wkt.js.map +1 -0
  37. package/dist/lib/utils/base64-encoder.d.ts.map +1 -0
  38. package/dist/lib/utils/base64-encoder.js.map +1 -0
  39. package/dist/lib/utils/binary-reader.d.ts.map +1 -0
  40. package/dist/{esm/lib → lib}/utils/binary-reader.js +4 -5
  41. package/dist/lib/utils/binary-reader.js.map +1 -0
  42. package/dist/lib/utils/binary-writer.d.ts.map +1 -0
  43. package/dist/{esm/lib → lib}/utils/binary-writer.js +4 -5
  44. package/dist/lib/utils/binary-writer.js.map +1 -0
  45. package/dist/lib/utils/hex-encoder.d.ts.map +1 -0
  46. package/dist/lib/utils/hex-encoder.js.map +1 -0
  47. package/dist/lib/utils/hex-transcoder.d.ts.map +1 -0
  48. package/dist/lib/utils/hex-transcoder.js.map +1 -0
  49. package/dist/lib/utils/version.d.ts.map +1 -0
  50. package/dist/lib/utils/version.js +2 -0
  51. package/dist/lib/utils/version.js.map +1 -0
  52. package/dist/twkb-loader.d.ts.map +1 -0
  53. package/dist/{esm/twkb-loader.js → twkb-loader.js} +2 -2
  54. package/dist/twkb-loader.js.map +1 -0
  55. package/dist/twkb-writer.d.ts.map +1 -0
  56. package/dist/{esm/twkb-writer.js → twkb-writer.js} +2 -2
  57. package/dist/twkb-writer.js.map +1 -0
  58. package/dist/wkb-loader.d.ts.map +1 -0
  59. package/dist/{esm/wkb-loader.js → wkb-loader.js} +3 -3
  60. package/dist/wkb-loader.js.map +1 -0
  61. package/dist/wkb-writer.d.ts.map +1 -0
  62. package/dist/{esm/wkb-writer.js → wkb-writer.js} +2 -2
  63. package/dist/wkb-writer.js.map +1 -0
  64. package/dist/wkt-crs-loader.d.ts.map +1 -0
  65. package/dist/{esm/wkt-crs-loader.js → wkt-crs-loader.js} +2 -2
  66. package/dist/wkt-crs-loader.js.map +1 -0
  67. package/dist/wkt-crs-writer.d.ts.map +1 -0
  68. package/dist/{esm/wkt-crs-writer.js → wkt-crs-writer.js} +2 -2
  69. package/dist/wkt-crs-writer.js.map +1 -0
  70. package/dist/wkt-loader.d.ts.map +1 -0
  71. package/dist/{esm/wkt-loader.js → wkt-loader.js} +3 -3
  72. package/dist/wkt-loader.js.map +1 -0
  73. package/dist/wkt-worker.js +18 -3
  74. package/dist/wkt-writer.d.ts.map +1 -0
  75. package/dist/{esm/wkt-writer.js → wkt-writer.js} +2 -2
  76. package/dist/wkt-writer.js.map +1 -0
  77. package/dist/{src/workers → workers}/wkb-worker.d.ts.map +1 -1
  78. package/dist/{esm/workers → workers}/wkb-worker.js +1 -1
  79. package/dist/workers/wkb-worker.js.map +1 -0
  80. package/dist/{src/workers → workers}/wkt-worker.d.ts.map +1 -1
  81. package/dist/{esm/workers → workers}/wkt-worker.js +1 -1
  82. package/dist/workers/wkt-worker.js.map +1 -0
  83. package/package.json +16 -8
  84. package/dist/es5/bundle.js +0 -6
  85. package/dist/es5/bundle.js.map +0 -1
  86. package/dist/es5/hex-wkb-loader.js +0 -64
  87. package/dist/es5/hex-wkb-loader.js.map +0 -1
  88. package/dist/es5/index.js +0 -121
  89. package/dist/es5/index.js.map +0 -1
  90. package/dist/es5/lib/encode-twkb.js +0 -269
  91. package/dist/es5/lib/encode-twkb.js.map +0 -1
  92. package/dist/es5/lib/encode-wkb.js +0 -376
  93. package/dist/es5/lib/encode-wkb.js.map +0 -1
  94. package/dist/es5/lib/encode-wkt-crs.js +0 -32
  95. package/dist/es5/lib/encode-wkt-crs.js.map +0 -1
  96. package/dist/es5/lib/encode-wkt.js +0 -45
  97. package/dist/es5/lib/encode-wkt.js.map +0 -1
  98. package/dist/es5/lib/parse-hex-wkb.js +0 -2
  99. package/dist/es5/lib/parse-hex-wkb.js.map +0 -1
  100. package/dist/es5/lib/parse-twkb.js +0 -263
  101. package/dist/es5/lib/parse-twkb.js.map +0 -1
  102. package/dist/es5/lib/parse-wkb-header.js +0 -114
  103. package/dist/es5/lib/parse-wkb-header.js.map +0 -1
  104. package/dist/es5/lib/parse-wkb.js +0 -297
  105. package/dist/es5/lib/parse-wkb.js.map +0 -1
  106. package/dist/es5/lib/parse-wkt-crs.js +0 -106
  107. package/dist/es5/lib/parse-wkt-crs.js.map +0 -1
  108. package/dist/es5/lib/parse-wkt.js +0 -233
  109. package/dist/es5/lib/parse-wkt.js.map +0 -1
  110. package/dist/es5/lib/utils/base64-encoder.js +0 -26
  111. package/dist/es5/lib/utils/base64-encoder.js.map +0 -1
  112. package/dist/es5/lib/utils/binary-reader.js +0 -98
  113. package/dist/es5/lib/utils/binary-reader.js.map +0 -1
  114. package/dist/es5/lib/utils/binary-writer.js +0 -161
  115. package/dist/es5/lib/utils/binary-writer.js.map +0 -1
  116. package/dist/es5/lib/utils/hex-encoder.js +0 -63
  117. package/dist/es5/lib/utils/hex-encoder.js.map +0 -1
  118. package/dist/es5/lib/utils/hex-transcoder.js +0 -41
  119. package/dist/es5/lib/utils/hex-transcoder.js.map +0 -1
  120. package/dist/es5/lib/utils/version.js +0 -9
  121. package/dist/es5/lib/utils/version.js.map +0 -1
  122. package/dist/es5/twkb-loader.js +0 -53
  123. package/dist/es5/twkb-loader.js.map +0 -1
  124. package/dist/es5/twkb-writer.js +0 -40
  125. package/dist/es5/twkb-writer.js.map +0 -1
  126. package/dist/es5/wkb-loader.js +0 -54
  127. package/dist/es5/wkb-loader.js.map +0 -1
  128. package/dist/es5/wkb-writer.js +0 -24
  129. package/dist/es5/wkb-writer.js.map +0 -1
  130. package/dist/es5/wkt-crs-loader.js +0 -47
  131. package/dist/es5/wkt-crs-loader.js.map +0 -1
  132. package/dist/es5/wkt-crs-writer.js +0 -49
  133. package/dist/es5/wkt-crs-writer.js.map +0 -1
  134. package/dist/es5/wkt-loader.js +0 -55
  135. package/dist/es5/wkt-loader.js.map +0 -1
  136. package/dist/es5/wkt-writer.js +0 -21
  137. package/dist/es5/wkt-writer.js.map +0 -1
  138. package/dist/es5/workers/wkb-worker.js +0 -6
  139. package/dist/es5/workers/wkb-worker.js.map +0 -1
  140. package/dist/es5/workers/wkt-worker.js +0 -6
  141. package/dist/es5/workers/wkt-worker.js.map +0 -1
  142. package/dist/esm/bundle.js +0 -4
  143. package/dist/esm/bundle.js.map +0 -1
  144. package/dist/esm/hex-wkb-loader.js.map +0 -1
  145. package/dist/esm/index.js +0 -14
  146. package/dist/esm/index.js.map +0 -1
  147. package/dist/esm/lib/encode-twkb.js.map +0 -1
  148. package/dist/esm/lib/encode-wkb.js.map +0 -1
  149. package/dist/esm/lib/encode-wkt-crs.js.map +0 -1
  150. package/dist/esm/lib/encode-wkt.js.map +0 -1
  151. package/dist/esm/lib/parse-hex-wkb.js.map +0 -1
  152. package/dist/esm/lib/parse-twkb.js.map +0 -1
  153. package/dist/esm/lib/parse-wkb-header.js.map +0 -1
  154. package/dist/esm/lib/parse-wkb.js.map +0 -1
  155. package/dist/esm/lib/parse-wkt-crs.js.map +0 -1
  156. package/dist/esm/lib/parse-wkt.js.map +0 -1
  157. package/dist/esm/lib/utils/base64-encoder.js.map +0 -1
  158. package/dist/esm/lib/utils/binary-reader.js.map +0 -1
  159. package/dist/esm/lib/utils/binary-writer.js.map +0 -1
  160. package/dist/esm/lib/utils/hex-encoder.js.map +0 -1
  161. package/dist/esm/lib/utils/hex-transcoder.js.map +0 -1
  162. package/dist/esm/lib/utils/version.js +0 -2
  163. package/dist/esm/lib/utils/version.js.map +0 -1
  164. package/dist/esm/twkb-loader.js.map +0 -1
  165. package/dist/esm/twkb-writer.js.map +0 -1
  166. package/dist/esm/wkb-loader.js.map +0 -1
  167. package/dist/esm/wkb-writer.js.map +0 -1
  168. package/dist/esm/wkt-crs-loader.js.map +0 -1
  169. package/dist/esm/wkt-crs-writer.js.map +0 -1
  170. package/dist/esm/wkt-loader.js.map +0 -1
  171. package/dist/esm/wkt-writer.js.map +0 -1
  172. package/dist/esm/workers/wkb-worker.js.map +0 -1
  173. package/dist/esm/workers/wkt-worker.js.map +0 -1
  174. package/dist/src/bundle.d.ts +0 -2
  175. package/dist/src/bundle.d.ts.map +0 -1
  176. package/dist/src/hex-wkb-loader.d.ts.map +0 -1
  177. package/dist/src/index.d.ts.map +0 -1
  178. package/dist/src/lib/encode-twkb.d.ts.map +0 -1
  179. package/dist/src/lib/encode-wkb.d.ts.map +0 -1
  180. package/dist/src/lib/encode-wkt-crs.d.ts.map +0 -1
  181. package/dist/src/lib/encode-wkt.d.ts.map +0 -1
  182. package/dist/src/lib/parse-hex-wkb.d.ts.map +0 -1
  183. package/dist/src/lib/parse-twkb.d.ts.map +0 -1
  184. package/dist/src/lib/parse-wkb-header.d.ts.map +0 -1
  185. package/dist/src/lib/parse-wkb.d.ts.map +0 -1
  186. package/dist/src/lib/parse-wkt-crs.d.ts.map +0 -1
  187. package/dist/src/lib/parse-wkt.d.ts.map +0 -1
  188. package/dist/src/lib/utils/base64-encoder.d.ts.map +0 -1
  189. package/dist/src/lib/utils/binary-reader.d.ts.map +0 -1
  190. package/dist/src/lib/utils/binary-writer.d.ts.map +0 -1
  191. package/dist/src/lib/utils/hex-encoder.d.ts.map +0 -1
  192. package/dist/src/lib/utils/hex-transcoder.d.ts.map +0 -1
  193. package/dist/src/lib/utils/version.d.ts.map +0 -1
  194. package/dist/src/twkb-loader.d.ts.map +0 -1
  195. package/dist/src/twkb-writer.d.ts.map +0 -1
  196. package/dist/src/wkb-loader.d.ts.map +0 -1
  197. package/dist/src/wkb-writer.d.ts.map +0 -1
  198. package/dist/src/wkt-crs-loader.d.ts.map +0 -1
  199. package/dist/src/wkt-crs-writer.d.ts.map +0 -1
  200. package/dist/src/wkt-loader.d.ts.map +0 -1
  201. package/dist/src/wkt-writer.d.ts.map +0 -1
  202. package/dist/tsconfig.tsbuildinfo +0 -1
  203. package/src/bundle.ts +0 -4
  204. /package/dist/{src/hex-wkb-loader.d.ts → hex-wkb-loader.d.ts} +0 -0
  205. /package/dist/{src/index.d.ts → index.d.ts} +0 -0
  206. /package/dist/{src/lib → lib}/encode-twkb.d.ts +0 -0
  207. /package/dist/{src/lib → lib}/encode-wkb.d.ts +0 -0
  208. /package/dist/{src/lib → lib}/encode-wkt-crs.d.ts +0 -0
  209. /package/dist/{src/lib → lib}/encode-wkt.d.ts +0 -0
  210. /package/dist/{src/lib → lib}/parse-hex-wkb.d.ts +0 -0
  211. /package/dist/{esm/lib → lib}/parse-hex-wkb.js +0 -0
  212. /package/dist/{src/lib → lib}/parse-twkb.d.ts +0 -0
  213. /package/dist/{src/lib → lib}/parse-wkb-header.d.ts +0 -0
  214. /package/dist/{src/lib → lib}/parse-wkb.d.ts +0 -0
  215. /package/dist/{src/lib → lib}/parse-wkt-crs.d.ts +0 -0
  216. /package/dist/{src/lib → lib}/parse-wkt.d.ts +0 -0
  217. /package/dist/{esm/lib → lib}/parse-wkt.js +0 -0
  218. /package/dist/{src/lib → lib}/utils/base64-encoder.d.ts +0 -0
  219. /package/dist/{esm/lib → lib}/utils/base64-encoder.js +0 -0
  220. /package/dist/{src/lib → lib}/utils/binary-reader.d.ts +0 -0
  221. /package/dist/{src/lib → lib}/utils/binary-writer.d.ts +0 -0
  222. /package/dist/{src/lib → lib}/utils/hex-encoder.d.ts +0 -0
  223. /package/dist/{esm/lib → lib}/utils/hex-encoder.js +0 -0
  224. /package/dist/{src/lib → lib}/utils/hex-transcoder.d.ts +0 -0
  225. /package/dist/{esm/lib → lib}/utils/hex-transcoder.js +0 -0
  226. /package/dist/{src/lib → lib}/utils/version.d.ts +0 -0
  227. /package/dist/{src/twkb-loader.d.ts → twkb-loader.d.ts} +0 -0
  228. /package/dist/{src/twkb-writer.d.ts → twkb-writer.d.ts} +0 -0
  229. /package/dist/{src/wkb-loader.d.ts → wkb-loader.d.ts} +0 -0
  230. /package/dist/{src/wkb-writer.d.ts → wkb-writer.d.ts} +0 -0
  231. /package/dist/{src/wkt-crs-loader.d.ts → wkt-crs-loader.d.ts} +0 -0
  232. /package/dist/{src/wkt-crs-writer.d.ts → wkt-crs-writer.d.ts} +0 -0
  233. /package/dist/{src/wkt-loader.d.ts → wkt-loader.d.ts} +0 -0
  234. /package/dist/{src/wkt-writer.d.ts → wkt-writer.d.ts} +0 -0
  235. /package/dist/{src/workers → workers}/wkb-worker.d.ts +0 -0
  236. /package/dist/{src/workers → workers}/wkt-worker.d.ts +0 -0
@@ -1,263 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.isTWKB = isTWKB;
7
- exports.parseTWKBGeometry = parseTWKBGeometry;
8
- var _binaryReader = require("./utils/binary-reader");
9
- var _parseWkbHeader = require("./parse-wkb-header");
10
- function isTWKB(arrayBuffer) {
11
- var binaryReader = new _binaryReader.BinaryReader(arrayBuffer);
12
- var type = binaryReader.readUInt8();
13
- var geometryType = type & 0x0f;
14
- if (geometryType < 1 || geometryType > 7) {
15
- return false;
16
- }
17
- return true;
18
- }
19
- function parseTWKBGeometry(arrayBuffer) {
20
- var binaryReader = new _binaryReader.BinaryReader(arrayBuffer);
21
- var context = parseTWKBHeader(binaryReader);
22
- if (context.hasSizeAttribute) {
23
- binaryReader.readVarInt();
24
- }
25
- if (context.hasBoundingBox) {
26
- var dimensions = 2;
27
- if (context.hasZ) {
28
- dimensions++;
29
- }
30
- if (context.hasM) {
31
- dimensions++;
32
- }
33
- for (var i = 0; i < dimensions; i++) {
34
- binaryReader.readVarInt();
35
- binaryReader.readVarInt();
36
- }
37
- }
38
- return parseGeometry(binaryReader, context, context.geometryType);
39
- }
40
- function parseTWKBHeader(binaryReader) {
41
- var type = binaryReader.readUInt8();
42
- var metadataHeader = binaryReader.readUInt8();
43
- var geometryType = type & 0x0f;
44
- var precision = zigZagDecode(type >> 4);
45
- var hasExtendedPrecision = Boolean(metadataHeader >> 3 & 1);
46
- var hasZ = false;
47
- var hasM = false;
48
- var zPrecision = 0;
49
- var zPrecisionFactor = 1;
50
- var mPrecision = 0;
51
- var mPrecisionFactor = 1;
52
- if (hasExtendedPrecision) {
53
- var extendedPrecision = binaryReader.readUInt8();
54
- hasZ = (extendedPrecision & 0x01) === 0x01;
55
- hasM = (extendedPrecision & 0x02) === 0x02;
56
- zPrecision = zigZagDecode((extendedPrecision & 0x1c) >> 2);
57
- zPrecisionFactor = Math.pow(10, zPrecision);
58
- mPrecision = zigZagDecode((extendedPrecision & 0xe0) >> 5);
59
- mPrecisionFactor = Math.pow(10, mPrecision);
60
- }
61
- return {
62
- geometryType: geometryType,
63
- precision: precision,
64
- precisionFactor: Math.pow(10, precision),
65
- hasBoundingBox: Boolean(metadataHeader >> 0 & 1),
66
- hasSizeAttribute: Boolean(metadataHeader >> 1 & 1),
67
- hasIdList: Boolean(metadataHeader >> 2 & 1),
68
- hasExtendedPrecision: hasExtendedPrecision,
69
- isEmpty: Boolean(metadataHeader >> 4 & 1),
70
- hasZ: hasZ,
71
- hasM: hasM,
72
- zPrecision: zPrecision,
73
- zPrecisionFactor: zPrecisionFactor,
74
- mPrecision: mPrecision,
75
- mPrecisionFactor: mPrecisionFactor
76
- };
77
- }
78
- function parseGeometry(binaryReader, context, geometryType) {
79
- switch (geometryType) {
80
- case _parseWkbHeader.WKBGeometryType.Point:
81
- return parsePoint(binaryReader, context);
82
- case _parseWkbHeader.WKBGeometryType.LineString:
83
- return parseLineString(binaryReader, context);
84
- case _parseWkbHeader.WKBGeometryType.Polygon:
85
- return parsePolygon(binaryReader, context);
86
- case _parseWkbHeader.WKBGeometryType.MultiPoint:
87
- return parseMultiPoint(binaryReader, context);
88
- case _parseWkbHeader.WKBGeometryType.MultiLineString:
89
- return parseMultiLineString(binaryReader, context);
90
- case _parseWkbHeader.WKBGeometryType.MultiPolygon:
91
- return parseMultiPolygon(binaryReader, context);
92
- case _parseWkbHeader.WKBGeometryType.GeometryCollection:
93
- return parseGeometryCollection(binaryReader, context);
94
- default:
95
- throw new Error("GeometryType ".concat(geometryType, " not supported"));
96
- }
97
- }
98
- function parsePoint(reader, context) {
99
- if (context.isEmpty) {
100
- return {
101
- type: 'Point',
102
- coordinates: []
103
- };
104
- }
105
- return {
106
- type: 'Point',
107
- coordinates: readFirstPoint(reader, context)
108
- };
109
- }
110
- function parseLineString(reader, context) {
111
- if (context.isEmpty) {
112
- return {
113
- type: 'LineString',
114
- coordinates: []
115
- };
116
- }
117
- var pointCount = reader.readVarInt();
118
- var previousPoint = makePreviousPoint(context);
119
- var points = [];
120
- for (var i = 0; i < pointCount; i++) {
121
- points.push(parseNextPoint(reader, context, previousPoint));
122
- }
123
- return {
124
- type: 'LineString',
125
- coordinates: points
126
- };
127
- }
128
- function parsePolygon(reader, context) {
129
- if (context.isEmpty) {
130
- return {
131
- type: 'Polygon',
132
- coordinates: []
133
- };
134
- }
135
- var ringCount = reader.readVarInt();
136
- var previousPoint = makePreviousPoint(context);
137
- var exteriorRingLength = reader.readVarInt();
138
- var exteriorRing = [];
139
- for (var i = 0; i < exteriorRingLength; i++) {
140
- exteriorRing.push(parseNextPoint(reader, context, previousPoint));
141
- }
142
- var polygon = [exteriorRing];
143
- for (var _i = 1; _i < ringCount; _i++) {
144
- var interiorRingCount = reader.readVarInt();
145
- var interiorRing = [];
146
- for (var j = 0; j < interiorRingCount; j++) {
147
- interiorRing.push(parseNextPoint(reader, context, previousPoint));
148
- }
149
- polygon.push(interiorRing);
150
- }
151
- return {
152
- type: 'Polygon',
153
- coordinates: polygon
154
- };
155
- }
156
- function parseMultiPoint(reader, context) {
157
- if (context.isEmpty) {
158
- return {
159
- type: 'MultiPoint',
160
- coordinates: []
161
- };
162
- }
163
- var previousPoint = makePreviousPoint(context);
164
- var pointCount = reader.readVarInt();
165
- var coordinates = [];
166
- for (var i = 0; i < pointCount; i++) {
167
- coordinates.push(parseNextPoint(reader, context, previousPoint));
168
- }
169
- return {
170
- type: 'MultiPoint',
171
- coordinates: coordinates
172
- };
173
- }
174
- function parseMultiLineString(reader, context) {
175
- if (context.isEmpty) {
176
- return {
177
- type: 'MultiLineString',
178
- coordinates: []
179
- };
180
- }
181
- var previousPoint = makePreviousPoint(context);
182
- var lineStringCount = reader.readVarInt();
183
- var coordinates = [];
184
- for (var i = 0; i < lineStringCount; i++) {
185
- var pointCount = reader.readVarInt();
186
- var lineString = [];
187
- for (var j = 0; j < pointCount; j++) {
188
- lineString.push(parseNextPoint(reader, context, previousPoint));
189
- }
190
- coordinates.push(lineString);
191
- }
192
- return {
193
- type: 'MultiLineString',
194
- coordinates: coordinates
195
- };
196
- }
197
- function parseMultiPolygon(reader, context) {
198
- if (context.isEmpty) {
199
- return {
200
- type: 'MultiPolygon',
201
- coordinates: []
202
- };
203
- }
204
- var previousPoint = makePreviousPoint(context);
205
- var polygonCount = reader.readVarInt();
206
- var polygons = [];
207
- for (var i = 0; i < polygonCount; i++) {
208
- var ringCount = reader.readVarInt();
209
- var exteriorPointCount = reader.readVarInt();
210
- var exteriorRing = [];
211
- for (var j = 0; j < exteriorPointCount; j++) {
212
- exteriorRing.push(parseNextPoint(reader, context, previousPoint));
213
- }
214
- var polygon = exteriorRing ? [exteriorRing] : [];
215
- for (var _j = 1; _j < ringCount; _j++) {
216
- var interiorRing = [];
217
- var interiorRingLength = reader.readVarInt();
218
- for (var k = 0; k < interiorRingLength; k++) {
219
- interiorRing.push(parseNextPoint(reader, context, previousPoint));
220
- }
221
- polygon.push(interiorRing);
222
- }
223
- polygons.push(polygon);
224
- }
225
- return {
226
- type: 'MultiPolygon',
227
- coordinates: polygons
228
- };
229
- }
230
- function parseGeometryCollection(reader, context) {
231
- return {
232
- type: 'GeometryCollection',
233
- geometries: []
234
- };
235
- }
236
- function zigZagDecode(value) {
237
- return value >> 1 ^ -(value & 1);
238
- }
239
- function makePointCoordinates(x, y, z, m) {
240
- return z !== undefined ? m !== undefined ? [x, y, z, m] : [x, y, z] : [x, y];
241
- }
242
- function makePreviousPoint(context) {
243
- return makePointCoordinates(0, 0, context.hasZ ? 0 : undefined, context.hasM ? 0 : undefined);
244
- }
245
- function readFirstPoint(reader, context) {
246
- var x = zigZagDecode(reader.readVarInt()) / context.precisionFactor;
247
- var y = zigZagDecode(reader.readVarInt()) / context.precisionFactor;
248
- var z = context.hasZ ? zigZagDecode(reader.readVarInt()) / context.zPrecisionFactor : undefined;
249
- var m = context.hasM ? zigZagDecode(reader.readVarInt()) / context.mPrecisionFactor : undefined;
250
- return makePointCoordinates(x, y, z, m);
251
- }
252
- function parseNextPoint(reader, context, previousPoint) {
253
- previousPoint[0] += zigZagDecode(reader.readVarInt()) / context.precisionFactor;
254
- previousPoint[1] += zigZagDecode(reader.readVarInt()) / context.precisionFactor;
255
- if (context.hasZ) {
256
- previousPoint[2] += zigZagDecode(reader.readVarInt()) / context.zPrecisionFactor;
257
- }
258
- if (context.hasM) {
259
- previousPoint[3] += zigZagDecode(reader.readVarInt()) / context.mPrecisionFactor;
260
- }
261
- return previousPoint.slice();
262
- }
263
- //# sourceMappingURL=parse-twkb.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"parse-twkb.js","names":["_binaryReader","require","_parseWkbHeader","isTWKB","arrayBuffer","binaryReader","BinaryReader","type","readUInt8","geometryType","parseTWKBGeometry","context","parseTWKBHeader","hasSizeAttribute","readVarInt","hasBoundingBox","dimensions","hasZ","hasM","i","parseGeometry","metadataHeader","precision","zigZagDecode","hasExtendedPrecision","Boolean","zPrecision","zPrecisionFactor","mPrecision","mPrecisionFactor","extendedPrecision","Math","pow","precisionFactor","hasIdList","isEmpty","WKBGeometryType","Point","parsePoint","LineString","parseLineString","Polygon","parsePolygon","MultiPoint","parseMultiPoint","MultiLineString","parseMultiLineString","MultiPolygon","parseMultiPolygon","GeometryCollection","parseGeometryCollection","Error","concat","reader","coordinates","readFirstPoint","pointCount","previousPoint","makePreviousPoint","points","push","parseNextPoint","ringCount","exteriorRingLength","exteriorRing","polygon","interiorRingCount","interiorRing","j","lineStringCount","lineString","polygonCount","polygons","exteriorPointCount","interiorRingLength","k","geometries","value","makePointCoordinates","x","y","z","m","undefined","slice"],"sources":["../../../src/lib/parse-twkb.ts"],"sourcesContent":["// loaders.gl, MIT license\n// Forked from https://github.com/cschwarz/wkx under MIT license, Copyright (c) 2013 Christian Schwarz\n\nimport type {Geometry, GeometryCollection} from '@loaders.gl/schema';\nimport type {Point, LineString, Polygon} from '@loaders.gl/schema';\nimport type {MultiPoint, MultiLineString, MultiPolygon} from '@loaders.gl/schema';\nimport {BinaryReader} from './utils/binary-reader';\nimport {WKBGeometryType} from './parse-wkb-header';\n\n/**\n * Check if an array buffer might be a TWKB array buffer\n * @param arrayBuffer The array buffer to check\n * @returns false if this is definitely not a TWKB array buffer, true if it might be a TWKB array buffer\n */\nexport function isTWKB(arrayBuffer: ArrayBuffer): boolean {\n const binaryReader = new BinaryReader(arrayBuffer);\n\n const type = binaryReader.readUInt8();\n const geometryType = type & 0x0f;\n\n // Only geometry types 1 to 7 (point to geometry collection are currently defined)\n if (geometryType < 1 || geometryType > 7) {\n return false;\n }\n\n return true;\n}\n\n/** Passed around between parsing functions, extracted from the header */\ntype TWKBHeader = {\n geometryType: WKBGeometryType;\n\n hasBoundingBox: boolean;\n hasSizeAttribute: boolean;\n hasIdList: boolean;\n hasExtendedPrecision: boolean;\n isEmpty: boolean;\n\n precision: number;\n precisionFactor: number;\n\n hasZ: boolean;\n zPrecision: number;\n zPrecisionFactor: number;\n\n hasM: boolean;\n mPrecision: number;\n mPrecisionFactor: number;\n};\n\nexport function parseTWKBGeometry(arrayBuffer: ArrayBuffer): Geometry {\n const binaryReader = new BinaryReader(arrayBuffer);\n\n const context = parseTWKBHeader(binaryReader);\n\n if (context.hasSizeAttribute) {\n binaryReader.readVarInt();\n }\n\n if (context.hasBoundingBox) {\n let dimensions = 2;\n\n if (context.hasZ) {\n dimensions++;\n }\n if (context.hasM) {\n dimensions++;\n }\n\n // TODO why are we throwing away these datums?\n for (let i = 0; i < dimensions; i++) {\n binaryReader.readVarInt();\n binaryReader.readVarInt();\n }\n }\n\n return parseGeometry(binaryReader, context, context.geometryType);\n}\n\nfunction parseTWKBHeader(binaryReader: BinaryReader): TWKBHeader {\n const type = binaryReader.readUInt8();\n const metadataHeader = binaryReader.readUInt8();\n\n const geometryType = type & 0x0f;\n\n const precision = zigZagDecode(type >> 4);\n\n const hasExtendedPrecision = Boolean((metadataHeader >> 3) & 1);\n let hasZ = false;\n let hasM = false;\n let zPrecision = 0;\n let zPrecisionFactor = 1;\n let mPrecision = 0;\n let mPrecisionFactor = 1;\n\n if (hasExtendedPrecision) {\n const extendedPrecision = binaryReader.readUInt8();\n hasZ = (extendedPrecision & 0x01) === 0x01;\n hasM = (extendedPrecision & 0x02) === 0x02;\n\n zPrecision = zigZagDecode((extendedPrecision & 0x1c) >> 2);\n zPrecisionFactor = Math.pow(10, zPrecision);\n\n mPrecision = zigZagDecode((extendedPrecision & 0xe0) >> 5);\n mPrecisionFactor = Math.pow(10, mPrecision);\n }\n\n return {\n geometryType,\n\n precision,\n precisionFactor: Math.pow(10, precision),\n\n hasBoundingBox: Boolean((metadataHeader >> 0) & 1),\n hasSizeAttribute: Boolean((metadataHeader >> 1) & 1),\n hasIdList: Boolean((metadataHeader >> 2) & 1),\n hasExtendedPrecision,\n isEmpty: Boolean((metadataHeader >> 4) & 1),\n\n hasZ,\n hasM,\n zPrecision,\n zPrecisionFactor,\n mPrecision,\n mPrecisionFactor\n };\n}\n\nfunction parseGeometry(\n binaryReader: BinaryReader,\n context: TWKBHeader,\n geometryType: WKBGeometryType\n): Geometry {\n switch (geometryType) {\n case WKBGeometryType.Point:\n return parsePoint(binaryReader, context);\n case WKBGeometryType.LineString:\n return parseLineString(binaryReader, context);\n case WKBGeometryType.Polygon:\n return parsePolygon(binaryReader, context);\n case WKBGeometryType.MultiPoint:\n return parseMultiPoint(binaryReader, context);\n case WKBGeometryType.MultiLineString:\n return parseMultiLineString(binaryReader, context);\n case WKBGeometryType.MultiPolygon:\n return parseMultiPolygon(binaryReader, context);\n case WKBGeometryType.GeometryCollection:\n return parseGeometryCollection(binaryReader, context);\n default:\n throw new Error(`GeometryType ${geometryType} not supported`);\n }\n}\n\n// GEOMETRIES\n\nfunction parsePoint(reader: BinaryReader, context: TWKBHeader): Point {\n if (context.isEmpty) {\n return {type: 'Point', coordinates: []};\n }\n\n return {type: 'Point', coordinates: readFirstPoint(reader, context)};\n}\n\nfunction parseLineString(reader: BinaryReader, context: TWKBHeader): LineString {\n if (context.isEmpty) {\n return {type: 'LineString', coordinates: []};\n }\n\n const pointCount = reader.readVarInt();\n\n const previousPoint = makePreviousPoint(context);\n\n const points: number[][] = [];\n for (let i = 0; i < pointCount; i++) {\n points.push(parseNextPoint(reader, context, previousPoint));\n }\n\n return {type: 'LineString', coordinates: points};\n}\n\nfunction parsePolygon(reader: BinaryReader, context: TWKBHeader): Polygon {\n if (context.isEmpty) {\n return {type: 'Polygon', coordinates: []};\n }\n\n const ringCount = reader.readVarInt();\n\n const previousPoint = makePreviousPoint(context);\n\n const exteriorRingLength = reader.readVarInt();\n const exteriorRing: number[][] = [];\n\n for (let i = 0; i < exteriorRingLength; i++) {\n exteriorRing.push(parseNextPoint(reader, context, previousPoint));\n }\n\n const polygon: number[][][] = [exteriorRing];\n for (let i = 1; i < ringCount; i++) {\n const interiorRingCount = reader.readVarInt();\n\n const interiorRing: number[][] = [];\n for (let j = 0; j < interiorRingCount; j++) {\n interiorRing.push(parseNextPoint(reader, context, previousPoint));\n }\n\n polygon.push(interiorRing);\n }\n\n return {type: 'Polygon', coordinates: polygon};\n}\n\nfunction parseMultiPoint(reader: BinaryReader, context: TWKBHeader): MultiPoint {\n if (context.isEmpty) {\n return {type: 'MultiPoint', coordinates: []};\n }\n\n const previousPoint = makePreviousPoint(context);\n const pointCount = reader.readVarInt();\n\n const coordinates: number[][] = [];\n for (let i = 0; i < pointCount; i++) {\n coordinates.push(parseNextPoint(reader, context, previousPoint));\n }\n\n return {type: 'MultiPoint', coordinates};\n}\n\nfunction parseMultiLineString(reader: BinaryReader, context: TWKBHeader): MultiLineString {\n if (context.isEmpty) {\n return {type: 'MultiLineString', coordinates: []};\n }\n\n const previousPoint = makePreviousPoint(context);\n const lineStringCount = reader.readVarInt();\n\n const coordinates: number[][][] = [];\n for (let i = 0; i < lineStringCount; i++) {\n const pointCount = reader.readVarInt();\n\n const lineString: number[][] = [];\n for (let j = 0; j < pointCount; j++) {\n lineString.push(parseNextPoint(reader, context, previousPoint));\n }\n\n coordinates.push(lineString);\n }\n\n return {type: 'MultiLineString', coordinates};\n}\n\nfunction parseMultiPolygon(reader: BinaryReader, context: TWKBHeader): MultiPolygon {\n if (context.isEmpty) {\n return {type: 'MultiPolygon', coordinates: []};\n }\n\n const previousPoint = makePreviousPoint(context);\n const polygonCount = reader.readVarInt();\n\n const polygons: number[][][][] = [];\n for (let i = 0; i < polygonCount; i++) {\n const ringCount = reader.readVarInt();\n\n const exteriorPointCount = reader.readVarInt();\n\n const exteriorRing: number[][] = [];\n for (let j = 0; j < exteriorPointCount; j++) {\n exteriorRing.push(parseNextPoint(reader, context, previousPoint));\n }\n\n const polygon: number[][][] = exteriorRing ? [exteriorRing] : [];\n\n for (let j = 1; j < ringCount; j++) {\n const interiorRing: number[][] = [];\n\n const interiorRingLength = reader.readVarInt();\n\n for (let k = 0; k < interiorRingLength; k++) {\n interiorRing.push(parseNextPoint(reader, context, previousPoint));\n }\n\n polygon.push(interiorRing);\n }\n\n polygons.push(polygon);\n }\n\n return {type: 'MultiPolygon', coordinates: polygons};\n}\n\n/** Geometry collection not yet supported */\nfunction parseGeometryCollection(reader: BinaryReader, context: TWKBHeader): GeometryCollection {\n return {type: 'GeometryCollection', geometries: []};\n /**\n if (context.isEmpty) {\n return {type: 'GeometryCollection', geometries: []};\n }\n\n const geometryCount = reader.readVarInt();\n\n const geometries: Geometry[] = new Array(geometryCount);\n for (let i = 0; i < geometryCount; i++) {\n const geometry = parseGeometry(reader, context, geometryType);\n geometries.push(geometry);\n }\n\n return {type: 'GeometryCollection', geometries: []};\n */\n}\n\n// HELPERS\n\n/** \n * Maps negative values to positive values while going back and\n forth (0 = 0, -1 = 1, 1 = 2, -2 = 3, 2 = 4, -3 = 5, 3 = 6 ...)\n */\nfunction zigZagDecode(value: number): number {\n return (value >> 1) ^ -(value & 1);\n}\n\nfunction makePointCoordinates(x: number, y: number, z?: number, m?: number): number[] {\n return (z !== undefined ? (m !== undefined ? [x, y, z, m] : [x, y, z]) : [x, y]) as number[];\n}\n\nfunction makePreviousPoint(context: TWKBHeader): number[] {\n return makePointCoordinates(0, 0, context.hasZ ? 0 : undefined, context.hasM ? 0 : undefined);\n}\n\nfunction readFirstPoint(reader: BinaryReader, context: TWKBHeader): number[] {\n const x = zigZagDecode(reader.readVarInt()) / context.precisionFactor;\n const y = zigZagDecode(reader.readVarInt()) / context.precisionFactor;\n const z = context.hasZ ? zigZagDecode(reader.readVarInt()) / context.zPrecisionFactor : undefined;\n const m = context.hasM ? zigZagDecode(reader.readVarInt()) / context.mPrecisionFactor : undefined;\n return makePointCoordinates(x, y, z, m);\n}\n\n/**\n * Modifies previousPoint\n */\nfunction parseNextPoint(\n reader: BinaryReader,\n context: TWKBHeader,\n previousPoint: number[]\n): number[] {\n previousPoint[0] += zigZagDecode(reader.readVarInt()) / context.precisionFactor;\n previousPoint[1] += zigZagDecode(reader.readVarInt()) / context.precisionFactor;\n\n if (context.hasZ) {\n previousPoint[2] += zigZagDecode(reader.readVarInt()) / context.zPrecisionFactor;\n }\n if (context.hasM) {\n previousPoint[3] += zigZagDecode(reader.readVarInt()) / context.mPrecisionFactor;\n }\n\n // Copy the point\n return previousPoint.slice();\n}\n"],"mappings":";;;;;;;AAMA,IAAAA,aAAA,GAAAC,OAAA;AACA,IAAAC,eAAA,GAAAD,OAAA;AAOO,SAASE,MAAMA,CAACC,WAAwB,EAAW;EACxD,IAAMC,YAAY,GAAG,IAAIC,0BAAY,CAACF,WAAW,CAAC;EAElD,IAAMG,IAAI,GAAGF,YAAY,CAACG,SAAS,CAAC,CAAC;EACrC,IAAMC,YAAY,GAAGF,IAAI,GAAG,IAAI;EAGhC,IAAIE,YAAY,GAAG,CAAC,IAAIA,YAAY,GAAG,CAAC,EAAE;IACxC,OAAO,KAAK;EACd;EAEA,OAAO,IAAI;AACb;AAwBO,SAASC,iBAAiBA,CAACN,WAAwB,EAAY;EACpE,IAAMC,YAAY,GAAG,IAAIC,0BAAY,CAACF,WAAW,CAAC;EAElD,IAAMO,OAAO,GAAGC,eAAe,CAACP,YAAY,CAAC;EAE7C,IAAIM,OAAO,CAACE,gBAAgB,EAAE;IAC5BR,YAAY,CAACS,UAAU,CAAC,CAAC;EAC3B;EAEA,IAAIH,OAAO,CAACI,cAAc,EAAE;IAC1B,IAAIC,UAAU,GAAG,CAAC;IAElB,IAAIL,OAAO,CAACM,IAAI,EAAE;MAChBD,UAAU,EAAE;IACd;IACA,IAAIL,OAAO,CAACO,IAAI,EAAE;MAChBF,UAAU,EAAE;IACd;IAGA,KAAK,IAAIG,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGH,UAAU,EAAEG,CAAC,EAAE,EAAE;MACnCd,YAAY,CAACS,UAAU,CAAC,CAAC;MACzBT,YAAY,CAACS,UAAU,CAAC,CAAC;IAC3B;EACF;EAEA,OAAOM,aAAa,CAACf,YAAY,EAAEM,OAAO,EAAEA,OAAO,CAACF,YAAY,CAAC;AACnE;AAEA,SAASG,eAAeA,CAACP,YAA0B,EAAc;EAC/D,IAAME,IAAI,GAAGF,YAAY,CAACG,SAAS,CAAC,CAAC;EACrC,IAAMa,cAAc,GAAGhB,YAAY,CAACG,SAAS,CAAC,CAAC;EAE/C,IAAMC,YAAY,GAAGF,IAAI,GAAG,IAAI;EAEhC,IAAMe,SAAS,GAAGC,YAAY,CAAChB,IAAI,IAAI,CAAC,CAAC;EAEzC,IAAMiB,oBAAoB,GAAGC,OAAO,CAAEJ,cAAc,IAAI,CAAC,GAAI,CAAC,CAAC;EAC/D,IAAIJ,IAAI,GAAG,KAAK;EAChB,IAAIC,IAAI,GAAG,KAAK;EAChB,IAAIQ,UAAU,GAAG,CAAC;EAClB,IAAIC,gBAAgB,GAAG,CAAC;EACxB,IAAIC,UAAU,GAAG,CAAC;EAClB,IAAIC,gBAAgB,GAAG,CAAC;EAExB,IAAIL,oBAAoB,EAAE;IACxB,IAAMM,iBAAiB,GAAGzB,YAAY,CAACG,SAAS,CAAC,CAAC;IAClDS,IAAI,GAAG,CAACa,iBAAiB,GAAG,IAAI,MAAM,IAAI;IAC1CZ,IAAI,GAAG,CAACY,iBAAiB,GAAG,IAAI,MAAM,IAAI;IAE1CJ,UAAU,GAAGH,YAAY,CAAC,CAACO,iBAAiB,GAAG,IAAI,KAAK,CAAC,CAAC;IAC1DH,gBAAgB,GAAGI,IAAI,CAACC,GAAG,CAAC,EAAE,EAAEN,UAAU,CAAC;IAE3CE,UAAU,GAAGL,YAAY,CAAC,CAACO,iBAAiB,GAAG,IAAI,KAAK,CAAC,CAAC;IAC1DD,gBAAgB,GAAGE,IAAI,CAACC,GAAG,CAAC,EAAE,EAAEJ,UAAU,CAAC;EAC7C;EAEA,OAAO;IACLnB,YAAY,EAAZA,YAAY;IAEZa,SAAS,EAATA,SAAS;IACTW,eAAe,EAAEF,IAAI,CAACC,GAAG,CAAC,EAAE,EAAEV,SAAS,CAAC;IAExCP,cAAc,EAAEU,OAAO,CAAEJ,cAAc,IAAI,CAAC,GAAI,CAAC,CAAC;IAClDR,gBAAgB,EAAEY,OAAO,CAAEJ,cAAc,IAAI,CAAC,GAAI,CAAC,CAAC;IACpDa,SAAS,EAAET,OAAO,CAAEJ,cAAc,IAAI,CAAC,GAAI,CAAC,CAAC;IAC7CG,oBAAoB,EAApBA,oBAAoB;IACpBW,OAAO,EAAEV,OAAO,CAAEJ,cAAc,IAAI,CAAC,GAAI,CAAC,CAAC;IAE3CJ,IAAI,EAAJA,IAAI;IACJC,IAAI,EAAJA,IAAI;IACJQ,UAAU,EAAVA,UAAU;IACVC,gBAAgB,EAAhBA,gBAAgB;IAChBC,UAAU,EAAVA,UAAU;IACVC,gBAAgB,EAAhBA;EACF,CAAC;AACH;AAEA,SAAST,aAAaA,CACpBf,YAA0B,EAC1BM,OAAmB,EACnBF,YAA6B,EACnB;EACV,QAAQA,YAAY;IAClB,KAAK2B,+BAAe,CAACC,KAAK;MACxB,OAAOC,UAAU,CAACjC,YAAY,EAAEM,OAAO,CAAC;IAC1C,KAAKyB,+BAAe,CAACG,UAAU;MAC7B,OAAOC,eAAe,CAACnC,YAAY,EAAEM,OAAO,CAAC;IAC/C,KAAKyB,+BAAe,CAACK,OAAO;MAC1B,OAAOC,YAAY,CAACrC,YAAY,EAAEM,OAAO,CAAC;IAC5C,KAAKyB,+BAAe,CAACO,UAAU;MAC7B,OAAOC,eAAe,CAACvC,YAAY,EAAEM,OAAO,CAAC;IAC/C,KAAKyB,+BAAe,CAACS,eAAe;MAClC,OAAOC,oBAAoB,CAACzC,YAAY,EAAEM,OAAO,CAAC;IACpD,KAAKyB,+BAAe,CAACW,YAAY;MAC/B,OAAOC,iBAAiB,CAAC3C,YAAY,EAAEM,OAAO,CAAC;IACjD,KAAKyB,+BAAe,CAACa,kBAAkB;MACrC,OAAOC,uBAAuB,CAAC7C,YAAY,EAAEM,OAAO,CAAC;IACvD;MACE,MAAM,IAAIwC,KAAK,iBAAAC,MAAA,CAAiB3C,YAAY,mBAAgB,CAAC;EACjE;AACF;AAIA,SAAS6B,UAAUA,CAACe,MAAoB,EAAE1C,OAAmB,EAAS;EACpE,IAAIA,OAAO,CAACwB,OAAO,EAAE;IACnB,OAAO;MAAC5B,IAAI,EAAE,OAAO;MAAE+C,WAAW,EAAE;IAAE,CAAC;EACzC;EAEA,OAAO;IAAC/C,IAAI,EAAE,OAAO;IAAE+C,WAAW,EAAEC,cAAc,CAACF,MAAM,EAAE1C,OAAO;EAAC,CAAC;AACtE;AAEA,SAAS6B,eAAeA,CAACa,MAAoB,EAAE1C,OAAmB,EAAc;EAC9E,IAAIA,OAAO,CAACwB,OAAO,EAAE;IACnB,OAAO;MAAC5B,IAAI,EAAE,YAAY;MAAE+C,WAAW,EAAE;IAAE,CAAC;EAC9C;EAEA,IAAME,UAAU,GAAGH,MAAM,CAACvC,UAAU,CAAC,CAAC;EAEtC,IAAM2C,aAAa,GAAGC,iBAAiB,CAAC/C,OAAO,CAAC;EAEhD,IAAMgD,MAAkB,GAAG,EAAE;EAC7B,KAAK,IAAIxC,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGqC,UAAU,EAAErC,CAAC,EAAE,EAAE;IACnCwC,MAAM,CAACC,IAAI,CAACC,cAAc,CAACR,MAAM,EAAE1C,OAAO,EAAE8C,aAAa,CAAC,CAAC;EAC7D;EAEA,OAAO;IAAClD,IAAI,EAAE,YAAY;IAAE+C,WAAW,EAAEK;EAAM,CAAC;AAClD;AAEA,SAASjB,YAAYA,CAACW,MAAoB,EAAE1C,OAAmB,EAAW;EACxE,IAAIA,OAAO,CAACwB,OAAO,EAAE;IACnB,OAAO;MAAC5B,IAAI,EAAE,SAAS;MAAE+C,WAAW,EAAE;IAAE,CAAC;EAC3C;EAEA,IAAMQ,SAAS,GAAGT,MAAM,CAACvC,UAAU,CAAC,CAAC;EAErC,IAAM2C,aAAa,GAAGC,iBAAiB,CAAC/C,OAAO,CAAC;EAEhD,IAAMoD,kBAAkB,GAAGV,MAAM,CAACvC,UAAU,CAAC,CAAC;EAC9C,IAAMkD,YAAwB,GAAG,EAAE;EAEnC,KAAK,IAAI7C,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAG4C,kBAAkB,EAAE5C,CAAC,EAAE,EAAE;IAC3C6C,YAAY,CAACJ,IAAI,CAACC,cAAc,CAACR,MAAM,EAAE1C,OAAO,EAAE8C,aAAa,CAAC,CAAC;EACnE;EAEA,IAAMQ,OAAqB,GAAG,CAACD,YAAY,CAAC;EAC5C,KAAK,IAAI7C,EAAC,GAAG,CAAC,EAAEA,EAAC,GAAG2C,SAAS,EAAE3C,EAAC,EAAE,EAAE;IAClC,IAAM+C,iBAAiB,GAAGb,MAAM,CAACvC,UAAU,CAAC,CAAC;IAE7C,IAAMqD,YAAwB,GAAG,EAAE;IACnC,KAAK,IAAIC,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGF,iBAAiB,EAAEE,CAAC,EAAE,EAAE;MAC1CD,YAAY,CAACP,IAAI,CAACC,cAAc,CAACR,MAAM,EAAE1C,OAAO,EAAE8C,aAAa,CAAC,CAAC;IACnE;IAEAQ,OAAO,CAACL,IAAI,CAACO,YAAY,CAAC;EAC5B;EAEA,OAAO;IAAC5D,IAAI,EAAE,SAAS;IAAE+C,WAAW,EAAEW;EAAO,CAAC;AAChD;AAEA,SAASrB,eAAeA,CAACS,MAAoB,EAAE1C,OAAmB,EAAc;EAC9E,IAAIA,OAAO,CAACwB,OAAO,EAAE;IACnB,OAAO;MAAC5B,IAAI,EAAE,YAAY;MAAE+C,WAAW,EAAE;IAAE,CAAC;EAC9C;EAEA,IAAMG,aAAa,GAAGC,iBAAiB,CAAC/C,OAAO,CAAC;EAChD,IAAM6C,UAAU,GAAGH,MAAM,CAACvC,UAAU,CAAC,CAAC;EAEtC,IAAMwC,WAAuB,GAAG,EAAE;EAClC,KAAK,IAAInC,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGqC,UAAU,EAAErC,CAAC,EAAE,EAAE;IACnCmC,WAAW,CAACM,IAAI,CAACC,cAAc,CAACR,MAAM,EAAE1C,OAAO,EAAE8C,aAAa,CAAC,CAAC;EAClE;EAEA,OAAO;IAAClD,IAAI,EAAE,YAAY;IAAE+C,WAAW,EAAXA;EAAW,CAAC;AAC1C;AAEA,SAASR,oBAAoBA,CAACO,MAAoB,EAAE1C,OAAmB,EAAmB;EACxF,IAAIA,OAAO,CAACwB,OAAO,EAAE;IACnB,OAAO;MAAC5B,IAAI,EAAE,iBAAiB;MAAE+C,WAAW,EAAE;IAAE,CAAC;EACnD;EAEA,IAAMG,aAAa,GAAGC,iBAAiB,CAAC/C,OAAO,CAAC;EAChD,IAAM0D,eAAe,GAAGhB,MAAM,CAACvC,UAAU,CAAC,CAAC;EAE3C,IAAMwC,WAAyB,GAAG,EAAE;EACpC,KAAK,IAAInC,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGkD,eAAe,EAAElD,CAAC,EAAE,EAAE;IACxC,IAAMqC,UAAU,GAAGH,MAAM,CAACvC,UAAU,CAAC,CAAC;IAEtC,IAAMwD,UAAsB,GAAG,EAAE;IACjC,KAAK,IAAIF,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGZ,UAAU,EAAEY,CAAC,EAAE,EAAE;MACnCE,UAAU,CAACV,IAAI,CAACC,cAAc,CAACR,MAAM,EAAE1C,OAAO,EAAE8C,aAAa,CAAC,CAAC;IACjE;IAEAH,WAAW,CAACM,IAAI,CAACU,UAAU,CAAC;EAC9B;EAEA,OAAO;IAAC/D,IAAI,EAAE,iBAAiB;IAAE+C,WAAW,EAAXA;EAAW,CAAC;AAC/C;AAEA,SAASN,iBAAiBA,CAACK,MAAoB,EAAE1C,OAAmB,EAAgB;EAClF,IAAIA,OAAO,CAACwB,OAAO,EAAE;IACnB,OAAO;MAAC5B,IAAI,EAAE,cAAc;MAAE+C,WAAW,EAAE;IAAE,CAAC;EAChD;EAEA,IAAMG,aAAa,GAAGC,iBAAiB,CAAC/C,OAAO,CAAC;EAChD,IAAM4D,YAAY,GAAGlB,MAAM,CAACvC,UAAU,CAAC,CAAC;EAExC,IAAM0D,QAAwB,GAAG,EAAE;EACnC,KAAK,IAAIrD,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGoD,YAAY,EAAEpD,CAAC,EAAE,EAAE;IACrC,IAAM2C,SAAS,GAAGT,MAAM,CAACvC,UAAU,CAAC,CAAC;IAErC,IAAM2D,kBAAkB,GAAGpB,MAAM,CAACvC,UAAU,CAAC,CAAC;IAE9C,IAAMkD,YAAwB,GAAG,EAAE;IACnC,KAAK,IAAII,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGK,kBAAkB,EAAEL,CAAC,EAAE,EAAE;MAC3CJ,YAAY,CAACJ,IAAI,CAACC,cAAc,CAACR,MAAM,EAAE1C,OAAO,EAAE8C,aAAa,CAAC,CAAC;IACnE;IAEA,IAAMQ,OAAqB,GAAGD,YAAY,GAAG,CAACA,YAAY,CAAC,GAAG,EAAE;IAEhE,KAAK,IAAII,EAAC,GAAG,CAAC,EAAEA,EAAC,GAAGN,SAAS,EAAEM,EAAC,EAAE,EAAE;MAClC,IAAMD,YAAwB,GAAG,EAAE;MAEnC,IAAMO,kBAAkB,GAAGrB,MAAM,CAACvC,UAAU,CAAC,CAAC;MAE9C,KAAK,IAAI6D,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGD,kBAAkB,EAAEC,CAAC,EAAE,EAAE;QAC3CR,YAAY,CAACP,IAAI,CAACC,cAAc,CAACR,MAAM,EAAE1C,OAAO,EAAE8C,aAAa,CAAC,CAAC;MACnE;MAEAQ,OAAO,CAACL,IAAI,CAACO,YAAY,CAAC;IAC5B;IAEAK,QAAQ,CAACZ,IAAI,CAACK,OAAO,CAAC;EACxB;EAEA,OAAO;IAAC1D,IAAI,EAAE,cAAc;IAAE+C,WAAW,EAAEkB;EAAQ,CAAC;AACtD;AAGA,SAAStB,uBAAuBA,CAACG,MAAoB,EAAE1C,OAAmB,EAAsB;EAC9F,OAAO;IAACJ,IAAI,EAAE,oBAAoB;IAAEqE,UAAU,EAAE;EAAE,CAAC;AAgBrD;AAQA,SAASrD,YAAYA,CAACsD,KAAa,EAAU;EAC3C,OAAQA,KAAK,IAAI,CAAC,GAAI,EAAEA,KAAK,GAAG,CAAC,CAAC;AACpC;AAEA,SAASC,oBAAoBA,CAACC,CAAS,EAAEC,CAAS,EAAEC,CAAU,EAAEC,CAAU,EAAY;EACpF,OAAQD,CAAC,KAAKE,SAAS,GAAID,CAAC,KAAKC,SAAS,GAAG,CAACJ,CAAC,EAAEC,CAAC,EAAEC,CAAC,EAAEC,CAAC,CAAC,GAAG,CAACH,CAAC,EAAEC,CAAC,EAAEC,CAAC,CAAC,GAAI,CAACF,CAAC,EAAEC,CAAC,CAAC;AACjF;AAEA,SAAStB,iBAAiBA,CAAC/C,OAAmB,EAAY;EACxD,OAAOmE,oBAAoB,CAAC,CAAC,EAAE,CAAC,EAAEnE,OAAO,CAACM,IAAI,GAAG,CAAC,GAAGkE,SAAS,EAAExE,OAAO,CAACO,IAAI,GAAG,CAAC,GAAGiE,SAAS,CAAC;AAC/F;AAEA,SAAS5B,cAAcA,CAACF,MAAoB,EAAE1C,OAAmB,EAAY;EAC3E,IAAMoE,CAAC,GAAGxD,YAAY,CAAC8B,MAAM,CAACvC,UAAU,CAAC,CAAC,CAAC,GAAGH,OAAO,CAACsB,eAAe;EACrE,IAAM+C,CAAC,GAAGzD,YAAY,CAAC8B,MAAM,CAACvC,UAAU,CAAC,CAAC,CAAC,GAAGH,OAAO,CAACsB,eAAe;EACrE,IAAMgD,CAAC,GAAGtE,OAAO,CAACM,IAAI,GAAGM,YAAY,CAAC8B,MAAM,CAACvC,UAAU,CAAC,CAAC,CAAC,GAAGH,OAAO,CAACgB,gBAAgB,GAAGwD,SAAS;EACjG,IAAMD,CAAC,GAAGvE,OAAO,CAACO,IAAI,GAAGK,YAAY,CAAC8B,MAAM,CAACvC,UAAU,CAAC,CAAC,CAAC,GAAGH,OAAO,CAACkB,gBAAgB,GAAGsD,SAAS;EACjG,OAAOL,oBAAoB,CAACC,CAAC,EAAEC,CAAC,EAAEC,CAAC,EAAEC,CAAC,CAAC;AACzC;AAKA,SAASrB,cAAcA,CACrBR,MAAoB,EACpB1C,OAAmB,EACnB8C,aAAuB,EACb;EACVA,aAAa,CAAC,CAAC,CAAC,IAAIlC,YAAY,CAAC8B,MAAM,CAACvC,UAAU,CAAC,CAAC,CAAC,GAAGH,OAAO,CAACsB,eAAe;EAC/EwB,aAAa,CAAC,CAAC,CAAC,IAAIlC,YAAY,CAAC8B,MAAM,CAACvC,UAAU,CAAC,CAAC,CAAC,GAAGH,OAAO,CAACsB,eAAe;EAE/E,IAAItB,OAAO,CAACM,IAAI,EAAE;IAChBwC,aAAa,CAAC,CAAC,CAAC,IAAIlC,YAAY,CAAC8B,MAAM,CAACvC,UAAU,CAAC,CAAC,CAAC,GAAGH,OAAO,CAACgB,gBAAgB;EAClF;EACA,IAAIhB,OAAO,CAACO,IAAI,EAAE;IAChBuC,aAAa,CAAC,CAAC,CAAC,IAAIlC,YAAY,CAAC8B,MAAM,CAACvC,UAAU,CAAC,CAAC,CAAC,GAAGH,OAAO,CAACkB,gBAAgB;EAClF;EAGA,OAAO4B,aAAa,CAAC2B,KAAK,CAAC,CAAC;AAC9B"}
@@ -1,114 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.WKBGeometryType = void 0;
7
- exports.isWKB = isWKB;
8
- exports.parseWKBHeader = parseWKBHeader;
9
- var EWKB_FLAG_Z = 0x80000000;
10
- var EWKB_FLAG_M = 0x40000000;
11
- var EWKB_FLAG_SRID = 0x20000000;
12
- var MAX_SRID = 10000;
13
- var WKBGeometryType = function (WKBGeometryType) {
14
- WKBGeometryType[WKBGeometryType["Point"] = 1] = "Point";
15
- WKBGeometryType[WKBGeometryType["LineString"] = 2] = "LineString";
16
- WKBGeometryType[WKBGeometryType["Polygon"] = 3] = "Polygon";
17
- WKBGeometryType[WKBGeometryType["MultiPoint"] = 4] = "MultiPoint";
18
- WKBGeometryType[WKBGeometryType["MultiLineString"] = 5] = "MultiLineString";
19
- WKBGeometryType[WKBGeometryType["MultiPolygon"] = 6] = "MultiPolygon";
20
- WKBGeometryType[WKBGeometryType["GeometryCollection"] = 7] = "GeometryCollection";
21
- return WKBGeometryType;
22
- }({});
23
- exports.WKBGeometryType = WKBGeometryType;
24
- function isWKB(arrayBuffer) {
25
- var dataView = new DataView(arrayBuffer);
26
- var byteOffset = 0;
27
- var endianness = dataView.getUint8(byteOffset);
28
- byteOffset += 1;
29
- if (endianness > 1) {
30
- return false;
31
- }
32
- var littleEndian = endianness === 1;
33
- var geometry = dataView.getUint32(byteOffset, littleEndian);
34
- byteOffset += 4;
35
- var geometryType = geometry & 0x07;
36
- if (geometryType === 0 || geometryType > 7) {
37
- return false;
38
- }
39
- var geometryFlags = geometry - geometryType;
40
- if (geometryFlags === 0 || geometryFlags === 1000 || geometryFlags === 2000 || geometryFlags === 3000) {
41
- return true;
42
- }
43
- if ((geometryFlags & ~(EWKB_FLAG_Z | EWKB_FLAG_M | EWKB_FLAG_SRID)) !== 0) {
44
- return false;
45
- }
46
- if (geometryFlags & EWKB_FLAG_SRID) {
47
- var srid = dataView.getUint32(byteOffset, littleEndian);
48
- byteOffset += 4;
49
- if (srid > MAX_SRID) {
50
- return false;
51
- }
52
- }
53
- return true;
54
- }
55
- function parseWKBHeader(dataView, target) {
56
- var wkbHeader = Object.assign(target || {}, {
57
- type: 'wkb',
58
- geometryType: 1,
59
- dimensions: 2,
60
- coordinates: 'xy',
61
- littleEndian: true,
62
- byteOffset: 0
63
- });
64
- wkbHeader.littleEndian = dataView.getUint8(wkbHeader.byteOffset) === 1;
65
- wkbHeader.byteOffset++;
66
- var geometryCode = dataView.getUint32(wkbHeader.byteOffset, wkbHeader.littleEndian);
67
- wkbHeader.byteOffset += 4;
68
- wkbHeader.geometryType = geometryCode & 0x7;
69
- var isoType = (geometryCode - wkbHeader.geometryType) / 1000;
70
- switch (isoType) {
71
- case 0:
72
- break;
73
- case 1:
74
- wkbHeader.type = 'iso-wkb';
75
- wkbHeader.dimensions = 3;
76
- wkbHeader.coordinates = 'xyz';
77
- break;
78
- case 2:
79
- wkbHeader.type = 'iso-wkb';
80
- wkbHeader.dimensions = 3;
81
- wkbHeader.coordinates = 'xym';
82
- break;
83
- case 3:
84
- wkbHeader.type = 'iso-wkb';
85
- wkbHeader.dimensions = 4;
86
- wkbHeader.coordinates = 'xyzm';
87
- break;
88
- default:
89
- throw new Error("WKB: Unsupported iso-wkb type: ".concat(isoType));
90
- }
91
- var ewkbZ = geometryCode & EWKB_FLAG_Z;
92
- var ewkbM = geometryCode & EWKB_FLAG_M;
93
- var ewkbSRID = geometryCode & EWKB_FLAG_SRID;
94
- if (ewkbZ && ewkbM) {
95
- wkbHeader.type = 'ewkb';
96
- wkbHeader.dimensions = 4;
97
- wkbHeader.coordinates = 'xyzm';
98
- } else if (ewkbZ) {
99
- wkbHeader.type = 'ewkb';
100
- wkbHeader.dimensions = 3;
101
- wkbHeader.coordinates = 'xyz';
102
- } else if (ewkbM) {
103
- wkbHeader.type = 'ewkb';
104
- wkbHeader.dimensions = 3;
105
- wkbHeader.coordinates = 'xym';
106
- }
107
- if (ewkbSRID) {
108
- wkbHeader.type = 'ewkb';
109
- wkbHeader.srid = dataView.getUint32(wkbHeader.byteOffset, wkbHeader.littleEndian);
110
- wkbHeader.byteOffset += 4;
111
- }
112
- return wkbHeader;
113
- }
114
- //# sourceMappingURL=parse-wkb-header.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"parse-wkb-header.js","names":["EWKB_FLAG_Z","EWKB_FLAG_M","EWKB_FLAG_SRID","MAX_SRID","WKBGeometryType","exports","isWKB","arrayBuffer","dataView","DataView","byteOffset","endianness","getUint8","littleEndian","geometry","getUint32","geometryType","geometryFlags","srid","parseWKBHeader","target","wkbHeader","Object","assign","type","dimensions","coordinates","geometryCode","isoType","Error","concat","ewkbZ","ewkbM","ewkbSRID"],"sources":["../../../src/lib/parse-wkb-header.ts"],"sourcesContent":["// loaders.gl, MIT license\n\nconst EWKB_FLAG_Z = 0x80000000;\nconst EWKB_FLAG_M = 0x40000000;\nconst EWKB_FLAG_SRID = 0x20000000;\n\nconst MAX_SRID = 10000; // TBD: Assume no more than 10K SRIDs are defined\n\n/**\n * Integer code for geometry types in WKB and related formats\n * Reference: https://en.wikipedia.org/wiki/Well-known_text_representation_of_geometry#Well-known_binary\n */\nexport enum WKBGeometryType {\n Point = 1,\n LineString = 2,\n Polygon = 3,\n MultiPoint = 4,\n MultiLineString = 5,\n MultiPolygon = 6,\n GeometryCollection = 7\n}\n\n/** Parsed WKB header */\nexport type WKBHeader = {\n /** WKB variant */\n type: 'wkb' | 'ewkb' | 'iso-wkb' | 'twkb';\n /** geometry type encoded in this WKB: point, line, polygon etc */\n geometryType: 1 | 2 | 3 | 4 | 5 | 6 | 7;\n /** Number of dimensions for coordinate data */\n dimensions: 2 | 3 | 4;\n /** Coordinate names, Z and M are controlled by flags */\n coordinates: 'xy' | 'xyz' | 'xym' | 'xyzm';\n srid?: number;\n /** true if binary data is stored as little endian */\n littleEndian: boolean;\n /** Offset to start of geometry */\n byteOffset: number;\n};\n\n/** Sanity checks that first to 5-9 bytes could represent a supported WKB dialect header */\nexport function isWKB(arrayBuffer: ArrayBuffer): boolean {\n const dataView = new DataView(arrayBuffer);\n let byteOffset = 0;\n\n const endianness = dataView.getUint8(byteOffset);\n byteOffset += 1;\n\n // Check valid endianness (only 0 or 1 are allowed)\n if (endianness > 1) {\n return false;\n }\n\n const littleEndian = endianness === 1;\n\n const geometry = dataView.getUint32(byteOffset, littleEndian);\n byteOffset += 4;\n\n // check valid geometry type (we don't support extension geometries)\n const geometryType = geometry & 0x07;\n if (geometryType === 0 || geometryType > 7) {\n return false;\n }\n\n const geometryFlags = geometry - geometryType;\n\n // Accept iso-wkb flags\n if (\n geometryFlags === 0 ||\n geometryFlags === 1000 ||\n geometryFlags === 2000 ||\n geometryFlags === 3000\n ) {\n return true;\n }\n\n // Accept ewkb flags but reject otherwise\n if ((geometryFlags & ~(EWKB_FLAG_Z | EWKB_FLAG_M | EWKB_FLAG_SRID)) !== 0) {\n return false;\n }\n\n if (geometryFlags & EWKB_FLAG_SRID) {\n const srid = dataView.getUint32(byteOffset, littleEndian);\n byteOffset += 4;\n\n if (srid > MAX_SRID) {\n return false;\n }\n }\n\n return true;\n}\n\n/**\n * Parses header and provides a byteOffset to start of geometry data\n * @param dataView\n * @param target optionally supply a WKBHeader object to avoid creating a new object for every call\n * @returns a header object describing the WKB data\n */\n// eslint-disable-next-line max-statements\nexport function parseWKBHeader(dataView: DataView, target?: WKBHeader): WKBHeader {\n const wkbHeader: WKBHeader = Object.assign(target || {}, {\n type: 'wkb',\n geometryType: 1,\n dimensions: 2,\n coordinates: 'xy',\n littleEndian: true,\n byteOffset: 0\n } as WKBHeader);\n\n // Check endianness of data\n wkbHeader.littleEndian = dataView.getUint8(wkbHeader.byteOffset) === 1;\n wkbHeader.byteOffset++;\n\n // 4-digit code representing dimension and type of geometry\n const geometryCode = dataView.getUint32(wkbHeader.byteOffset, wkbHeader.littleEndian);\n wkbHeader.byteOffset += 4;\n\n wkbHeader.geometryType = (geometryCode & 0x7) as 1 | 2 | 3 | 4 | 5 | 6 | 7;\n\n // Check if iso-wkb variant: iso-wkb adds 1000, 2000 or 3000 to the geometry code\n const isoType = (geometryCode - wkbHeader.geometryType) / 1000;\n switch (isoType) {\n case 0:\n break;\n case 1:\n wkbHeader.type = 'iso-wkb';\n wkbHeader.dimensions = 3;\n wkbHeader.coordinates = 'xyz';\n break;\n case 2:\n wkbHeader.type = 'iso-wkb';\n wkbHeader.dimensions = 3;\n wkbHeader.coordinates = 'xym';\n break;\n case 3:\n wkbHeader.type = 'iso-wkb';\n wkbHeader.dimensions = 4;\n wkbHeader.coordinates = 'xyzm';\n break;\n default:\n throw new Error(`WKB: Unsupported iso-wkb type: ${isoType}`);\n }\n\n // Check if EWKB variant. Uses bitmasks for Z&M dimensions as well as optional SRID field\n const ewkbZ = geometryCode & EWKB_FLAG_Z;\n const ewkbM = geometryCode & EWKB_FLAG_M;\n const ewkbSRID = geometryCode & EWKB_FLAG_SRID;\n\n if (ewkbZ && ewkbM) {\n wkbHeader.type = 'ewkb';\n wkbHeader.dimensions = 4;\n wkbHeader.coordinates = 'xyzm';\n } else if (ewkbZ) {\n wkbHeader.type = 'ewkb';\n wkbHeader.dimensions = 3;\n wkbHeader.coordinates = 'xyz';\n } else if (ewkbM) {\n wkbHeader.type = 'ewkb';\n wkbHeader.dimensions = 3;\n wkbHeader.coordinates = 'xym';\n }\n\n // If SRID present read four more bytes\n if (ewkbSRID) {\n wkbHeader.type = 'ewkb';\n // 4-digit code representing dimension and type of geometry\n wkbHeader.srid = dataView.getUint32(wkbHeader.byteOffset, wkbHeader.littleEndian);\n wkbHeader.byteOffset += 4;\n }\n\n return wkbHeader;\n}\n"],"mappings":"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"}