@eturnity/eturnity_3d 0.0.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 (78) hide show
  1. package/.babelrc +3 -0
  2. package/.env +0 -0
  3. package/.eslintrc +18 -0
  4. package/.eslintrc.json +18 -0
  5. package/.prettierrc +7 -0
  6. package/Dockerfile +17 -0
  7. package/README.md +18 -0
  8. package/bitbucket-pipelines.yml +681 -0
  9. package/dist/assets/images/panels/longiSolarLR4_60HPH_350M.png +0 -0
  10. package/dist/assets/images/panels/longiSolarLR4_60HPH_370M.png +0 -0
  11. package/dist/assets/images/panels/reneSola_Virtus_2_JC320S_24_Bbw copy.png +0 -0
  12. package/dist/assets/images/panels/reneSola_Virtus_2_JC320S_24_Bbw.png +0 -0
  13. package/dist/assets/images/panels/uv.png +0 -0
  14. package/dist/assets/panels/longiSolarLR4_60HPH_350M.png +0 -0
  15. package/dist/assets/panels/longiSolarLR4_60HPH_370M.png +0 -0
  16. package/dist/assets/panels/reneSola_Virtus_2_JC320S_24_Bbw.png +0 -0
  17. package/dist/assets/panels/uv.png +0 -0
  18. package/dist/assets/theme.js +43 -0
  19. package/dist/assets/vue.svg +1 -0
  20. package/dist/css/main.1f8fe45d.css +1 -0
  21. package/dist/img/longiSolarLR4_60HPH_350M.85a84b2e.png +0 -0
  22. package/dist/img/longiSolarLR4_60HPH_370M.bf6b1f4e.png +0 -0
  23. package/dist/img/reneSola_Virtus_2_JC320S_24_Bbw.8b1892e0.png +0 -0
  24. package/dist/index.html +26 -0
  25. package/dist/main.js +60230 -0
  26. package/dist/main.js.map +1 -0
  27. package/dist/vite.svg +1 -0
  28. package/docker_conf/nginx/nginx.conf +16 -0
  29. package/index.html +26 -0
  30. package/package.json +71 -0
  31. package/postcss.config.js +1 -0
  32. package/preview.html +55 -0
  33. package/public/assets/images/panels/longiSolarLR4_60HPH_350M.png +0 -0
  34. package/public/assets/images/panels/longiSolarLR4_60HPH_370M.png +0 -0
  35. package/public/assets/images/panels/reneSola_Virtus_2_JC320S_24_Bbw copy.png +0 -0
  36. package/public/assets/images/panels/reneSola_Virtus_2_JC320S_24_Bbw.png +0 -0
  37. package/public/assets/images/panels/uv.png +0 -0
  38. package/public/assets/panels/longiSolarLR4_60HPH_350M.png +0 -0
  39. package/public/assets/panels/longiSolarLR4_60HPH_370M.png +0 -0
  40. package/public/assets/panels/reneSola_Virtus_2_JC320S_24_Bbw.png +0 -0
  41. package/public/assets/panels/uv.png +0 -0
  42. package/public/assets/theme.js +43 -0
  43. package/public/assets/vue.svg +1 -0
  44. package/public/vite.svg +1 -0
  45. package/server.js +17 -0
  46. package/src/App.vue +28 -0
  47. package/src/assets/images/panels/longiSolarLR4_60HPH_350M.png +0 -0
  48. package/src/assets/images/panels/longiSolarLR4_60HPH_370M.png +0 -0
  49. package/src/assets/images/panels/reneSola_Virtus_2_JC320S_24_Bbw copy.png +0 -0
  50. package/src/assets/images/panels/reneSola_Virtus_2_JC320S_24_Bbw.png +0 -0
  51. package/src/assets/images/panels/uv.png +0 -0
  52. package/src/assets/images/white_tile.png +0 -0
  53. package/src/assets/theme.js +43 -0
  54. package/src/components/ThreeCanvasViewer.vue +247 -0
  55. package/src/config.js +104 -0
  56. package/src/functions.js +2 -0
  57. package/src/helper/DFS.js +80 -0
  58. package/src/helper/MapView.js +253 -0
  59. package/src/helper/UpdateRoofModuleFieldRelations.js +119 -0
  60. package/src/helper/UpdateRoofObstacleRelations.js +86 -0
  61. package/src/helper/clearThreeObjects.js +21 -0
  62. package/src/helper/customProvider.js +57 -0
  63. package/src/helper/geometryHandler.js +606 -0
  64. package/src/helper/graphCreation.js +43 -0
  65. package/src/helper/materials.js +55 -0
  66. package/src/helper/projectedMaterial.js +502 -0
  67. package/src/helper/renderMixin.js +1132 -0
  68. package/src/helper/threeMixin.js +171 -0
  69. package/src/main.js +28 -0
  70. package/src/store/AddMargin.js +107 -0
  71. package/src/store/hydrateData.js +209 -0
  72. package/src/store/nodesEdgesCreation.js +216 -0
  73. package/src/store/store.js +10 -0
  74. package/src/store/three-d-module.js +142 -0
  75. package/src/style.css +96 -0
  76. package/src/utils/layers.js +265 -0
  77. package/src/utils/leaflet-config.service.js +67 -0
  78. package/vue.config.js +46 -0
@@ -0,0 +1,265 @@
1
+ import * as L from 'leaflet'
2
+ import 'leaflet.gridlayer.googlemutant'
3
+ import { leafletMapLayersConfig } from './leaflet-config.service'
4
+
5
+ function getLayers() {
6
+ const googleLayer = L.gridLayer.googleMutant({
7
+ type: 'hybrid',
8
+ layerTypeAPI: 'googleLayer',
9
+ maxNativeZoom: 25,
10
+ maxZoom: 25
11
+ })
12
+ const googleLayerRoadmap = L.gridLayer.googleMutant({
13
+ type: 'roadmap',
14
+ layerTypeAPI: 'googleLayerRoadmap',
15
+ maxNativeZoom: 25,
16
+ maxZoom: 25
17
+ })
18
+ const googleLayerTerrain = L.gridLayer.googleMutant({
19
+ type: 'terrain',
20
+ layerTypeAPI: 'googleLayerTerrain',
21
+ maxNativeZoom: 25,
22
+ maxZoom: 25
23
+ })
24
+ // TODO activate for different users
25
+ const baseMapLayer = L.tileLayer(
26
+ 'http://{s}.wien.gv.at/basemap/geolandbasemap/normal/google3857/{z}/{y}/{x}.png',
27
+ {
28
+ id: 'basemap',
29
+ subdomains: ['maps', 'maps1', 'maps2', 'maps3', 'maps4'],
30
+ attribution:
31
+ 'Datenquelle: <a href="http://www.basemap.at/">basemap.at</a>',
32
+ // TODO not defined
33
+ minZoom: leafletMapLayersConfig['baseMapLayer']['minZoom'],
34
+ maxZoom: leafletMapLayersConfig['baseMapLayer']['maxZoom'],
35
+ maxNativeZoom: leafletMapLayersConfig['baseMapLayer']['maxNativeZoom'],
36
+ layerTypeAPI: 'baseMapLayer'
37
+ }
38
+ )
39
+ const baseMapLayerStreetNumber = L.tileLayer(
40
+ 'http://{s}.wien.gv.at/basemap/bmaporthofoto30cm/normal/google3857/{z}/{y}/{x}.jpeg',
41
+ {
42
+ id: 'basemap_bmaporthofoto30cm',
43
+ subdomains: ['maps', 'maps1', 'maps2', 'maps3', 'maps4'],
44
+ attribution:
45
+ 'Datenquelle: <a href="http://www.basemap.at/">basemap.at</a>',
46
+ // TODO not defined
47
+ minZoom: leafletMapLayersConfig['baseMapLayerStreetNumber']['minZoom'],
48
+ maxZoom: leafletMapLayersConfig['baseMapLayerStreetNumber']['maxZoom'],
49
+ maxNativeZoom:
50
+ leafletMapLayersConfig['baseMapLayerStreetNumber']['maxNativeZoom'],
51
+ layerTypeAPI: 'baseMapLayerStreetNumber'
52
+ }
53
+ )
54
+ const swisstopoLayer_swissimage = L.tileLayer(
55
+ 'https://wmts10.geo.admin.ch/1.0.0/ch.swisstopo.swissimage/default/current/3857/{z}/{x}/{y}.jpeg',
56
+ {
57
+ id: 'swisstopo_swissimage',
58
+ subdomains: ['maps', 'maps1', 'maps2', 'maps3', 'maps4'],
59
+ attribution:
60
+ 'Datenquelle: <a href="https://www.geo.admin.ch">geo.admin.ch</a>',
61
+ maxZoom: leafletMapLayersConfig['swisstopoLayer_swissimage']['maxZoom'],
62
+ maxNativeZoom:
63
+ leafletMapLayersConfig['swisstopoLayer_swissimage']['maxNativeZoom'],
64
+ layerTypeAPI: 'swisstopoLayer_swissimage'
65
+ }
66
+ )
67
+ const swisstopoLayer_pixelkarte = L.tileLayer(
68
+ 'https://wmts10.geo.admin.ch/1.0.0/ch.swisstopo.pixelkarte-farbe/default/current/3857/{z}/{x}/{y}.jpeg',
69
+ {
70
+ id: 'swisstopo_pixelkarte',
71
+ subdomains: ['maps', 'maps1', 'maps2', 'maps3', 'maps4'],
72
+ attribution:
73
+ 'Datenquelle: <a href="https://www.geo.admin.ch">geo.admin.ch</a>',
74
+ maxZoom: leafletMapLayersConfig['swisstopoLayer_pixelkarte']['maxZoom'],
75
+ maxNativeZoom:
76
+ leafletMapLayersConfig['swisstopoLayer_pixelkarte']['maxNativeZoom'],
77
+ layerTypeAPI: 'swisstopoLayer_pixelkarte'
78
+ }
79
+ )
80
+ const swisstopoLayer_solarenergie_fassade = L.tileLayer(
81
+ 'https://wmts10.geo.admin.ch/1.0.0/ch.bfe.solarenergie-eignung-fassaden/default/current/3857/{z}/{x}/{y}.png',
82
+ {
83
+ id: 'swisstopo_solarenergie_fassade',
84
+ // subdomains: ['maps', 'maps1', 'maps2', 'maps3', 'maps4'],
85
+ attribution:
86
+ 'Datenquelle: <a href="https://www.geo.admin.ch">geo.admin.ch</a>',
87
+ maxZoom:
88
+ leafletMapLayersConfig['swisstopoLayer_solarenergie_fassade'][
89
+ 'maxZoom'
90
+ ],
91
+ maxNativeZoom:
92
+ leafletMapLayersConfig['swisstopoLayer_solarenergie_fassade'][
93
+ 'maxNativeZoom'
94
+ ],
95
+ layerTypeAPI: 'swisstopoLayer_solarenergie_fassade'
96
+ }
97
+ )
98
+ const swisstopoLayer_solarenergie_roof = L.tileLayer(
99
+ 'https://wmts10.geo.admin.ch/1.0.0/ch.bfe.solarenergie-eignung-daecher/default/current/3857/{z}/{x}/{y}.png',
100
+ {
101
+ id: 'swisstopo_solarenergie_roof',
102
+ // subdomains: ['maps', 'maps1', 'maps2', 'maps3', 'maps4'],
103
+ attribution:
104
+ 'Datenquelle: <a href="https://www.geo.admin.ch">geo.admin.ch</a>',
105
+ maxZoom:
106
+ leafletMapLayersConfig['swisstopoLayer_solarenergie_roof']['maxZoom'],
107
+ maxNativeZoom:
108
+ leafletMapLayersConfig['swisstopoLayer_solarenergie_roof'][
109
+ 'maxNativeZoom'
110
+ ],
111
+ layerTypeAPI: 'swisstopoLayer_solarenergie_roof'
112
+ }
113
+ )
114
+ const openStreetMapLayer = L.tileLayer(
115
+ 'https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png',
116
+ {
117
+ id: 'osm',
118
+ attribution:
119
+ '© <a href="https://www.openstreetmap.org/copyright">OpenStreetMap</a> contributors',
120
+ minZoom: leafletMapLayersConfig['openStreetMapLayer']['minZoom'],
121
+ maxZoom: leafletMapLayersConfig['openStreetMapLayer']['maxZoom'],
122
+ maxNativeZoom:
123
+ leafletMapLayersConfig['openStreetMapLayer']['maxNativeZoom'],
124
+ layerTypeAPI: 'openStreetMapLayer'
125
+ }
126
+ )
127
+ const ignLayerPNOAImage = L.tileLayer(
128
+ 'https://www.ign.es/wmts/pnoa-ma?layer={layer}&tilematrixset={tilematrixset}&Service=WMTS&Request=GetTile&Version=1.0.0&Format={format}&TileMatrix={z}&TileCol={x}&TileRow={y}',
129
+ {
130
+ layer: 'OI.OrthoimageCoverage',
131
+ tilematrixset: 'EPSG:3857',
132
+ format: 'image/jpeg',
133
+ id: 'ign_pnoa',
134
+ attribution:
135
+ '&copy; <a href="https://pnoa.ign.es" target="_blank">PNOA</a>',
136
+ maxZoom: leafletMapLayersConfig['ignSpainLayer_pnoa_image']['maxZoom'],
137
+ maxNativeZoom:
138
+ leafletMapLayersConfig['ignSpainLayer_pnoa_image']['maxNativeZoom'],
139
+ layerTypeAPI: 'ignSpainLayer_pnoa_image'
140
+ }
141
+ )
142
+ const ignLayerMap = L.tileLayer(
143
+ 'https://www.ign.es/wmts/ign-base?layer={layer}&tilematrixset={tilematrixset}&Service=WMTS&Request=GetTile&Version=1.0.0&Format={format}&TileMatrix={z}&TileCol={x}&TileRow={y}',
144
+ {
145
+ layer: 'IGNBaseTodo',
146
+ tilematrixset: 'EPSG:3857',
147
+ format: 'image/jpeg',
148
+ id: 'ign_map',
149
+ attribution:
150
+ '&copy; <a href="https://www.ign.es/web/ign/portal" target="_blank">IGN</a>',
151
+ maxZoom: leafletMapLayersConfig['ignSpainLayer_map']['maxZoom'],
152
+ maxNativeZoom:
153
+ leafletMapLayersConfig['ignSpainLayer_map']['maxNativeZoom'],
154
+ layerTypeAPI: 'ignSpainLayer_map'
155
+ }
156
+ )
157
+ const bkgHexagonImage = L.tileLayer.wms(
158
+ 'https://terramapserver.org/Proxy/geoserver/BKG/wms?kid=eag20.1',
159
+ {
160
+ layers: 'rgb',
161
+ id: 'bkg_image',
162
+ attribution:
163
+ '&copy; <a href="https://www.bkg.bund.de" target="_blank">Bundesamt für Kartographie und Geodäsie</a>',
164
+ maxZoom: leafletMapLayersConfig['bkgHexagonGermanyLayer']['maxZoom'],
165
+ maxNativeZoom:
166
+ leafletMapLayersConfig['bkgHexagonGermanyLayer']['maxNativeZoom'],
167
+ layerTypeAPI: 'bkgHexagonGermanyLayer'
168
+ }
169
+ )
170
+ const GeoLayer_HR = L.tileLayer(
171
+ 'https://wxs.ign.fr/ortho/geoportail/wmts?' +
172
+ '&REQUEST=GetTile&SERVICE=WMTS&VERSION=1.0.0' +
173
+ '&STYLE=normal' +
174
+ '&TILEMATRIXSET=PM' +
175
+ '&FORMAT=image/jpeg' +
176
+ '&LAYER=HR.ORTHOIMAGERY.ORTHOPHOTOS' +
177
+ '&TILEMATRIX={z}' +
178
+ '&TILEROW={y}' +
179
+ '&TILECOL={x}',
180
+ {
181
+ layers: 'HR.ORTHOIMAGERY.ORTHOPHOTOS',
182
+ id: 'HR.ORTHOIMAGERY.ORTHOPHOTOS',
183
+ attribution: '© IGN-F/Geoportail France',
184
+ minZoom: leafletMapLayersConfig['GeoPortal']['minZoom'],
185
+ maxZoom: leafletMapLayersConfig['GeoPortal']['maxZoom'],
186
+ maxNativeZoom: leafletMapLayersConfig['GeoPortal']['maxNativeZoom'],
187
+ tileSize: 256,
188
+ layerTypeAPI: 'geoportail_fr_wmts_ortho_layer'
189
+ }
190
+ )
191
+
192
+ return [
193
+ {
194
+ name: 'SwissTopo (satellite)',
195
+ key: 'swisstopoLayer_swissimage',
196
+ layerData: swisstopoLayer_swissimage
197
+ },
198
+ {
199
+ name: 'SwissTopo (map)',
200
+ key: 'swisstopoLayer_pixelkarte',
201
+ layerData: swisstopoLayer_pixelkarte
202
+ },
203
+ {
204
+ name: 'SwissTopo (Solar energy: suitability of roofs)',
205
+ key: 'swisstopoLayer_solarenergie_roof',
206
+ layerData: swisstopoLayer_solarenergie_roof
207
+ },
208
+ {
209
+ name: 'SwissTopo (Solarenergie: suitability of facade)',
210
+ key: 'swisstopoLayer_solarenergie_fassade',
211
+ layerData: swisstopoLayer_solarenergie_fassade
212
+ },
213
+ {
214
+ name: 'OpenStreetMap',
215
+ key: 'openStreetMapLayer',
216
+ layerData: openStreetMapLayer
217
+ },
218
+ {
219
+ name: 'Google (terrain)',
220
+ key: 'googleLayerTerrain',
221
+ layerData: googleLayerTerrain
222
+ },
223
+ {
224
+ name: 'Google (roadmap)',
225
+ key: 'googleLayerRoadmap',
226
+ layerData: googleLayerRoadmap
227
+ },
228
+ {
229
+ name: 'Google (satellite)',
230
+ key: 'googleLayer',
231
+ layerData: googleLayer
232
+ },
233
+ {
234
+ name: 'Basemap.at (roadmap)',
235
+ key: 'baseMapLayer',
236
+ layerData: baseMapLayer
237
+ },
238
+ {
239
+ name: 'Basemap.at (satellite)',
240
+ key: 'baseMapLayerStreetNumber',
241
+ layerData: baseMapLayerStreetNumber
242
+ },
243
+ {
244
+ name: 'IGN (PNOA satellite image)',
245
+ key: 'ignSpainLayer_pnoa_image',
246
+ layerData: ignLayerPNOAImage
247
+ },
248
+ {
249
+ name: 'IGN (roadmap)',
250
+ key: 'ignSpainLayer_map',
251
+ layerData: ignLayerMap
252
+ },
253
+ {
254
+ name: 'BKG satellite image',
255
+ key: 'bkgHexagonGermanyLayer',
256
+ layerData: bkgHexagonImage
257
+ },
258
+ {
259
+ name: 'GeoPortal France (satellite)',
260
+ key: 'geoportail_fr_wmts_ortho_layer',
261
+ layerData: GeoLayer_HR
262
+ }
263
+ ]
264
+ }
265
+ export default getLayers
@@ -0,0 +1,67 @@
1
+ export const leafletMapLayersConfig = {
2
+ baseMapLayer: {
3
+ // Basemap.at
4
+ maxZoom: 21,
5
+ maxNativeZoom: 19,
6
+ minZoom: 0
7
+ },
8
+ baseMapLayerStreetNumber: {
9
+ // Basemap.at (satellite)
10
+ maxZoom: 21,
11
+ maxNativeZoom: 19,
12
+ minZoom: 0
13
+ },
14
+ swisstopoLayer_swissimage: {
15
+ // SwissTopo (satellite)
16
+ maxZoom: 25,
17
+ maxNativeZoom: 20,
18
+ minZoom: 0
19
+ },
20
+ swisstopoLayer_pixelkarte: {
21
+ // SwissTopo (map)
22
+ maxZoom: 25,
23
+ maxNativeZoom: 18,
24
+ minZoom: 0
25
+ },
26
+ swisstopoLayer_solarenergie_fassade: {
27
+ // SwissTopo (Solarenergie: Eignung Fassaden)
28
+ maxZoom: 25,
29
+ maxNativeZoom: 18,
30
+ minZoom: 0
31
+ },
32
+ swisstopoLayer_solarenergie_roof: {
33
+ // SwissTopo (Solar energy: suitability of roofs)
34
+ maxZoom: 25,
35
+ maxNativeZoom: 18,
36
+ minZoom: 0
37
+ },
38
+ openStreetMapLayer: {
39
+ // OpenStreetMap
40
+ maxZoom: 21,
41
+ maxNativeZoom: 19,
42
+ minZoom: 0
43
+ },
44
+ ignSpainLayer_pnoa_image: {
45
+ // Spain (satellite)
46
+ maxZoom: 25,
47
+ maxNativeZoom: 20,
48
+ minZoom: 0
49
+ },
50
+ ignSpainLayer_map: {
51
+ // Spain (map)
52
+ maxZoom: 25,
53
+ maxNativeZoom: 20,
54
+ minZoom: 0
55
+ },
56
+ bkgHexagonGermanyLayer: {
57
+ // Germany (satellite)
58
+ maxZoom: 25,
59
+ maxNativeZoom: 22,
60
+ minZoom: 0
61
+ },
62
+ GeoPortal: {
63
+ maxZoom: 22,
64
+ maxNativeZoom: 19,
65
+ minZoom: 6
66
+ }
67
+ }
package/vue.config.js ADDED
@@ -0,0 +1,46 @@
1
+ const HtmlWebPackPlugin = require('html-webpack-plugin')
2
+ const path = require('path')
3
+
4
+ module.exports = {
5
+ configureWebpack: {
6
+ resolve: {
7
+ alias: {
8
+ '@/': path.resolve(__dirname, 'src/')
9
+ }
10
+ },
11
+ entry: path.resolve(__dirname, 'src/main.js'),
12
+ optimization: {
13
+ splitChunks: {
14
+ cacheGroups: {
15
+ vendors: {
16
+ chunks: (chunk) => false
17
+ }
18
+ }
19
+ },
20
+ minimize: false,
21
+ usedExports: true
22
+ },
23
+ output: {
24
+ path: path.resolve(__dirname, 'dist'),
25
+ filename: 'main.js',
26
+ library: 'Three_d_viewer',
27
+ libraryTarget: 'umd'
28
+ },
29
+ module: {
30
+ rules: [
31
+ {
32
+ test: /\.(js)$/,
33
+ // exclude: /\node_modules/,
34
+ use: 'babel-loader'
35
+ },
36
+ ]
37
+ },
38
+ plugins: [
39
+ new HtmlWebPackPlugin({
40
+ template: './index.html',
41
+ inject: 'head',
42
+ baseUrl: '/'
43
+ })
44
+ ]
45
+ }
46
+ }