@opengis/gis 0.0.4 → 0.0.5
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.
- package/config.js +11 -0
- package/dist/import-file.cjs +9 -9
- package/dist/import-file.css +1 -1
- package/dist/import-file.js +86 -86
- package/index.js +11 -0
- package/module/gis/card/gis.maps.table/index.yml +11 -0
- package/module/gis/card/gis.maps.table/main_info.hbs +25 -0
- package/module/gis/card/gis.maps.table/maps_layers.hbs +19 -0
- package/module/gis/card/gis.metadata.table/index.yml +19 -0
- package/module/gis/card/gis.metadata.table/main_info.hbs +22 -0
- package/module/gis/card/gis.metadata.table/metadata_info.hbs +28 -0
- package/module/gis/card/gis.metadata.table/other.hbs +27 -0
- package/module/gis/card/gis.rasters.table/index.yml +8 -0
- package/module/gis/card/gis.rasters.table/main_info.hbs +27 -0
- package/module/gis/card/gis.registers.table/cls.hbs +36 -0
- package/module/gis/card/gis.registers.table/columns.hbs +83 -0
- package/module/gis/card/gis.registers.table/filters.hbs +80 -0
- package/module/gis/card/gis.registers.table/index.yml +19 -0
- package/module/gis/card/gis.registers.table/main_info.hbs +26 -0
- package/module/gis/card/gis.registers.table/source.hbs +45 -0
- package/module/gis/card/gis.services.table/attributes.hbs +85 -0
- package/module/gis/card/gis.services.table/filters.hbs +83 -0
- package/module/gis/card/gis.services.table/index.yml +20 -0
- package/module/gis/card/gis.services.table/main_info.hbs +28 -0
- package/module/gis/card/gis.services.table/source.hbs +26 -0
- package/module/gis/cls/bool.yes_no.json +12 -0
- package/module/gis/cls/encoding.json +14 -0
- package/module/gis/cls/geom_type.json +14 -0
- package/module/gis/cls/gis.column_type.json +34 -0
- package/module/gis/cls/gis.column_view_type.json +18 -0
- package/module/gis/cls/gis.filter_type.json +22 -0
- package/module/gis/cls/language.json +10 -0
- package/module/gis/cls/meta.service_type.json +43 -0
- package/module/gis/cls/service_type.json +42 -0
- package/module/gis/cls/source_type.json +10 -0
- package/module/gis/cls/standarts.json +6 -0
- package/module/gis/cls/topic_category.json +107 -0
- package/module/gis/cls/update_frequency.json +30 -0
- package/module/gis/form/gis.group_list.form.json +17 -0
- package/module/gis/form/gis.maps.form.json +67 -0
- package/module/gis/form/gis.metadata.form.json +240 -0
- package/module/gis/form/gis.rasters.form.json +100 -0
- package/module/gis/form/gis.registers.form.json +261 -0
- package/module/gis/form/gis.registers_column.form.json +77 -0
- package/module/gis/form/gis.registers_filter.form.json +65 -0
- package/module/gis/form/gis.services.form.json +309 -0
- package/module/gis/form/gis.services_attributes.form.json +68 -0
- package/module/gis/form/gis.services_filter.form.json +65 -0
- package/module/gis/menu.json +38 -0
- package/module/gis/select/gis.group_list.sql +1 -0
- package/module/gis/select/pg.columns.parent.sql +6 -0
- package/module/gis/select/pg.table_name.sql +17 -0
- package/module/gis/select/service_id.sql +1 -0
- package/module/gis/table/gis.maps.table.json +78 -0
- package/module/gis/table/gis.metadata.table.json +71 -0
- package/module/gis/table/gis.rasters.table.json +98 -0
- package/module/gis/table/gis.registers.table.json +79 -0
- package/module/gis/table/gis.services.table.json +111 -0
- package/module/gis/table/site.gis.registers.table.json +75 -0
- package/module/gis/table/site.gis.services.table.json +104 -0
- package/module/gis/templates/ISO19136_2017_gml_template.xml +331 -0
- package/module/gis/tokens.yml +5 -0
- package/package.json +51 -51
- package/plugin.js +12 -0
- package/server/config.js +6 -0
- package/server/plugins/mapnik/funcs/createXML.js +72 -0
- package/server/plugins/mapnik/funcs/gdalWrapper.js +72 -0
- package/server/plugins/mapnik/funcs/mapnik.js +78 -0
- package/server/plugins/mapnik/funcs/rasterConfig.js +11 -0
- package/server/plugins/mapnik/funcs/rasterExists.js +21 -0
- package/server/plugins/mapnik/funcs/rasterInfo.js +109 -0
- package/server/plugins/mapnik/funcs/rasterVrt.js +56 -0
- package/server/plugins/mapnik/funcs/rasterXML.js +65 -0
- package/server/plugins/mapnik/funcs/rootFolder.mjs +8 -0
- package/server/plugins/mapnik/index.mjs +12 -0
- package/server/plugins/mapnik/utils/map.proto +241 -0
- package/server/routes/gis/index.mjs +19 -0
- package/server/routes/gis/metadata/metadataXML.js +13 -0
- package/server/routes/gis/registers/funcs/classifiers.js +26 -0
- package/server/routes/gis/registers/funcs/columns.js +5 -0
- package/server/routes/gis/registers/funcs/handleRegistryRequest.js +99 -0
- package/server/routes/gis/registers/gis.registry.js +32 -0
- package/server/routes/gis/registers/gis.registry.list.js +59 -0
- package/server/routes/gis/registers/insert.columns.js +107 -0
- package/server/routes/gis/registers/insert.filters.js +110 -0
- package/server/routes/gis/registers/map.registry.js +79 -0
- package/server/routes/gis/services/get.layer.geom.js +27 -0
- package/server/routes/map/controllers/map.js +123 -0
- package/server/routes/map/controllers/mapCatalog.js +55 -0
- package/server/routes/map/controllers/mapCatalogAttribute.js +56 -0
- package/server/routes/map/controllers/mapFeatures.js +120 -0
- package/server/routes/map/controllers/mapFormat.js +111 -0
- package/server/routes/map/controllers/mapTiles.js +148 -0
- package/server/routes/map/controllers/maps.js +16 -0
- package/server/routes/map/controllers/marker_icon.js +42 -0
- package/server/routes/map/controllers/rtile.js +133 -0
- package/server/routes/map/controllers/vtile.js +146 -0
- package/server/routes/map/index.mjs +51 -0
- package/server/routes/root.mjs +3 -0
- package/utils.js +9 -0
|
@@ -0,0 +1,331 @@
|
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?><gmd:MD_Metadata xmlns:gmd="http://www.isotc211.org/2005/gmd" xmlns="http://www.isotc211.org/2005/gmd" xmlns:gco="http://www.isotc211.org/2005/gco" xmlns:gml="http://www.opengis.net/gml" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.isotc211.org/2005/gmd http://schemas.opengis.net/iso/19139/20060504/gmd/gmd.xsd">
|
|
2
|
+
{{#contentList table="gis.metadata" query="metadata_id='{{id}}'" widget=0}}
|
|
3
|
+
{{#with rows.[0]}}
|
|
4
|
+
<gmd:fileIdentifier>
|
|
5
|
+
<gco:CharacterString>{{metadata_id}}</gco:CharacterString>
|
|
6
|
+
</gmd:fileIdentifier>
|
|
7
|
+
<gmd:language>
|
|
8
|
+
<gmd:LanguageCode codeList="http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/ML_gmxCodelists.xml#LanguageCode" codeListValue="UKR">1</gmd:LanguageCode>
|
|
9
|
+
</gmd:language>
|
|
10
|
+
<gmd:hierarchyLevel>
|
|
11
|
+
<gmd:MD_ScopeCode codeList="http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/ML_gmxCodelists.xml#MD_ScopeCode" codeListValue="web_service">web_service</gmd:MD_ScopeCode>
|
|
12
|
+
</gmd:hierarchyLevel>
|
|
13
|
+
<gmd:contact>
|
|
14
|
+
<gmd:CI_ResponsibleParty>
|
|
15
|
+
<gmd:individualName>
|
|
16
|
+
<gco:CharacterString></gco:CharacterString>
|
|
17
|
+
</gmd:individualName>
|
|
18
|
+
<gmd:organisationName>
|
|
19
|
+
<gco:CharacterString></gco:CharacterString>
|
|
20
|
+
</gmd:organisationName>
|
|
21
|
+
<gmd:contactInfo>
|
|
22
|
+
<gmd:CI_Contact>
|
|
23
|
+
<gmd:address>
|
|
24
|
+
<gmd:CI_Address>
|
|
25
|
+
<gmd:electronicMailAddress>
|
|
26
|
+
<gco:CharacterString></gco:CharacterString>
|
|
27
|
+
</gmd:electronicMailAddress>
|
|
28
|
+
</gmd:CI_Address>
|
|
29
|
+
</gmd:address>
|
|
30
|
+
</gmd:CI_Contact>
|
|
31
|
+
</gmd:contactInfo>
|
|
32
|
+
<gmd:role>
|
|
33
|
+
<gmd:CI_RoleCode codeList="http://www.isotc211.org/2005/resources/Codelist/gmxCodelists.xml#CI_RoleCode" codeListValue="pointOfContact">pointOfContact</gmd:CI_RoleCode>
|
|
34
|
+
</gmd:role>
|
|
35
|
+
</gmd:CI_ResponsibleParty>
|
|
36
|
+
</gmd:contact>
|
|
37
|
+
<gmd:dateStamp>
|
|
38
|
+
<gco:Date></gco:Date>
|
|
39
|
+
</gmd:dateStamp>
|
|
40
|
+
<gmd:metadataStandardName>
|
|
41
|
+
<gco:CharacterString>INSPIRE Metadata for Datasets</gco:CharacterString>
|
|
42
|
+
</gmd:metadataStandardName>
|
|
43
|
+
<gmd:metadataStandardVersion>
|
|
44
|
+
<gco:CharacterString>DRAFT</gco:CharacterString>
|
|
45
|
+
</gmd:metadataStandardVersion>
|
|
46
|
+
<gmd:referenceSystemInfo>
|
|
47
|
+
<gmd:MD_ReferenceSystem>
|
|
48
|
+
<gmd:referenceSystemIdentifier>
|
|
49
|
+
<gmd:RS_Identifier>
|
|
50
|
+
<gmd:code>
|
|
51
|
+
<gco:CharacterString>http://www.opengis.net/def/crs/EPSG/0/4326</gco:CharacterString>
|
|
52
|
+
</gmd:code>
|
|
53
|
+
<gmd:codeSpace>
|
|
54
|
+
<gco:CharacterString>4326</gco:CharacterString>
|
|
55
|
+
</gmd:codeSpace>
|
|
56
|
+
</gmd:RS_Identifier>
|
|
57
|
+
</gmd:referenceSystemIdentifier>
|
|
58
|
+
</gmd:MD_ReferenceSystem>
|
|
59
|
+
</gmd:referenceSystemInfo>
|
|
60
|
+
<gmd:identificationInfo>
|
|
61
|
+
<gmd:MD_DataIdentification>
|
|
62
|
+
<gmd:citation>
|
|
63
|
+
<gmd:CI_Citation>
|
|
64
|
+
<gmd:title>
|
|
65
|
+
<gco:CharacterString>{{select layer_id data="service_id"}}</gco:CharacterString>
|
|
66
|
+
</gmd:title>
|
|
67
|
+
<gmd:date>
|
|
68
|
+
<gmd:CI_Date>
|
|
69
|
+
<gmd:date>
|
|
70
|
+
<gco:Date>{{formatDate editor_date format="yy-mm-dd"}}</gco:Date>
|
|
71
|
+
</gmd:date>
|
|
72
|
+
<gmd:dateType>
|
|
73
|
+
<gmd:CI_DateTypeCode codeList="http://www.isotc211.org/2005/resources/Codelist/gmxCodelists.xml#CI_DateTypeCode" codeListValue="publication"/>
|
|
74
|
+
</gmd:dateType>
|
|
75
|
+
</gmd:CI_Date>
|
|
76
|
+
</gmd:date>
|
|
77
|
+
<gmd:date>
|
|
78
|
+
<gmd:CI_Date>
|
|
79
|
+
<gmd:date>
|
|
80
|
+
<gco:Date>{{formatDate cdate format="yy-mm-dd"}}</gco:Date>
|
|
81
|
+
</gmd:date>
|
|
82
|
+
<gmd:dateType>
|
|
83
|
+
<gmd:CI_DateTypeCode codeList="http://www.isotc211.org/2005/resources/Codelist/gmxCodelists.xml#CI_DateTypeCode" codeListValue="creation"/>
|
|
84
|
+
</gmd:dateType>
|
|
85
|
+
</gmd:CI_Date>
|
|
86
|
+
</gmd:date>
|
|
87
|
+
</gmd:CI_Citation>
|
|
88
|
+
</gmd:citation>
|
|
89
|
+
<gmd:abstract>
|
|
90
|
+
<gco:CharacterString>{{abstract}}</gco:CharacterString>
|
|
91
|
+
</gmd:abstract>
|
|
92
|
+
<gmd:pointOfContact>
|
|
93
|
+
<gmd:CI_ResponsibleParty>
|
|
94
|
+
<gmd:organisationName>
|
|
95
|
+
<gco:CharacterString></gco:CharacterString>
|
|
96
|
+
</gmd:organisationName>
|
|
97
|
+
<gmd:positionName>
|
|
98
|
+
<gco:CharacterString/>
|
|
99
|
+
</gmd:positionName>
|
|
100
|
+
<gmd:contactInfo>
|
|
101
|
+
<gmd:CI_Contact>
|
|
102
|
+
<gmd:phone>
|
|
103
|
+
<gmd:CI_Telephone>
|
|
104
|
+
<gmd:voice>
|
|
105
|
+
<gco:CharacterString/>
|
|
106
|
+
</gmd:voice>
|
|
107
|
+
<gmd:facsimile>
|
|
108
|
+
<gco:CharacterString/>
|
|
109
|
+
</gmd:facsimile>
|
|
110
|
+
</gmd:CI_Telephone>
|
|
111
|
+
</gmd:phone>
|
|
112
|
+
<gmd:address>
|
|
113
|
+
<gmd:CI_Address>
|
|
114
|
+
<gmd:deliveryPoint>
|
|
115
|
+
<gco:CharacterString/>
|
|
116
|
+
</gmd:deliveryPoint>
|
|
117
|
+
<gmd:city>
|
|
118
|
+
<gco:CharacterString/>
|
|
119
|
+
</gmd:city>
|
|
120
|
+
<gmd:administrativeArea>
|
|
121
|
+
<gco:CharacterString/>
|
|
122
|
+
</gmd:administrativeArea>
|
|
123
|
+
<gmd:postalCode>
|
|
124
|
+
<gco:CharacterString/>
|
|
125
|
+
</gmd:postalCode>
|
|
126
|
+
<gmd:country>
|
|
127
|
+
<gco:CharacterString/>
|
|
128
|
+
</gmd:country>
|
|
129
|
+
<gmd:electronicMailAddress>
|
|
130
|
+
<gco:CharacterString></gco:CharacterString>
|
|
131
|
+
</gmd:electronicMailAddress>
|
|
132
|
+
</gmd:CI_Address>
|
|
133
|
+
</gmd:address>
|
|
134
|
+
<gmd:onlineResource>
|
|
135
|
+
<gmd:CI_OnlineResource>
|
|
136
|
+
<gmd:linkage>
|
|
137
|
+
<gmd:URL/>
|
|
138
|
+
</gmd:linkage>
|
|
139
|
+
</gmd:CI_OnlineResource>
|
|
140
|
+
</gmd:onlineResource>
|
|
141
|
+
</gmd:CI_Contact>
|
|
142
|
+
</gmd:contactInfo>
|
|
143
|
+
<gmd:role>
|
|
144
|
+
<gmd:CI_RoleCode codeList="http://www.isotc211.org/2005/resources/Codelist/gmxCodelists.xml#CI_RoleCode" codeListValue="owner"/>
|
|
145
|
+
</gmd:role>
|
|
146
|
+
</gmd:CI_ResponsibleParty>
|
|
147
|
+
</gmd:pointOfContact>
|
|
148
|
+
<gmd:graphicOverview>
|
|
149
|
+
</gmd:graphicOverview>
|
|
150
|
+
<gmd:descriptiveKeywords>
|
|
151
|
+
<gmd:MD_Keywords>
|
|
152
|
+
{{#each keywords}}
|
|
153
|
+
<gmd:keyword>
|
|
154
|
+
<gco:CharacterString>{{this}}</gco:CharacterString>
|
|
155
|
+
</gmd:keyword>
|
|
156
|
+
{{/each}}
|
|
157
|
+
<gmd:thesaurusName>
|
|
158
|
+
<gmd:CI_Citation>
|
|
159
|
+
<gmd:title>
|
|
160
|
+
<gco:CharacterString>GEMET - INSPIRE themes, version 1.0</gco:CharacterString>
|
|
161
|
+
</gmd:title>
|
|
162
|
+
<gmd:date>
|
|
163
|
+
<gmd:CI_Date>
|
|
164
|
+
<gmd:date>
|
|
165
|
+
<gco:Date>{{formatDate cdate format="yy-mm-dd"}}</gco:Date>
|
|
166
|
+
</gmd:date>
|
|
167
|
+
<gmd:dateType>
|
|
168
|
+
<gmd:CI_DateTypeCode codeList="http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/ML_gmxCodelists.xml#CI_DateTypeCode" codeListValue="publication">publication</gmd:CI_DateTypeCode>
|
|
169
|
+
</gmd:dateType>
|
|
170
|
+
</gmd:CI_Date>
|
|
171
|
+
</gmd:date>
|
|
172
|
+
</gmd:CI_Citation>
|
|
173
|
+
</gmd:thesaurusName>
|
|
174
|
+
</gmd:MD_Keywords>
|
|
175
|
+
</gmd:descriptiveKeywords>
|
|
176
|
+
<gmd:descriptiveKeywords>
|
|
177
|
+
<gmd:MD_Keywords>
|
|
178
|
+
<gmd:keyword>
|
|
179
|
+
<gco:CharacterString></gco:CharacterString>
|
|
180
|
+
</gmd:keyword>
|
|
181
|
+
<gmd:keyword>
|
|
182
|
+
<gco:CharacterString></gco:CharacterString>
|
|
183
|
+
</gmd:keyword>
|
|
184
|
+
<gmd:thesaurusName>
|
|
185
|
+
<gmd:CI_Citation>
|
|
186
|
+
<gmd:title>
|
|
187
|
+
<gco:CharacterString>INSPIRE priority data set</gco:CharacterString>
|
|
188
|
+
</gmd:title>
|
|
189
|
+
<gmd:date>
|
|
190
|
+
<gmd:CI_Date>
|
|
191
|
+
<gmd:date>
|
|
192
|
+
<gco:Date></gco:Date>
|
|
193
|
+
</gmd:date>
|
|
194
|
+
<gmd:dateType>
|
|
195
|
+
<gmd:CI_DateTypeCode codeList="http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/codelist/ML_gmxCodelists.xml#CI_DateTypeCode" codeListValue="publication">creation</gmd:CI_DateTypeCode>
|
|
196
|
+
</gmd:dateType>
|
|
197
|
+
</gmd:CI_Date>
|
|
198
|
+
</gmd:date>
|
|
199
|
+
</gmd:CI_Citation>
|
|
200
|
+
</gmd:thesaurusName>
|
|
201
|
+
</gmd:MD_Keywords>
|
|
202
|
+
</gmd:descriptiveKeywords>
|
|
203
|
+
<gmd:spatialRepresentationType>
|
|
204
|
+
<gmd:MD_SpatialRepresentationTypeCode codeList="http://www.isotc211.org/2005/resources/Codelist/gmxCodelists.xml#MD_SpatialRepresentationTypeCode" codeListValue=""/>
|
|
205
|
+
</gmd:spatialRepresentationType>
|
|
206
|
+
<gmd:spatialResolution>
|
|
207
|
+
<gmd:MD_Resolution>
|
|
208
|
+
<gmd:equivalentScale>
|
|
209
|
+
<gmd:MD_RepresentativeFraction>
|
|
210
|
+
<gmd:denominator>
|
|
211
|
+
<gco:Integer>{{scale}}</gco:Integer>
|
|
212
|
+
</gmd:denominator>
|
|
213
|
+
</gmd:MD_RepresentativeFraction>
|
|
214
|
+
</gmd:equivalentScale>
|
|
215
|
+
</gmd:MD_Resolution>
|
|
216
|
+
</gmd:spatialResolution>
|
|
217
|
+
<gmd:language>
|
|
218
|
+
<gmd:LanguageCode codeList="http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/ML_gmxCodelists.xml#LanguageCode" codeListValue="lav"/>
|
|
219
|
+
</gmd:language>
|
|
220
|
+
<gmd:topicCategory>
|
|
221
|
+
<gmd:MD_TopicCategoryCode>{{select topic_category data="topic_category"}}</gmd:MD_TopicCategoryCode>
|
|
222
|
+
</gmd:topicCategory>
|
|
223
|
+
<gmd:extent>
|
|
224
|
+
<gmd:EX_Extent>
|
|
225
|
+
<gmd:geographicElement>
|
|
226
|
+
<gmd:EX_GeographicBoundingBox>
|
|
227
|
+
<gmd:westBoundLongitude>
|
|
228
|
+
<gco:Decimal>20.700</gco:Decimal>
|
|
229
|
+
</gmd:westBoundLongitude>
|
|
230
|
+
<gmd:eastBoundLongitude>
|
|
231
|
+
<gco:Decimal>28.500</gco:Decimal>
|
|
232
|
+
</gmd:eastBoundLongitude>
|
|
233
|
+
<gmd:southBoundLatitude>
|
|
234
|
+
<gco:Decimal>55.600</gco:Decimal>
|
|
235
|
+
</gmd:southBoundLatitude>
|
|
236
|
+
<gmd:northBoundLatitude>
|
|
237
|
+
<gco:Decimal>58.100</gco:Decimal>
|
|
238
|
+
</gmd:northBoundLatitude>
|
|
239
|
+
</gmd:EX_GeographicBoundingBox>
|
|
240
|
+
</gmd:geographicElement>
|
|
241
|
+
<gmd:temporalElement>
|
|
242
|
+
<gmd:EX_TemporalExtent>
|
|
243
|
+
<gmd:extent>
|
|
244
|
+
<gml:TimePeriod gml:id="Temporal">
|
|
245
|
+
<gml:begin>
|
|
246
|
+
<gml:TimeInstant gml:id="TemporalBegin">
|
|
247
|
+
<gml:timePosition>2021-01-01</gml:timePosition>
|
|
248
|
+
</gml:TimeInstant>
|
|
249
|
+
</gml:begin>
|
|
250
|
+
<gml:end>
|
|
251
|
+
<gml:TimeInstant gml:id="TemporalEnd">
|
|
252
|
+
<gml:timePosition>2021-12-31</gml:timePosition>
|
|
253
|
+
</gml:TimeInstant>
|
|
254
|
+
</gml:end>
|
|
255
|
+
</gml:TimePeriod>
|
|
256
|
+
</gmd:extent>
|
|
257
|
+
</gmd:EX_TemporalExtent>
|
|
258
|
+
</gmd:temporalElement>
|
|
259
|
+
</gmd:EX_Extent>
|
|
260
|
+
</gmd:extent>
|
|
261
|
+
</gmd:MD_DataIdentification>
|
|
262
|
+
</gmd:identificationInfo>
|
|
263
|
+
<gmd:distributionInfo>
|
|
264
|
+
<gmd:MD_Distribution>
|
|
265
|
+
<gmd:distributionFormat>
|
|
266
|
+
<gmd:MD_Format>
|
|
267
|
+
<gmd:name>
|
|
268
|
+
<gco:CharacterString/>
|
|
269
|
+
</gmd:name>
|
|
270
|
+
<gmd:version>
|
|
271
|
+
<gco:CharacterString/>
|
|
272
|
+
</gmd:version>
|
|
273
|
+
</gmd:MD_Format>
|
|
274
|
+
</gmd:distributionFormat>
|
|
275
|
+
</gmd:MD_Distribution>
|
|
276
|
+
</gmd:distributionInfo>
|
|
277
|
+
<gmd:dataQualityInfo>
|
|
278
|
+
<gmd:DQ_DataQuality>
|
|
279
|
+
<gmd:scope>
|
|
280
|
+
<gmd:DQ_Scope>
|
|
281
|
+
<gmd:level>
|
|
282
|
+
<gmd:MD_ScopeCode codeList="http://www.isotc211.org/2005/resources/Codelist/gmxCodelists.xml#MD_ScopeCode" codeListValue=""/>
|
|
283
|
+
</gmd:level>
|
|
284
|
+
</gmd:DQ_Scope>
|
|
285
|
+
</gmd:scope>
|
|
286
|
+
<gmd:report>
|
|
287
|
+
<gmd:DQ_DomainConsistency xsi:type="DQ_DomainConsistency_Type">
|
|
288
|
+
<gmd:measureIdentification>
|
|
289
|
+
<gmd:RS_Identifier>
|
|
290
|
+
<gmd:code>
|
|
291
|
+
<gco:CharacterString>Conformity_001</gco:CharacterString>
|
|
292
|
+
</gmd:code>
|
|
293
|
+
<gmd:codeSpace>
|
|
294
|
+
<gco:CharacterString>INSPIRE</gco:CharacterString>
|
|
295
|
+
</gmd:codeSpace>
|
|
296
|
+
</gmd:RS_Identifier>
|
|
297
|
+
</gmd:measureIdentification>
|
|
298
|
+
<gmd:result>
|
|
299
|
+
<gmd:DQ_ConformanceResult xsi:type="DQ_ConformanceResult_Type">
|
|
300
|
+
<gmd:specification>
|
|
301
|
+
<gmd:CI_Citation>
|
|
302
|
+
<gmd:title>
|
|
303
|
+
<gco:CharacterString></gco:CharacterString>
|
|
304
|
+
</gmd:title>
|
|
305
|
+
<gmd:date>
|
|
306
|
+
<gmd:CI_Date>
|
|
307
|
+
<gmd:date>
|
|
308
|
+
<gco:Date>2010-12-08</gco:Date>
|
|
309
|
+
</gmd:date>
|
|
310
|
+
<gmd:dateType>
|
|
311
|
+
<gmd:CI_DateTypeCode codeList="http://standards.iso.org/ittf/PubliclyAvailableStandards/ISO_19139_Schemas/resources/Codelist/ML_gmxCodelists.xml#CI_DateTypeCode" codeListValue="publication"/>
|
|
312
|
+
</gmd:dateType>
|
|
313
|
+
</gmd:CI_Date>
|
|
314
|
+
</gmd:date>
|
|
315
|
+
</gmd:CI_Citation>
|
|
316
|
+
</gmd:specification>
|
|
317
|
+
<gmd:explanation>
|
|
318
|
+
<gco:CharacterString>See the referenced specification</gco:CharacterString>
|
|
319
|
+
</gmd:explanation>
|
|
320
|
+
<gmd:pass>
|
|
321
|
+
<gco:Boolean>true</gco:Boolean>
|
|
322
|
+
</gmd:pass>
|
|
323
|
+
</gmd:DQ_ConformanceResult>
|
|
324
|
+
</gmd:result>
|
|
325
|
+
</gmd:DQ_DomainConsistency>
|
|
326
|
+
</gmd:report>
|
|
327
|
+
</gmd:DQ_DataQuality>
|
|
328
|
+
</gmd:dataQualityInfo>
|
|
329
|
+
{{/with}}
|
|
330
|
+
{{/contentList}}
|
|
331
|
+
</gmd:MD_Metadata>
|
package/package.json
CHANGED
|
@@ -1,51 +1,51 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "@opengis/gis",
|
|
3
|
-
"version": "0.0.
|
|
4
|
-
"type": "module",
|
|
5
|
-
"author": "Softpro",
|
|
6
|
-
"main": "
|
|
7
|
-
"files": [
|
|
8
|
-
"dist",
|
|
9
|
-
"
|
|
10
|
-
"
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
"
|
|
14
|
-
"
|
|
15
|
-
"
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
"
|
|
20
|
-
"
|
|
21
|
-
"
|
|
22
|
-
"
|
|
23
|
-
"
|
|
24
|
-
"
|
|
25
|
-
"
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
"
|
|
29
|
-
"
|
|
30
|
-
"
|
|
31
|
-
"
|
|
32
|
-
"
|
|
33
|
-
"
|
|
34
|
-
"
|
|
35
|
-
"
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
"
|
|
39
|
-
"
|
|
40
|
-
"
|
|
41
|
-
"
|
|
42
|
-
"
|
|
43
|
-
"
|
|
44
|
-
"
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
"
|
|
48
|
-
"
|
|
49
|
-
"
|
|
50
|
-
}
|
|
51
|
-
}
|
|
1
|
+
{
|
|
2
|
+
"name": "@opengis/gis",
|
|
3
|
+
"version": "0.0.5",
|
|
4
|
+
"type": "module",
|
|
5
|
+
"author": "Softpro",
|
|
6
|
+
"main": "index.js",
|
|
7
|
+
"files": [
|
|
8
|
+
"dist/*",
|
|
9
|
+
"module/*",
|
|
10
|
+
"server/*",
|
|
11
|
+
"plugin.js",
|
|
12
|
+
"utils.js",
|
|
13
|
+
"config.js",
|
|
14
|
+
"README.md",
|
|
15
|
+
"index.js",
|
|
16
|
+
"LICENSE"
|
|
17
|
+
],
|
|
18
|
+
"scripts": {
|
|
19
|
+
"dev": "vite",
|
|
20
|
+
"build": "vite build",
|
|
21
|
+
"preview": "vite preview",
|
|
22
|
+
"docs:install": "npm install --prefix ./docs",
|
|
23
|
+
"docs:dev": "npm run --prefix ./docs docs:dev",
|
|
24
|
+
"docs:build": "npm run --prefix ./docs docs:build",
|
|
25
|
+
"docs:preview": "npm run --prefix ./docs docs:preview"
|
|
26
|
+
},
|
|
27
|
+
"dependencies": {
|
|
28
|
+
"@grpc/grpc-js": "^1.13.4",
|
|
29
|
+
"@grpc/proto-loader": "^0.7.15",
|
|
30
|
+
"@mapbox/sphericalmercator": "^1.2.0",
|
|
31
|
+
"@opengis/fastify-table": "^1.2.68",
|
|
32
|
+
"@opengis/v3-core": "^0.3.187",
|
|
33
|
+
"@opengis/v3-filter": "^0.1.18",
|
|
34
|
+
"@turf/turf": "^7.2.0",
|
|
35
|
+
"axios": "^1.9.0",
|
|
36
|
+
"carto": "0.16.3",
|
|
37
|
+
"fastify": "^4.26.1",
|
|
38
|
+
"fastify-plugin": "^4.0.0",
|
|
39
|
+
"handlebars": "^4.7.8",
|
|
40
|
+
"maplibre-gl": "^5.5.0",
|
|
41
|
+
"marked": "^15.0.12",
|
|
42
|
+
"vue": "^3.5.13",
|
|
43
|
+
"vue-router": "^4.5.1",
|
|
44
|
+
"vue3-smooth-dnd": "^0.0.6"
|
|
45
|
+
},
|
|
46
|
+
"devDependencies": {
|
|
47
|
+
"@vitejs/plugin-vue": "^5.2.3",
|
|
48
|
+
"eslint": "^8.49.0",
|
|
49
|
+
"eslint-config-airbnb": "^19.0.4"
|
|
50
|
+
}
|
|
51
|
+
}
|
package/plugin.js
ADDED
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import fp from 'fastify-plugin';
|
|
2
|
+
|
|
3
|
+
import config from './config.js';
|
|
4
|
+
|
|
5
|
+
config.prefix = config.prefix || '/api';
|
|
6
|
+
|
|
7
|
+
async function plugin(fastify, opts = config) {
|
|
8
|
+
// API
|
|
9
|
+
fastify.register(import('./server/routes/map/index.mjs'), opts);
|
|
10
|
+
fastify.register(import('./server/routes/gis/index.mjs'), opts);
|
|
11
|
+
}
|
|
12
|
+
export default fp(plugin)
|
package/server/config.js
ADDED
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
import carto from 'carto';
|
|
2
|
+
|
|
3
|
+
import rasterExists from './rasterExists.js';
|
|
4
|
+
import rasterConfig from './rasterConfig.js';
|
|
5
|
+
|
|
6
|
+
export default async function createXML({
|
|
7
|
+
fullPath, srs, extent: bounds, send, size
|
|
8
|
+
}) {
|
|
9
|
+
|
|
10
|
+
const configFilePath = fullPath.replace('/preview1', '').replace('mosaic.vrt', 'config.yml')
|
|
11
|
+
const configData = await rasterConfig(configFilePath);
|
|
12
|
+
|
|
13
|
+
const rasterPreview = await rasterExists(fullPath, 1);
|
|
14
|
+
|
|
15
|
+
if (rasterPreview) {
|
|
16
|
+
send('preview:' + rasterPreview);
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
const rasterZoom = configData?.previewZoom ?? (rasterPreview && size?.includes('G') ? 16 : 0);
|
|
20
|
+
|
|
21
|
+
const rasterScaling = 'bilinear';
|
|
22
|
+
|
|
23
|
+
const Layer = [].concat([
|
|
24
|
+
{
|
|
25
|
+
id: 'test',
|
|
26
|
+
name: 'test',
|
|
27
|
+
geometry: 'raster',
|
|
28
|
+
properties: { minzoom: +rasterZoom + 1 },
|
|
29
|
+
srs: srs || '+proj=longlat +datum=WGS84 +no_defs ',
|
|
30
|
+
Datasource: {
|
|
31
|
+
// extent: bounds.join(','),
|
|
32
|
+
file: fullPath,
|
|
33
|
+
type: 'gdal',
|
|
34
|
+
},
|
|
35
|
+
}]).concat(
|
|
36
|
+
rasterZoom && rasterPreview ? [{
|
|
37
|
+
id: 'testpreview',
|
|
38
|
+
name: 'testpreview',
|
|
39
|
+
geometry: 'raster',
|
|
40
|
+
properties: { maxzoom: +rasterZoom },
|
|
41
|
+
srs: srs || '+proj=longlat +datum=WGS84 +no_defs ',
|
|
42
|
+
Datasource: {
|
|
43
|
+
// extent: bounds.join(','),
|
|
44
|
+
file: rasterPreview,
|
|
45
|
+
type: 'gdal',
|
|
46
|
+
},
|
|
47
|
+
}]
|
|
48
|
+
: [],
|
|
49
|
+
);
|
|
50
|
+
|
|
51
|
+
const data = `#testpreview{raster-opacity:1; raster-scaling:${rasterScaling};} #test{raster-opacity:1;raster-scaling:${rasterScaling}; } `;
|
|
52
|
+
|
|
53
|
+
const configJson = {
|
|
54
|
+
format: 'png',
|
|
55
|
+
Layer,
|
|
56
|
+
srs: '+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over',
|
|
57
|
+
bounds: bounds || [-180, -85.05112877980659, 180, 85.05112877980659],
|
|
58
|
+
'maximum-extent': '-20037508.34,-20037508.34,20037508.34,20037508.34',
|
|
59
|
+
center: [0, 0, 2],
|
|
60
|
+
minzoom: 1,
|
|
61
|
+
maxzoom: 25,
|
|
62
|
+
Stylesheet: [{ id: 'carto_css_style', data }],
|
|
63
|
+
};
|
|
64
|
+
|
|
65
|
+
const xmlFileText = new carto.Renderer().render(configJson);
|
|
66
|
+
|
|
67
|
+
if (!xmlFileText) {
|
|
68
|
+
return { status: 500, error: `Cant create xml for ${fullPath}` };
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
return xmlFileText;
|
|
72
|
+
}
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
import path from 'path';
|
|
2
|
+
import { randomUUID as uuidv4 } from 'crypto';
|
|
3
|
+
import mapnik from './mapnik.js';
|
|
4
|
+
|
|
5
|
+
import config from '../../../config.js';
|
|
6
|
+
|
|
7
|
+
const { mapServerAddress } = mapnik();
|
|
8
|
+
|
|
9
|
+
function unixPath(data) {
|
|
10
|
+
if (mapServerAddress && !mapServerAddress?.includes('localhost') && data?.[1] === ':') {
|
|
11
|
+
return path.posix.join('/data/softpro', data.substr(3).replace(/\\/g, '/'));
|
|
12
|
+
}
|
|
13
|
+
return data;
|
|
14
|
+
}
|
|
15
|
+
const gdalWrapper = async ({
|
|
16
|
+
name, pathIn, pathOut, parameters, funcs, send = console.log,
|
|
17
|
+
}) => {
|
|
18
|
+
const timeStart = new Date();
|
|
19
|
+
const pref = name === 'gdalbuildvrt' ? ' -o ' : '';
|
|
20
|
+
const cmd = `${name} ${parameters || ''} ${unixPath(pathIn) || ''} ${pref} ${unixPath(pathOut) || ''}`;
|
|
21
|
+
|
|
22
|
+
if (mapServerAddress) {
|
|
23
|
+
const out = pref + (unixPath(pathOut) || '');
|
|
24
|
+
const obj = {
|
|
25
|
+
name, path: unixPath(pathIn), out, params: parameters,
|
|
26
|
+
};
|
|
27
|
+
|
|
28
|
+
const time = Date.now();
|
|
29
|
+
const { result, err } = await mapnik().gdal(obj);
|
|
30
|
+
|
|
31
|
+
if (config.local && false) {
|
|
32
|
+
send(cmd);
|
|
33
|
+
send(JSON.stringify(obj));
|
|
34
|
+
send(`${Date.now() - time}`);
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
if (err) {
|
|
38
|
+
const logObj = {
|
|
39
|
+
level: 'ERROR',
|
|
40
|
+
uuid: uuidv4(),
|
|
41
|
+
name: 'GDAL',
|
|
42
|
+
subname: 'GDALWRAPPER',
|
|
43
|
+
msec: new Date() - timeStart,
|
|
44
|
+
param: { cmd },
|
|
45
|
+
status: '500',
|
|
46
|
+
response: { error: err },
|
|
47
|
+
};
|
|
48
|
+
// log.error({ name: 'gdal', ...logObj });
|
|
49
|
+
send(err);
|
|
50
|
+
}
|
|
51
|
+
return { err, result };
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
const result = await funcs.exec(cmd, { send });
|
|
55
|
+
if (!result) {
|
|
56
|
+
const logObj = {
|
|
57
|
+
level: 'ERROR',
|
|
58
|
+
uuid: uuidv4(),
|
|
59
|
+
name: 'GDAL',
|
|
60
|
+
subname: 'GDALWRAPPER',
|
|
61
|
+
msec: new Date() - timeStart,
|
|
62
|
+
param: { cmd },
|
|
63
|
+
status: '500',
|
|
64
|
+
response: { error: `Cant execute ${cmd}` },
|
|
65
|
+
};
|
|
66
|
+
// log.error({ name: 'gdal', ...logObj });
|
|
67
|
+
return { err: `Cant execute ${cmd}` };
|
|
68
|
+
}
|
|
69
|
+
return { result };
|
|
70
|
+
};
|
|
71
|
+
|
|
72
|
+
export default gdalWrapper;
|