mirror of
https://github.com/protomaps/PMTiles.git
synced 2026-02-04 10:51:07 +00:00
typescript parseEntry
This commit is contained in:
@@ -5,6 +5,7 @@ import {
|
|||||||
getUint48,
|
getUint48,
|
||||||
queryLeafdir,
|
queryLeafdir,
|
||||||
queryTile,
|
queryTile,
|
||||||
|
parseEntry,
|
||||||
Entry,
|
Entry,
|
||||||
createDirectory,
|
createDirectory,
|
||||||
} from "./pmtiles";
|
} from "./pmtiles";
|
||||||
@@ -112,4 +113,11 @@ test("convert spec v1 directory to spec v2 directory", (assertion) => {
|
|||||||
assertion.ok(entry!.offset === 2);
|
assertion.ok(entry!.offset === 2);
|
||||||
entry = queryTile(view, 6, 2, 1);
|
entry = queryTile(view, 6, 2, 1);
|
||||||
assertion.ok(entry!.offset === 1);
|
assertion.ok(entry!.offset === 1);
|
||||||
|
|
||||||
|
entry = parseEntry(view, 0);
|
||||||
|
assertion.ok(entry!.offset === 1);
|
||||||
|
entry = parseEntry(view, 1);
|
||||||
|
assertion.ok(entry!.offset === 2);
|
||||||
|
entry = parseEntry(view, 2);
|
||||||
|
assertion.ok(entry!.offset === 3);
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -105,6 +105,19 @@ const entrySort = (a: Entry, b: Entry): number => {
|
|||||||
return a.y - b.y;
|
return a.y - b.y;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
export const parseEntry = (dataview: DataView, i: number): Entry => {
|
||||||
|
var z_raw = dataview.getUint8(i * 17);
|
||||||
|
var z = z_raw & 127;
|
||||||
|
return {
|
||||||
|
z: z,
|
||||||
|
x: getUint24(dataview, i * 17 + 1),
|
||||||
|
y: getUint24(dataview, i * 17 + 4),
|
||||||
|
offset: getUint48(dataview, i * 17 + 7),
|
||||||
|
length: dataview.getUint32(i * 17 + 13, true),
|
||||||
|
is_dir: z_raw >> 7 === 1,
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
export const createDirectory = (entries: Entry[]): ArrayBuffer => {
|
export const createDirectory = (entries: Entry[]): ArrayBuffer => {
|
||||||
entries.sort(entrySort);
|
entries.sort(entrySort);
|
||||||
|
|
||||||
@@ -145,7 +158,7 @@ interface Zxy {
|
|||||||
y: number;
|
y: number;
|
||||||
}
|
}
|
||||||
|
|
||||||
// handle different leaf levels
|
// TODO: handle different leaf levels
|
||||||
export const deriveLeaf = (tile: Zxy): Zxy => {
|
export const deriveLeaf = (tile: Zxy): Zxy => {
|
||||||
let z7_tile_diff = tile.z - 7;
|
let z7_tile_diff = tile.z - 7;
|
||||||
let z7_x = Math.trunc(tile.x / (1 << z7_tile_diff));
|
let z7_x = Math.trunc(tile.x / (1 << z7_tile_diff));
|
||||||
@@ -153,11 +166,6 @@ export const deriveLeaf = (tile: Zxy): Zxy => {
|
|||||||
return { z: 7, x: z7_x, y: z7_y };
|
return { z: 7, x: z7_x, y: z7_y };
|
||||||
};
|
};
|
||||||
|
|
||||||
// needed to convert a spec v1 to a spec v2
|
|
||||||
const sortEntries = (dataview: DataView): ArrayBuffer => {
|
|
||||||
return new ArrayBuffer(0);
|
|
||||||
};
|
|
||||||
|
|
||||||
interface Header {
|
interface Header {
|
||||||
version: number;
|
version: number;
|
||||||
json_size: number;
|
json_size: number;
|
||||||
|
|||||||
Reference in New Issue
Block a user