From b1283ee0e0a427de34e5baec93060fdc8a2c9fc9 Mon Sep 17 00:00:00 2001 From: Geoff Jacobsen Date: Mon, 11 May 2020 16:35:54 +1200 Subject: [PATCH] fix(cog): add padding to projwin' Was sometimes one pixel short on lower right sides Now add 1% padding to lower right sides --- packages/cog/src/cog/__test__/cog.test.ts | 6 +++--- packages/cog/src/cog/cog.ts | 4 +++- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/packages/cog/src/cog/__test__/cog.test.ts b/packages/cog/src/cog/__test__/cog.test.ts index dfbc2bdd0..96ec92e50 100644 --- a/packages/cog/src/cog/__test__/cog.test.ts +++ b/packages/cog/src/cog/__test__/cog.test.ts @@ -37,7 +37,7 @@ o.spec('cog', () => { // -projwin 18472078.003508832 -5948635.289265559 18785164.071364917 -6261721.357121641 // -projwin_srs EPSG:3857 o(gdalCogBuilder!.config).deepEquals({ - bbox: [18472078.003508832, -5948635.289265559, 18785164.071364917, -6261721.357121641], + bbox: [18472078.003508832, -5948635.289265559, 18788294.932043478, -6264852.217800202], alignmentLevels: 6, compression: 'webp', resampling: 'bilinear', @@ -71,8 +71,8 @@ o.spec('cog', () => { '-projwin', '18472078.003508832', '-5948635.289265559', - '18785164.071364917', - '-6261721.357121641', + '18788294.932043478', + '-6264852.217800202', '-projwin_srs', 'EPSG:3857', '/tmp/test.vrt', diff --git a/packages/cog/src/cog/cog.ts b/packages/cog/src/cog/cog.ts index 46aaa7539..1a562fd7a 100644 --- a/packages/cog/src/cog/cog.ts +++ b/packages/cog/src/cog/cog.ts @@ -54,12 +54,14 @@ export async function buildCogForQuadKey( const [ulX, ulY] = forward([left, upper]); const [lrX, lrY] = forward([right, lower]); + const padding = Math.max(Math.abs(lrY - ulY), Math.abs(lrX - ulX)) * 0.01; + const [x, y, z] = QuadKey.toXYZ(quadKey); const alignmentLevels = job.source.resolution - z; const cogBuild = new GdalCogBuilder(vrtLocation, outputTiffPath, { - bbox: [ulX, ulY, lrX, lrY], + bbox: [ulX, ulY, lrX + padding, lrY - padding], alignmentLevels, resampling: job.output.resampling, quality: job.output.quality,