@mapcatch/util 1.0.15 → 2.0.0

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 (81) hide show
  1. package/dist/catchUtil.min.esm.js +67984 -14011
  2. package/dist/catchUtil.min.js +2695 -55
  3. package/package.json +22 -3
  4. package/src/constants/annotation_color.js +7 -0
  5. package/src/constants/annotation_draw_style.js +228 -0
  6. package/src/constants/annotation_label_style.js +76 -0
  7. package/src/constants/annotation_style.js +118 -0
  8. package/src/constants/cameras.js +1 -1
  9. package/src/constants/crs.js +31473 -31473
  10. package/src/constants/error_codes.js +44 -0
  11. package/src/constants/height_colors.js +1 -0
  12. package/src/constants/index.js +9 -2
  13. package/src/constants/map_style.js +11 -0
  14. package/src/constants/measurement_fields.js +3 -3
  15. package/src/{event.js → event/event.js} +1 -14
  16. package/src/event/event_bus.js +5 -0
  17. package/src/event/index.js +2 -0
  18. package/src/gl-operations/constants.js +9 -11
  19. package/src/gl-operations/default_options.js +5 -5
  20. package/src/gl-operations/index.js +166 -239
  21. package/src/gl-operations/reglCommands/contours.js +20 -20
  22. package/src/gl-operations/reglCommands/default.js +34 -34
  23. package/src/gl-operations/reglCommands/hillshading.js +116 -116
  24. package/src/gl-operations/reglCommands/index.js +6 -6
  25. package/src/gl-operations/reglCommands/multiLayers.js +55 -55
  26. package/src/gl-operations/reglCommands/transitions.js +24 -24
  27. package/src/gl-operations/reglCommands/util.js +54 -54
  28. package/src/gl-operations/renderer.js +69 -69
  29. package/src/gl-operations/shaders/transform.js +2 -2
  30. package/src/gl-operations/shaders/util/rgbaToFloat.glsl +11 -11
  31. package/src/gl-operations/texture_manager.js +58 -58
  32. package/src/gl-operations/util.js +154 -154
  33. package/src/index.js +14 -2
  34. package/src/measure/index.js +198 -0
  35. package/src/measure/tile_cache.js +88 -0
  36. package/src/mvs/index.js +26 -0
  37. package/src/mvs/protos/index.js +12 -0
  38. package/src/mvs/protos/proto_10.js +155 -0
  39. package/src/observation_pretict.js +168 -0
  40. package/src/photo-parser/exif/gps_tags.js +33 -0
  41. package/src/photo-parser/exif/ifd1_tags.js +22 -0
  42. package/src/photo-parser/exif/index.js +130 -0
  43. package/src/photo-parser/exif/parse_image.js +290 -0
  44. package/src/photo-parser/exif/string_values.js +137 -0
  45. package/src/photo-parser/exif/tags.js +75 -0
  46. package/src/photo-parser/exif/tiff_tags.js +35 -0
  47. package/src/photo-parser/exif/util.js +103 -0
  48. package/src/photo-parser/image-size/detector.js +24 -0
  49. package/src/photo-parser/image-size/fromFile.js +55 -0
  50. package/src/photo-parser/image-size/index.js +2 -0
  51. package/src/photo-parser/image-size/lookup.js +37 -0
  52. package/src/photo-parser/image-size/types/bmp.js +10 -0
  53. package/src/photo-parser/image-size/types/cur.js +16 -0
  54. package/src/photo-parser/image-size/types/dds.js +10 -0
  55. package/src/photo-parser/image-size/types/gif.js +11 -0
  56. package/src/photo-parser/image-size/types/heif.js +35 -0
  57. package/src/photo-parser/image-size/types/icns.js +112 -0
  58. package/src/photo-parser/image-size/types/ico.js +74 -0
  59. package/src/photo-parser/image-size/types/index.js +43 -0
  60. package/src/photo-parser/image-size/types/j2c.js +11 -0
  61. package/src/photo-parser/image-size/types/jp2.js +22 -0
  62. package/src/photo-parser/image-size/types/jpg.js +157 -0
  63. package/src/photo-parser/image-size/types/ktx.js +18 -0
  64. package/src/photo-parser/image-size/types/png.js +36 -0
  65. package/src/photo-parser/image-size/types/pnm.js +74 -0
  66. package/src/photo-parser/image-size/types/psd.js +10 -0
  67. package/src/photo-parser/image-size/types/svg.js +100 -0
  68. package/src/photo-parser/image-size/types/tga.js +14 -0
  69. package/src/photo-parser/image-size/types/tiff.js +92 -0
  70. package/src/photo-parser/image-size/types/utils.js +83 -0
  71. package/src/photo-parser/image-size/types/webp.js +67 -0
  72. package/src/photo-parser/index.js +181 -0
  73. package/src/report/annotations_report.js +446 -0
  74. package/src/report/index.js +2 -0
  75. package/src/report/map_util.js +81 -0
  76. package/src/report/pdf_creator.js +247 -0
  77. package/src/report/report.js +583 -0
  78. package/src/transform.js +204 -0
  79. package/src/util.js +371 -75
  80. package/CHANGELOG.md +0 -60
  81. /package/src/constants/{colors.js → dsm_colors.js} +0 -0
@@ -0,0 +1,247 @@
1
+ import SVGPathCommander from 'svg-path-commander'
2
+ const symbol = {
3
+ point: 'M541.257143 1009.298286l11.483428-11.922286a2105.782857 2105.782857 0 0 0 164.205715-194.852571c55.734857-75.337143 101.376-148.772571 133.339428-218.624 32.475429-70.948571 50.102857-136.338286 50.102857-195.510858a388.388571 388.388571 0 1 0-776.777142 0c0 65.536 24.502857 141.531429 69.046857 226.669715a1469.44 1469.44 0 0 0 114.249143 180.589714 2375.753143 2375.753143 0 0 0 179.565714 217.307429c13.677714 14.336 36.425143 14.628571 50.468571 0.658285l4.242286-4.388571z m-3.657143-45.056a2181.558857 2181.558857 0 0 1-53.979429-60.123429 2307.949714 2307.949714 0 0 1-119.588571-150.016A1401.709714 1401.709714 0 0 1 255.195429 582.217143c-39.716571-75.922286-60.928-141.897143-60.928-193.901714a317.732571 317.732571 0 1 1 635.538285 0c0 47.616-15.067429 103.643429-43.666285 166.107428-29.696 64.804571-72.850286 134.363429-125.952 205.970286a2034.834286 2034.834286 0 0 1-173.129143 203.117714l50.468571 0.658286zM670.793143 388.388571a158.866286 158.866286 0 1 0-317.732572 0 158.866286 158.866286 0 0 0 317.732572 0z m-247.149714 0a88.283429 88.283429 0 1 1 176.566857 0 88.283429 88.283429 0 0 1-176.566857 0z',
4
+ line: 'M0 870.4l153.6-153.6 51.2 51.2 563.2-563.2-51.2-51.2L870.4 0 1024 153.6l-153.6 153.6-83.309714-83.382857 22.674285 22.674286-563.2 563.2 60.635429 60.708571L153.6 1024 0 870.4z',
5
+ polygon: 'M911.140571 548.571429l-186.733714 323.437714H350.939429L164.278857 548.571429l186.660572-323.437715h373.540571L911.140571 548.571429z m-141.165714 402.285714l232.228572-402.285714L769.828571 146.285714h-464.457142L73.142857 548.571429 305.371429 950.857143h464.530285z'
6
+ }
7
+
8
+ class PdfCreator {
9
+ constructor (pdf) {
10
+ this.pdf = pdf
11
+ }
12
+
13
+ addPage () {
14
+ this.pdf.addPage({
15
+ margin: 50
16
+ })
17
+ return 50
18
+ }
19
+
20
+ addHead (title, titleBg) {
21
+ this.pdf.font('msbold').fontSize(20).fillColor('#333333').text(title, 50, 50)
22
+ // Add an image, constrain it to a given size, and center it vertically and horizontally
23
+ this.pdf.image(titleBg, 467, 50, {
24
+ fit: [100, 30],
25
+ align: 'right',
26
+ valign: 'center'
27
+ })
28
+ this.pdf.moveTo(50, 85).lineTo(565, 85).stroke('#dadada')
29
+ return 100
30
+ }
31
+
32
+ addTitle (pointer, title) {
33
+ this.pdf.rect(50, pointer + 3, 2, 12).fill('#0099ff')
34
+ this.pdf.font('msbold').fontSize(13).fillColor('#333333').text(title, 58, pointer)
35
+ return pointer + 30
36
+ }
37
+
38
+ addSubTitle (pointer, label) {
39
+ this.pdf.circle(51, pointer + 8, 2).fill('#0099ff')
40
+ this.pdf.font('msbold').fontSize(11).fillColor('#333333').text(label, 58, pointer)
41
+ return pointer + 25
42
+ }
43
+
44
+ addThirdTitle (pointer, label) {
45
+ this.pdf.font('msbold').fontSize(10).fillColor('#333333').text(label, 50, pointer)
46
+ return pointer + 20
47
+ }
48
+
49
+ addForm (pointer, items) {
50
+ for (let i = 0; i < items.length; i = i + 2) {
51
+ let { label, value } = items[i]
52
+ this.pdf
53
+ .font('MSYH')
54
+ .fontSize(10)
55
+ .fillColor('#333333')
56
+ .text(`${label}:${value}`, 50, pointer)
57
+ if (items[i + 1]) {
58
+ this.pdf
59
+ .font('MSYH')
60
+ .fontSize(10)
61
+ .fillColor('#333333')
62
+ .text(`${items[i + 1].label}:${items[i + 1].value}`, 332.5, pointer)
63
+ }
64
+ pointer += 22
65
+ }
66
+ return pointer
67
+ }
68
+
69
+ addImage (pointer, url) {
70
+ this.pdf.image(url, 50, pointer, { fit: [515, 400], align: 'center', valign: 'center' })
71
+ return pointer + 410
72
+ }
73
+
74
+ addTable (pointer, cols, data) {
75
+ const colsCount = cols.length
76
+ const rowsCount = data.length + 1
77
+ let colWidth = 515 / colsCount
78
+ let rowHeight = 25
79
+ this.pdf.rect(50, pointer, 515, rowHeight).fill('#f8f8f9')
80
+ for (let i = 0; i < rowsCount; i++) {
81
+ if (pointer > 720) {
82
+ pointer = this.addPage()
83
+ }
84
+ this.pdf
85
+ .moveTo(50, pointer + rowHeight)
86
+ .lineTo(565, pointer + rowHeight)
87
+ .stroke('#dadada')
88
+ for (let j = 0; j < colsCount; j++) {
89
+ if (i === 0) {
90
+ // 表头
91
+ this.pdf
92
+ .font('msbold')
93
+ .fontSize(8)
94
+ .fillColor('#333333')
95
+ .text(cols[j].title || '#', 55 + j * colWidth, pointer + 7)
96
+ } else {
97
+ if (cols[j].slot === 'color') {
98
+ let {type, color} = data[i - 1]
99
+ let p = new SVGPathCommander(symbol[type]).transform({
100
+ translate: [58 + j * colWidth, pointer + 4],
101
+ scale:0.015,
102
+ origin: [0, 0]
103
+ }).toString()
104
+ this.pdf.path(p).fill(color)
105
+ } else {
106
+ this.pdf
107
+ .font('MSYH')
108
+ .fontSize(8)
109
+ .fillColor('#333333')
110
+ .text(data[i - 1][cols[j].key], 55 + j * colWidth, pointer + 7)
111
+ }
112
+ }
113
+ }
114
+ pointer += 30
115
+ }
116
+ if (!data.length) {
117
+ this.pdf
118
+ .moveTo(50, pointer + rowHeight)
119
+ .lineTo(565, pointer + rowHeight)
120
+ .stroke('#dadada')
121
+ this.pdf
122
+ .font('MSYH')
123
+ .fontSize(8)
124
+ .fillColor('#333333')
125
+ .text('暂无数据', 300, pointer + 7)
126
+ pointer += 30
127
+ }
128
+ return pointer + 20
129
+ }
130
+
131
+ addTree (pointer, items) {
132
+ for (let i = 0; i < items.length; i++) {
133
+ let { label, value, children: children1 } = items[i]
134
+ this.pdf.font('msbold').fontSize(10).fillColor('#333333').text(label, 50, pointer)
135
+ this.pdf.font('msbold').fontSize(10).fillColor('#333333').text(value, 332.5, pointer)
136
+ pointer += 22
137
+ if (children1) {
138
+ for(let j = 0;j < children1.length;j++) {
139
+ let { label, value, children: children2 } = children1[j]
140
+ this.pdf.font('msbold').fontSize(10).fillColor('#333333').text(label, 50, pointer)
141
+ this.pdf.font('msbold').fontSize(10).fillColor('#333333').text(value, 332.5, pointer)
142
+ pointer += 22
143
+ if (children2) {
144
+ for(let n = 0;n < children2.length;n++) {
145
+ let { label, value } = children2[n]
146
+ this.pdf.font('MSYH').fontSize(10).fillColor('#333333').text(label, 60, pointer)
147
+ this.pdf.font('MSYH').fontSize(10).fillColor('#333333').text(value, 332.5, pointer)
148
+ pointer += 22
149
+ }
150
+ }
151
+ }
152
+ }
153
+ }
154
+ return pointer
155
+ }
156
+
157
+ addOverlapMap (pointer, image, legend, maxCount) {
158
+ pointer += 20
159
+ this.pdf.image(image, 50, pointer, { fit: [515, 330], align: 'center', valign: 'center' })
160
+ this.pdf.image(legend, 232, pointer + 340, { width: 150, height: 10 })
161
+ this.pdf
162
+ .font('MSYH')
163
+ .fontSize(9)
164
+ .fillColor('#333333')
165
+ .text('1', 225, pointer + 340)
166
+ this.pdf
167
+ .font('MSYH')
168
+ .fontSize(9)
169
+ .fillColor('#333333')
170
+ .text(maxCount, 385, pointer + 340)
171
+ return pointer + 390
172
+ }
173
+
174
+ addPhotosMap (pointer, image, legend) {
175
+ this.pdf.image(image, 50, pointer, { fit: [420, 350], align: 'center', valign: 'center' })
176
+ for (let i = 0; i < legend.stops.length; i++) {
177
+ let p = pointer + i * 20
178
+ let [value, color] = legend.stops[i]
179
+ this.pdf
180
+ .circle(485, p + 7, 6)
181
+ .lineWidth(0.5)
182
+ .fillAndStroke(color, '#333333')
183
+ this.pdf.font('MSYH').fontSize(9).fillColor('#333333').text(`${value} ${legend.unit}`, 500, p)
184
+ }
185
+ this.pdf.rect(475, pointer + legend.stops.length * 20 + 10, 60, 2).fillAndStroke('#32de32')
186
+ this.pdf
187
+ .font('MSYH')
188
+ .fontSize(9)
189
+ .fillColor('#333333')
190
+ .text(`X ${legend.ratio}`, 485, pointer + legend.stops.length * 20 + 20, {
191
+ width: 40,
192
+ align: 'center'
193
+ })
194
+ return pointer + 360
195
+ }
196
+
197
+ addDsmMap (pointer, image, legend, min, max) {
198
+ this.pdf.image(image, 50, pointer, { fit: [515, 350], align: 'center', valign: 'center' })
199
+ this.pdf.image(legend, 232, pointer + 360, { width: 150, height: 10 })
200
+ this.pdf
201
+ .font('MSYH')
202
+ .fontSize(9)
203
+ .fillColor('#333333')
204
+ .text(`${min}米`, 195, pointer + 360)
205
+ this.pdf
206
+ .font('MSYH')
207
+ .fontSize(9)
208
+ .fillColor('#333333')
209
+ .text(`${max}米`, 385, pointer + 360)
210
+ return pointer + 410
211
+ }
212
+
213
+ addAnnotationDetail (pointer, items) {
214
+ for(let i = 0;i < items.length;i++) {
215
+ if (pointer + 190 > 720) {
216
+ pointer = this.addPage()
217
+ }
218
+ let {name, type, color, data, image} = items[i]
219
+ // 标注名称
220
+ let p = new SVGPathCommander(symbol[type]).transform({
221
+ translate: [51, pointer],
222
+ scale:0.018,
223
+ origin: [0, 0]
224
+ }).toString()
225
+ this.pdf.path(p).fill(color)
226
+ this.pdf.font('msbold').fontSize(11).fillColor('#333333').text(name, 75, pointer + 2)
227
+ // 测量数据
228
+ let keys = Object.keys(data)
229
+ let rowHeight = 24
230
+ for(let j = 0;j < keys.length;j++) {
231
+ if (j % 2) {
232
+ this.pdf.rect(50, pointer + 30 + j * rowHeight, 245, rowHeight).stroke('#dedede')
233
+ } else {
234
+ this.pdf.rect(50, pointer + 30 + j * rowHeight, 245, rowHeight).fillAndStroke('#dedede', '#dedede')
235
+ }
236
+ let value = data[keys[j]]
237
+ this.pdf.font('msbold').fontSize(9).fillColor('#333333').text(keys[j], 58, pointer + 35 + j * rowHeight)
238
+ this.pdf.font('MSYH').fontSize(9).fillColor('#333333').text(value, 180, pointer + 35 + j * rowHeight)
239
+ }
240
+ // 缩略图
241
+ image && this.pdf.image(image, 310, pointer + 30, { width: 245, height: 125 })
242
+ pointer += 210
243
+ }
244
+ }
245
+ }
246
+
247
+ export default PdfCreator