@geogirafe/lib-geoportal
Version:
GeoGirafe is a flexible application to build online geoportals.
71 lines (70 loc) • 2.37 kB
JavaScript
class ServerWfs {
constructor(name, url) {
Object.defineProperty(this, "name", {
enumerable: true,
configurable: true,
writable: true,
value: void 0
});
Object.defineProperty(this, "url", {
enumerable: true,
configurable: true,
writable: true,
value: void 0
});
Object.defineProperty(this, "layers", {
enumerable: true,
configurable: true,
writable: true,
value: {}
});
Object.defineProperty(this, "featureTypeToGeometryColumnName", {
enumerable: true,
configurable: true,
writable: true,
value: {}
});
Object.defineProperty(this, "initialized", {
enumerable: true,
configurable: true,
writable: true,
value: void 0
});
this.name = name;
this.url = url;
this.initialized = false;
}
addLayerAttribute(layer, name, type) {
if (!(layer in this.layers)) {
// Layer does not exists yet
this.layers[layer] = [];
}
this.layers[layer].push({
name: name,
type: type
});
}
getGeometryColumnNameToFeatureTypes(featureTypes) {
if (!this.initialized) {
throw new Error('Initialize WFS server before trying to get geometry column names.');
}
const geometryColumnNameToFeatureType = {};
for (const featureType of featureTypes) {
if (!(featureType in this.layers)) {
console.warn('featureType ' +
featureType +
' is unknown to WFS server ' +
this.url +
'\n- available featureTypes: ' +
Object.keys(this.layers).join(', '));
}
const geometryColumnName = this.featureTypeToGeometryColumnName[featureType];
if (!(geometryColumnName in geometryColumnNameToFeatureType)) {
geometryColumnNameToFeatureType[geometryColumnName] = [];
}
geometryColumnNameToFeatureType[geometryColumnName].push(featureType);
}
return geometryColumnNameToFeatureType;
}
}
export default ServerWfs;