Skip to content

Commit 9d7694e

Browse files
Make findFlyovers() request its own tiles to make sure all are fetched
1 parent 6585f9b commit 9d7694e

File tree

4 files changed

+48
-12
lines changed

4 files changed

+48
-12
lines changed

README.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -142,7 +142,7 @@ We can always use layer to search for data availability:
142142
const maxCloudCoverPercent = 50;
143143
const layerS2L2A = new S2L2ALayer(instanceId, 'S2L2A', null, null, null, null, null, maxCloudCoverPercent);
144144
const { tiles, hasMore } = layerS2L2A.findTiles(bbox, fromDate, toDate, maxCount, offset);
145-
const flyoversS2L2A = layerS2L2A.findFlyovers(bbox, tiles);
145+
const flyoversS2L2A = layerS2L2A.findFlyovers(bbox, fromDate, toDate);
146146
const dates = layerS2L2A.findDatesUTC(bbox, fromDate, toDate);
147147

148148
const layerS1 = new S1GRDAWSEULayer(
@@ -151,7 +151,7 @@ We can always use layer to search for data availability:
151151
true, BackscatterCoeff.GAMMA0_ELLIPSOID, OrbitDirection.ASCENDING
152152
);
153153
const { tiles: tilesS1 } = layerS1.findTiles(bbox, fromDate, toDate, maxCount, offset);
154-
const flyoversS1 = layerS1.findFlyovers(bbox, tilesS1);
154+
const flyoversS1 = layerS1.findFlyovers(bbox, fromDate, toDate);
155155
```
156156

157157
## Backwards compatibility

example/node/index.js

Lines changed: 17 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -116,25 +116,37 @@ async function run() {
116116
getMapParams.toTime,
117117
20,
118118
0,
119-
100,
120119
);
121120
printOut('tiles for S2 L2A:', tilesS2L2A);
122121
printOut('hasMore:', hasMore);
123-
const flyoversS2L2A = layerS2L2A.findFlyovers(bbox, tilesS2L2A);
122+
123+
const flyoversS2L2A = await layerS2L2A.findFlyovers(
124+
getMapParams.bbox,
125+
getMapParams.fromTime,
126+
getMapParams.toTime,
127+
10,
128+
50,
129+
);
124130
printOut('flyovers for S2 L2A:', flyoversS2L2A);
125131

126132
// get tiles and flyover intervals for S1 GRD Layer
127-
const { tiles: tilesS1GRD, hasMoreS1 } = await layerS1.findTiles(
133+
const { tiles: tilesS1GRD, hasMore: hasMoreS1 } = await layerS1.findTiles(
128134
getMapParams.bbox,
129135
getMapParams.fromTime,
130136
getMapParams.toTime,
131137
10,
132138
0,
133-
OrbitDirection.ASCENDING,
134139
);
135140
printOut('tiles for S1 GRD:', tilesS1GRD);
136141
printOut('hasMore for S1:', hasMoreS1);
137-
const flyoversS1GRD = layerS1.findFlyovers(bbox, tilesS1GRD);
142+
143+
const flyoversS1GRD = await layerS1.findFlyovers(
144+
getMapParams.bbox,
145+
getMapParams.fromTime,
146+
getMapParams.toTime,
147+
10,
148+
50,
149+
);
138150
printOut('flyovers for S1 GRD:', flyoversS1GRD);
139151

140152
// finally, display the image:

src/layer/AbstractLayer.ts

Lines changed: 27 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,11 +49,37 @@ export class AbstractLayer {
4949
throw new Error('Not implemented yet');
5050
}
5151

52-
public findFlyovers(bbox: BBox, tiles: Tile[]): FlyoverInterval[] {
52+
public async findFlyovers(
53+
bbox: BBox,
54+
fromTime: Date,
55+
toTime: Date,
56+
maxFindTilesRequests: number = 50,
57+
tilesPerRequest: number = 50,
58+
): Promise<FlyoverInterval[]> {
5359
if (!this.dataset || !this.dataset.orbitTimeMinutes) {
5460
throw new Error('Orbit time is needed for grouping tiles into flyovers.');
5561
}
5662

63+
let tiles: Tile[] = [];
64+
for (let i = 0; i < maxFindTilesRequests; i++) {
65+
const { tiles: partialTiles, hasMore } = await this.findTiles(
66+
bbox,
67+
fromTime,
68+
toTime,
69+
tilesPerRequest,
70+
i * tilesPerRequest,
71+
);
72+
tiles = tiles.concat(partialTiles);
73+
if (!hasMore) {
74+
break;
75+
}
76+
if (i + 1 === maxFindTilesRequests) {
77+
throw new Error(
78+
`Could not fetch all the tiles in [${maxFindTilesRequests}] requests for [${tilesPerRequest}] tiles`,
79+
);
80+
}
81+
}
82+
5783
tiles.sort((a, b) => a.sensingTime.getTime() - b.sensingTime.getTime());
5884
let orbitTimeMS = this.dataset.orbitTimeMinutes * 60 * 1000;
5985
let flyoverIntervals: FlyoverInterval[] = [];

stories/s1grdiw.stories.js

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -300,15 +300,13 @@ export const findFlyovers = () => {
300300
await setAuthTokenWithOAuthCredentials();
301301
const fromTime = new Date(Date.UTC(2020, 1 - 1, 15, 0, 0, 0));
302302
const toTime = new Date(Date.UTC(2020, 1 - 1, 15, 6, 59, 59));
303-
const { tiles } = await layer.findTiles(
303+
const flyovers = await layer.findFlyovers(
304304
bbox,
305305
fromTime,
306306
toTime,
307+
20,
307308
50,
308-
0,
309309
);
310-
311-
const flyovers = layer.findFlyovers(bbox, tiles);
312310
flyoversContainerEl.innerHTML = JSON.stringify(flyovers, null, true)
313311

314312
// prepare an image to show that the number makes sense:

0 commit comments

Comments
 (0)