diff --git a/packages/cogify/src/cogify/cli/__test__/cli.cover.test.ts b/packages/cogify/src/cogify/cli/__test__/cli.cover.test.ts index ad5115f1a9..47e45369bd 100644 --- a/packages/cogify/src/cogify/cli/__test__/cli.cover.test.ts +++ b/packages/cogify/src/cogify/cli/__test__/cli.cover.test.ts @@ -30,6 +30,7 @@ describe('cli.cover', () => { extraVerbose: false, requireStacCollection: false, background: undefined, + name: undefined, }; it('should generate a covering', async () => { diff --git a/packages/cogify/src/cogify/cli/cli.config.ts b/packages/cogify/src/cogify/cli/cli.config.ts index 6e1f35b9af..1c5f3fa837 100644 --- a/packages/cogify/src/cogify/cli/cli.config.ts +++ b/packages/cogify/src/cogify/cli/cli.config.ts @@ -49,7 +49,7 @@ export const BasemapsCogifyConfigCommand = command({ const q = pLimit(args.concurrency); metrics.start('imagery:load'); - const im = await initImageryFromTiffUrl(args.path, q, undefined, logger); + const im = await initImageryFromTiffUrl(args.path, q, undefined, undefined, logger); const ts = ConfigProviderMemory.imageryToTileSet(im) as ConfigTileSetRaster; provider.put(im); metrics.end('imagery:load'); diff --git a/packages/cogify/src/cogify/cli/cli.cover.ts b/packages/cogify/src/cogify/cli/cli.cover.ts index c27d9d4b77..fbaa2f3844 100644 --- a/packages/cogify/src/cogify/cli/cli.cover.ts +++ b/packages/cogify/src/cogify/cli/cli.cover.ts @@ -73,6 +73,11 @@ export const BasemapsCogifyCoverCommand = command({ defaultValue: () => false, defaultValueIsSerializable: true, }), + name: option({ + type: optional(string), + long: 'name', + description: 'Define the name of the output imagery', + }), background: option({ type: optional(string), long: 'background', @@ -86,7 +91,7 @@ export const BasemapsCogifyCoverCommand = command({ const mem = new ConfigProviderMemory(); metrics.start('imagery:load'); const background = args.background ? parseBackgroud(args.background) : undefined; - const cfg = await initConfigFromUrls(mem, args.paths); + const cfg = await initConfigFromUrls(mem, args.paths, args.name); const imageryLoadTime = metrics.end('imagery:load'); if (cfg.imagery.length === 0) throw new Error('No imagery found'); const im = cfg.imagery[0]; diff --git a/packages/config-loader/src/json/json.config.ts b/packages/config-loader/src/json/json.config.ts index c328583b9f..5ff5444b9d 100644 --- a/packages/config-loader/src/json/json.config.ts +++ b/packages/config-loader/src/json/json.config.ts @@ -274,7 +274,7 @@ export class ConfigJson { const id = ConfigId.prefix(ConfigPrefix.Imagery, imageId); this.logger.trace({ url: url.href, imageId: id }, 'Imagery:Fetch'); - const img = await initImageryFromTiffUrl(url, this.Q, this.imageryConfigCache, this.logger); + const img = await initImageryFromTiffUrl(url, this.Q, undefined, this.imageryConfigCache, this.logger); img.id = id; // TODO could we use img.collection.id for this? // TODO should we be overwriting the name and title when it is loaded from the STAC metadata? diff --git a/packages/config-loader/src/json/tiff.config.ts b/packages/config-loader/src/json/tiff.config.ts index 9f36863753..d48d8bd86e 100644 --- a/packages/config-loader/src/json/tiff.config.ts +++ b/packages/config-loader/src/json/tiff.config.ts @@ -346,6 +346,7 @@ export async function loadTiffsFromPaths(sourceFiles: URL[], Q: LimitFunction): export async function initImageryFromTiffUrl( target: URL, Q: LimitFunction, + name?: string, configCache?: URL, log?: LogType, ): Promise { @@ -364,7 +365,7 @@ export async function initImageryFromTiffUrl( if (stac == null) log?.warn({ target: target }, 'Tiff:StacNotFound'); const params = await computeTiffSummary(target, tiffs); - const imageryName = getImageryName(target); + const imageryName = name ? name : getImageryName(target); const title = stac?.title ?? imageryName; const tileMatrix = params.projection === EpsgCode.Nztm2000 ? Nztm2000QuadTms : TileMatrixSets.tryGet(params.projection); @@ -436,6 +437,7 @@ export async function initImageryFromTiffUrl( export async function initConfigFromUrls( provider: ConfigProviderMemory, targets: URL[], + name?: string, concurrency = 25, configCache?: URL, log?: LogType, @@ -443,7 +445,7 @@ export async function initConfigFromUrls( const q = pLimit(concurrency); const imageryConfig: Promise[] = []; - for (const target of targets) imageryConfig.push(initImageryFromTiffUrl(target, q, configCache, log)); + for (const target of targets) imageryConfig.push(initImageryFromTiffUrl(target, q, name, configCache, log)); const aerialTileSet: ConfigTileSetRaster = { id: 'ts_aerial', diff --git a/packages/server/src/config.ts b/packages/server/src/config.ts index 7e3e9e8dbd..46147f497d 100644 --- a/packages/server/src/config.ts +++ b/packages/server/src/config.ts @@ -29,7 +29,7 @@ export async function loadConfig(opts: ServerOptions, logger: LogType): Promise< // Load the config directly from the source tiff files if ('paths' in opts) { const mem = new ConfigProviderMemory(); - const ret = await initConfigFromUrls(mem, opts.paths, TiffLoadConcurrency, opts.configCache, logger); + const ret = await initConfigFromUrls(mem, opts.paths, undefined, TiffLoadConcurrency, opts.configCache, logger); for (const ts of ret.tileSets) { logger.info( { tileSet: ts.name, layers: ts.layers.length, outputs: ts.outputs?.map((f) => f.name) },