@masterportal/masterportalapi 2.29.0 → 2.31.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.
- package/CHANGELOG.md +13 -3
- package/example/config/services.json +1 -7
- package/package.json +73 -73
- package/src/layer/tileset.js +21 -7
- package/src/layer/wms.js +15 -6
- package/src/layer/wmts.js +2 -2
- package/src/lib/attributeMapper.js +19 -21
- package/src/vectorStyle/createStyle.js +2 -1
- package/src/vectorStyle/lib/getGeometryTypeFromService.js +22 -3
- package/test/layer/tileset.test.js +47 -20
- package/test/layer/wms.test.js +2 -1
- package/test/lib/attributeMapper.test.js +21 -3
- package/test/vectorStyle/createStyle.test.js +5 -0
- package/test/vectorStyle/lib/getGeometryTypeFromService.test.js +141 -0
- package/test/vectorStyle/lib/resources/describeFeatureType_geoserver.xml +102 -0
- package/test/vectorStyle/lib/resources/describeFeatureType_opengis_geometry.xml +69 -0
- package/test/vectorStyle/lib/resources/describeFeatureType_opengis_multi.xml +45 -0
- package/test/vectorStyle/lib/resources/describeFeatureType_opengis_point.xml +24 -0
- package/test/vectorStyle/lib/resources/describeFeatureType_opengis_polygon.xml +22 -0
- package/test/vectorStyle/lib/resources/describeFeatureType_xsd_opengis_geometry.xml +18 -0
package/CHANGELOG.md
CHANGED
|
@@ -3,16 +3,26 @@
|
|
|
3
3
|
|
|
4
4
|
The [Semantic Versioning](https://semver.org/spec/v2.0.0.html) is used.
|
|
5
5
|
|
|
6
|
-
###
|
|
6
|
+
### 2.31.0 - 2023-12-13
|
|
7
7
|
## Added
|
|
8
|
+
- Added support for Node LTS version ^20.9.0 and npm Version ^10.1.0.
|
|
8
9
|
|
|
9
10
|
## Changed
|
|
11
|
+
- WMS-Layer: the attribute extent of rawlayer is set at ol-layer.
|
|
10
12
|
|
|
11
|
-
##
|
|
13
|
+
## Fixed
|
|
14
|
+
- OAF-Layer: fix oaf layer in examples
|
|
15
|
+
|
|
16
|
+
---
|
|
12
17
|
|
|
13
|
-
|
|
18
|
+
### 2.30.0 - 2023-11-28
|
|
19
|
+
## Changed
|
|
20
|
+
- WMS-Layer and WMTS-Layer: create Layer no longer evaluates the minScale and maxScale attributes, but instead minResolution and maxResolution can be transferred.
|
|
14
21
|
|
|
15
22
|
## Fixed
|
|
23
|
+
- Issue Masterportal #1052 VectorStyle: fixed blinking of initial loaded features on great amount of features with a lot of conditional styles.
|
|
24
|
+
- Issue Masterportal #1088: gfiAttibutes with type=html are not displayed if there is no value in the data.
|
|
25
|
+
- Issue Masterportal #1091: VectorStyle: read geometry type from geoserver featureTypeRequest
|
|
16
26
|
|
|
17
27
|
---
|
|
18
28
|
|
|
@@ -105,13 +105,7 @@
|
|
|
105
105
|
"url": "https://api.hamburg.de/datasets/v1/schulen",
|
|
106
106
|
"collection": "staatliche_schulen",
|
|
107
107
|
"typ": "OAF",
|
|
108
|
-
"
|
|
109
|
-
"bboxCrs": "",
|
|
110
|
-
"datetime": "",
|
|
111
|
-
"crs": "EPSG:25832",
|
|
112
|
-
"params": {
|
|
113
|
-
"anzahl_schueler": ">1000"
|
|
114
|
-
}
|
|
108
|
+
"crs": "http://www.opengis.net/def/crs/EPSG/0/25832"
|
|
115
109
|
},
|
|
116
110
|
{
|
|
117
111
|
"id": "8712",
|
package/package.json
CHANGED
|
@@ -1,73 +1,73 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "@masterportal/masterportalapi",
|
|
3
|
-
"author": "Implementierungspartnerschaft Masterportal <info@masterportal.org> (https://www.masterportal.org)",
|
|
4
|
-
"version": "2.
|
|
5
|
-
"license": "MIT",
|
|
6
|
-
"description": "Basic functions of the Masterportal as api",
|
|
7
|
-
"repository": {
|
|
8
|
-
"type": "git",
|
|
9
|
-
"url": "git+https://bitbucket.org/geowerkstatt-hamburg/masterportalapi.git"
|
|
10
|
-
},
|
|
11
|
-
"main": "src/index.js",
|
|
12
|
-
"scripts": {
|
|
13
|
-
"test": "jest .test.js --config ./jest.config.js --collectCoverage",
|
|
14
|
-
"test:trace": "node --trace-warnings node_modules/jest/bin/jest.js .test.js --config ./jest.config.js",
|
|
15
|
-
"test:watch": "jest .test.js --config ./jest.config.js --watch",
|
|
16
|
-
"example": "parcel example/index.html",
|
|
17
|
-
"generate-jsdoc": "jsdoc ./src -r -d ./docs/ -R ./README.md -c jsdoc.json",
|
|
18
|
-
"prePushHook": "eslint --max-warnings 0 \"./**/*.js\" && npm run test",
|
|
19
|
-
"prepare": "husky install"
|
|
20
|
-
},
|
|
21
|
-
"dependencies": {
|
|
22
|
-
"core-js": "^3.33.1",
|
|
23
|
-
"dayjs": "^1.11.10",
|
|
24
|
-
"ol": "8.1.0",
|
|
25
|
-
"ol-mapbox-style": "12.0.0",
|
|
26
|
-
"olcs": "2.16.0",
|
|
27
|
-
"proj4": "^2.9.1",
|
|
28
|
-
"xml2js": "^0.6.2"
|
|
29
|
-
},
|
|
30
|
-
"devDependencies": {
|
|
31
|
-
"@babel/core": "^7.23.2",
|
|
32
|
-
"@babel/plugin-transform-modules-commonjs": "^7.23.0",
|
|
33
|
-
"@parcel/transformer-sass": "^2.10.0",
|
|
34
|
-
"@swc/jest": "^0.2.29",
|
|
35
|
-
"assert": "^2.1.0",
|
|
36
|
-
"browserify-zlib": "^0.2.0",
|
|
37
|
-
"buffer": "^6.0.3",
|
|
38
|
-
"canvas": "^2.11.2",
|
|
39
|
-
"eslint": "^8.52.0",
|
|
40
|
-
"events": "^3.3.0",
|
|
41
|
-
"https-browserify": "^1.0.0",
|
|
42
|
-
"husky": "^8.0.3",
|
|
43
|
-
"jest": "^29.7.0",
|
|
44
|
-
"jest-canvas-mock": "^2.5.2",
|
|
45
|
-
"jest-environment-jsdom": "^29.7.0",
|
|
46
|
-
"jest-fetch-mock": "^3.0.3",
|
|
47
|
-
"jsdoc": "^4.0.2",
|
|
48
|
-
"parcel": "^2.10.0",
|
|
49
|
-
"process": "^0.11.10",
|
|
50
|
-
"sass": "^1.69.4",
|
|
51
|
-
"stream-browserify": "^3.0.0",
|
|
52
|
-
"stream-http": "^3.2.0",
|
|
53
|
-
"timers-browserify": "^2.0.12",
|
|
54
|
-
"url": "^0.11.3",
|
|
55
|
-
"use-resize-observer": "^9.1.0",
|
|
56
|
-
"util": "^0.12.5"
|
|
57
|
-
},
|
|
58
|
-
"peerDependencies": {
|
|
59
|
-
"@cesium/engine": "^2.4.1"
|
|
60
|
-
},
|
|
61
|
-
"engines": {
|
|
62
|
-
"node": "^16.13.2 || ^18.12.0",
|
|
63
|
-
"npm": "^8.1.2 || ^9.3.1"
|
|
64
|
-
},
|
|
65
|
-
"homepage": "https://bitbucket.org/geowerkstatt-hamburg/masterportalapi#readme",
|
|
66
|
-
"directories": {
|
|
67
|
-
"example": "example",
|
|
68
|
-
"test": "test"
|
|
69
|
-
},
|
|
70
|
-
"bugs": {
|
|
71
|
-
"url": "https://bitbucket.org/geowerkstatt-hamburg/masterportalapi/issues"
|
|
72
|
-
}
|
|
73
|
-
}
|
|
1
|
+
{
|
|
2
|
+
"name": "@masterportal/masterportalapi",
|
|
3
|
+
"author": "Implementierungspartnerschaft Masterportal <info@masterportal.org> (https://www.masterportal.org)",
|
|
4
|
+
"version": "2.31.0",
|
|
5
|
+
"license": "MIT",
|
|
6
|
+
"description": "Basic functions of the Masterportal as api",
|
|
7
|
+
"repository": {
|
|
8
|
+
"type": "git",
|
|
9
|
+
"url": "git+https://bitbucket.org/geowerkstatt-hamburg/masterportalapi.git"
|
|
10
|
+
},
|
|
11
|
+
"main": "src/index.js",
|
|
12
|
+
"scripts": {
|
|
13
|
+
"test": "jest .test.js --config ./jest.config.js --collectCoverage",
|
|
14
|
+
"test:trace": "node --trace-warnings node_modules/jest/bin/jest.js .test.js --config ./jest.config.js",
|
|
15
|
+
"test:watch": "jest .test.js --config ./jest.config.js --watch",
|
|
16
|
+
"example": "parcel example/index.html",
|
|
17
|
+
"generate-jsdoc": "jsdoc ./src -r -d ./docs/ -R ./README.md -c jsdoc.json",
|
|
18
|
+
"prePushHook": "eslint --max-warnings 0 \"./**/*.js\" && npm run test",
|
|
19
|
+
"prepare": "husky install"
|
|
20
|
+
},
|
|
21
|
+
"dependencies": {
|
|
22
|
+
"core-js": "^3.33.1",
|
|
23
|
+
"dayjs": "^1.11.10",
|
|
24
|
+
"ol": "8.1.0",
|
|
25
|
+
"ol-mapbox-style": "12.0.0",
|
|
26
|
+
"olcs": "2.16.0",
|
|
27
|
+
"proj4": "^2.9.1",
|
|
28
|
+
"xml2js": "^0.6.2"
|
|
29
|
+
},
|
|
30
|
+
"devDependencies": {
|
|
31
|
+
"@babel/core": "^7.23.2",
|
|
32
|
+
"@babel/plugin-transform-modules-commonjs": "^7.23.0",
|
|
33
|
+
"@parcel/transformer-sass": "^2.10.0",
|
|
34
|
+
"@swc/jest": "^0.2.29",
|
|
35
|
+
"assert": "^2.1.0",
|
|
36
|
+
"browserify-zlib": "^0.2.0",
|
|
37
|
+
"buffer": "^6.0.3",
|
|
38
|
+
"canvas": "^2.11.2",
|
|
39
|
+
"eslint": "^8.52.0",
|
|
40
|
+
"events": "^3.3.0",
|
|
41
|
+
"https-browserify": "^1.0.0",
|
|
42
|
+
"husky": "^8.0.3",
|
|
43
|
+
"jest": "^29.7.0",
|
|
44
|
+
"jest-canvas-mock": "^2.5.2",
|
|
45
|
+
"jest-environment-jsdom": "^29.7.0",
|
|
46
|
+
"jest-fetch-mock": "^3.0.3",
|
|
47
|
+
"jsdoc": "^4.0.2",
|
|
48
|
+
"parcel": "^2.10.0",
|
|
49
|
+
"process": "^0.11.10",
|
|
50
|
+
"sass": "^1.69.4",
|
|
51
|
+
"stream-browserify": "^3.0.0",
|
|
52
|
+
"stream-http": "^3.2.0",
|
|
53
|
+
"timers-browserify": "^2.0.12",
|
|
54
|
+
"url": "^0.11.3",
|
|
55
|
+
"use-resize-observer": "^9.1.0",
|
|
56
|
+
"util": "^0.12.5"
|
|
57
|
+
},
|
|
58
|
+
"peerDependencies": {
|
|
59
|
+
"@cesium/engine": "^2.4.1"
|
|
60
|
+
},
|
|
61
|
+
"engines": {
|
|
62
|
+
"node": "^16.13.2 || ^18.12.0 || ^20.9.0",
|
|
63
|
+
"npm": "^8.1.2 || ^9.3.1 || ^10.1.0"
|
|
64
|
+
},
|
|
65
|
+
"homepage": "https://bitbucket.org/geowerkstatt-hamburg/masterportalapi#readme",
|
|
66
|
+
"directories": {
|
|
67
|
+
"example": "example",
|
|
68
|
+
"test": "test"
|
|
69
|
+
},
|
|
70
|
+
"bugs": {
|
|
71
|
+
"url": "https://bitbucket.org/geowerkstatt-hamburg/masterportalapi/issues"
|
|
72
|
+
}
|
|
73
|
+
}
|
package/src/layer/tileset.js
CHANGED
|
@@ -13,8 +13,8 @@ function createTileSet (rawLayer) {
|
|
|
13
13
|
if (rawLayer.cesium3DTilesetOptions) {
|
|
14
14
|
Object.assign(options, rawLayer.cesium3DTilesetOptions);
|
|
15
15
|
}
|
|
16
|
-
|
|
17
|
-
return
|
|
16
|
+
|
|
17
|
+
return Promise.resolve(Cesium.Cesium3DTileset.fromUrl(url, options));
|
|
18
18
|
}
|
|
19
19
|
|
|
20
20
|
/**
|
|
@@ -33,8 +33,12 @@ export default function Tileset (rawLayer) {
|
|
|
33
33
|
typ: rawLayer.typ
|
|
34
34
|
};
|
|
35
35
|
if (Cesium) {
|
|
36
|
-
this.tileset = createTileSet(rawLayer);
|
|
37
|
-
this.tileset.
|
|
36
|
+
this.tileset = Promise.resolve(createTileSet(rawLayer));
|
|
37
|
+
this.tileset.then(function (tileset) {
|
|
38
|
+
if (tileset) {
|
|
39
|
+
tileset.layerReferenceId = rawLayer.id;
|
|
40
|
+
}
|
|
41
|
+
});
|
|
38
42
|
}
|
|
39
43
|
}
|
|
40
44
|
|
|
@@ -58,7 +62,11 @@ Tileset.prototype.setOpacity = function (opacity) {
|
|
|
58
62
|
color = splitValues.toString();
|
|
59
63
|
}
|
|
60
64
|
|
|
61
|
-
this.tileset.
|
|
65
|
+
this.tileset.then(function (tileset) {
|
|
66
|
+
if (tileset) {
|
|
67
|
+
tileset.style = new Cesium.Cesium3DTileStyle({color});
|
|
68
|
+
}
|
|
69
|
+
});
|
|
62
70
|
};
|
|
63
71
|
|
|
64
72
|
/**
|
|
@@ -71,10 +79,16 @@ Tileset.prototype.setVisible = function (value, map) {
|
|
|
71
79
|
if (map && typeof map.getCesiumScene === "function") {
|
|
72
80
|
if (value) {
|
|
73
81
|
if (!map.getCesiumScene().primitives.contains(this.tileset)) {
|
|
74
|
-
|
|
82
|
+
this.tileset.then(function (tileset) {
|
|
83
|
+
map.getCesiumScene().primitives.add(tileset);
|
|
84
|
+
});
|
|
75
85
|
}
|
|
76
86
|
}
|
|
77
|
-
this.tileset.
|
|
87
|
+
this.tileset.then(function (tileset) {
|
|
88
|
+
if (tileset) {
|
|
89
|
+
tileset.show = value;
|
|
90
|
+
}
|
|
91
|
+
});
|
|
78
92
|
}
|
|
79
93
|
};
|
|
80
94
|
|
package/src/layer/wms.js
CHANGED
|
@@ -74,6 +74,13 @@ export function makeParams (rawLayer) {
|
|
|
74
74
|
return params;
|
|
75
75
|
}
|
|
76
76
|
|
|
77
|
+
async function defaultTileLoadFunction (imageTile, src) {
|
|
78
|
+
const response = await fetch(src),
|
|
79
|
+
data = await response.blob();
|
|
80
|
+
|
|
81
|
+
imageTile.getImage().src = URL.createObjectURL(data);
|
|
82
|
+
}
|
|
83
|
+
|
|
77
84
|
/**
|
|
78
85
|
* Creates an ol/source element for the rawLayer.
|
|
79
86
|
* @param {object} rawLayer - layer specification as in services.json
|
|
@@ -118,7 +125,8 @@ export function createLayerSource (rawLayer, options) {
|
|
|
118
125
|
tileGrid: tileGrid,
|
|
119
126
|
projection: projection,
|
|
120
127
|
attributions: rawLayer.olAttribution,
|
|
121
|
-
crossOrigin: rawLayer.crossOrigin
|
|
128
|
+
crossOrigin: rawLayer.crossOrigin,
|
|
129
|
+
tileLoadFunction: defaultTileLoadFunction
|
|
122
130
|
});
|
|
123
131
|
}
|
|
124
132
|
|
|
@@ -127,8 +135,8 @@ export function createLayerSource (rawLayer, options) {
|
|
|
127
135
|
* @param {object} rawLayer - layer specification as in services.json
|
|
128
136
|
* @param {string} [rawLayer.id] - optional id of the layer, passed to help identification in services.json
|
|
129
137
|
* @param {string} [rawLayer.url] - WMS service URL
|
|
130
|
-
* @param {string} [rawLayer.
|
|
131
|
-
* @param {string} [rawLayer.
|
|
138
|
+
* @param {string} [rawLayer.minResolution] - optional the minimal resolution
|
|
139
|
+
* @param {string} [rawLayer.maxResolution] - optional the maximal resolution
|
|
132
140
|
* @param {string} [rawLayer.serverType] - optional servertype definition: "geoserver" or "mapserver" or "qgis"
|
|
133
141
|
* @param {string} [rawLayer.gutter] - optional the size in pixels of the gutter around image tiles to ignore
|
|
134
142
|
* @param {function} [rawLayer.olAttribution] - optional function that takes a module:ol/Map~FrameState and returns a string or an array of strings representing source attributions
|
|
@@ -148,9 +156,10 @@ export function createLayer (rawLayer, layerParams = {}, options) {
|
|
|
148
156
|
|
|
149
157
|
return new Layer(Object.assign({
|
|
150
158
|
source,
|
|
151
|
-
minResolution: rawLayer.
|
|
152
|
-
maxResolution: rawLayer.
|
|
153
|
-
id: rawLayer.id
|
|
159
|
+
minResolution: typeof rawLayer.minResolution === "string" ? parseFloat(rawLayer.minResolution) : rawLayer.minResolution,
|
|
160
|
+
maxResolution: typeof rawLayer.maxResolution === "string" ? parseFloat(rawLayer.maxResolution) : rawLayer.maxResolution,
|
|
161
|
+
id: rawLayer.id,
|
|
162
|
+
extent: rawLayer.extent
|
|
154
163
|
}, layerParams));
|
|
155
164
|
}
|
|
156
165
|
|
package/src/layer/wmts.js
CHANGED
|
@@ -176,8 +176,8 @@ function createLayer (rawLayer, layerParams = {}) {
|
|
|
176
176
|
id: rawLayer.id,
|
|
177
177
|
source: new WMTS({}),
|
|
178
178
|
name: rawLayer.name,
|
|
179
|
-
minResolution: rawLayer.
|
|
180
|
-
maxResolution: rawLayer.
|
|
179
|
+
minResolution: typeof rawLayer.minResolution === "string" ? parseFloat(rawLayer.minResolution) : rawLayer.minResolution,
|
|
180
|
+
maxResolution: typeof rawLayer.maxResolution === "string" ? parseFloat(rawLayer.maxResolution) : rawLayer.maxResolution,
|
|
181
181
|
supported: ["2D", "3D"],
|
|
182
182
|
showSettings: true,
|
|
183
183
|
extent: null,
|
|
@@ -198,29 +198,27 @@ function prepareValueFromObject (key, mappingObj, properties) {
|
|
|
198
198
|
break;
|
|
199
199
|
}
|
|
200
200
|
case "html": {
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
201
|
+
if (preparedValue !== undefined) {
|
|
202
|
+
// create tag
|
|
203
|
+
if (mappingObj?.html?.tag) {
|
|
204
|
+
htmltag = document.createElement(mappingObj?.html?.tag);
|
|
205
|
+
}
|
|
206
|
+
// create innerHTML
|
|
207
|
+
if (mappingObj?.html?.innerHTML === "%value%") {
|
|
208
|
+
htmltag.innerHTML = preparedValue;
|
|
209
|
+
}
|
|
210
|
+
else if (mappingObj?.html?.innerHTML) {
|
|
211
|
+
htmltag.innerHTML = mappingObj?.html?.innerHTML;
|
|
212
|
+
}
|
|
213
|
+
if (htmltag) {
|
|
214
|
+
if (mappingObj?.html?.properties) {
|
|
215
|
+
htmltag = addPropertiesToHtmlTag(htmltag, mappingObj?.html?.properties, preparedValue);
|
|
216
|
+
}
|
|
217
|
+
preparedValue = serializer.serializeToString(htmltag);
|
|
218
|
+
// remove xmlns
|
|
219
|
+
preparedValue = preparedValue.replace(/ xmlns="(.*?)"/g, "");
|
|
217
220
|
}
|
|
218
|
-
preparedValue = serializer.serializeToString(htmltag);
|
|
219
|
-
// remove xmlns
|
|
220
|
-
preparedValue = preparedValue.replace(/ xmlns="(.*?)"/g, "");
|
|
221
|
-
|
|
222
221
|
}
|
|
223
|
-
|
|
224
222
|
break;
|
|
225
223
|
}
|
|
226
224
|
// default equals to mappingObj.type === "string"
|
|
@@ -216,7 +216,7 @@ function captureLegendFromFeature (styleId, legendInformation) {
|
|
|
216
216
|
}
|
|
217
217
|
|
|
218
218
|
/**
|
|
219
|
-
*
|
|
219
|
+
* Creates the style for the feature regarding the styleObject and sets style at feature.
|
|
220
220
|
* @param {String} styleObject id of the style
|
|
221
221
|
* @param {ol/feature} feature the feature to style
|
|
222
222
|
* @param {Boolean} isClustered is feature clustered
|
|
@@ -261,6 +261,7 @@ function createStyle (styleObject, feature, isClustered, wfsImgPathFromConfig) {
|
|
|
261
261
|
styleObjectGeometry.setText(getLabelStyle(feature, style, isClustered));
|
|
262
262
|
}
|
|
263
263
|
}
|
|
264
|
+
feature.setStyle(styleObjectGeometry);
|
|
264
265
|
return styleObjectGeometry;
|
|
265
266
|
}
|
|
266
267
|
|
|
@@ -1,5 +1,15 @@
|
|
|
1
1
|
import {createLegendInfo} from "./createLegendInfo";
|
|
2
2
|
|
|
3
|
+
/**
|
|
4
|
+
* Returns true, if sibling element's tag name end with 'complexType' and its name contains the featureType.
|
|
5
|
+
* @param {String} sibling XML-Element to inspect
|
|
6
|
+
* @param {String } featureType wfs feature type from layer without namespace
|
|
7
|
+
* @returns {boolean} true, if sibling element's tag name end with 'complexType' and its name contains the featureType
|
|
8
|
+
*/
|
|
9
|
+
function siblingContainsFeatureType (sibling, featureType) {
|
|
10
|
+
return sibling && sibling.tagName.endsWith("complexType") && sibling.hasAttribute("name") && sibling.getAttribute("name").includes(featureType);
|
|
11
|
+
}
|
|
12
|
+
|
|
3
13
|
/**
|
|
4
14
|
* Parses the xml with another structure to get the subelements from the layer
|
|
5
15
|
* @param {string} xml response xml
|
|
@@ -12,11 +22,18 @@ function getSubelementsFromXMLOtherStructure (xml, featureType) {
|
|
|
12
22
|
|
|
13
23
|
elements.forEach(element => {
|
|
14
24
|
if (element.getAttribute("name") === featureType) {
|
|
15
|
-
|
|
25
|
+
let sibling = element.nextElementSibling;
|
|
16
26
|
|
|
17
|
-
if (sibling
|
|
27
|
+
if (siblingContainsFeatureType(sibling, featureType)) {
|
|
18
28
|
subElements = Array.from(sibling.getElementsByTagNameNS("*", "element"));
|
|
19
29
|
}
|
|
30
|
+
else if (element.previousElementSibling) {
|
|
31
|
+
sibling = element.previousElementSibling;
|
|
32
|
+
|
|
33
|
+
if (siblingContainsFeatureType(sibling, featureType)) {
|
|
34
|
+
subElements = Array.from(sibling.getElementsByTagNameNS("*", "element"));
|
|
35
|
+
}
|
|
36
|
+
}
|
|
20
37
|
}
|
|
21
38
|
});
|
|
22
39
|
return subElements;
|
|
@@ -160,5 +177,7 @@ function getGeometryTypeFromOAF (rules, oafURL, collection, wfsImgPath, callback
|
|
|
160
177
|
|
|
161
178
|
export default {
|
|
162
179
|
getGeometryTypeFromWFS,
|
|
163
|
-
getGeometryTypeFromOAF
|
|
180
|
+
getGeometryTypeFromOAF,
|
|
181
|
+
getSubelementsFromXML,
|
|
182
|
+
getTypeAttributesFromSubelements
|
|
164
183
|
};
|
|
@@ -6,11 +6,12 @@ describe("tileset.js", function () {
|
|
|
6
6
|
|
|
7
7
|
beforeEach(() => {
|
|
8
8
|
global.Cesium = {};
|
|
9
|
-
global.Cesium.Cesium3DTileset =
|
|
9
|
+
global.Cesium.Cesium3DTileset = {};
|
|
10
|
+
global.Cesium.Cesium3DTileset.fromUrl = jest.fn();
|
|
10
11
|
global.Cesium.Cesium3DTileStyle = jest.fn(color => color);
|
|
11
12
|
attr = {
|
|
12
13
|
id: "4002",
|
|
13
|
-
name: "
|
|
14
|
+
name: "Gebäude LoD2",
|
|
14
15
|
url: "https://geoportal-hamburg.de/gdi3d/datasource-data/LoD2",
|
|
15
16
|
typ: "TileSet3D",
|
|
16
17
|
cesium3DTilesetOptions: {
|
|
@@ -28,7 +29,9 @@ describe("tileset.js", function () {
|
|
|
28
29
|
};
|
|
29
30
|
}
|
|
30
31
|
};
|
|
31
|
-
cesium3DTilesetSpy = jest.spyOn(global.Cesium, "
|
|
32
|
+
cesium3DTilesetSpy = jest.spyOn(global.Cesium.Cesium3DTileset, "fromUrl").mockImplementation(() => {
|
|
33
|
+
return Promise.resolve({});
|
|
34
|
+
});
|
|
32
35
|
console.warn = jest.fn();
|
|
33
36
|
});
|
|
34
37
|
|
|
@@ -38,21 +41,23 @@ describe("tileset.js", function () {
|
|
|
38
41
|
console.warn = consoleWarn;
|
|
39
42
|
});
|
|
40
43
|
|
|
41
|
-
function checkAttributes (layer, attrs) {
|
|
44
|
+
async function checkAttributes (layer, attrs) {
|
|
45
|
+
const tileset = await layer.tileset;
|
|
46
|
+
|
|
42
47
|
expect(layer.get("name")).toEqual(attrs.name);
|
|
43
48
|
expect(layer.get("typ")).toEqual(attrs.typ);
|
|
44
49
|
expect(layer.get("id")).toEqual(attrs.id);
|
|
45
|
-
expect(
|
|
50
|
+
expect(tileset.layerReferenceId).toEqual(attrs.id);
|
|
46
51
|
}
|
|
47
52
|
|
|
48
53
|
describe("createLayer", function () {
|
|
49
54
|
it("creates tileset layer without map", function () {
|
|
50
55
|
const layer = new Tileset(attr);
|
|
51
56
|
|
|
52
|
-
checkAttributes(layer, attr);
|
|
53
57
|
expect(layer.tileSet).toEqual(undefined);
|
|
54
58
|
expect(layer.tileset.show).toEqual(undefined);
|
|
55
59
|
expect(cesium3DTilesetSpy).toHaveBeenCalledTimes(1);
|
|
60
|
+
checkAttributes(layer, attr);
|
|
56
61
|
});
|
|
57
62
|
it("creates 2 tileset layers with map and checks attributes", function () {
|
|
58
63
|
const attr2 = {
|
|
@@ -70,40 +75,62 @@ describe("tileset.js", function () {
|
|
|
70
75
|
});
|
|
71
76
|
});
|
|
72
77
|
describe("setOpacity", function () {
|
|
73
|
-
it("calls setOpacity sets opacity to terrain style", function () {
|
|
78
|
+
it("calls setOpacity sets opacity to terrain style", function (done) {
|
|
74
79
|
const layer = new Tileset(attr, map);
|
|
75
80
|
|
|
76
81
|
layer.setOpacity(0.5);
|
|
77
82
|
|
|
78
|
-
|
|
83
|
+
layer.tileset.then(function (tileset) {
|
|
84
|
+
if (tileset) {
|
|
85
|
+
expect(tileset.style).toEqual({color: "rgba(255, 255, 255, 0.5)"});
|
|
86
|
+
done();
|
|
87
|
+
}
|
|
88
|
+
});
|
|
79
89
|
});
|
|
80
90
|
});
|
|
81
91
|
describe("setVisible", function () {
|
|
82
|
-
it("calls setVisible without map shall not fail", function () {
|
|
92
|
+
it("calls setVisible without map shall not fail", function (done) {
|
|
83
93
|
const layer = new Tileset(attr, map);
|
|
84
94
|
|
|
85
95
|
expect(layer.tileset.show).toEqual(undefined);
|
|
86
96
|
layer.setVisible(true);
|
|
87
97
|
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
98
|
+
layer.tileset.then(function (tileset) {
|
|
99
|
+
if (tileset) {
|
|
100
|
+
checkAttributes(layer, attr);
|
|
101
|
+
expect(layer.tileset.show).toEqual(undefined);
|
|
102
|
+
expect(cesium3DTilesetSpy).toHaveBeenCalledTimes(1);
|
|
103
|
+
done();
|
|
104
|
+
}
|
|
105
|
+
});
|
|
91
106
|
});
|
|
92
|
-
it("sets the tileset layer visible", function () {
|
|
107
|
+
it("sets the tileset layer visible", function (done) {
|
|
93
108
|
const layer = new Tileset(attr, map);
|
|
94
109
|
|
|
95
110
|
layer.setVisible(true, map);
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
111
|
+
|
|
112
|
+
layer.tileset.then(function (tileset) {
|
|
113
|
+
if (tileset) {
|
|
114
|
+
checkAttributes(layer, attr);
|
|
115
|
+
expect(tileset.show).toEqual(true);
|
|
116
|
+
expect(cesium3DTilesetSpy).toHaveBeenCalledTimes(1);
|
|
117
|
+
done();
|
|
118
|
+
}
|
|
119
|
+
});
|
|
99
120
|
});
|
|
100
|
-
it("sets the tileset layer not visible", function () {
|
|
121
|
+
it("sets the tileset layer not visible", function (done) {
|
|
101
122
|
const layer = new Tileset(attr, map);
|
|
102
123
|
|
|
103
124
|
layer.setVisible(false, map);
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
125
|
+
|
|
126
|
+
layer.tileset.then(function (tileset) {
|
|
127
|
+
if (tileset) {
|
|
128
|
+
checkAttributes(layer, attr);
|
|
129
|
+
expect(tileset.show).toEqual(false);
|
|
130
|
+
expect(cesium3DTilesetSpy).toHaveBeenCalledTimes(1);
|
|
131
|
+
done();
|
|
132
|
+
}
|
|
133
|
+
});
|
|
107
134
|
});
|
|
108
135
|
});
|
|
109
136
|
describe("get", function () {
|
package/test/layer/wms.test.js
CHANGED
|
@@ -213,11 +213,12 @@ describe("wms.js", function () {
|
|
|
213
213
|
name: "name",
|
|
214
214
|
layers: "layer1, layer2"
|
|
215
215
|
},
|
|
216
|
-
layer = wms.createLayer({singleTile: false, tilesize: "10"}, layerParams, options);
|
|
216
|
+
layer = wms.createLayer({singleTile: false, tilesize: "10", extent: [10, 20, 11, 22]}, layerParams, options);
|
|
217
217
|
|
|
218
218
|
expect(layer).toBeInstanceOf(TileLayer);
|
|
219
219
|
expect(layer.get("name")).toEqual("name");
|
|
220
220
|
expect(layer.get("layers")).toEqual("layer1, layer2");
|
|
221
|
+
expect(layer.get("extent")).toEqual([10, 20, 11, 22]);
|
|
221
222
|
expect(layer.getSource().getTileGrid()).toBeInstanceOf(TileGrid);
|
|
222
223
|
expect(layer.getSource().getTileGrid().getOrigin()).toEqual(options.origin);
|
|
223
224
|
expect(layer.getSource().getTileGrid().getResolutions()).toEqual(options.resolutions);
|
|
@@ -303,14 +303,13 @@ describe("src/utils/attributeMapper.js", () => {
|
|
|
303
303
|
url: "<a href=\"http://random.url.de\"></a>"
|
|
304
304
|
});
|
|
305
305
|
});
|
|
306
|
-
it("should map object with mapping object and type:html and tag a", () => {
|
|
306
|
+
it("should NOT map object with mapping object and type:html and tag a - value not defined", () => {
|
|
307
307
|
const mappingObj = {
|
|
308
308
|
random_url: {
|
|
309
309
|
name: "url",
|
|
310
310
|
type: "html",
|
|
311
311
|
html: {
|
|
312
312
|
tag: "a",
|
|
313
|
-
innerHTML: "%value%",
|
|
314
313
|
properties: {
|
|
315
314
|
href: "%value%"
|
|
316
315
|
}
|
|
@@ -319,9 +318,28 @@ describe("src/utils/attributeMapper.js", () => {
|
|
|
319
318
|
};
|
|
320
319
|
|
|
321
320
|
expect(mapAttributes(props, mappingObj)).toEqual({
|
|
322
|
-
url: "<a href=\"http://random.url.de\"
|
|
321
|
+
url: "<a href=\"http://random.url.de\"></a>"
|
|
323
322
|
});
|
|
324
323
|
});
|
|
324
|
+
it("should map object with mapping object and type:html and tag a", () => {
|
|
325
|
+
const mappingObj = {
|
|
326
|
+
random_url: {
|
|
327
|
+
name: "url",
|
|
328
|
+
type: "html",
|
|
329
|
+
html: {
|
|
330
|
+
tag: "a",
|
|
331
|
+
innerHTML: "%value%",
|
|
332
|
+
properties: {
|
|
333
|
+
href: "%value%"
|
|
334
|
+
}
|
|
335
|
+
}
|
|
336
|
+
}
|
|
337
|
+
},
|
|
338
|
+
properties = Object.assign({}, props);
|
|
339
|
+
|
|
340
|
+
properties.random_url = undefined;
|
|
341
|
+
expect(mapAttributes(properties, mappingObj)).toEqual({});
|
|
342
|
+
});
|
|
325
343
|
it("should map object with mapping object and type:html and tag a without innerHTML and properties", () => {
|
|
326
344
|
const mappingObj = {
|
|
327
345
|
random_url: {
|
|
@@ -238,6 +238,7 @@ describe("createStyle", () => {
|
|
|
238
238
|
style = createStyle.createStyle(styleObject, jsonObjects[0], isClustered, wfsImgPathFromConfig);
|
|
239
239
|
|
|
240
240
|
expect(style).toBeInstanceOf(Style);
|
|
241
|
+
expect(jsonObjects[0].getStyle()).toEqual(style);
|
|
241
242
|
});
|
|
242
243
|
|
|
243
244
|
it("should return the correct style for a feature with geometry of type MultiLineString ", () => {
|
|
@@ -262,6 +263,7 @@ describe("createStyle", () => {
|
|
|
262
263
|
style.forEach(aStyle => {
|
|
263
264
|
expect(aStyle).toBeInstanceOf(Style);
|
|
264
265
|
});
|
|
266
|
+
expect(multiLineStringFeature.getStyle()).toEqual(style);
|
|
265
267
|
});
|
|
266
268
|
|
|
267
269
|
it("should return the correct style for a feature with geometry of type MultiPolygon ", () => {
|
|
@@ -295,6 +297,7 @@ describe("createStyle", () => {
|
|
|
295
297
|
style.forEach(aStyle => {
|
|
296
298
|
expect(aStyle).toBeInstanceOf(Style);
|
|
297
299
|
});
|
|
300
|
+
expect(multiPolygonFeature.getStyle()).toEqual(style);
|
|
298
301
|
});
|
|
299
302
|
|
|
300
303
|
it("should return the correct style for a feature with geometry of type GeometryCollection ", () => {
|
|
@@ -328,6 +331,7 @@ describe("createStyle", () => {
|
|
|
328
331
|
style.forEach(aStyle => {
|
|
329
332
|
expect(aStyle).toBeInstanceOf(Style);
|
|
330
333
|
});
|
|
334
|
+
expect(geometryCollectionFeature.getStyle()).toEqual(style);
|
|
331
335
|
});
|
|
332
336
|
|
|
333
337
|
it("should return the correct style for a feature with geometry of type MultiPoint ", () => {
|
|
@@ -361,6 +365,7 @@ describe("createStyle", () => {
|
|
|
361
365
|
style.forEach(aStyle => {
|
|
362
366
|
expect(aStyle).toBeInstanceOf(Style);
|
|
363
367
|
});
|
|
368
|
+
expect(multiPointFeature.getStyle()).toEqual(style);
|
|
364
369
|
});
|
|
365
370
|
});
|
|
366
371
|
|
|
@@ -0,0 +1,141 @@
|
|
|
1
|
+
import getGeometryTypeFromService from "../../../src/vectorStyle/lib/getGeometryTypeFromService";
|
|
2
|
+
const fs = require("fs");
|
|
3
|
+
/* eslint-disable no-sync */
|
|
4
|
+
|
|
5
|
+
describe("getGeometryTypeFromService", function () {
|
|
6
|
+
describe("getSubelementsFromXML and getTypeAttributesFromSubelements", function () {
|
|
7
|
+
it("desribeFeatureType response opengis schema contains Point", function () {
|
|
8
|
+
let attributes = null;
|
|
9
|
+
const data = fs.readFileSync("test/vectorStyle/lib/resources/describeFeatureType_opengis_point.xml", "utf8"),
|
|
10
|
+
featureType = "bike_und_ride",
|
|
11
|
+
xml = new window.DOMParser().parseFromString(data, "text/xml"),
|
|
12
|
+
subElements = getGeometryTypeFromService.getSubelementsFromXML(xml, featureType);
|
|
13
|
+
|
|
14
|
+
expect(subElements.length).toEqual(11);
|
|
15
|
+
|
|
16
|
+
attributes = getGeometryTypeFromService.getTypeAttributesFromSubelements(subElements);
|
|
17
|
+
expect(attributes.length).toEqual(1);
|
|
18
|
+
expect(attributes[0]).toEqual("Point");
|
|
19
|
+
});
|
|
20
|
+
|
|
21
|
+
it("desribeFeatureType response opengis schema contains 'Geometry'", function () {
|
|
22
|
+
let attributes = null;
|
|
23
|
+
const data = fs.readFileSync("test/vectorStyle/lib/resources/describeFeatureType_opengis_geometry.xml", "utf8"),
|
|
24
|
+
featureType = "hamburgconvention",
|
|
25
|
+
xml = new window.DOMParser().parseFromString(data, "text/xml"),
|
|
26
|
+
subElements = getGeometryTypeFromService.getSubelementsFromXML(xml, featureType);
|
|
27
|
+
|
|
28
|
+
expect(subElements.length).toEqual(56);
|
|
29
|
+
|
|
30
|
+
attributes = getGeometryTypeFromService.getTypeAttributesFromSubelements(subElements);
|
|
31
|
+
expect(attributes.length).toEqual(3);
|
|
32
|
+
expect(attributes[0]).toEqual("Point");
|
|
33
|
+
expect(attributes[1]).toEqual("Polygon");
|
|
34
|
+
expect(attributes[2]).toEqual("LineString");
|
|
35
|
+
});
|
|
36
|
+
|
|
37
|
+
it("desribeFeatureType response opengis schema with namespace contains 'Geometry'", function () {
|
|
38
|
+
let attributes = null;
|
|
39
|
+
const data = fs.readFileSync("test/vectorStyle/lib/resources/describeFeatureType_xsd_opengis_geometry.xml", "utf8"),
|
|
40
|
+
featureType = "s_parkraumbewirt",
|
|
41
|
+
xml = new window.DOMParser().parseFromString(data, "text/xml"),
|
|
42
|
+
subElements = getGeometryTypeFromService.getSubelementsFromXML(xml, featureType);
|
|
43
|
+
|
|
44
|
+
expect(subElements.length).toEqual(6);
|
|
45
|
+
|
|
46
|
+
attributes = getGeometryTypeFromService.getTypeAttributesFromSubelements(subElements);
|
|
47
|
+
expect(attributes.length).toEqual(3);
|
|
48
|
+
expect(attributes[0]).toEqual("Point");
|
|
49
|
+
expect(attributes[1]).toEqual("Polygon");
|
|
50
|
+
expect(attributes[2]).toEqual("LineString");
|
|
51
|
+
});
|
|
52
|
+
|
|
53
|
+
it("desribeFeatureType response opengis schema with namespace contains 'Geometry' use styleGeometryType", function () {
|
|
54
|
+
let attributes = null;
|
|
55
|
+
const data = fs.readFileSync("test/vectorStyle/lib/resources/describeFeatureType_xsd_opengis_geometry.xml", "utf8"),
|
|
56
|
+
featureType = "s_parkraumbewirt",
|
|
57
|
+
styleGeometryType = "Point",
|
|
58
|
+
xml = new window.DOMParser().parseFromString(data, "text/xml"),
|
|
59
|
+
subElements = getGeometryTypeFromService.getSubelementsFromXML(xml, featureType);
|
|
60
|
+
|
|
61
|
+
expect(subElements.length).toEqual(6);
|
|
62
|
+
|
|
63
|
+
attributes = getGeometryTypeFromService.getTypeAttributesFromSubelements(subElements, styleGeometryType);
|
|
64
|
+
expect(attributes.length).toEqual(1);
|
|
65
|
+
expect(attributes[0]).toEqual("Point");
|
|
66
|
+
});
|
|
67
|
+
|
|
68
|
+
it("desribeFeatureType response opengis schema contains 'MultiPolygon'", function () {
|
|
69
|
+
let attributes = null;
|
|
70
|
+
const data = fs.readFileSync("test/vectorStyle/lib/resources/describeFeatureType_opengis_multi.xml", "utf8"),
|
|
71
|
+
featureType = "umring",
|
|
72
|
+
xml = new window.DOMParser().parseFromString(data, "text/xml"),
|
|
73
|
+
subElements = getGeometryTypeFromService.getSubelementsFromXML(xml, featureType);
|
|
74
|
+
|
|
75
|
+
expect(subElements.length).toEqual(1);
|
|
76
|
+
|
|
77
|
+
attributes = getGeometryTypeFromService.getTypeAttributesFromSubelements(subElements);
|
|
78
|
+
expect(attributes.length).toEqual(1);
|
|
79
|
+
expect(attributes[0]).toEqual("MultiPolygon");
|
|
80
|
+
});
|
|
81
|
+
|
|
82
|
+
it("desribeFeatureType response opengis schema contains 'MultiLineString'", function () {
|
|
83
|
+
let attributes = null;
|
|
84
|
+
const data = fs.readFileSync("test/vectorStyle/lib/resources/describeFeatureType_opengis_multi.xml", "utf8"),
|
|
85
|
+
featureType = "strecken",
|
|
86
|
+
xml = new window.DOMParser().parseFromString(data, "text/xml"),
|
|
87
|
+
subElements = getGeometryTypeFromService.getSubelementsFromXML(xml, featureType);
|
|
88
|
+
|
|
89
|
+
expect(subElements.length).toEqual(3);
|
|
90
|
+
|
|
91
|
+
attributes = getGeometryTypeFromService.getTypeAttributesFromSubelements(subElements);
|
|
92
|
+
expect(attributes.length).toEqual(1);
|
|
93
|
+
expect(attributes[0]).toEqual("MultiLineString");
|
|
94
|
+
});
|
|
95
|
+
|
|
96
|
+
it("desribeFeatureType response opengis schema contains 'Polygon'", function () {
|
|
97
|
+
let attributes = null;
|
|
98
|
+
const data = fs.readFileSync("test/vectorStyle/lib/resources/describeFeatureType_opengis_polygon.xml", "utf8"),
|
|
99
|
+
featureType = "nr_f_biosphaerenreservat",
|
|
100
|
+
xml = new window.DOMParser().parseFromString(data, "text/xml"),
|
|
101
|
+
subElements = getGeometryTypeFromService.getSubelementsFromXML(xml, featureType);
|
|
102
|
+
|
|
103
|
+
expect(subElements.length).toEqual(9);
|
|
104
|
+
|
|
105
|
+
attributes = getGeometryTypeFromService.getTypeAttributesFromSubelements(subElements);
|
|
106
|
+
expect(attributes.length).toEqual(1);
|
|
107
|
+
expect(attributes[0]).toEqual("Polygon");
|
|
108
|
+
});
|
|
109
|
+
|
|
110
|
+
it("desribeFeatureType response geoserver schema contains 'Point'", function () {
|
|
111
|
+
let attributes = null;
|
|
112
|
+
const data = fs.readFileSync("test/vectorStyle/lib/resources/describeFeatureType_geoserver.xml", "utf8"),
|
|
113
|
+
featureType = "nextbike_floating_berlin",
|
|
114
|
+
xml = new window.DOMParser().parseFromString(data, "text/xml"),
|
|
115
|
+
subElements = getGeometryTypeFromService.getSubelementsFromXML(xml, featureType);
|
|
116
|
+
|
|
117
|
+
expect(subElements.length).toEqual(4);
|
|
118
|
+
|
|
119
|
+
attributes = getGeometryTypeFromService.getTypeAttributesFromSubelements(subElements);
|
|
120
|
+
expect(attributes.length).toEqual(1);
|
|
121
|
+
expect(attributes[0]).toEqual("Point");
|
|
122
|
+
});
|
|
123
|
+
|
|
124
|
+
it("desribeFeatureType response geoserver schema contains 'Point', nextbike_stations_berlin", function () {
|
|
125
|
+
let attributes = null;
|
|
126
|
+
const data = fs.readFileSync("test/vectorStyle/lib/resources/describeFeatureType_geoserver.xml", "utf8"),
|
|
127
|
+
featureType = "nextbike_stations_berlin",
|
|
128
|
+
xml = new window.DOMParser().parseFromString(data, "text/xml"),
|
|
129
|
+
subElements = getGeometryTypeFromService.getSubelementsFromXML(xml, featureType);
|
|
130
|
+
|
|
131
|
+
expect(subElements.length).toEqual(8);
|
|
132
|
+
|
|
133
|
+
attributes = getGeometryTypeFromService.getTypeAttributesFromSubelements(subElements);
|
|
134
|
+
expect(attributes.length).toEqual(1);
|
|
135
|
+
expect(attributes[0]).toEqual("Point");
|
|
136
|
+
});
|
|
137
|
+
});
|
|
138
|
+
|
|
139
|
+
});
|
|
140
|
+
|
|
141
|
+
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:gml="http://www.opengis.net/gml" xmlns:mdhwfs="mdhwfs" elementFormDefault="qualified" targetNamespace="mdhwfs">
|
|
2
|
+
<xsd:import namespace="http://www.opengis.net/gml" schemaLocation="http://api.viz.berlin.de/geoserver/schemas/gml/3.1.1/base/gml.xsd"/>
|
|
3
|
+
<xsd:complexType name="baustellen_sperrungenType">
|
|
4
|
+
<xsd:complexContent>
|
|
5
|
+
<xsd:extension base="gml:AbstractFeatureType">
|
|
6
|
+
<xsd:sequence>
|
|
7
|
+
<xsd:element maxOccurs="1" minOccurs="0" name="id" nillable="true" type="xsd:string"/>
|
|
8
|
+
<xsd:element maxOccurs="1" minOccurs="0" name="tstore" nillable="true" type="xsd:dateTime"/>
|
|
9
|
+
<xsd:element maxOccurs="1" minOccurs="0" name="objectstate" nillable="true" type="xsd:string"/>
|
|
10
|
+
<xsd:element maxOccurs="1" minOccurs="0" name="subtype" nillable="true" type="xsd:string"/>
|
|
11
|
+
<xsd:element maxOccurs="1" minOccurs="0" name="severity" nillable="true" type="xsd:string"/>
|
|
12
|
+
<xsd:element maxOccurs="1" minOccurs="0" name="validity" nillable="true" type="xsd:string"/>
|
|
13
|
+
<xsd:element maxOccurs="1" minOccurs="0" name="direction" nillable="true" type="xsd:string"/>
|
|
14
|
+
<xsd:element maxOccurs="1" minOccurs="0" name="icon" nillable="true" type="xsd:string"/>
|
|
15
|
+
<xsd:element maxOccurs="1" minOccurs="0" name="is_future" nillable="true" type="xsd:boolean"/>
|
|
16
|
+
<xsd:element maxOccurs="1" minOccurs="0" name="street" nillable="true" type="xsd:string"/>
|
|
17
|
+
<xsd:element maxOccurs="1" minOccurs="0" name="section" nillable="true" type="xsd:string"/>
|
|
18
|
+
<xsd:element maxOccurs="1" minOccurs="0" name="content" nillable="true" type="xsd:string"/>
|
|
19
|
+
<xsd:element maxOccurs="1" minOccurs="0" name="wkb_geometry" nillable="true" type="gml:MultiGeometryPropertyType"/>
|
|
20
|
+
</xsd:sequence>
|
|
21
|
+
</xsd:extension>
|
|
22
|
+
</xsd:complexContent>
|
|
23
|
+
</xsd:complexType>
|
|
24
|
+
<xsd:element name="baustellen_sperrungen" substitutionGroup="gml:_Feature" type="mdhwfs:baustellen_sperrungenType"/>
|
|
25
|
+
<xsd:complexType name="nextbike_floating_berlinType">
|
|
26
|
+
<xsd:complexContent>
|
|
27
|
+
<xsd:extension base="gml:AbstractFeatureType">
|
|
28
|
+
<xsd:sequence>
|
|
29
|
+
<xsd:element maxOccurs="1" minOccurs="0" name="bike_id" nillable="true" type="xsd:string"/>
|
|
30
|
+
<xsd:element maxOccurs="1" minOccurs="0" name="lat" nillable="true" type="xsd:decimal"/>
|
|
31
|
+
<xsd:element maxOccurs="1" minOccurs="0" name="lon" nillable="true" type="xsd:decimal"/>
|
|
32
|
+
<xsd:element maxOccurs="1" minOccurs="0" name="geom" nillable="true" type="gml:PointPropertyType"/>
|
|
33
|
+
</xsd:sequence>
|
|
34
|
+
</xsd:extension>
|
|
35
|
+
</xsd:complexContent>
|
|
36
|
+
</xsd:complexType>
|
|
37
|
+
<xsd:element name="nextbike_floating_berlin" substitutionGroup="gml:_Feature" type="mdhwfs:nextbike_floating_berlinType"/>
|
|
38
|
+
<xsd:complexType name="nextbike_stations_berlinType">
|
|
39
|
+
<xsd:complexContent>
|
|
40
|
+
<xsd:extension base="gml:AbstractFeatureType">
|
|
41
|
+
<xsd:sequence>
|
|
42
|
+
<xsd:element maxOccurs="1" minOccurs="0" name="station_name" nillable="true" type="xsd:string"/>
|
|
43
|
+
<xsd:element maxOccurs="1" minOccurs="0" name="station_id" nillable="true" type="xsd:int"/>
|
|
44
|
+
<xsd:element maxOccurs="1" minOccurs="0" name="short_name" nillable="true" type="xsd:int"/>
|
|
45
|
+
<xsd:element maxOccurs="1" minOccurs="0" name="lat" nillable="true" type="xsd:decimal"/>
|
|
46
|
+
<xsd:element maxOccurs="1" minOccurs="0" name="lon" nillable="true" type="xsd:decimal"/>
|
|
47
|
+
<xsd:element maxOccurs="1" minOccurs="0" name="capacity" nillable="true" type="xsd:int"/>
|
|
48
|
+
<xsd:element maxOccurs="1" minOccurs="0" name="bikes_avaílable" nillable="true" type="xsd:int"/>
|
|
49
|
+
<xsd:element maxOccurs="1" minOccurs="0" name="geom" nillable="true" type="gml:PointPropertyType"/>
|
|
50
|
+
</xsd:sequence>
|
|
51
|
+
</xsd:extension>
|
|
52
|
+
</xsd:complexContent>
|
|
53
|
+
</xsd:complexType>
|
|
54
|
+
<xsd:element name="nextbike_stations_berlin" substitutionGroup="gml:_Feature" type="mdhwfs:nextbike_stations_berlinType"/>
|
|
55
|
+
<xsd:complexType name="parkdatenType">
|
|
56
|
+
<xsd:complexContent>
|
|
57
|
+
<xsd:extension base="gml:AbstractFeatureType">
|
|
58
|
+
<xsd:sequence>
|
|
59
|
+
<xsd:element maxOccurs="1" minOccurs="0" name="markierung_parkraum" nillable="true" type="xsd:string"/>
|
|
60
|
+
<xsd:element maxOccurs="1" minOccurs="0" name="beschraenkungen_variieren_ueber_wochentage" nillable="true" type="xsd:string"/>
|
|
61
|
+
<xsd:element maxOccurs="1" minOccurs="0" name="errechnete_anzahl_parkplaetze" nillable="true" type="xsd:int"/>
|
|
62
|
+
<xsd:element maxOccurs="1" minOccurs="0" name="polygon_id" nillable="true" type="xsd:string"/>
|
|
63
|
+
<xsd:element maxOccurs="1" minOccurs="0" name="ausrichtung" nillable="true" type="xsd:string"/>
|
|
64
|
+
<xsd:element maxOccurs="1" minOccurs="0" name="parkort" nillable="true" type="xsd:string"/>
|
|
65
|
+
<xsd:element maxOccurs="1" minOccurs="0" name="parkgebuehr" nillable="true" type="xsd:string"/>
|
|
66
|
+
<xsd:element maxOccurs="1" minOccurs="0" name="geltungszeit_der_beschraenkung" nillable="true" type="xsd:string"/>
|
|
67
|
+
<xsd:element maxOccurs="1" minOccurs="0" name="geltungszeit_der_hoechstparkdauer" nillable="true" type="xsd:string"/>
|
|
68
|
+
<xsd:element maxOccurs="1" minOccurs="0" name="strassenname" nillable="true" type="xsd:string"/>
|
|
69
|
+
<xsd:element maxOccurs="1" minOccurs="0" name="ladesaeule" nillable="true" type="xsd:string"/>
|
|
70
|
+
<xsd:element maxOccurs="1" minOccurs="0" name="hoechstparkdauer" nillable="true" type="xsd:string"/>
|
|
71
|
+
<xsd:element maxOccurs="1" minOccurs="0" name="carsharing" nillable="true" type="xsd:string"/>
|
|
72
|
+
<xsd:element maxOccurs="1" minOccurs="0" name="beschraenkung" nillable="true" type="xsd:string"/>
|
|
73
|
+
<xsd:element maxOccurs="1" minOccurs="0" name="grund_fuer_beschraenkung" nillable="true" type="xsd:string"/>
|
|
74
|
+
<xsd:element maxOccurs="1" minOccurs="0" name="nur_schwerbehinderte" nillable="true" type="xsd:string"/>
|
|
75
|
+
<xsd:element maxOccurs="1" minOccurs="0" name="bewirtschaftungszeit" nillable="true" type="xsd:string"/>
|
|
76
|
+
<xsd:element maxOccurs="1" minOccurs="0" name="zone" nillable="true" type="xsd:string"/>
|
|
77
|
+
<xsd:element maxOccurs="1" minOccurs="0" name="strassen_id" nillable="true" type="xsd:string"/>
|
|
78
|
+
<xsd:element maxOccurs="1" minOccurs="0" name="geom" nillable="true" type="gml:SurfacePropertyType"/>
|
|
79
|
+
</xsd:sequence>
|
|
80
|
+
</xsd:extension>
|
|
81
|
+
</xsd:complexContent>
|
|
82
|
+
</xsd:complexType>
|
|
83
|
+
<xsd:element name="parkdaten" substitutionGroup="gml:_Feature" type="mdhwfs:parkdatenType"/>
|
|
84
|
+
<xsd:complexType name="sharenow_berlinType">
|
|
85
|
+
<xsd:complexContent>
|
|
86
|
+
<xsd:extension base="gml:AbstractFeatureType">
|
|
87
|
+
<xsd:sequence>
|
|
88
|
+
<xsd:element maxOccurs="1" minOccurs="0" name="v_id" nillable="true" type="xsd:string"/>
|
|
89
|
+
<xsd:element maxOccurs="1" minOccurs="0" name="address" nillable="true" type="xsd:string"/>
|
|
90
|
+
<xsd:element maxOccurs="1" minOccurs="0" name="buildseries" nillable="true" type="xsd:string"/>
|
|
91
|
+
<xsd:element maxOccurs="1" minOccurs="0" name="fueltype" nillable="true" type="xsd:string"/>
|
|
92
|
+
<xsd:element maxOccurs="1" minOccurs="0" name="fuellevel" nillable="true" type="xsd:int"/>
|
|
93
|
+
<xsd:element maxOccurs="1" minOccurs="0" name="plate" nillable="true" type="xsd:string"/>
|
|
94
|
+
<xsd:element maxOccurs="1" minOccurs="0" name="lat" nillable="true" type="xsd:decimal"/>
|
|
95
|
+
<xsd:element maxOccurs="1" minOccurs="0" name="lon" nillable="true" type="xsd:decimal"/>
|
|
96
|
+
<xsd:element maxOccurs="1" minOccurs="0" name="geom" nillable="true" type="gml:PointPropertyType"/>
|
|
97
|
+
</xsd:sequence>
|
|
98
|
+
</xsd:extension>
|
|
99
|
+
</xsd:complexContent>
|
|
100
|
+
</xsd:complexType>
|
|
101
|
+
<xsd:element name="sharenow_berlin" substitutionGroup="gml:_Feature" type="mdhwfs:sharenow_berlinType"/>
|
|
102
|
+
</xsd:schema>
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
<schema xmlns="http://www.w3.org/2001/XMLSchema" xmlns:gml="http://www.opengis.net/gml" xmlns:app="http://www.deegree.org/app" xmlns:xlink="http://www.w3.org/1999/xlink" targetNamespace="http://www.deegree.org/app" elementFormDefault="qualified" attributeFormDefault="unqualified">
|
|
2
|
+
<import namespace="http://www.opengis.net/gml" schemaLocation="http://schemas.opengis.net/gml/3.1.1/base/gml.xsd"/>
|
|
3
|
+
<element name="hamburgconvention" substitutionGroup="gml:_Feature">
|
|
4
|
+
<complexType>
|
|
5
|
+
<complexContent>
|
|
6
|
+
<extension base="gml:AbstractFeatureType">
|
|
7
|
+
<sequence>
|
|
8
|
+
<element name="flaechenname" minOccurs="0" type="string"/>
|
|
9
|
+
<element name="flaechenid" minOccurs="0" type="decimal"/>
|
|
10
|
+
<element name="bezirk" minOccurs="0" type="string"/>
|
|
11
|
+
<element name="stadtteil" minOccurs="0" type="string"/>
|
|
12
|
+
<element name="flaeche_gesamt_m" minOccurs="0" type="decimal"/>
|
|
13
|
+
<element name="flaeche_eventlotse_m" minOccurs="0" type="decimal"/>
|
|
14
|
+
<element name="dist_flghf_km" minOccurs="0" type="decimal"/>
|
|
15
|
+
<element name="dist_hbf_km" minOccurs="0" type="decimal"/>
|
|
16
|
+
<element name="dist_ubahn_m" minOccurs="0" type="decimal"/>
|
|
17
|
+
<element name="dist_sbahn_m" minOccurs="0" type="decimal"/>
|
|
18
|
+
<element name="dist_bus_m" minOccurs="0" type="decimal"/>
|
|
19
|
+
<element name="dist_faehre_m" minOccurs="0" type="decimal"/>
|
|
20
|
+
<element name="ubahn" minOccurs="0" type="string"/>
|
|
21
|
+
<element name="sbahn" minOccurs="0" type="string"/>
|
|
22
|
+
<element name="bus" minOccurs="0" type="string"/>
|
|
23
|
+
<element name="faehre" minOccurs="0" type="string"/>
|
|
24
|
+
<element name="plz" minOccurs="0" type="decimal"/>
|
|
25
|
+
<element name="anschluss" minOccurs="0" type="string"/>
|
|
26
|
+
<element name="anschluss_en" minOccurs="0" type="string"/>
|
|
27
|
+
<element name="hinweisstempel" minOccurs="0" type="string"/>
|
|
28
|
+
<element name="hinweisstempel_en" minOccurs="0" type="string"/>
|
|
29
|
+
<element name="bild" minOccurs="0" type="string"/>
|
|
30
|
+
<element name="video" minOccurs="0" type="string"/>
|
|
31
|
+
<element name="dokument" minOccurs="0" type="string"/>
|
|
32
|
+
<element name="flaechengeber" minOccurs="0" type="string"/>
|
|
33
|
+
<element name="flaechengeber_en" minOccurs="0" type="string"/>
|
|
34
|
+
<element name="premiumflaeche" minOccurs="0" type="boolean"/>
|
|
35
|
+
<element name="kontaktname" minOccurs="0" type="string"/>
|
|
36
|
+
<element name="kontakttel" minOccurs="0" type="string"/>
|
|
37
|
+
<element name="kontaktmail" minOccurs="0" type="string"/>
|
|
38
|
+
<element name="flaechengeber2" minOccurs="0" type="string"/>
|
|
39
|
+
<element name="flaechengeber2_en" minOccurs="0" type="string"/>
|
|
40
|
+
<element name="kontaktname2" minOccurs="0" type="string"/>
|
|
41
|
+
<element name="kontakttel2" minOccurs="0" type="string"/>
|
|
42
|
+
<element name="kontaktmail2" minOccurs="0" type="string"/>
|
|
43
|
+
<element name="beschreibung" minOccurs="0" type="string"/>
|
|
44
|
+
<element name="beschreibung_en" minOccurs="0" type="string"/>
|
|
45
|
+
<element name="nichtverfuegbarvon" minOccurs="0" type="string"/>
|
|
46
|
+
<element name="nichtverfuegbarbis" minOccurs="0" type="string"/>
|
|
47
|
+
<element name="strasse" minOccurs="0" type="string"/>
|
|
48
|
+
<element name="hausnr" minOccurs="0" type="string"/>
|
|
49
|
+
<element name="boden" minOccurs="0" type="string"/>
|
|
50
|
+
<element name="boden_en" minOccurs="0" type="string"/>
|
|
51
|
+
<element name="emission" minOccurs="0" type="string"/>
|
|
52
|
+
<element name="url" minOccurs="0" type="string"/>
|
|
53
|
+
<element name="url_en" minOccurs="0" type="string"/>
|
|
54
|
+
<element name="x_min" minOccurs="0" type="decimal"/>
|
|
55
|
+
<element name="x_max" minOccurs="0" type="decimal"/>
|
|
56
|
+
<element name="y_min" minOccurs="0" type="decimal"/>
|
|
57
|
+
<element name="y_max" minOccurs="0" type="decimal"/>
|
|
58
|
+
<element name="x_min_klein" minOccurs="0" type="decimal"/>
|
|
59
|
+
<element name="x_max_klein" minOccurs="0" type="decimal"/>
|
|
60
|
+
<element name="y_min_klein" minOccurs="0" type="decimal"/>
|
|
61
|
+
<element name="y_max_klein" minOccurs="0" type="decimal"/>
|
|
62
|
+
<element name="active" minOccurs="0" type="boolean"/>
|
|
63
|
+
<element name="the_geom" minOccurs="0" type="gml:GeometryPropertyType"/>
|
|
64
|
+
</sequence>
|
|
65
|
+
</extension>
|
|
66
|
+
</complexContent>
|
|
67
|
+
</complexType>
|
|
68
|
+
</element>
|
|
69
|
+
</schema>
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
<schema xmlns="http://www.w3.org/2001/XMLSchema" xmlns:gml="http://www.opengis.net/gml" xmlns:app="http://www.deegree.org/app" xmlns:xlink="http://www.w3.org/1999/xlink" targetNamespace="http://www.deegree.org/app" elementFormDefault="qualified" attributeFormDefault="unqualified">
|
|
2
|
+
<import namespace="http://www.opengis.net/gml" schemaLocation="http://schemas.opengis.net/gml/3.1.1/base/gml.xsd"/>
|
|
3
|
+
<element name="umring" substitutionGroup="gml:_Feature">
|
|
4
|
+
<complexType>
|
|
5
|
+
<complexContent>
|
|
6
|
+
<extension base="gml:AbstractFeatureType">
|
|
7
|
+
<sequence>
|
|
8
|
+
<element name="geom" minOccurs="0" type="gml:MultiPolygonPropertyType"/>
|
|
9
|
+
</sequence>
|
|
10
|
+
</extension>
|
|
11
|
+
</complexContent>
|
|
12
|
+
</complexType>
|
|
13
|
+
</element>
|
|
14
|
+
<element name="strecken" substitutionGroup="gml:_Feature">
|
|
15
|
+
<complexType>
|
|
16
|
+
<complexContent>
|
|
17
|
+
<extension base="gml:AbstractFeatureType">
|
|
18
|
+
<sequence>
|
|
19
|
+
<element name="Name" minOccurs="0" type="string"/>
|
|
20
|
+
<element name="visual" minOccurs="0" type="string"/>
|
|
21
|
+
<element name="geom" minOccurs="0" type="gml:MultiLineStringPropertyType"/>
|
|
22
|
+
</sequence>
|
|
23
|
+
</extension>
|
|
24
|
+
</complexContent>
|
|
25
|
+
</complexType>
|
|
26
|
+
</element>
|
|
27
|
+
<element name="poi" substitutionGroup="gml:_Feature">
|
|
28
|
+
<complexType>
|
|
29
|
+
<complexContent>
|
|
30
|
+
<extension base="gml:AbstractFeatureType">
|
|
31
|
+
<sequence>
|
|
32
|
+
<element name="titel" minOccurs="0" type="string"/>
|
|
33
|
+
<element name="kurztext" minOccurs="0" type="string"/>
|
|
34
|
+
<element name="internet" minOccurs="0" type="string"/>
|
|
35
|
+
<element name="bild" minOccurs="0" type="string"/>
|
|
36
|
+
<element name="copyright" minOccurs="0" type="string"/>
|
|
37
|
+
<element name="kategorie" minOccurs="0" type="string"/>
|
|
38
|
+
<element name="icon_vi" minOccurs="0" type="string"/>
|
|
39
|
+
<element name="geom" minOccurs="0" type="gml:PointPropertyType"/>
|
|
40
|
+
</sequence>
|
|
41
|
+
</extension>
|
|
42
|
+
</complexContent>
|
|
43
|
+
</complexType>
|
|
44
|
+
</element>
|
|
45
|
+
</schema>
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
<schema xmlns="http://www.w3.org/2001/XMLSchema" xmlns:gml="http://www.opengis.net/gml" xmlns:de.hh.up="https://registry.gdi-de.org/id/de.hh.up" xmlns:xlink="http://www.w3.org/1999/xlink" targetNamespace="https://registry.gdi-de.org/id/de.hh.up" elementFormDefault="qualified" attributeFormDefault="unqualified">
|
|
2
|
+
<import namespace="http://www.opengis.net/gml" schemaLocation="http://schemas.opengis.net/gml/3.1.1/base/gml.xsd"/>
|
|
3
|
+
<element name="bike_und_ride" substitutionGroup="gml:_Feature">
|
|
4
|
+
<complexType>
|
|
5
|
+
<complexContent>
|
|
6
|
+
<extension base="gml:AbstractFeatureType">
|
|
7
|
+
<sequence>
|
|
8
|
+
<element name="haltestelle" minOccurs="0" type="string"/>
|
|
9
|
+
<element name="symbol" minOccurs="0" type="string"/>
|
|
10
|
+
<element name="adresse" minOccurs="0" type="string"/>
|
|
11
|
+
<element name="davon_nicht_ueberdachte_stellplaetze" minOccurs="0" type="integer"/>
|
|
12
|
+
<element name="davon_ueberdachte_stellplaetze" minOccurs="0" type="integer"/>
|
|
13
|
+
<element name="davon_gesicherte_mietstellplaetze" minOccurs="0" type="integer"/>
|
|
14
|
+
<element name="schliessfaecher" minOccurs="0" type="integer"/>
|
|
15
|
+
<element name="internet" minOccurs="0" type="string"/>
|
|
16
|
+
<element name="email" minOccurs="0" type="string"/>
|
|
17
|
+
<element name="stand" minOccurs="0" type="string"/>
|
|
18
|
+
<element name="geom" minOccurs="0" type="gml:PointPropertyType"/>
|
|
19
|
+
</sequence>
|
|
20
|
+
</extension>
|
|
21
|
+
</complexContent>
|
|
22
|
+
</complexType>
|
|
23
|
+
</element>
|
|
24
|
+
</schema>
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
<schema xmlns="http://www.w3.org/2001/XMLSchema" xmlns:gml="http://www.opengis.net/gml" xmlns:de.hh.up="https://registry.gdi-de.org/id/de.hh.up" xmlns:xlink="http://www.w3.org/1999/xlink" targetNamespace="https://registry.gdi-de.org/id/de.hh.up" elementFormDefault="qualified" attributeFormDefault="unqualified">
|
|
2
|
+
<import namespace="http://www.opengis.net/gml" schemaLocation="http://schemas.opengis.net/gml/3.1.1/base/gml.xsd"/>
|
|
3
|
+
<element name="nr_f_biosphaerenreservat" substitutionGroup="gml:_Feature">
|
|
4
|
+
<complexType>
|
|
5
|
+
<complexContent>
|
|
6
|
+
<extension base="gml:AbstractFeatureType">
|
|
7
|
+
<sequence>
|
|
8
|
+
<element name="gebietsname" minOccurs="0" type="string"/>
|
|
9
|
+
<element name="gebietsnummer" minOccurs="0" type="string"/>
|
|
10
|
+
<element name="rechtsgrundlage" minOccurs="0" type="string"/>
|
|
11
|
+
<element name="schutzzone" minOccurs="0" type="integer"/>
|
|
12
|
+
<element name="erfassungsgrundlage" minOccurs="0" type="string"/>
|
|
13
|
+
<element name="info_kontakt" minOccurs="0" type="string"/>
|
|
14
|
+
<element name="iucn_kategorie" minOccurs="0" type="string"/>
|
|
15
|
+
<element name="stand_bearbeitung" minOccurs="0" type="string"/>
|
|
16
|
+
<element name="geom" minOccurs="0" type="gml:PolygonPropertyType"/>
|
|
17
|
+
</sequence>
|
|
18
|
+
</extension>
|
|
19
|
+
</complexContent>
|
|
20
|
+
</complexType>
|
|
21
|
+
</element>
|
|
22
|
+
</schema>
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:gml="http://www.opengis.net/gml/3.2" xmlns:fis="http://www.berlin.de/broker" attributeFormDefault="unqualified" elementFormDefault="qualified" targetNamespace="http://www.berlin.de/broker">
|
|
2
|
+
<xsd:import namespace="http://www.opengis.net/gml/3.2" schemaLocation="http://schemas.opengis.net/gml/3.2.1/gml.xsd"/>
|
|
3
|
+
<xsd:element name="s_parkraumbewirt" substitutionGroup="gml:AbstractFeature" type="fis:s_parkraumbewirtType"/>
|
|
4
|
+
<xsd:complexType name="s_parkraumbewirtType">
|
|
5
|
+
<xsd:complexContent>
|
|
6
|
+
<xsd:extension base="gml:AbstractFeatureType">
|
|
7
|
+
<xsd:sequence>
|
|
8
|
+
<xsd:element minOccurs="0" name="parkzone" nillable="true" type="xsd:string"/>
|
|
9
|
+
<xsd:element minOccurs="0" name="bezirk" nillable="true" type="xsd:string"/>
|
|
10
|
+
<xsd:element minOccurs="0" name="zeiten" nillable="true" type="xsd:string"/>
|
|
11
|
+
<xsd:element minOccurs="0" name="gebuehr" nillable="true" type="xsd:string"/>
|
|
12
|
+
<xsd:element minOccurs="0" name="bemerkung" nillable="true" type="xsd:string"/>
|
|
13
|
+
<xsd:element minOccurs="0" name="geom" nillable="true" type="gml:GeometryPropertyType"/>
|
|
14
|
+
</xsd:sequence>
|
|
15
|
+
</xsd:extension>
|
|
16
|
+
</xsd:complexContent>
|
|
17
|
+
</xsd:complexType>
|
|
18
|
+
</xsd:schema>
|