in scripts/generate-manifest.js [166:214]
feature_collection_path: get(format, 'meta.feature_collection_path', 'data'),
};
}
return layer;
}
function manifestLayerV6(data, hostname, { manifestVersion, fieldInfo, dataDir }) {
const formats = data.emsFormats.map(format => {
const pathname = `/files/${format.file}`;
return { ...{
type: format.type,
url: getFileUrl(hostname, pathname, manifestVersion),
legacy_default: format.default || false,
}, ...(format.meta && { meta: format.meta }) };
});
const idFields = data.fieldMapping.filter(field => field.type === 'id');
const { file } = getDefaultFormat(data.emsFormats);
const idInfos = getIdsFromFile(dataDir, file, idFields);
const fields = getFieldMapping(data.fieldMapping, manifestVersion, idInfos, fieldInfo);
const layer = {
layer_id: data.name,
created_at: data.createdAt,
attribution: data.attribution,
formats,
fields: fields,
legacy_ids: data.legacyIds,
layer_name: data.humanReadableName,
};
return layer;
}
function getDefaultFormat(emsFormats) {
return emsFormats.find(format => format.default);
}
function getIdsFromFile(dataDir, file, fields) {
const fieldMap = {};
const fieldsWithIds = fields.filter(field => !field.skipCopy);
if (fieldsWithIds.length == 0) return fieldMap;
// Only read the dataset if there are identfiers to return
const json = JSON.parse(readFileSync(`${dataDir}/${file}`, 'utf8'));
const features = json.features || json.objects.data.geometries;
for (const { name } of fieldsWithIds) {
fieldMap[name] = new Set(); // Probably unnecessary but ensures unique ids
}
for (const feature of features) {
for (const { name } of fieldsWithIds) {