@opengis/gis 0.2.144 → 0.2.146

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 (201) hide show
  1. package/README.md +181 -181
  2. package/dist/{CardIcon-Dnk1_6Ub.js → CardIcon-BCll_4SB.js} +1 -1
  3. package/dist/{EntityCreatePage-Da8XgBKU.js → EntityCreatePage-Ch8NU_Yw.js} +14 -14
  4. package/dist/{EntityEditPage-QktKEAxz.js → EntityEditPage-CRRcW7FL.js} +27 -27
  5. package/dist/{EntityTablePage-Dy0QCqHT.js → EntityTablePage-DXJPsOx8.js} +26 -26
  6. package/dist/{ExtentOutlineLayer.vue_vue_type_script_setup_true_lang-2H8_Dlmj.js → ExtentOutlineLayer.vue_vue_type_script_setup_true_lang-BJ-zsrml.js} +1 -1
  7. package/dist/{HeaderActions.vue_vue_type_script_setup_true_lang-BcabKIhe.js → HeaderActions.vue_vue_type_script_setup_true_lang-EZGjVDor.js} +5 -5
  8. package/dist/{MapSettings-CAT-ReIq.js → MapSettings-CG7u4F4i.js} +33 -33
  9. package/dist/{RastersTablePage-D0eotbTX.js → RastersTablePage-CN5hfj6F.js} +29 -29
  10. package/dist/cartocss-BNVXz6oJ.js +1065 -0
  11. package/dist/{import-utils--8RwDcC8.js → import-utils-BwcMU3Gp.js} +33 -33
  12. package/dist/{index-axggzg5T.js → index-8aAArh78.js} +63 -63
  13. package/dist/index.css +1 -1
  14. package/dist/index.js +1 -1
  15. package/dist/index.umd.cjs +35 -35
  16. package/dist/raster-BN1gB-NS.js +804 -0
  17. package/dist/{register-K8C2eD4s.js → register-DZ24Z6dC.js} +8 -8
  18. package/dist/{service-VAjz4FXX.js → service-DXLa4AiW.js} +392 -380
  19. package/dist/{vs-datatable-CwQOKMCU.js → vs-datatable-DVC6-2mA.js} +28 -28
  20. package/module/cls.json +6 -6
  21. package/module/gis/card/gis.metadata.table/index.yml +22 -22
  22. package/module/gis/card/gis.metadata.table/main_info.hbs +20 -20
  23. package/module/gis/card/gis.metadata.table/metadata_info.hbs +27 -27
  24. package/module/gis/card/gis.metadata.table/other.hbs +25 -25
  25. package/module/gis/card/gis.rasters.table/index.yml +11 -11
  26. package/module/gis/card/gis.rasters.table/main_info.hbs +27 -27
  27. package/module/gis/card/gis.registers.table/cls.hbs +36 -36
  28. package/module/gis/card/gis.registers.table/columns.hbs +89 -89
  29. package/module/gis/card/gis.registers.table/filters.hbs +80 -80
  30. package/module/gis/card/gis.registers.table/index.yml +23 -23
  31. package/module/gis/card/gis.registers.table/main_info.hbs +35 -35
  32. package/module/gis/card/gis.registers.table/source.hbs +45 -45
  33. package/module/gis/card/gis.services.table/attributes.hbs +91 -91
  34. package/module/gis/card/gis.services.table/filters.hbs +83 -83
  35. package/module/gis/card/gis.services.table/index.yml +25 -25
  36. package/module/gis/card/gis.services.table/main_info.hbs +27 -27
  37. package/module/gis/card/gis.services.table/source.hbs +25 -25
  38. package/module/gis/cls/bool.yes_no.json +12 -12
  39. package/module/gis/cls/encoding.json +14 -14
  40. package/module/gis/cls/geom_type.json +14 -14
  41. package/module/gis/cls/gis.column_type.json +34 -34
  42. package/module/gis/cls/gis.column_view_type.json +26 -26
  43. package/module/gis/cls/gis.filter_type.json +22 -22
  44. package/module/gis/cls/language.json +10 -10
  45. package/module/gis/cls/meta.service_type.json +42 -42
  46. package/module/gis/cls/ogc.service.json +21 -21
  47. package/module/gis/cls/service_type.json +42 -42
  48. package/module/gis/cls/source_type.json +10 -10
  49. package/module/gis/cls/standarts.json +6 -6
  50. package/module/gis/cls/topic_category.json +106 -106
  51. package/module/gis/cls/update_frequency.json +29 -29
  52. package/module/gis/cls/view.json +21 -21
  53. package/module/gis/form/feedback.answer.form.json +10 -10
  54. package/module/gis/form/gis.cartocss.form.json +64 -64
  55. package/module/gis/form/gis.group_list.form.json +17 -17
  56. package/module/gis/form/gis.maps.form.json +61 -61
  57. package/module/gis/form/gis.metadata.form.json +240 -240
  58. package/module/gis/form/gis.metadata_new.form.json +195 -195
  59. package/module/gis/form/gis.ogc_service.form.json +51 -51
  60. package/module/gis/form/gis.rasters.form.json +76 -76
  61. package/module/gis/form/gis.registers.form.json +124 -124
  62. package/module/gis/form/gis.registers_column.form.json +84 -84
  63. package/module/gis/form/gis.registers_filter.form.json +65 -65
  64. package/module/gis/form/gis.services.form.json +111 -111
  65. package/module/gis/form/gis.services_attributes.form.json +75 -75
  66. package/module/gis/form/gis.services_filter.form.json +65 -65
  67. package/module/gis/menu.json +43 -43
  68. package/module/gis/select/admin.cls.name.sql +9 -9
  69. package/module/gis/select/layer_list.sql +7 -7
  70. package/module/gis/select/layer_list_text.sql +7 -7
  71. package/module/gis/select/pg.column_name.geometry.sql +12 -12
  72. package/module/gis/select/pg.columns.parent.sql +6 -6
  73. package/module/gis/select/pg.table_name.sql +17 -17
  74. package/module/gis/select/service_id.sql +1 -1
  75. package/module/gis/table/gis.cartocss.table.json +74 -74
  76. package/module/gis/table/gis.group_list.table.json +58 -58
  77. package/module/gis/table/gis.maps.table.json +110 -110
  78. package/module/gis/table/gis.metadata.table.json +70 -70
  79. package/module/gis/table/gis.metadata_new.table.json +137 -137
  80. package/module/gis/table/gis.ogc_service.table.json +100 -100
  81. package/module/gis/table/gis.rasters.table.json +101 -101
  82. package/module/gis/table/gis.registers.table.json +143 -143
  83. package/module/gis/table/gis.services.table.json +120 -120
  84. package/module/gis/table/site.gis.registers.table.json +88 -88
  85. package/module/gis/table/site.gis.services.table.json +106 -106
  86. package/module/gis/templates/ISO19136_2017_gml_template.xml +330 -330
  87. package/module/gis/tokens.yml +5 -5
  88. package/module/permissions/form/permissions.users.form.json +151 -151
  89. package/module/permissions/table/gis.permissions.table.json +97 -97
  90. package/module/test/cls/bp_build_type.json +37 -37
  91. package/module/test/cls/doc_status.json +31 -31
  92. package/module/test/cls/ts.temp_status.json +18 -18
  93. package/module/test/cls/ts.temp_structure.ts_class.json +49 -49
  94. package/module/test/cls/ts.temp_type.json +9 -9
  95. package/module/test/layer/bp.json +59 -59
  96. package/module/test/layer/bp1.yml +33 -33
  97. package/module/test/layer/individual.yml +53 -53
  98. package/module/test/layer/ts.linking_passport.yml +55 -55
  99. package/module/test/layer/ts.temp_structure.yml +50 -50
  100. package/module/test/map/addr.yml +21 -21
  101. package/module/test/map/bp_myo.json +43 -43
  102. package/module/test/map/bpf.json +43 -43
  103. package/module/test/map/main.json +37 -37
  104. package/module/test/map/mbd.json +92 -92
  105. package/module/test/map/ts.json +53 -53
  106. package/module/test/select/address_id.json +2 -2
  107. package/module/test/select/address_id.sql +7 -7
  108. package/module/test/select/core.user_uid.sql +1 -1
  109. package/module/test/table/data_address.street.table.json +69 -69
  110. package/module/test/table/data_bp_myo.bp.table.json +122 -122
  111. package/package.json +75 -75
  112. package/plugin.js +55 -55
  113. package/server/migrations/array_intersect.sql +13 -13
  114. package/server/migrations/cartocss.sql +27 -27
  115. package/server/migrations/group_list.sql +74 -74
  116. package/server/migrations/maps.sql +30 -30
  117. package/server/migrations/metadata.sql +415 -415
  118. package/server/migrations/ogc.sql +106 -106
  119. package/server/migrations/rasters.sql +265 -265
  120. package/server/migrations/services.sql +247 -247
  121. package/server/migrations/services_users_rel.sql +22 -22
  122. package/server/migrations/widgets.sql +20 -20
  123. package/server/plugins/crons.js +21 -21
  124. package/server/plugins/mapnik/funcs/checkRasterFile.js +109 -109
  125. package/server/plugins/mapnik/funcs/mapnik.js +151 -151
  126. package/server/plugins/mapnik/funcs/rootFolder.mjs +8 -8
  127. package/server/plugins/mapnik/map.proto +230 -230
  128. package/server/plugins/vite.js +74 -74
  129. package/server/routes/gis/cartocss/add.cartocss.js +42 -42
  130. package/server/routes/gis/cartocss/get.cartocss.js +59 -59
  131. package/server/routes/gis/checkXML.js +117 -117
  132. package/server/routes/gis/dashboard.js +29 -29
  133. package/server/routes/gis/index.mjs +87 -87
  134. package/server/routes/gis/metadata/editMetadata.js +34 -34
  135. package/server/routes/gis/metadata/metadataXML.js +13 -13
  136. package/server/routes/gis/ogc/map.info.point.js +124 -124
  137. package/server/routes/gis/registers/add.registry.js +35 -35
  138. package/server/routes/gis/registers/del.registry.js +14 -14
  139. package/server/routes/gis/registers/funcs/classifiers.js +100 -100
  140. package/server/routes/gis/registers/funcs/columns.js +3 -3
  141. package/server/routes/gis/registers/funcs/content.type.js +9 -9
  142. package/server/routes/gis/registers/funcs/get.info.js +89 -89
  143. package/server/routes/gis/registers/funcs/handleRegistryRequest.js +146 -146
  144. package/server/routes/gis/registers/gis.export.js +153 -153
  145. package/server/routes/gis/registers/gis.registry.js +64 -64
  146. package/server/routes/gis/registers/gis.registry.list.js +59 -59
  147. package/server/routes/gis/registers/insert.columns.js +107 -107
  148. package/server/routes/gis/registers/insert.filters.js +110 -110
  149. package/server/routes/gis/registers/map.registry.js +79 -79
  150. package/server/routes/gis/services/add.service.js +64 -64
  151. package/server/routes/gis/services/del.service.js +12 -12
  152. package/server/routes/gis/services/get.layer.geom.js +27 -27
  153. package/server/routes/gis/services/get.services.col.js +33 -33
  154. package/server/routes/gis/services/get.services.js +84 -84
  155. package/server/routes/gis/services/legend.auto.js +77 -77
  156. package/server/routes/map/controllers/clearTiles.js +34 -34
  157. package/server/routes/map/controllers/geojson.js +187 -187
  158. package/server/routes/map/controllers/jsonData.js +205 -205
  159. package/server/routes/map/controllers/layerList.js +102 -102
  160. package/server/routes/map/controllers/map.js +123 -123
  161. package/server/routes/map/controllers/mapCatalog.js +72 -72
  162. package/server/routes/map/controllers/mapCatalogAttribute.js +55 -55
  163. package/server/routes/map/controllers/mapFeatures.js +128 -128
  164. package/server/routes/map/controllers/mapFormat.js +234 -234
  165. package/server/routes/map/controllers/mapTiles.js +152 -152
  166. package/server/routes/map/controllers/maps.js +15 -15
  167. package/server/routes/map/controllers/marker_icon.js +43 -43
  168. package/server/routes/map/controllers/vtile.js +172 -172
  169. package/server/routes/map/index.mjs +169 -169
  170. package/server/routes/map/maps/add.map.js +43 -43
  171. package/server/routes/map/maps/del.map.js +18 -18
  172. package/server/routes/map/maps/get.map.js +118 -118
  173. package/server/routes/map/vtile1.js +179 -179
  174. package/server/routes/map/widgets/add.widget.js +38 -38
  175. package/server/routes/map/widgets/del.widget.js +22 -22
  176. package/server/routes/map/widgets/get.widget.js +40 -40
  177. package/server/routes/mapnik/controllers/clearTiles.js +106 -106
  178. package/server/routes/mapnik/controllers/createXml.js +67 -67
  179. package/server/routes/mapnik/controllers/createXmlMulti.js +76 -76
  180. package/server/routes/mapnik/controllers/fileSearch.js +38 -38
  181. package/server/routes/mapnik/controllers/fileStat.js +28 -28
  182. package/server/routes/mapnik/controllers/mapnikLogger.js +29 -29
  183. package/server/routes/mapnik/controllers/mapnikStat.js +19 -19
  184. package/server/routes/mapnik/controllers/pretile.js +144 -144
  185. package/server/routes/mapnik/controllers/rasterInfo.js +57 -57
  186. package/server/routes/mapnik/controllers/readDir.js +22 -22
  187. package/server/routes/mapnik/controllers/rtile.js +150 -150
  188. package/server/routes/mapnik/controllers/uploadRaster.js +157 -157
  189. package/server/routes/mapnik/functions/cartoBounds.js +32 -32
  190. package/server/routes/mapnik/functions/convertBoundToTile.js +27 -27
  191. package/server/routes/mapnik/functions/uploadXML.js +113 -113
  192. package/server/routes/mapnik/index.js +40 -40
  193. package/server/routes/permissions/controllers/catalog.permissions.edit.js +22 -22
  194. package/server/routes/permissions/controllers/catalog.permissions.js +7 -7
  195. package/server/routes/permissions/controllers/gis.catalog.js +80 -80
  196. package/server/routes/permissions/controllers/utils/get.permissions.js +59 -59
  197. package/server/routes/permissions/index.mjs +18 -18
  198. package/server/routes/root.mjs +3 -3
  199. package/utils.js +13 -13
  200. package/dist/cartocss-B68llP5B.js +0 -1053
  201. package/dist/raster-BaKixPiV.js +0 -792
package/README.md CHANGED
@@ -1,181 +1,181 @@
1
- <!-- ![alt text](https://cdn.softpro.ua/data/npm/admin/opengis-admin.png) -->
2
-
3
- # @opengis/gis
4
-
5
- [![NPM version](https://img.shields.io/npm/v/@opengis/gis?style=plain)](https://www.npmjs.com/package/@opengis/gis)
6
- [![NPM last update](https://img.shields.io/npm/last-update/@opengis/gis?style=plain)]()
7
- [![NPM downloads](https://img.shields.io/npm/dw/@opengis/gis?style=plain)]()
8
- [![js-standard-style](https://img.shields.io/badge/code%20style-standard-brightgreen.svg?style=plain)](http://standardjs.com/)
9
-
10
- Tools for mapping, geodata management, and integration into modern web services.
11
-
12
- ## Features
13
-
14
- **Core Platform Capabilities:**
15
-
16
- - **Web-based GIS Platform** – Access and manage geospatial data through a cloud-based environment.
17
- - **User & Admin Management** – Control access and permissions.
18
- - **No-Code Map Builder** – Create and configure web maps without programming skills.
19
- - **Configurable User Interface** – Customize map layout and widgets based on user needs.
20
- - **Admin Panel** – Centrally manage system settings, users, and datasets.
21
-
22
- **Visualization & Mapping:**
23
-
24
- - **Interactive Web Maps** – View and explore geographic data online.
25
- - **Map Catalog** – Access and manage a collection of thematic maps.
26
- - **Layer Management** – Control visibility and organization of map layers.
27
- - **Advanced Filtering** – Query and filter data based on attributes.
28
- - **Search Functionality** – Find objects by address, ID, or attributes.
29
- - **CartoCSS Styling** – Customize map appearance with flexible styling rules.
30
-
31
- **Raster Management:**
32
-
33
- - **Single Raster Support** – Upload, store, and visualize individual raster datasets.
34
- - **Multi-Raster VRT Builder** – Combine multiple raster files into a single virtual raster (VRT).
35
- - **Recursive Raster Processing** – Automatically build VRTs from nested folder structures.
36
- - **Raster Data Visualization** – Display raster layers alongside vector data on maps.
37
- - **Raster Layer Management** – Control visibility and ordering of raster datasets.
38
- - **Scalable Raster Handling** – Efficient processing of large raster collections.
39
-
40
- **Data Management:**
41
-
42
- - **Dataset View** – Explore spatial data in a synchronized tabular format.
43
- - **Data Import & Storage** – Upload and store spatial and tabular data.
44
- - **Large Dataset Support** – Efficiently handle datasets with 100,000+ features.
45
- - **Dataset Management** – Upload and manage spatial data (Shapefile, GeoJSON, CSV, etc.).
46
- - **Registers Management** – Create and maintain structured geospatial datasets.
47
-
48
- **Integration & Distribution:**
49
-
50
- - **API & OGC Standards Support** – Supports WMS, WFS, WMTS services.
51
- - **API Integration** – Connect with external systems and services.
52
- - **Geoportal Access** – Centralized platform for all maps and datasets.
53
- - **Data Export** – Export geospatial data in standard formats.
54
- - **Map Publishing** – Publish and share maps quickly online.
55
-
56
- ## Install
57
-
58
- ```bash
59
- npm i @opengis/gis
60
- ```
61
-
62
- ## Usage Portal
63
-
64
- ```vue
65
- <template>
66
- <!--$route.params.id-->
67
- <MapWidget :id="'home'" />
68
- </template>
69
-
70
- <script setup lang="ts">
71
- const MapWidget = defineAsyncComponent(() =>
72
- import("@opengis/gis").then((m) => m.MapWidget),
73
- );
74
- </script>
75
- ```
76
-
77
- ## Usage Admin
78
-
79
- ```js
80
- // router.config
81
- export default [
82
- {
83
- path: "/gis.registers/:id?",
84
- component: () => import("@opengis/gis").then((m) => m.Register),
85
- },
86
- {
87
- path: "/gis.services/:id?",
88
- component: () => import("@opengis/gis").then((m) => m.Service),
89
- },
90
- {
91
- path: "/gis.rasters/:id?",
92
- component: () => import("@opengis/gis").then((m) => m.Raster),
93
- },
94
- {
95
- path: "/gis.cartocss/:id?",
96
- component: () => import("@opengis/gis").then((m) => m.CartoCSS),
97
- },
98
- {
99
- path: "/gis.maps/:id?",
100
- component: () => import("@opengis/gis").then((m) => m.MapSettings),
101
- },
102
- ];
103
- ```
104
-
105
- ## Config
106
-
107
- ```js
108
- // main.ts
109
- app.config.globalProperties.$settings = {
110
- map: {
111
- center: [34.71, 48.51],
112
- zoom: 14,
113
- basemaps: [
114
- {
115
- name: "Оглядова карта",
116
- url: "https://data.gki.com.ua/api-user/rtile/voyager/ua/{z}/{x}/{y}.png",
117
- },
118
- {
119
- name: "Ортофото 1:10K",
120
- url: "https://data.gki.com.ua/api-user/rtile/orto10/ua/{z}/{x}/{y}.png",
121
- },
122
- {
123
- name: "Open Street Maps",
124
- url: "https://tile.openstreetmap.org.ua/styles/osm-bright/{z}/{x}/{y}.png",
125
- },
126
- {
127
- name: "Топографічна карта 1:2000",
128
- url: "/api/gis-rtile/3830082297432900636/{z}/{x}/{y}.png",
129
- preview: "/api/gis-rtile/3830082297432900636/17/78138/45286.png",
130
- },
131
- ],
132
- },
133
- };
134
- ```
135
-
136
- ## Documentation
137
-
138
- For a detailed understanding of `cms`, its features, and how to use them, refer to our [Documentation](https://gis.opengis.info/).
139
-
140
- ## Technology stack
141
-
142
- <a href="https://fastify.dev/" target="_blank">
143
- <img src="https://img.shields.io/badge/Fastify-323330?style=for-the-badge&logo=fastify" /></a>
144
-
145
- <a href="https://vuejs.org/" target="_blank">
146
- <img src="https://img.shields.io/badge/Vue%20js-323330?style=for-the-badge&logo=vuedotjs&logoColor=4FC08D" /></a>
147
-
148
- <a href="https://vite.dev/" target="_blank">
149
- <img src="https://img.shields.io/badge/Vite-323330?style=for-the-badge&logo=vite" /></a>
150
-
151
- <a href="https://www.postgresql.org/" target="_blank">
152
- <img src="https://img.shields.io/badge/PostgreSQL-323330?style=for-the-badge&logo=postgresql&logoColor=white" /></a>
153
-
154
- <a href="https://redis.io/" target="_blank">
155
- <img src="https://img.shields.io/badge/redis-323330.svg?&style=for-the-badge&logo=redis&logoColor=%23DD0031" /></a>
156
-
157
- <a href="https://nodejs.org/" target="_blank">
158
- <img src="https://img.shields.io/badge/Node.js-323330?style=for-the-badge&logo=node.js&logoColor=white" /></a>
159
-
160
- ## Contribute
161
-
162
- Feel free to contact us through our website [SOFTPRO.UA](https://softpro.ua) or email <info@softpro.ua>
163
-
164
- - Report bugs
165
- - Share your ideas
166
- - Ask questions
167
-
168
- ## Follow Us
169
-
170
- [Official site](https://softpro.ua)
171
-
172
- <p>
173
- <a href="https://www.instagram.com/gissoftpro/" target="_blank"><img src="https://cdn.softpro.ua/data/npm/instagram.png" alt="Softpro Instagram" title="oftpro Instagram"></a>&nbsp;&nbsp;
174
- <a href="https://www.facebook.com/gissoftpro" target="_blank"><img src="https://cdn.softpro.ua/data/npm/facebook.png" alt="Softpro Facebook" title="Softpro Facebook"></a>&nbsp;&nbsp;
175
- <a href="https://t.me/softprogis" target="_blank"><img src="https://cdn.softpro.ua/data/npm/telegram.png" alt="Softpro Telegram" title="Softpro Telegram"></a>&nbsp;&nbsp;
176
- <a href="https://www.linkedin.com/in/softpro-ukraine-a8876b282/recent-activity/all/" target="_blank"><img src="https://cdn.softpro.ua/data/npm/social/linkedin.png" alt="Softpro Linkedin" title="Softpro LinkedIn"></a>&nbsp;&nbsp;
177
- </p>
178
-
179
- ## License
180
-
181
- Copyright © SOFTPRO. All rights reserved.
1
+ <!-- ![alt text](https://cdn.softpro.ua/data/npm/admin/opengis-admin.png) -->
2
+
3
+ # @opengis/gis
4
+
5
+ [![NPM version](https://img.shields.io/npm/v/@opengis/gis?style=plain)](https://www.npmjs.com/package/@opengis/gis)
6
+ [![NPM last update](https://img.shields.io/npm/last-update/@opengis/gis?style=plain)]()
7
+ [![NPM downloads](https://img.shields.io/npm/dw/@opengis/gis?style=plain)]()
8
+ [![js-standard-style](https://img.shields.io/badge/code%20style-standard-brightgreen.svg?style=plain)](http://standardjs.com/)
9
+
10
+ Tools for mapping, geodata management, and integration into modern web services.
11
+
12
+ ## Features
13
+
14
+ **Core Platform Capabilities:**
15
+
16
+ - **Web-based GIS Platform** – Access and manage geospatial data through a cloud-based environment.
17
+ - **User & Admin Management** – Control access and permissions.
18
+ - **No-Code Map Builder** – Create and configure web maps without programming skills.
19
+ - **Configurable User Interface** – Customize map layout and widgets based on user needs.
20
+ - **Admin Panel** – Centrally manage system settings, users, and datasets.
21
+
22
+ **Visualization & Mapping:**
23
+
24
+ - **Interactive Web Maps** – View and explore geographic data online.
25
+ - **Map Catalog** – Access and manage a collection of thematic maps.
26
+ - **Layer Management** – Control visibility and organization of map layers.
27
+ - **Advanced Filtering** – Query and filter data based on attributes.
28
+ - **Search Functionality** – Find objects by address, ID, or attributes.
29
+ - **CartoCSS Styling** – Customize map appearance with flexible styling rules.
30
+
31
+ **Raster Management:**
32
+
33
+ - **Single Raster Support** – Upload, store, and visualize individual raster datasets.
34
+ - **Multi-Raster VRT Builder** – Combine multiple raster files into a single virtual raster (VRT).
35
+ - **Recursive Raster Processing** – Automatically build VRTs from nested folder structures.
36
+ - **Raster Data Visualization** – Display raster layers alongside vector data on maps.
37
+ - **Raster Layer Management** – Control visibility and ordering of raster datasets.
38
+ - **Scalable Raster Handling** – Efficient processing of large raster collections.
39
+
40
+ **Data Management:**
41
+
42
+ - **Dataset View** – Explore spatial data in a synchronized tabular format.
43
+ - **Data Import & Storage** – Upload and store spatial and tabular data.
44
+ - **Large Dataset Support** – Efficiently handle datasets with 100,000+ features.
45
+ - **Dataset Management** – Upload and manage spatial data (Shapefile, GeoJSON, CSV, etc.).
46
+ - **Registers Management** – Create and maintain structured geospatial datasets.
47
+
48
+ **Integration & Distribution:**
49
+
50
+ - **API & OGC Standards Support** – Supports WMS, WFS, WMTS services.
51
+ - **API Integration** – Connect with external systems and services.
52
+ - **Geoportal Access** – Centralized platform for all maps and datasets.
53
+ - **Data Export** – Export geospatial data in standard formats.
54
+ - **Map Publishing** – Publish and share maps quickly online.
55
+
56
+ ## Install
57
+
58
+ ```bash
59
+ npm i @opengis/gis
60
+ ```
61
+
62
+ ## Usage Portal
63
+
64
+ ```vue
65
+ <template>
66
+ <!--$route.params.id-->
67
+ <MapWidget :id="'home'" />
68
+ </template>
69
+
70
+ <script setup lang="ts">
71
+ const MapWidget = defineAsyncComponent(() =>
72
+ import("@opengis/gis").then((m) => m.MapWidget),
73
+ );
74
+ </script>
75
+ ```
76
+
77
+ ## Usage Admin
78
+
79
+ ```js
80
+ // router.config
81
+ export default [
82
+ {
83
+ path: "/gis.registers/:id?",
84
+ component: () => import("@opengis/gis").then((m) => m.Register),
85
+ },
86
+ {
87
+ path: "/gis.services/:id?",
88
+ component: () => import("@opengis/gis").then((m) => m.Service),
89
+ },
90
+ {
91
+ path: "/gis.rasters/:id?",
92
+ component: () => import("@opengis/gis").then((m) => m.Raster),
93
+ },
94
+ {
95
+ path: "/gis.cartocss/:id?",
96
+ component: () => import("@opengis/gis").then((m) => m.CartoCSS),
97
+ },
98
+ {
99
+ path: "/gis.maps/:id?",
100
+ component: () => import("@opengis/gis").then((m) => m.MapSettings),
101
+ },
102
+ ];
103
+ ```
104
+
105
+ ## Config
106
+
107
+ ```js
108
+ // main.ts
109
+ app.config.globalProperties.$settings = {
110
+ map: {
111
+ center: [34.71, 48.51],
112
+ zoom: 14,
113
+ basemaps: [
114
+ {
115
+ name: "Оглядова карта",
116
+ url: "https://data.gki.com.ua/api-user/rtile/voyager/ua/{z}/{x}/{y}.png",
117
+ },
118
+ {
119
+ name: "Ортофото 1:10K",
120
+ url: "https://data.gki.com.ua/api-user/rtile/orto10/ua/{z}/{x}/{y}.png",
121
+ },
122
+ {
123
+ name: "Open Street Maps",
124
+ url: "https://tile.openstreetmap.org.ua/styles/osm-bright/{z}/{x}/{y}.png",
125
+ },
126
+ {
127
+ name: "Топографічна карта 1:2000",
128
+ url: "/api/gis-rtile/3830082297432900636/{z}/{x}/{y}.png",
129
+ preview: "/api/gis-rtile/3830082297432900636/17/78138/45286.png",
130
+ },
131
+ ],
132
+ },
133
+ };
134
+ ```
135
+
136
+ ## Documentation
137
+
138
+ For a detailed understanding of `cms`, its features, and how to use them, refer to our [Documentation](https://gis.opengis.info/).
139
+
140
+ ## Technology stack
141
+
142
+ <a href="https://fastify.dev/" target="_blank">
143
+ <img src="https://img.shields.io/badge/Fastify-323330?style=for-the-badge&logo=fastify" /></a>
144
+
145
+ <a href="https://vuejs.org/" target="_blank">
146
+ <img src="https://img.shields.io/badge/Vue%20js-323330?style=for-the-badge&logo=vuedotjs&logoColor=4FC08D" /></a>
147
+
148
+ <a href="https://vite.dev/" target="_blank">
149
+ <img src="https://img.shields.io/badge/Vite-323330?style=for-the-badge&logo=vite" /></a>
150
+
151
+ <a href="https://www.postgresql.org/" target="_blank">
152
+ <img src="https://img.shields.io/badge/PostgreSQL-323330?style=for-the-badge&logo=postgresql&logoColor=white" /></a>
153
+
154
+ <a href="https://redis.io/" target="_blank">
155
+ <img src="https://img.shields.io/badge/redis-323330.svg?&style=for-the-badge&logo=redis&logoColor=%23DD0031" /></a>
156
+
157
+ <a href="https://nodejs.org/" target="_blank">
158
+ <img src="https://img.shields.io/badge/Node.js-323330?style=for-the-badge&logo=node.js&logoColor=white" /></a>
159
+
160
+ ## Contribute
161
+
162
+ Feel free to contact us through our website [SOFTPRO.UA](https://softpro.ua) or email <info@softpro.ua>
163
+
164
+ - Report bugs
165
+ - Share your ideas
166
+ - Ask questions
167
+
168
+ ## Follow Us
169
+
170
+ [Official site](https://softpro.ua)
171
+
172
+ <p>
173
+ <a href="https://www.instagram.com/gissoftpro/" target="_blank"><img src="https://cdn.softpro.ua/data/npm/instagram.png" alt="Softpro Instagram" title="oftpro Instagram"></a>&nbsp;&nbsp;
174
+ <a href="https://www.facebook.com/gissoftpro" target="_blank"><img src="https://cdn.softpro.ua/data/npm/facebook.png" alt="Softpro Facebook" title="Softpro Facebook"></a>&nbsp;&nbsp;
175
+ <a href="https://t.me/softprogis" target="_blank"><img src="https://cdn.softpro.ua/data/npm/telegram.png" alt="Softpro Telegram" title="Softpro Telegram"></a>&nbsp;&nbsp;
176
+ <a href="https://www.linkedin.com/in/softpro-ukraine-a8876b282/recent-activity/all/" target="_blank"><img src="https://cdn.softpro.ua/data/npm/social/linkedin.png" alt="Softpro Linkedin" title="Softpro LinkedIn"></a>&nbsp;&nbsp;
177
+ </p>
178
+
179
+ ## License
180
+
181
+ Copyright © SOFTPRO. All rights reserved.
@@ -1,5 +1,5 @@
1
1
  import { openBlock as t, createElementBlock as n, createElementVNode as l } from "vue";
2
- import { _ as o } from "./index-axggzg5T.js";
2
+ import { _ as o } from "./index-8aAArh78.js";
3
3
  const s = {}, a = {
4
4
  xmlns: "http://www.w3.org/2000/svg",
5
5
  width: "24",
@@ -1,7 +1,7 @@
1
- import { defineComponent as O, defineAsyncComponent as z, ref as s, computed as u, onMounted as D, resolveComponent as I, openBlock as h, createElementBlock as C, Fragment as $, createVNode as c, createSlots as K, withCtx as n, createTextVNode as j, toDisplayString as y, createElementVNode as o, unref as k, createCommentVNode as E, createBlock as L } from "vue";
1
+ import { defineComponent as O, defineAsyncComponent as z, ref as s, computed as u, onMounted as D, resolveComponent as I, openBlock as h, createElementBlock as C, Fragment as $, createVNode as c, createSlots as K, withCtx as n, createElementVNode as o, unref as y, toDisplayString as k, createTextVNode as j, createCommentVNode as E, createBlock as L } from "vue";
2
2
  import { notify as d } from "@opengis/core";
3
3
  import { useRouter as P, useRoute as R } from "vue-router";
4
- import { LucideChevronRight as A, ArrowLeft as F } from "lucide-vue-next";
4
+ import { ArrowLeft as A, LucideChevronRight as F } from "lucide-vue-next";
5
5
  import { _ as U } from "./TableFormHeader.vue_vue_type_script_setup_true_lang-Mci_tseM.js";
6
6
  const J = { class: "mx-1" }, M = { class: "flex items-center gap-2 mt-[0.4rem]" }, q = { class: "flex-1 px-4 sm:px-6 pb-4 overflow-y-auto" }, G = { class: "bg-white rounded-lg shadow-sm border border-gray-200 overflow-hidden" }, H = { class: "w-full relative overflow-auto p-5 [&::-webkit-scrollbar]:w-2 [&::-webkit-scrollbar-thumb]:rounded-full [&::-webkit-scrollbar:horizontal]:h-[8px] [&::-webkit-scrollbar-track]:bg-gray-100 [&::-webkit-scrollbar-thumb]:bg-gray-300 dark:[&::-webkit-scrollbar-track]:bg-neutral-700 dark:[&::-webkit-scrollbar-thumb]:bg-neutral-500" }, Q = { class: "vs-form w-full" }, te = /* @__PURE__ */ O({
7
7
  __name: "EntityCreatePage",
@@ -9,15 +9,15 @@ const J = { class: "mx-1" }, M = { class: "flex items-center gap-2 mt-[0.4rem]"
9
9
  entityKey: { default: "" }
10
10
  },
11
11
  setup(S) {
12
- const V = z(() => import("@opengis/form")), m = s({}), p = s(null), b = s(null), f = P(), v = R(), N = S, g = s({}), w = s(""), l = u(() => v.path.replace(/\/(add|new)$/, "")), i = u(() => {
12
+ const V = z(() => import("@opengis/form")), m = s({}), p = s(null), b = s(null), v = P(), f = R(), N = S, g = s({}), w = s(""), l = u(() => f.path.replace(/\/(add|new)$/, "")), i = u(() => {
13
13
  var t;
14
- return ((t = f.resolve(l.value).meta) == null ? void 0 : t.title) ?? "";
14
+ return ((t = v.resolve(l.value).meta) == null ? void 0 : t.title) ?? "";
15
15
  }), T = u(() => i.value ? `Додати в ${i.value.toLowerCase()}` : "Додати"), x = u(() => {
16
16
  var t;
17
- return ((t = v.meta) == null ? void 0 : t.description) ?? "";
17
+ return ((t = f.meta) == null ? void 0 : t.description) ?? "";
18
18
  });
19
19
  function _() {
20
- f.push(l.value || "/");
20
+ v.push(l.value || "/");
21
21
  }
22
22
  async function B() {
23
23
  if (!b.value) {
@@ -49,10 +49,10 @@ const J = { class: "mx-1" }, M = { class: "flex items-center gap-2 mt-[0.4rem]"
49
49
  });
50
50
  return;
51
51
  }
52
- await e.json(), d({ title: "Success!", message: "Object created." }), f.back();
52
+ await e.json(), d({ title: "Success!", message: "Object created." }), v.back();
53
53
  }
54
54
  return D(async () => {
55
- const t = N.entityKey || String(v.name ?? "").split("-")[0], e = await fetch(`/api/form/gis.${t}.table`).then((r) => r.json());
55
+ const t = N.entityKey || String(f.name ?? "").split("-")[0], e = await fetch(`/api/form/gis.${t}.table`).then((r) => r.json());
56
56
  b.value = e.token, w.value = e.id, p.value = e.schema, document.title = T.value;
57
57
  }), (t, e) => {
58
58
  const r = I("router-link");
@@ -65,12 +65,12 @@ const J = { class: "mx-1" }, M = { class: "flex items-center gap-2 mt-[0.4rem]"
65
65
  class: "text-gray-500 hover:text-gray-700"
66
66
  }, {
67
67
  default: n(() => [
68
- j(y(i.value), 1)
68
+ j(k(i.value), 1)
69
69
  ]),
70
70
  _: 1
71
71
  }, 8, ["to"]),
72
72
  o("span", J, [
73
- c(k(A), {
73
+ c(y(F), {
74
74
  size: 16,
75
75
  class: "shrink-0"
76
76
  })
@@ -86,12 +86,12 @@ const J = { class: "mx-1" }, M = { class: "flex items-center gap-2 mt-[0.4rem]"
86
86
  onClick: _,
87
87
  "aria-label": "Назад"
88
88
  }, [
89
- c(k(F), {
89
+ c(y(A), {
90
90
  size: 20,
91
91
  class: "shrink-0"
92
92
  })
93
93
  ]),
94
- o("span", null, y(i.value || "Створення"), 1)
94
+ o("span", null, k(i.value || "Створення"), 1)
95
95
  ])
96
96
  ]),
97
97
  actions: n(() => [
@@ -109,7 +109,7 @@ const J = { class: "mx-1" }, M = { class: "flex items-center gap-2 mt-[0.4rem]"
109
109
  x.value ? {
110
110
  name: "description",
111
111
  fn: n(() => [
112
- j(y(x.value), 1)
112
+ j(k(x.value), 1)
113
113
  ]),
114
114
  key: "0"
115
115
  } : void 0
@@ -118,7 +118,7 @@ const J = { class: "mx-1" }, M = { class: "flex items-center gap-2 mt-[0.4rem]"
118
118
  o("div", G, [
119
119
  o("div", H, [
120
120
  o("div", Q, [
121
- p.value ? (h(), L(k(V), {
121
+ p.value ? (h(), L(y(V), {
122
122
  key: 0,
123
123
  values: m.value,
124
124
  "onUpdate:values": e[0] || (e[0] = (a) => m.value = a),
@@ -1,7 +1,7 @@
1
- import { defineComponent as D, defineAsyncComponent as R, ref as i, computed as p, onMounted as U, resolveComponent as A, openBlock as d, createElementBlock as w, Fragment as _, createVNode as s, createSlots as F, withCtx as n, createTextVNode as C, toDisplayString as v, createElementVNode as r, unref as b, createCommentVNode as $, createBlock as K } from "vue";
1
+ import { defineComponent as D, defineAsyncComponent as R, ref as i, computed as p, onMounted as U, resolveComponent as A, openBlock as d, createElementBlock as w, Fragment as _, createVNode as s, createSlots as F, withCtx as n, createElementVNode as o, unref as v, toDisplayString as b, createTextVNode as C, createCommentVNode as $, createBlock as K } from "vue";
2
2
  import { notify as f } from "@opengis/core";
3
3
  import { useRoute as L, useRouter as O } from "vue-router";
4
- import { LucideChevronRight as j, ArrowLeft as J } from "lucide-vue-next";
4
+ import { ArrowLeft as J, LucideChevronRight as j } from "lucide-vue-next";
5
5
  import { _ as M } from "./TableFormHeader.vue_vue_type_script_setup_true_lang-Mci_tseM.js";
6
6
  const Y = { class: "mx-1" }, q = { class: "mx-1" }, G = { class: "flex items-center gap-2 mt-[0.4rem]" }, H = { class: "flex-1 px-4 sm:px-6 pb-4 overflow-y-auto" }, I = { class: "bg-white rounded-lg shadow-sm border border-gray-200 overflow-hidden" }, Q = { class: "w-full relative overflow-auto p-5 [&::-webkit-scrollbar]:w-2 [&::-webkit-scrollbar-thumb]:rounded-full [&::-webkit-scrollbar:horizontal]:h-[8px] [&::-webkit-scrollbar-track]:bg-gray-100 [&::-webkit-scrollbar-thumb]:bg-gray-300 dark:[&::-webkit-scrollbar-track]:bg-neutral-700 dark:[&::-webkit-scrollbar-thumb]:bg-neutral-500" }, W = { class: "vs-form w-full" }, ae = /* @__PURE__ */ D({
7
7
  __name: "EntityEditPage",
@@ -9,17 +9,17 @@ const Y = { class: "mx-1" }, q = { class: "mx-1" }, G = { class: "flex items-cen
9
9
  entityKey: { default: "" }
10
10
  },
11
11
  setup(N) {
12
- const T = R(() => import("@opengis/form")), u = i({}), g = i(null), h = i(null), y = i({}), c = i(""), m = L(), k = O(), z = N.entityKey || String(m.name ?? "").split("-")[0], { id: x } = m.params, o = p(
12
+ const T = R(() => import("@opengis/form")), u = i({}), g = i(null), h = i(null), y = i({}), c = i(""), m = L(), k = O(), z = N.entityKey || String(m.name ?? "").split("-")[0], { id: x } = m.params, r = p(
13
13
  () => m.path.replace(/\/edit\/[^/]+$/, "").replace(/\/[^/]+\/edit$/, "")
14
- ), B = p(() => x ? `${o.value}/${x}` : o.value || "/"), E = p(() => {
14
+ ), B = p(() => x ? `${r.value}/${x}` : r.value || "/"), E = p(() => {
15
15
  var t;
16
- return ((t = k.resolve(o.value).meta) == null ? void 0 : t.title) ?? "";
16
+ return ((t = k.resolve(r.value).meta) == null ? void 0 : t.title) ?? "";
17
17
  }), S = p(() => {
18
18
  var t;
19
19
  return ((t = m.meta) == null ? void 0 : t.description) ?? "";
20
20
  });
21
21
  function V() {
22
- k.push(o.value || "/");
22
+ k.push(r.value || "/");
23
23
  }
24
24
  async function P() {
25
25
  const t = y.value.validate();
@@ -69,18 +69,18 @@ const Y = { class: "mx-1" }, q = { class: "mx-1" }, G = { class: "flex items-cen
69
69
  return d(), w(_, null, [
70
70
  s(M, { variant: "form" }, F({
71
71
  breadcrumbs: n(() => [
72
- o.value ? (d(), w(_, { key: 0 }, [
72
+ r.value ? (d(), w(_, { key: 0 }, [
73
73
  s(a, {
74
- to: o.value,
74
+ to: r.value,
75
75
  class: "text-gray-500 hover:text-gray-700"
76
76
  }, {
77
77
  default: n(() => [
78
- C(v(E.value), 1)
78
+ C(b(E.value), 1)
79
79
  ]),
80
80
  _: 1
81
81
  }, 8, ["to"]),
82
- r("span", Y, [
83
- s(b(j), {
82
+ o("span", Y, [
83
+ s(v(j), {
84
84
  size: 16,
85
85
  class: "shrink-0"
86
86
  })
@@ -92,41 +92,41 @@ const Y = { class: "mx-1" }, q = { class: "mx-1" }, G = { class: "flex items-cen
92
92
  class: "text-gray-500 hover:text-gray-700"
93
93
  }, {
94
94
  default: n(() => [
95
- C(v(c.value), 1)
95
+ C(b(c.value), 1)
96
96
  ]),
97
97
  _: 1
98
98
  }, 8, ["to"]),
99
- r("span", q, [
100
- s(b(j), {
99
+ o("span", q, [
100
+ s(v(j), {
101
101
  size: 16,
102
102
  class: "shrink-0"
103
103
  })
104
104
  ])
105
105
  ], 64)) : $("", !0),
106
- e[2] || (e[2] = r("span", { class: "text-gray-900 font-semibold" }, "Редагування", -1))
106
+ e[2] || (e[2] = o("span", { class: "text-gray-900 font-semibold" }, "Редагування", -1))
107
107
  ]),
108
108
  title: n(() => [
109
- r("div", G, [
110
- r("button", {
109
+ o("div", G, [
110
+ o("button", {
111
111
  type: "button",
112
112
  class: "p-0 m-0 border-0 bg-transparent cursor-pointer text-inherit hover:opacity-80",
113
113
  onClick: V,
114
114
  "aria-label": "Назад"
115
115
  }, [
116
- s(b(J), {
116
+ s(v(J), {
117
117
  size: 20,
118
118
  class: "shrink-0"
119
119
  })
120
120
  ]),
121
- r("span", null, v(c.value || E.value || "Редагування"), 1)
121
+ o("span", null, b(c.value || E.value || "Редагування"), 1)
122
122
  ])
123
123
  ]),
124
124
  actions: n(() => [
125
- r("button", {
125
+ o("button", {
126
126
  class: "cursor-pointer flex items-center px-3 py-2 text-sm font-medium text-gray-800 duration-300 bg-white border border-gray-100 rounded-lg shadow gap-x-2 focus:outline-none hover:bg-gray-50 hover:border-gray-100",
127
127
  onClick: V
128
128
  }, " Назад "),
129
- r("button", {
129
+ o("button", {
130
130
  onClick: P,
131
131
  class: "cursor-pointer inline-flex items-center px-3 py-2 text-sm font-medium text-white duration-300 bg-blue-600 hover:bg-blue-700 border border-transparent rounded-lg gap-x-2 hover:text-white"
132
132
  }, " Зберегти ")
@@ -136,16 +136,16 @@ const Y = { class: "mx-1" }, q = { class: "mx-1" }, G = { class: "flex items-cen
136
136
  S.value ? {
137
137
  name: "description",
138
138
  fn: n(() => [
139
- C(v(S.value), 1)
139
+ C(b(S.value), 1)
140
140
  ]),
141
141
  key: "0"
142
142
  } : void 0
143
143
  ]), 1024),
144
- r("div", H, [
145
- r("div", I, [
146
- r("div", Q, [
147
- r("div", W, [
148
- g.value ? (d(), K(b(T), {
144
+ o("div", H, [
145
+ o("div", I, [
146
+ o("div", Q, [
147
+ o("div", W, [
148
+ g.value ? (d(), K(v(T), {
149
149
  key: 0,
150
150
  schema: g.value,
151
151
  values: u.value,