Skip to content

Commit

Permalink
fix(lambda-tiler): move to NZTM2000Quad for health check endpoint (#1867
Browse files Browse the repository at this point in the history
)
  • Loading branch information
blacha committed Sep 19, 2021
1 parent 91e3837 commit d4613f0
Show file tree
Hide file tree
Showing 7 changed files with 32 additions and 36 deletions.
10 changes: 5 additions & 5 deletions packages/lambda-tiler/src/cli/dump.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { GoogleTms } from '@basemaps/geo';
import { Nztm2000Tms } from '@basemaps/geo';
import { LambdaAlbRequest } from '@linzjs/lambda';
import { LogConfig } from '@basemaps/shared';
import { ImageFormat } from '@basemaps/tiler';
Expand All @@ -13,7 +13,7 @@ import { Context } from 'aws-lambda';
if (process.stdout.isTTY) LogConfig.setOutputStream(PrettyTransform.stream());

const xyz = { x: 0, y: 0, z: 0 };
const tileMatrix = GoogleTms;
const tileMatrix = Nztm2000Tms;
const tileSetName = 'aerial';
const ext = ImageFormat.PNG;

Expand Down Expand Up @@ -56,9 +56,9 @@ async function main(): Promise<void> {
const headers: Record<string, any> = {};
for (const [key, value] of tileData.headers) headers[key] = value;

logger.info({ ...tileData, body: tileData.body?.length, headers }, 'Done');
if (tileData.body != null) {
await fs.writeFile(`output_${xyz.x}_${xyz.y}_z${xyz.z}.${ext}`, tileData.body);
logger.info({ ...tileData, _body: tileData.body?.length, headers }, 'Done');
if (tileData._body != null) {
await fs.writeFile(`output_${xyz.x}_${xyz.y}_z${xyz.z}.${ext}`, tileData._body);
}
}

Expand Down
47 changes: 21 additions & 26 deletions packages/lambda-tiler/src/routes/health.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { Epsg, Tile } from '@basemaps/geo';
import { GoogleTms, Nztm2000QuadTms, Tile, TileMatrixSet } from '@basemaps/geo';
import { ImageFormat } from '@basemaps/tiler';
import { HttpHeader, LambdaAlbRequest, LambdaHttpRequest, LambdaHttpResponse } from '@linzjs/lambda';
import { Context } from 'aws-lambda';
Expand All @@ -10,23 +10,23 @@ import url from 'url';
import { TileRoute } from './tile.js';

interface TestTile {
projection: Epsg;
tms: TileMatrixSet;
buf: null | Buffer;
format: ImageFormat;
testTile: Tile;
}

export const TestTiles: TestTile[] = [
{ projection: Epsg.Google, format: ImageFormat.PNG, testTile: { x: 252, y: 156, z: 8 }, buf: null },
{ projection: Epsg.Nztm2000, format: ImageFormat.PNG, testTile: { x: 153, y: 255, z: 7 }, buf: null },
{ tms: GoogleTms, format: ImageFormat.PNG, testTile: { x: 252, y: 156, z: 8 }, buf: null },
{ tms: Nztm2000QuadTms, format: ImageFormat.PNG, testTile: { x: 30, y: 33, z: 6 }, buf: null },
];
const TileSize = 256;

export async function getTestBuffer(testTile: TestTile): Promise<Buffer> {
if (Buffer.isBuffer(testTile.buf)) return testTile.buf;
const tile = testTile.testTile;
export async function getTestBuffer(test: TestTile): Promise<Buffer> {
if (Buffer.isBuffer(test.buf)) return test.buf;
const tile = test.testTile;

const expectedFile = `static/expected_tile_${testTile.projection.code}_${tile.x}_${tile.y}_z${tile.z}.${testTile.format}`;
const expectedFile = `static/expected_tile_${test.tms.identifier}_${tile.x}_${tile.y}_z${tile.z}.${test.format}`;
// Initiate test img buffer if not defined
try {
return await fs.promises.readFile(expectedFile);
Expand All @@ -37,15 +37,15 @@ export async function getTestBuffer(testTile: TestTile): Promise<Buffer> {
}
}

//
// async function updateExpectedTile(test: TestTile, newTileData: Buffer, difference: Buffer): Promise<void> {
// const expectedFileName = getExpectedTileName(test.projection, test.testTile, test.format);
// await fs.promises.writeFile(expectedFileName, newTileData);
// const imgPng = await Sharp(difference, { raw: { width: TileSize, height: TileSize, channels: 4 } })
// .png()
// .toBuffer();
// await fs.promises.writeFile(`${expectedFileName}.diff.png`, imgPng);
// }
export async function updateExpectedTile(test: TestTile, newTileData: Buffer, difference: Buffer): Promise<void> {
const tile = test.testTile;
const expectedFileName = `static/expected_tile_${test.tms.identifier}_${tile.x}_${tile.y}_z${tile.z}.${test.format}`;
await fs.promises.writeFile(expectedFileName, newTileData);
const imgPng = await Sharp(difference, { raw: { width: TileSize, height: TileSize, channels: 4 } })
.png()
.toBuffer();
await fs.promises.writeFile(`${expectedFileName}.diff.png`, imgPng);
}

/**
* Health request get health TileSets and validate with test TileSets
Expand All @@ -56,15 +56,10 @@ export async function getTestBuffer(testTile: TestTile): Promise<Buffer> {
*/
export async function Health(req: LambdaHttpRequest): Promise<LambdaHttpResponse> {
for (const test of TestTiles) {
const projection = test.projection;
const tms = test.tms;
const testTile = test.testTile;
const format = test.format;
const path = `/v1/tiles/health/
${projection.toEpsgString()}
/${testTile.z}
/${testTile.x}
/${testTile.y}
.${format}`;
const path = `/v1/tiles/health/${tms.identifier}/${testTile.z}/${testTile.x}/${testTile.y}.${format}`;

const ctx: LambdaHttpRequest = new LambdaAlbRequest(
{
Expand Down Expand Up @@ -93,11 +88,11 @@ export async function Health(req: LambdaHttpRequest): Promise<LambdaHttpResponse
const missMatchedPixels = PixelMatch(testImgBuffer, resImgBuffer, outputBuffer, TileSize, TileSize);
if (missMatchedPixels) {
/** Uncomment this to overwite the expected files */
// await updateExpectedTile(test, response.body, outputBuffer);
// await updateExpectedTile(test, response._body as Buffer, outputBuffer);
req.log.error(
{
missMatchedPixels,
projection: test.projection.code,
projection: tms.identifier,
xyz: test.testTile,
},
'Health:MissMatch',
Expand Down
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
4 changes: 2 additions & 2 deletions packages/lambda-tiler/test-dump.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,5 +2,5 @@
/**
* Render a single tile and save it as a PNG
*/
require('source-map-support/register');
require('./build/cli/dump');
import 'source-map-support/register.js';
import './build/cli/dump.js';
4 changes: 2 additions & 2 deletions packages/lambda-tiler/test-imagery.js
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
#!/usr/bin/env node
require('source-map-support/register');
require('./build/cli/validate');
import 'source-map-support/register.js';
import './build/cli/validate.js';
3 changes: 2 additions & 1 deletion packages/server/bin/basemaps-server.js
Original file line number Diff line number Diff line change
@@ -1,7 +1,8 @@
#!/usr/bin/env node

import { BasemapsServerCommand } from '../build/cli.js';
import Errors from '@oclif/errors/handle.js';
BasemapsServerCommand.run().catch((error) => {
if (error.oclif) return require('@oclif/errors/handle')(error);
if (error.oclif) return Errors(error);
console.log(error);
});

0 comments on commit d4613f0

Please sign in to comment.