From ea888dc86a30adae8d392e8d37420e40c4370f9c Mon Sep 17 00:00:00 2001 From: Zan Pecovnik Date: Mon, 19 Aug 2024 14:48:38 +0200 Subject: [PATCH 1/5] Extend layer with CC --- src/layer/S3OLCIL2CDASLayer.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/layer/S3OLCIL2CDASLayer.ts b/src/layer/S3OLCIL2CDASLayer.ts index 34c4c17f..e4d200ce 100644 --- a/src/layer/S3OLCIL2CDASLayer.ts +++ b/src/layer/S3OLCIL2CDASLayer.ts @@ -1,6 +1,6 @@ import { DATASET_CDAS_S3OLCIL2 } from './dataset'; -import { S3OLCILayer } from './S3OLCILayer'; +import { S3SLSTRCDASLayer } from './S3SLSTRCDASLayer'; -export class S3OLCIL2CDASLayer extends S3OLCILayer { +export class S3OLCIL2CDASLayer extends S3SLSTRCDASLayer { public readonly dataset = DATASET_CDAS_S3OLCIL2; } From 8bf24043afe7b93cc16601d1bde18990c4206fc8 Mon Sep 17 00:00:00 2001 From: Jan Kumer Date: Mon, 19 Aug 2024 16:54:00 +0200 Subject: [PATCH 2/5] Fix export file extensions according to new type field value --- package.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index d5fcacf4..3b24333a 100644 --- a/package.json +++ b/package.json @@ -1,8 +1,8 @@ { "name": "@sentinel-hub/sentinelhub-js", "version": "1.0.0", - "main": "dist/sentinelHub.cjs.js", - "module": "dist/sentinelHub.esm.js", + "main": "dist/sentinelHub.cjs", + "module": "dist/sentinelHub.js", "browser": "dist/sentinelHub.umd.js", "type": "module", "peerDependencies": { From ed0efa68ef413d8d00574d07fe1f53ccfb45c05c Mon Sep 17 00:00:00 2001 From: Zan Pecovnik Date: Tue, 20 Aug 2024 09:02:04 +0200 Subject: [PATCH 3/5] Update and use correct getTileLinksFromCatalog function --- src/layer/S3OLCIL2CDASLayer.ts | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/src/layer/S3OLCIL2CDASLayer.ts b/src/layer/S3OLCIL2CDASLayer.ts index e4d200ce..50ea2aab 100644 --- a/src/layer/S3OLCIL2CDASLayer.ts +++ b/src/layer/S3OLCIL2CDASLayer.ts @@ -1,6 +1,18 @@ import { DATASET_CDAS_S3OLCIL2 } from './dataset'; import { S3SLSTRCDASLayer } from './S3SLSTRCDASLayer'; +import { Link, LinkType } from './const'; + export class S3OLCIL2CDASLayer extends S3SLSTRCDASLayer { public readonly dataset = DATASET_CDAS_S3OLCIL2; + + protected getTileLinksFromCatalog(feature: Record): Link[] { + const { assets } = feature; + let result: Link[] = super.getTileLinksFromCatalog(feature); + + if (assets.data && assets.data.href) { + result.push({ target: assets.data.href.replace('s3://DIAS', '/dias'), type: LinkType.CREODIAS }); + } + return result; + } } From d9857963c1e6e47d0780885ecddb7bc37790936e Mon Sep 17 00:00:00 2001 From: Zan Pecovnik Date: Tue, 20 Aug 2024 10:57:19 +0200 Subject: [PATCH 4/5] Rather extend new layer with abstract layer with CC instead of S3SLSTR --- src/layer/S3OLCIL2CDASLayer.ts | 70 ++++++++++++++++++++++++++++++++-- 1 file changed, 67 insertions(+), 3 deletions(-) diff --git a/src/layer/S3OLCIL2CDASLayer.ts b/src/layer/S3OLCIL2CDASLayer.ts index 50ea2aab..39ee1c18 100644 --- a/src/layer/S3OLCIL2CDASLayer.ts +++ b/src/layer/S3OLCIL2CDASLayer.ts @@ -1,11 +1,75 @@ +import moment from 'moment'; + import { DATASET_CDAS_S3OLCIL2 } from './dataset'; -import { S3SLSTRCDASLayer } from './S3SLSTRCDASLayer'; +import { AbstractSentinelHubV3WithCCLayer } from './AbstractSentinelHubV3WithCCLayer'; +import { RequestConfiguration } from '../utils/cancelRequests'; + +import { PaginatedTiles, Link, LinkType, FindTilesAdditionalParameters } from './const'; -import { Link, LinkType } from './const'; +type S3OLCIL2FindTilesDatasetParameters = { + type?: string; +}; -export class S3OLCIL2CDASLayer extends S3SLSTRCDASLayer { +export class S3OLCIL2CDASLayer extends AbstractSentinelHubV3WithCCLayer { public readonly dataset = DATASET_CDAS_S3OLCIL2; + protected convertResponseFromSearchIndex(response: { + data: { tiles: any[]; hasMore: boolean }; + }): PaginatedTiles { + return { + tiles: response.data.tiles.map(tile => ({ + geometry: tile.dataGeometry, + sensingTime: moment.utc(tile.sensingTime).toDate(), + meta: this.extractFindTilesMeta(tile), + links: this.getTileLinks(tile), + })), + hasMore: response.data.hasMore, + }; + } + + protected getFindTilesAdditionalParameters(): FindTilesAdditionalParameters { + const findTilesDatasetParameters: S3OLCIL2FindTilesDatasetParameters = { + type: this.dataset.shProcessingApiDatasourceAbbreviation, + }; + + return { + maxCloudCoverPercent: this.maxCloudCoverPercent, + datasetParameters: findTilesDatasetParameters, + }; + } + + protected async getFindDatesUTCAdditionalParameters( + reqConfig: RequestConfiguration, // eslint-disable-line @typescript-eslint/no-unused-vars + ): Promise> { + const result: Record = { + datasetParameters: { + type: this.dataset.datasetParametersType, + }, + }; + + if (this.maxCloudCoverPercent !== null) { + result.maxCloudCoverage = this.maxCloudCoverPercent / 100; + } + + return result; + } + + protected getTileLinks(tile: Record): Link[] { + return [ + { + target: tile.originalId.replace('EODATA', '/eodata'), + type: LinkType.CREODIAS, + }, + { + target: `https://finder.creodias.eu/files${tile.originalId.replace( + 'EODATA', + '', + )}/${tile.productName.replace('.SEN3', '')}-ql.jpg`, + type: LinkType.PREVIEW, + }, + ]; + } + protected getTileLinksFromCatalog(feature: Record): Link[] { const { assets } = feature; let result: Link[] = super.getTileLinksFromCatalog(feature); From b7928f525151a43e161e382a416707823d2e5c5d Mon Sep 17 00:00:00 2001 From: Zan Pecovnik Date: Tue, 20 Aug 2024 11:01:47 +0200 Subject: [PATCH 5/5] Fix linter problems --- src/layer/S3OLCIL2CDASLayer.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/layer/S3OLCIL2CDASLayer.ts b/src/layer/S3OLCIL2CDASLayer.ts index 39ee1c18..4b7f1961 100644 --- a/src/layer/S3OLCIL2CDASLayer.ts +++ b/src/layer/S3OLCIL2CDASLayer.ts @@ -17,7 +17,7 @@ export class S3OLCIL2CDASLayer extends AbstractSentinelHubV3WithCCLayer { data: { tiles: any[]; hasMore: boolean }; }): PaginatedTiles { return { - tiles: response.data.tiles.map(tile => ({ + tiles: response.data.tiles.map((tile) => ({ geometry: tile.dataGeometry, sensingTime: moment.utc(tile.sensingTime).toDate(), meta: this.extractFindTilesMeta(tile),