Press n or j to go to the next uncovered block, b, p or k for the previous block.
| 1 2 3 4 5 6 7 8 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 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 | 3x 3x 3x 3x 8x 8x 8x 8x 8x 1x 8x 8x 8x 8x 8x 8x 3x | const _ = require('lodash')
const {
QueryFields
} = require('../helpers/fields')
const {
getCollectionCrs,
normalizeSpatialReference
} = require('../helpers')
const featureResponseTemplate = require('../../templates/features.json')
/**
* Modifies a template features json file with metadata, capabilities, and data from the model
* @param {object} data - data from provider model
* @param {object} params
* @return {object} formatted features data
*/
function renderFeaturesResponse (data = {}, params = {}) {
const template = _.cloneDeep(featureResponseTemplate)
const {
uniqueIdField: uniqueIdFieldDefault,
objectIdFieldName: objectIdFieldNameDefault
} = template
const {
metadata: {
limitExceeded,
transform,
idField
} = {}
} = data
const computedProperties = {
geometryType: params.geometryType,
spatialReference: getOutputSpatialReference(data, params),
fields: QueryFields.create({ data, ...params }),
features: data.features || [],
exceededTransferLimit: !!limitExceeded,
objectIdFieldName: idField || objectIdFieldNameDefault,
uniqueIdField: {
...uniqueIdFieldDefault,
name: idField || uniqueIdFieldDefault.name
}
}
if (transform) {
computedProperties.transform = transform
}
return { ...template, ...computedProperties }
}
function getOutputSpatialReference (collection, {
outSR,
outputCrs,
inputCrs,
sourceSR
}) {
const spatialReference = outputCrs || outSR || inputCrs || sourceSR || getCollectionCrs(collection) || 4326
const { wkid, wkt, latestWkid } = normalizeSpatialReference(spatialReference)
Iif (wkid && latestWkid) {
return { wkid, latestWkid }
}
Eif (wkid) {
return { wkid }
}
if (latestWkid) {
return { latestWkid }
}
return { wkt }
}
module.exports = { renderFeaturesResponse }
|