@basemaps/cli-raster 8.6.0 → 8.9.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/cogify/__test__/{extract.test.js → topo/extract.test.js} +8 -2
- package/build/cogify/__test__/topo/extract.test.js.map +1 -0
- package/build/cogify/__test__/topo/slug.test.d.ts +1 -0
- package/build/cogify/__test__/topo/slug.test.js +39 -0
- package/build/cogify/__test__/topo/slug.test.js.map +1 -0
- package/build/cogify/cli/__test__/cli.charts.test.d.ts +1 -0
- package/build/cogify/cli/__test__/cli.charts.test.js +131 -0
- package/build/cogify/cli/__test__/cli.charts.test.js.map +1 -0
- package/build/cogify/cli/cli.charts.d.ts +35 -0
- package/build/cogify/cli/cli.charts.js +303 -0
- package/build/cogify/cli/cli.charts.js.map +1 -0
- package/build/cogify/cli/cli.cog.js +2 -2
- package/build/cogify/cli/cli.cog.js.map +1 -1
- package/build/cogify/cli/cli.topo.d.ts +2 -2
- package/build/cogify/cli/cli.topo.js +16 -17
- package/build/cogify/cli/cli.topo.js.map +1 -1
- package/build/cogify/cli.d.ts +32 -0
- package/build/cogify/cli.js +2 -0
- package/build/cogify/cli.js.map +1 -1
- package/build/cogify/covering/covering.js +2 -2
- package/build/cogify/covering/covering.js.map +1 -1
- package/build/cogify/gdal/gdal.command.d.ts +7 -1
- package/build/cogify/gdal/gdal.command.js +27 -0
- package/build/cogify/gdal/gdal.command.js.map +1 -1
- package/build/cogify/gdal/gdal.runner.d.ts +1 -1
- package/build/cogify/gdal/ogr2ogr.command.d.ts +20 -0
- package/build/cogify/gdal/ogr2ogr.command.js +57 -0
- package/build/cogify/gdal/ogr2ogr.command.js.map +1 -0
- package/build/cogify/topo/extract.d.ts +2 -2
- package/build/cogify/topo/extract.js +63 -20
- package/build/cogify/topo/extract.js.map +1 -1
- package/build/cogify/topo/slug.d.ts +6 -4
- package/build/cogify/topo/slug.js +43 -8
- package/build/cogify/topo/slug.js.map +1 -1
- package/build/cogify/topo/stac.creation.d.ts +3 -2
- package/build/cogify/topo/stac.creation.js +5 -5
- package/build/cogify/topo/stac.creation.js.map +1 -1
- package/dist/index.cjs +5115 -1858
- package/package.json +6 -6
- package/build/cogify/__test__/extract.test.js.map +0 -1
- /package/build/cogify/__test__/{extract.test.d.ts → topo/extract.test.d.ts} +0 -0
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Bounds,
|
|
1
|
+
import { Bounds, ProjectionLoader, TileMatrixSets, TmsLoader } from '@basemaps/geo';
|
|
2
2
|
import { RasterTypeKey, TiffTagGeo } from '@cogeotiff/core';
|
|
3
3
|
import path from 'path';
|
|
4
4
|
export const brokenTiffs = {
|
|
@@ -32,10 +32,33 @@ export function extractBoundsFromTiff(tiff, logger) {
|
|
|
32
32
|
return null;
|
|
33
33
|
}
|
|
34
34
|
}
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
35
|
+
/**
|
|
36
|
+
* Most (if not all) GeoTIFF files within a Map Series collection specify their imagery's
|
|
37
|
+
* projection using the 'Projection Coordinate System' Citation GeoKey TIFF tag. To interpret
|
|
38
|
+
* this, we map the tag's citation value to an EPSG code.
|
|
39
|
+
*
|
|
40
|
+
* @link http://geotiff.maptools.org/spec/geotiff2.7.html
|
|
41
|
+
*
|
|
42
|
+
* We map to the EPSG code number rather than an EPSG object because some EPSG definitions
|
|
43
|
+
* are not supported natively and must be initialised dynamically at runtime.
|
|
44
|
+
*/
|
|
45
|
+
const GeotagToEpsgCode = {
|
|
46
|
+
// global
|
|
47
|
+
'Universal Transverse Mercator Zone': 4326,
|
|
48
|
+
// antarctic
|
|
49
|
+
'McMurdo Sound Lambert Conformal 2000': 5479,
|
|
50
|
+
// new zealand
|
|
51
|
+
'Chatham Islands Transverse Mercator 2000': 2193,
|
|
52
|
+
'New Zealand Transverse Mercator 2000': 3793,
|
|
53
|
+
// new zealand offshore islands
|
|
54
|
+
'Auckland Islands Transverse Mercator': 3788,
|
|
55
|
+
'Campbell Island Transverse Mercator': 3789,
|
|
56
|
+
'Antipodes Islands Transverse Mercator': 3790,
|
|
57
|
+
'Raoul Island Transverse Mercator': 3791,
|
|
58
|
+
// pacific region
|
|
59
|
+
'Universal Transverse Mercator Zone 2s': 32702,
|
|
60
|
+
'Universal Transverse Mercator Zone 3s': 32703,
|
|
61
|
+
'Universal Transverse Mercator Zone 4s': 32704,
|
|
39
62
|
};
|
|
40
63
|
/**
|
|
41
64
|
* Attempts to extract an epsg value from the given Tiff object.
|
|
@@ -44,30 +67,50 @@ const projections = {
|
|
|
44
67
|
*
|
|
45
68
|
* @returns an Epsg instance, on success. Otherwise, null.
|
|
46
69
|
*/
|
|
47
|
-
export function extractEpsgFromTiff(tiff, logger) {
|
|
70
|
+
export async function extractEpsgFromTiff(tiff, logger) {
|
|
48
71
|
const img = tiff.images[0];
|
|
49
72
|
if (img == null) {
|
|
50
73
|
logger?.error({ source: tiff.source.url.href }, 'extractEpsgFromTiff(): No images found in Tiff file');
|
|
51
74
|
return null;
|
|
52
75
|
}
|
|
53
76
|
// try to extract the epsg directly from the tiff
|
|
54
|
-
const
|
|
55
|
-
if (
|
|
56
|
-
const
|
|
57
|
-
if (
|
|
58
|
-
logger?.info({ found: true, method: 'direct', source: tiff.source.url.href }, 'extractEpsgFromTiff()');
|
|
59
|
-
return
|
|
77
|
+
const epsgCode = img.epsg;
|
|
78
|
+
if (epsgCode != null) {
|
|
79
|
+
const epsg = await ProjectionLoader.load(epsgCode);
|
|
80
|
+
if (epsg != null) {
|
|
81
|
+
logger?.info({ found: true, method: 'direct', code: epsg.code, source: tiff.source.url.href }, 'extractEpsgFromTiff()');
|
|
82
|
+
return epsg;
|
|
60
83
|
}
|
|
61
84
|
}
|
|
62
|
-
// try to extract the epsg from the tiff's projected citation geotag
|
|
85
|
+
// try to extract the epsg code from the tiff's projected citation geotag
|
|
63
86
|
const tag = img.valueGeo(TiffTagGeo.ProjectedCitationGeoKey);
|
|
64
87
|
if (typeof tag === 'string') {
|
|
65
|
-
|
|
88
|
+
// some tags such as 'Universal Transverse Mercator Zone 2s' will match
|
|
89
|
+
// with citations like 'Universal Transverse Mercator Zone' first, which
|
|
90
|
+
// isn't what we want. So, we compare a tag against each and every
|
|
91
|
+
// citation to find the best match instead of short-circuiting early.
|
|
92
|
+
let bestMatch = null;
|
|
93
|
+
for (const [citation, epsgCode] of Object.entries(GeotagToEpsgCode)) {
|
|
66
94
|
if (tag.startsWith(citation)) {
|
|
67
|
-
|
|
68
|
-
|
|
95
|
+
// if the tag matches more of the current citation, set it as the best match
|
|
96
|
+
if (bestMatch == null || citation.length > bestMatch.citation.length) {
|
|
97
|
+
bestMatch = { citation, epsgCode };
|
|
98
|
+
}
|
|
69
99
|
}
|
|
70
100
|
}
|
|
101
|
+
if (bestMatch != null) {
|
|
102
|
+
const { citation, epsgCode } = bestMatch;
|
|
103
|
+
const epsg = await ProjectionLoader.load(epsgCode);
|
|
104
|
+
logger?.info({
|
|
105
|
+
found: true,
|
|
106
|
+
method: 'geotag',
|
|
107
|
+
tag,
|
|
108
|
+
citation,
|
|
109
|
+
code: epsg.code,
|
|
110
|
+
source: tiff.source.url.href,
|
|
111
|
+
}, 'extractEpsgFromTiff()');
|
|
112
|
+
return epsg;
|
|
113
|
+
}
|
|
71
114
|
}
|
|
72
115
|
logger?.info({ found: false }, 'extractEpsgFromTiff()');
|
|
73
116
|
return null;
|
|
@@ -126,31 +169,31 @@ export function extractSizeFromTiff(tiff, logger) {
|
|
|
126
169
|
*
|
|
127
170
|
* @returns a Map of TiffItem arrays by Epsg.
|
|
128
171
|
*/
|
|
129
|
-
export function extractTiffItemsByEpsg(tiffs, logger) {
|
|
172
|
+
export async function extractTiffItemsByEpsg(tiffs, logger) {
|
|
130
173
|
const tiffItemsByEpsg = new Map();
|
|
131
174
|
// create TiffItem objects for each tiff and store them by epsg
|
|
132
175
|
for (const tiff of tiffs) {
|
|
133
176
|
const source = tiff.source.url;
|
|
134
177
|
const { mapCode, version } = extractMapCodeAndVersion(source, logger);
|
|
135
178
|
const bounds = extractBoundsFromTiff(tiff, logger);
|
|
136
|
-
const epsg = extractEpsgFromTiff(tiff, logger);
|
|
137
|
-
const size = extractSizeFromTiff(tiff, logger);
|
|
138
|
-
const tileMatrix = TileMatrixSets.tryGet(epsg);
|
|
139
179
|
if (bounds == null) {
|
|
140
180
|
brokenTiffs.noBounds.push(`${mapCode}_${version}`);
|
|
141
181
|
logger.warn({ mapCode, version }, 'Could not extract bounds from tiff');
|
|
142
182
|
continue;
|
|
143
183
|
}
|
|
184
|
+
const epsg = await extractEpsgFromTiff(tiff, logger);
|
|
144
185
|
if (epsg == null) {
|
|
145
186
|
brokenTiffs.noEpsg.push(`${mapCode}_${version}`);
|
|
146
187
|
logger.warn({ mapCode, version }, 'Could not extract epsg from tiff');
|
|
147
188
|
continue;
|
|
148
189
|
}
|
|
190
|
+
const size = extractSizeFromTiff(tiff, logger);
|
|
149
191
|
if (size == null) {
|
|
150
192
|
brokenTiffs.noSize.push(`${mapCode}_${version}`);
|
|
151
193
|
logger.warn({ mapCode, version }, 'Could not extract width or height from tiff');
|
|
152
194
|
continue;
|
|
153
195
|
}
|
|
196
|
+
const tileMatrix = TileMatrixSets.tryGet(epsg) ?? (await TmsLoader.load(epsg.code));
|
|
154
197
|
if (tileMatrix == null) {
|
|
155
198
|
brokenTiffs.noTileMatrix.push(`${mapCode}_${version}`);
|
|
156
199
|
if (epsg != null) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"extract.js","sourceRoot":"","sources":["../../../src/cogify/topo/extract.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"extract.js","sourceRoot":"","sources":["../../../src/cogify/topo/extract.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,10 +1,12 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { Epsg } from '@basemaps/geo';
|
|
2
2
|
import { LogType } from '@basemaps/shared';
|
|
3
|
+
import { MapSeries } from '../cli/cli.topo.js';
|
|
3
4
|
/**
|
|
4
|
-
* Attempts to map the given
|
|
5
|
+
* Attempts to map the given MapSeries and Epsg to a slug.
|
|
5
6
|
*
|
|
6
|
-
* @param
|
|
7
|
+
* @param mapSeries - The MapSeries to consider for Epsgs with multiple slug options
|
|
8
|
+
* @param epsg - The Epsg to map to a slug
|
|
7
9
|
*
|
|
8
10
|
* @returns if succeeded, a slug string. Otherwise, null.
|
|
9
11
|
*/
|
|
10
|
-
export declare function mapEpsgToSlug(epsg:
|
|
12
|
+
export declare function mapEpsgToSlug(mapSeries: MapSeries, epsg: Epsg, logger?: LogType): string | null;
|
|
@@ -1,18 +1,53 @@
|
|
|
1
1
|
import { EpsgCode } from '@basemaps/geo';
|
|
2
2
|
const Slugs = {
|
|
3
|
-
|
|
4
|
-
|
|
3
|
+
topo25: {
|
|
4
|
+
// new zealand offshore islands
|
|
5
|
+
3788: 'snares-islands',
|
|
6
|
+
3789: 'campbell-island',
|
|
7
|
+
3790: 'antipodes-islands',
|
|
8
|
+
3791: 'kermadec-islands',
|
|
9
|
+
// pacific islands
|
|
10
|
+
32702: 'tokelau-islands',
|
|
11
|
+
32703: 'cook-islands-zone3',
|
|
12
|
+
32704: 'cook-islands-zone4',
|
|
13
|
+
},
|
|
14
|
+
topo50: {
|
|
15
|
+
// antarctic
|
|
16
|
+
5479: 'antarctic',
|
|
17
|
+
// new zealand
|
|
18
|
+
[EpsgCode.Nztm2000]: 'new-zealand-mainland',
|
|
19
|
+
[EpsgCode.Citm2000]: 'chatham-islands',
|
|
20
|
+
// new zealand offshore islands
|
|
21
|
+
3788: 'auckland-islands',
|
|
22
|
+
// pacific islands
|
|
23
|
+
32702: 'niue',
|
|
24
|
+
32703: 'suwarrow',
|
|
25
|
+
32704: 'penryn',
|
|
26
|
+
},
|
|
27
|
+
topo250: {
|
|
28
|
+
// new zealand
|
|
29
|
+
[EpsgCode.Nztm2000]: 'new-zealand-mainland',
|
|
30
|
+
[EpsgCode.Citm2000]: 'chatham-islands',
|
|
31
|
+
},
|
|
5
32
|
};
|
|
6
33
|
/**
|
|
7
|
-
* Attempts to map the given
|
|
34
|
+
* Attempts to map the given MapSeries and Epsg to a slug.
|
|
8
35
|
*
|
|
9
|
-
* @param
|
|
36
|
+
* @param mapSeries - The MapSeries to consider for Epsgs with multiple slug options
|
|
37
|
+
* @param epsg - The Epsg to map to a slug
|
|
10
38
|
*
|
|
11
39
|
* @returns if succeeded, a slug string. Otherwise, null.
|
|
12
40
|
*/
|
|
13
|
-
export function mapEpsgToSlug(epsg, logger) {
|
|
14
|
-
const slug = Slugs[epsg];
|
|
15
|
-
|
|
16
|
-
|
|
41
|
+
export function mapEpsgToSlug(mapSeries, epsg, logger) {
|
|
42
|
+
const slug = Slugs[mapSeries][epsg.code];
|
|
43
|
+
// slug found for the given map series and Epsg code
|
|
44
|
+
if (slug != null) {
|
|
45
|
+
const result = `${mapSeries}-${slug}`;
|
|
46
|
+
logger?.info({ found: true, slug: result }, 'mapEpsgToSlug()');
|
|
47
|
+
return result;
|
|
48
|
+
}
|
|
49
|
+
// no slug for the given map series and Epsg code
|
|
50
|
+
logger?.info({ found: false }, 'mapEpsgToSlug()');
|
|
51
|
+
return null;
|
|
17
52
|
}
|
|
18
53
|
//# sourceMappingURL=slug.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"slug.js","sourceRoot":"","sources":["../../../src/cogify/topo/slug.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"slug.js","sourceRoot":"","sources":["../../../src/cogify/topo/slug.ts"],"names":[],"mappings":"AAAA,OAAO,EAAQ,QAAQ,EAAE,MAAM,eAAe,CAAC;AAK/C,MAAM,KAAK,GAA8C;IACvD,MAAM,EAAE;QACN,+BAA+B;QAC/B,IAAI,EAAE,gBAAgB;QACtB,IAAI,EAAE,iBAAiB;QACvB,IAAI,EAAE,mBAAmB;QACzB,IAAI,EAAE,kBAAkB;QAExB,kBAAkB;QAClB,KAAK,EAAE,iBAAiB;QACxB,KAAK,EAAE,oBAAoB;QAC3B,KAAK,EAAE,oBAAoB;KAC5B;IACD,MAAM,EAAE;QACN,YAAY;QACZ,IAAI,EAAE,WAAW;QAEjB,cAAc;QACd,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,sBAAsB;QAC3C,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,iBAAiB;QAEtC,+BAA+B;QAC/B,IAAI,EAAE,kBAAkB;QAExB,kBAAkB;QAClB,KAAK,EAAE,MAAM;QACb,KAAK,EAAE,UAAU;QACjB,KAAK,EAAE,QAAQ;KAChB;IACD,OAAO,EAAE;QACP,cAAc;QACd,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,sBAAsB;QAC3C,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,iBAAiB;KACvC;CACF,CAAC;AAEF;;;;;;;GAOG;AACH,MAAM,UAAU,aAAa,CAAC,SAAoB,EAAE,IAAU,EAAE,MAAgB;IAC9E,MAAM,IAAI,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAEzC,oDAAoD;IACpD,IAAI,IAAI,IAAI,IAAI,EAAE,CAAC;QACjB,MAAM,MAAM,GAAG,GAAG,SAAS,IAAI,IAAI,EAAE,CAAC;QAEtC,MAAM,EAAE,IAAI,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,iBAAiB,CAAC,CAAC;QAC/D,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,iDAAiD;IACjD,MAAM,EAAE,IAAI,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,iBAAiB,CAAC,CAAC;IAClD,OAAO,IAAI,CAAC;AACd,CAAC"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { Bounds, Epsg } from '@basemaps/geo';
|
|
2
2
|
import { LogType } from '@basemaps/shared';
|
|
3
|
+
import { MapSeries } from '../cli/cli.topo.js';
|
|
3
4
|
import { CogifyStacCollection, TopoStacItem } from '../stac.js';
|
|
4
5
|
import { TiffItem } from './extract.js';
|
|
5
6
|
/**
|
|
@@ -16,7 +17,7 @@ export declare function createBaseStacItem(fileName: string, tiffItem: TiffItem,
|
|
|
16
17
|
/**
|
|
17
18
|
* Creates StacItems from a list of TiffItems and a sublist of those identified as the latest versions by map code.
|
|
18
19
|
*
|
|
19
|
-
* @param
|
|
20
|
+
* @param mapSeries: The map series of the imagery described by the TiffItems.
|
|
20
21
|
* @example topo250
|
|
21
22
|
*
|
|
22
23
|
* @param resolution: The resolution of the imagery described by the TiffItems.
|
|
@@ -36,7 +37,7 @@ export declare function createBaseStacItem(fileName: string, tiffItem: TiffItem,
|
|
|
36
37
|
* @returns An object containing the StacItems that will live in the topo[50/250] directory (all), and those that will live in
|
|
37
38
|
* the topo[50|250]_latest directory (latest).
|
|
38
39
|
*/
|
|
39
|
-
export declare function createStacItems(
|
|
40
|
+
export declare function createStacItems(mapSeries: MapSeries, resolution: string, all: TiffItem[], latest: Map<string, TiffItem>, logger?: LogType): {
|
|
40
41
|
all: TopoStacItem[];
|
|
41
42
|
latest: TopoStacItem[];
|
|
42
43
|
};
|
|
@@ -60,7 +60,7 @@ export function createBaseStacItem(fileName, tiffItem, logger) {
|
|
|
60
60
|
/**
|
|
61
61
|
* Creates StacItems from a list of TiffItems and a sublist of those identified as the latest versions by map code.
|
|
62
62
|
*
|
|
63
|
-
* @param
|
|
63
|
+
* @param mapSeries: The map series of the imagery described by the TiffItems.
|
|
64
64
|
* @example topo250
|
|
65
65
|
*
|
|
66
66
|
* @param resolution: The resolution of the imagery described by the TiffItems.
|
|
@@ -80,7 +80,7 @@ export function createBaseStacItem(fileName, tiffItem, logger) {
|
|
|
80
80
|
* @returns An object containing the StacItems that will live in the topo[50/250] directory (all), and those that will live in
|
|
81
81
|
* the topo[50|250]_latest directory (latest).
|
|
82
82
|
*/
|
|
83
|
-
export function createStacItems(
|
|
83
|
+
export function createStacItems(mapSeries, resolution, all, latest, logger) {
|
|
84
84
|
// create origin StacItem files
|
|
85
85
|
const allStacItems = all.map((item) => {
|
|
86
86
|
const latestTiff = latest.get(item.mapCode);
|
|
@@ -100,11 +100,11 @@ export function createStacItems(scale, resolution, all, latest, logger) {
|
|
|
100
100
|
const latestStacItem = createBaseStacItem(item.mapCode, item, logger);
|
|
101
101
|
// add link referencing this StacItem's origin file that will live in the topo[50/250] directory
|
|
102
102
|
latestStacItem.links.push({
|
|
103
|
-
// directory into which we save this StacItem file: <target>/<
|
|
104
|
-
// directory inside which we save this StacItem's origin file: <target>/<
|
|
103
|
+
// directory into which we save this StacItem file: <target>/<mapSeries>_latest/<resolution>/<espg>/[latest_stac_item]
|
|
104
|
+
// directory inside which we save this StacItem's origin file: <target>/<mapSeries>/<resolution>/<espg>/[origin_stac_item]
|
|
105
105
|
//
|
|
106
106
|
// `../../../` takes us up to the <target> directory
|
|
107
|
-
href: `../../../${
|
|
107
|
+
href: `../../../${mapSeries}/${resolution}/${item.epsg.code}/${item.mapCode}_${item.version}.json`,
|
|
108
108
|
rel: 'derived_from',
|
|
109
109
|
type: 'application/json',
|
|
110
110
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stac.creation.js","sourceRoot":"","sources":["../../../src/cogify/topo/stac.creation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgB,UAAU,EAAE,MAAM,eAAe,CAAC;AACzD,OAAO,EAAE,GAAG,EAAW,MAAM,kBAAkB,CAAC;AAChD,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,oCAAoC,CAAC;
|
|
1
|
+
{"version":3,"file":"stac.creation.js","sourceRoot":"","sources":["../../../src/cogify/topo/stac.creation.ts"],"names":[],"mappings":"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"}
|