@developmentseed/geotiff 0.3.0-beta.3
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/LICENSE +21 -0
- package/README.md +125 -0
- package/dist/api.d.ts +34 -0
- package/dist/api.d.ts.map +1 -0
- package/dist/api.js +84 -0
- package/dist/api.js.map +1 -0
- package/dist/array.d.ts +75 -0
- package/dist/array.d.ts.map +1 -0
- package/dist/array.js +141 -0
- package/dist/array.js.map +1 -0
- package/dist/codecs/canvas.d.ts +3 -0
- package/dist/codecs/canvas.d.ts.map +1 -0
- package/dist/codecs/canvas.js +32 -0
- package/dist/codecs/canvas.js.map +1 -0
- package/dist/codecs/decompression-stream.d.ts +6 -0
- package/dist/codecs/decompression-stream.d.ts.map +1 -0
- package/dist/codecs/decompression-stream.js +19 -0
- package/dist/codecs/decompression-stream.js.map +1 -0
- package/dist/codecs/deflate.d.ts +2 -0
- package/dist/codecs/deflate.d.ts.map +1 -0
- package/dist/codecs/deflate.js +5 -0
- package/dist/codecs/deflate.js.map +1 -0
- package/dist/codecs/lerc.d.ts +3 -0
- package/dist/codecs/lerc.d.ts.map +1 -0
- package/dist/codecs/lerc.js +16 -0
- package/dist/codecs/lerc.js.map +1 -0
- package/dist/codecs/lzw.d.ts +3 -0
- package/dist/codecs/lzw.d.ts.map +1 -0
- package/dist/codecs/lzw.js +8 -0
- package/dist/codecs/lzw.js.map +1 -0
- package/dist/codecs/predictor.d.ts +15 -0
- package/dist/codecs/predictor.d.ts.map +1 -0
- package/dist/codecs/predictor.js +88 -0
- package/dist/codecs/predictor.js.map +1 -0
- package/dist/colormap.d.ts +10 -0
- package/dist/colormap.d.ts.map +1 -0
- package/dist/colormap.js +31 -0
- package/dist/colormap.js.map +1 -0
- package/dist/crs.d.ts +86 -0
- package/dist/crs.d.ts.map +1 -0
- package/dist/crs.js +462 -0
- package/dist/crs.js.map +1 -0
- package/dist/decode/api.d.ts +28 -0
- package/dist/decode/api.d.ts.map +1 -0
- package/dist/decode/api.js +80 -0
- package/dist/decode/api.js.map +1 -0
- package/dist/decode.d.ts +34 -0
- package/dist/decode.d.ts.map +1 -0
- package/dist/decode.js +84 -0
- package/dist/decode.js.map +1 -0
- package/dist/fetch.d.ts +27 -0
- package/dist/fetch.d.ts.map +1 -0
- package/dist/fetch.js +116 -0
- package/dist/fetch.js.map +1 -0
- package/dist/geotiff.d.ts +116 -0
- package/dist/geotiff.d.ts.map +1 -0
- package/dist/geotiff.js +239 -0
- package/dist/geotiff.js.map +1 -0
- package/dist/ifd.d.ts +84 -0
- package/dist/ifd.d.ts.map +1 -0
- package/dist/ifd.js +113 -0
- package/dist/ifd.js.map +1 -0
- package/dist/index.d.ts +10 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +6 -0
- package/dist/index.js.map +1 -0
- package/dist/overview.d.ts +55 -0
- package/dist/overview.d.ts.map +1 -0
- package/dist/overview.js +78 -0
- package/dist/overview.js.map +1 -0
- package/dist/tile-matrix-set.d.ts +36 -0
- package/dist/tile-matrix-set.d.ts.map +1 -0
- package/dist/tile-matrix-set.js +87 -0
- package/dist/tile-matrix-set.js.map +1 -0
- package/dist/tile.d.ts +11 -0
- package/dist/tile.d.ts.map +1 -0
- package/dist/tile.js +2 -0
- package/dist/tile.js.map +1 -0
- package/dist/transform.d.ts +28 -0
- package/dist/transform.d.ts.map +1 -0
- package/dist/transform.js +51 -0
- package/dist/transform.js.map +1 -0
- package/dist/tsconfig.tsbuildinfo +1 -0
- package/package.json +59 -0
package/dist/crs.js
ADDED
|
@@ -0,0 +1,462 @@
|
|
|
1
|
+
// ── Constants ─────────────────────────────────────────────────────────────────
|
|
2
|
+
const PROJJSON_SCHEMA = "https://proj.org/schemas/v0.7/projjson.schema.json";
|
|
3
|
+
const MODEL_TYPE_PROJECTED = 1;
|
|
4
|
+
const MODEL_TYPE_GEOGRAPHIC = 2;
|
|
5
|
+
const USER_DEFINED = 32767;
|
|
6
|
+
// GeoTIFF coordinate transformation type codes (GeoKey 3075)
|
|
7
|
+
// http://geotiff.maptools.org/spec/geotiff6.html#6.3.3.3
|
|
8
|
+
const CT_TRANSVERSE_MERCATOR = 1;
|
|
9
|
+
const CT_TRANSVERSE_MERCATOR_SOUTH = 2;
|
|
10
|
+
const CT_OBLIQUE_MERCATOR = 3;
|
|
11
|
+
const CT_OBLIQUE_MERCATOR_LABORDE = 4;
|
|
12
|
+
const CT_OBLIQUE_MERCATOR_ROSENMUND = 5;
|
|
13
|
+
const CT_OBLIQUE_MERCATOR_SPHERICAL = 6;
|
|
14
|
+
const CT_MERCATOR = 7;
|
|
15
|
+
const CT_LAMBERT_CONFORMAL_CONIC_2SP = 8;
|
|
16
|
+
const CT_LAMBERT_CONFORMAL_CONIC_1SP = 9;
|
|
17
|
+
const CT_LAMBERT_AZIMUTHAL_EQUAL_AREA = 10;
|
|
18
|
+
const CT_ALBERS_EQUAL_AREA = 11;
|
|
19
|
+
const CT_AZIMUTHAL_EQUIDISTANT = 12;
|
|
20
|
+
const CT_STEREOGRAPHIC = 14;
|
|
21
|
+
const CT_POLAR_STEREOGRAPHIC = 15;
|
|
22
|
+
const CT_OBLIQUE_STEREOGRAPHIC = 16;
|
|
23
|
+
const CT_EQUIRECTANGULAR = 17;
|
|
24
|
+
const CT_CASSINI_SOLDNER = 18;
|
|
25
|
+
const CT_ORTHOGRAPHIC = 21;
|
|
26
|
+
const CT_POLYCONIC = 22;
|
|
27
|
+
const CT_SINUSOIDAL = 24;
|
|
28
|
+
const CT_NEW_ZEALAND_MAP_GRID = 26;
|
|
29
|
+
const CT_TRANSVERSE_MERCATOR_SOUTH_ORIENTED = 27;
|
|
30
|
+
const ANGULAR_UNIT_DEGREE = 9102;
|
|
31
|
+
const ANGULAR_UNIT_RADIAN = 9101;
|
|
32
|
+
const ANGULAR_UNIT_GRAD = 9105;
|
|
33
|
+
const ANGULAR_UNIT = {
|
|
34
|
+
[ANGULAR_UNIT_DEGREE]: "degree",
|
|
35
|
+
[ANGULAR_UNIT_RADIAN]: "radian",
|
|
36
|
+
[ANGULAR_UNIT_GRAD]: "grad",
|
|
37
|
+
};
|
|
38
|
+
const LINEAR_UNIT_METRE = 9001;
|
|
39
|
+
const LINEAR_UNIT_FOOT = 9002;
|
|
40
|
+
const LINEAR_UNIT_US_SURVEY_FOOT = 9003;
|
|
41
|
+
const US_SURVEY_FOOT = {
|
|
42
|
+
type: "LinearUnit",
|
|
43
|
+
name: "US survey foot",
|
|
44
|
+
conversion_factor: 0.30480060960121924,
|
|
45
|
+
};
|
|
46
|
+
const LINEAR_UNIT = {
|
|
47
|
+
[LINEAR_UNIT_METRE]: "metre",
|
|
48
|
+
[LINEAR_UNIT_FOOT]: "foot",
|
|
49
|
+
[LINEAR_UNIT_US_SURVEY_FOOT]: US_SURVEY_FOOT,
|
|
50
|
+
};
|
|
51
|
+
/**
|
|
52
|
+
* Parse a CRS from a GeoKeyDirectory.
|
|
53
|
+
*
|
|
54
|
+
* Returns the EPSG code as a number for EPSG-coded CRSes (letting the caller
|
|
55
|
+
* decide how to resolve it), or a PROJJSON object built from the geo keys for
|
|
56
|
+
* user-defined CRSes.
|
|
57
|
+
*/
|
|
58
|
+
export function crsFromGeoKeys(gkd) {
|
|
59
|
+
const modelType = gkd.modelType;
|
|
60
|
+
if (modelType === MODEL_TYPE_PROJECTED) {
|
|
61
|
+
return _projectedCrs(gkd);
|
|
62
|
+
}
|
|
63
|
+
if (modelType === MODEL_TYPE_GEOGRAPHIC) {
|
|
64
|
+
return _geographicCrs(gkd);
|
|
65
|
+
}
|
|
66
|
+
throw new Error(`Unsupported GeoTIFF model type: ${modelType}`);
|
|
67
|
+
}
|
|
68
|
+
function _geographicCrs(gkd) {
|
|
69
|
+
const epsg = gkd.geodeticCRS;
|
|
70
|
+
if (epsg !== null && epsg !== USER_DEFINED) {
|
|
71
|
+
return epsg;
|
|
72
|
+
}
|
|
73
|
+
return _buildGeographicCrs(gkd, PROJJSON_SCHEMA);
|
|
74
|
+
}
|
|
75
|
+
function _projectedCrs(gkd) {
|
|
76
|
+
const epsg = gkd.projectedCRS;
|
|
77
|
+
if (epsg !== null && epsg !== USER_DEFINED) {
|
|
78
|
+
return epsg;
|
|
79
|
+
}
|
|
80
|
+
return _buildProjectedCrs(gkd);
|
|
81
|
+
}
|
|
82
|
+
function _buildGeographicCrs(gkd, schema) {
|
|
83
|
+
const ellipsoid = _buildEllipsoid(gkd);
|
|
84
|
+
let pmName = "Greenwich";
|
|
85
|
+
let pmLongitude = 0.0;
|
|
86
|
+
if (gkd.primeMeridian !== null && gkd.primeMeridian !== USER_DEFINED) {
|
|
87
|
+
pmName = `EPSG:${gkd.primeMeridian}`;
|
|
88
|
+
}
|
|
89
|
+
else if (gkd.primeMeridianLongitude !== null) {
|
|
90
|
+
pmLongitude = gkd.primeMeridianLongitude;
|
|
91
|
+
pmName = "User-defined";
|
|
92
|
+
}
|
|
93
|
+
let datum;
|
|
94
|
+
if (gkd.geodeticDatum !== null && gkd.geodeticDatum !== USER_DEFINED) {
|
|
95
|
+
datum = {
|
|
96
|
+
type: "GeodeticReferenceFrame",
|
|
97
|
+
name: `Unknown datum based upon EPSG ${gkd.geodeticDatum} ellipsoid`,
|
|
98
|
+
};
|
|
99
|
+
}
|
|
100
|
+
else {
|
|
101
|
+
datum = {
|
|
102
|
+
type: "GeodeticReferenceFrame",
|
|
103
|
+
name: gkd.geodeticCitation ?? "User-defined",
|
|
104
|
+
ellipsoid,
|
|
105
|
+
prime_meridian: { name: pmName, longitude: pmLongitude },
|
|
106
|
+
};
|
|
107
|
+
}
|
|
108
|
+
const crs = {
|
|
109
|
+
type: "GeographicCRS",
|
|
110
|
+
name: gkd.geodeticCitation ?? "User-defined",
|
|
111
|
+
datum,
|
|
112
|
+
coordinate_system: _geographicCs(gkd),
|
|
113
|
+
};
|
|
114
|
+
if (schema !== undefined) {
|
|
115
|
+
crs.$schema = schema;
|
|
116
|
+
}
|
|
117
|
+
return crs;
|
|
118
|
+
}
|
|
119
|
+
function _buildProjectedCrs(gkd) {
|
|
120
|
+
// Always build the base CRS from geo keys — the geodeticCRS EPSG code inside
|
|
121
|
+
// a user-defined projected CRS is informational, not a fetch target.
|
|
122
|
+
const baseCrs = _buildGeographicCrs(gkd);
|
|
123
|
+
const conversion = _buildConversion(gkd);
|
|
124
|
+
const cs = _projectedCs(gkd);
|
|
125
|
+
return {
|
|
126
|
+
type: "ProjectedCRS",
|
|
127
|
+
$schema: PROJJSON_SCHEMA,
|
|
128
|
+
name: gkd.projectedCitation ?? gkd.citation ?? "User-defined",
|
|
129
|
+
base_crs: baseCrs,
|
|
130
|
+
conversion,
|
|
131
|
+
coordinate_system: cs,
|
|
132
|
+
};
|
|
133
|
+
}
|
|
134
|
+
function _buildEllipsoid(gkd) {
|
|
135
|
+
if (gkd.ellipsoid !== null && gkd.ellipsoid !== USER_DEFINED) {
|
|
136
|
+
const ellipsoid = {
|
|
137
|
+
name: `EPSG ellipsoid ${gkd.ellipsoid}`,
|
|
138
|
+
};
|
|
139
|
+
if (gkd.ellipsoidSemiMajorAxis !== null) {
|
|
140
|
+
ellipsoid.semi_major_axis = gkd.ellipsoidSemiMajorAxis;
|
|
141
|
+
}
|
|
142
|
+
if (gkd.ellipsoidInvFlattening !== null) {
|
|
143
|
+
ellipsoid.inverse_flattening = gkd.ellipsoidInvFlattening;
|
|
144
|
+
}
|
|
145
|
+
else if (gkd.ellipsoidSemiMinorAxis !== null) {
|
|
146
|
+
ellipsoid.semi_minor_axis = gkd.ellipsoidSemiMinorAxis;
|
|
147
|
+
}
|
|
148
|
+
return ellipsoid;
|
|
149
|
+
}
|
|
150
|
+
if (gkd.ellipsoidSemiMajorAxis === null) {
|
|
151
|
+
throw new Error("User-defined ellipsoid requires ellipsoidSemiMajorAxis");
|
|
152
|
+
}
|
|
153
|
+
const ellipsoid = {
|
|
154
|
+
name: gkd.geodeticCitation ?? "User-defined",
|
|
155
|
+
semi_major_axis: gkd.ellipsoidSemiMajorAxis,
|
|
156
|
+
};
|
|
157
|
+
if (gkd.ellipsoidInvFlattening !== null) {
|
|
158
|
+
ellipsoid.inverse_flattening = gkd.ellipsoidInvFlattening;
|
|
159
|
+
}
|
|
160
|
+
else if (gkd.ellipsoidSemiMinorAxis !== null) {
|
|
161
|
+
ellipsoid.semi_minor_axis = gkd.ellipsoidSemiMinorAxis;
|
|
162
|
+
}
|
|
163
|
+
else {
|
|
164
|
+
throw new Error("User-defined ellipsoid requires ellipsoidInvFlattening or ellipsoidSemiMinorAxis");
|
|
165
|
+
}
|
|
166
|
+
return ellipsoid;
|
|
167
|
+
}
|
|
168
|
+
function _buildConversion(gkd) {
|
|
169
|
+
const ct = gkd.projMethod;
|
|
170
|
+
if (ct === null) {
|
|
171
|
+
throw new Error("User-defined projected CRS requires projMethod");
|
|
172
|
+
}
|
|
173
|
+
const angular = (name, value, default_ = 0.0) => ({
|
|
174
|
+
name,
|
|
175
|
+
value: value ?? default_,
|
|
176
|
+
unit: "degree",
|
|
177
|
+
});
|
|
178
|
+
const linear = (name, value, default_ = 0.0) => ({
|
|
179
|
+
name,
|
|
180
|
+
value: value ?? default_,
|
|
181
|
+
unit: "metre",
|
|
182
|
+
});
|
|
183
|
+
const scale = (name, value, default_ = 1.0) => ({
|
|
184
|
+
name,
|
|
185
|
+
value: value ?? default_,
|
|
186
|
+
unit: "unity",
|
|
187
|
+
});
|
|
188
|
+
switch (ct) {
|
|
189
|
+
case CT_TRANSVERSE_MERCATOR:
|
|
190
|
+
case CT_TRANSVERSE_MERCATOR_SOUTH:
|
|
191
|
+
case CT_TRANSVERSE_MERCATOR_SOUTH_ORIENTED: {
|
|
192
|
+
const name = ct === CT_TRANSVERSE_MERCATOR
|
|
193
|
+
? "Transverse Mercator"
|
|
194
|
+
: "Transverse Mercator (South Orientated)";
|
|
195
|
+
return {
|
|
196
|
+
name,
|
|
197
|
+
method: { name },
|
|
198
|
+
parameters: [
|
|
199
|
+
angular("Latitude of natural origin", gkd.projNatOriginLat),
|
|
200
|
+
angular("Longitude of natural origin", gkd.projNatOriginLong),
|
|
201
|
+
scale("Scale factor at natural origin", gkd.projScaleAtNatOrigin),
|
|
202
|
+
linear("False easting", gkd.projFalseEasting),
|
|
203
|
+
linear("False northing", gkd.projFalseNorthing),
|
|
204
|
+
],
|
|
205
|
+
};
|
|
206
|
+
}
|
|
207
|
+
case CT_OBLIQUE_MERCATOR:
|
|
208
|
+
case CT_OBLIQUE_MERCATOR_LABORDE:
|
|
209
|
+
case CT_OBLIQUE_MERCATOR_ROSENMUND:
|
|
210
|
+
case CT_OBLIQUE_MERCATOR_SPHERICAL: {
|
|
211
|
+
const name = "Hotine Oblique Mercator (variant B)";
|
|
212
|
+
return {
|
|
213
|
+
name,
|
|
214
|
+
method: { name },
|
|
215
|
+
parameters: [
|
|
216
|
+
angular("Latitude of projection centre", gkd.projCenterLat),
|
|
217
|
+
angular("Longitude of projection centre", gkd.projCenterLong),
|
|
218
|
+
angular("Azimuth of initial line", gkd.projAzimuthAngle),
|
|
219
|
+
angular("Angle from Rectified to Skew Grid", gkd.projAzimuthAngle),
|
|
220
|
+
scale("Scale factor on initial line", gkd.projScaleAtCenter),
|
|
221
|
+
linear("Easting at projection centre", gkd.projCenterEasting),
|
|
222
|
+
linear("Northing at projection centre", gkd.projCenterNorthing),
|
|
223
|
+
],
|
|
224
|
+
};
|
|
225
|
+
}
|
|
226
|
+
case CT_MERCATOR: {
|
|
227
|
+
const name = "Mercator (variant A)";
|
|
228
|
+
return {
|
|
229
|
+
name,
|
|
230
|
+
method: { name },
|
|
231
|
+
parameters: [
|
|
232
|
+
angular("Latitude of natural origin", gkd.projNatOriginLat),
|
|
233
|
+
angular("Longitude of natural origin", gkd.projNatOriginLong),
|
|
234
|
+
scale("Scale factor at natural origin", gkd.projScaleAtNatOrigin),
|
|
235
|
+
linear("False easting", gkd.projFalseEasting),
|
|
236
|
+
linear("False northing", gkd.projFalseNorthing),
|
|
237
|
+
],
|
|
238
|
+
};
|
|
239
|
+
}
|
|
240
|
+
case CT_LAMBERT_CONFORMAL_CONIC_2SP: {
|
|
241
|
+
const name = "Lambert Conic Conformal (2SP)";
|
|
242
|
+
return {
|
|
243
|
+
name,
|
|
244
|
+
method: { name },
|
|
245
|
+
parameters: [
|
|
246
|
+
angular("Latitude of false origin", gkd.projFalseOriginLat ?? gkd.projNatOriginLat),
|
|
247
|
+
angular("Longitude of false origin", gkd.projFalseOriginLong ?? gkd.projNatOriginLong),
|
|
248
|
+
angular("Latitude of 1st standard parallel", gkd.projStdParallel1),
|
|
249
|
+
angular("Latitude of 2nd standard parallel", gkd.projStdParallel2),
|
|
250
|
+
linear("Easting at false origin", gkd.projFalseOriginEasting ?? gkd.projFalseEasting),
|
|
251
|
+
linear("Northing at false origin", gkd.projFalseOriginNorthing ?? gkd.projFalseNorthing),
|
|
252
|
+
],
|
|
253
|
+
};
|
|
254
|
+
}
|
|
255
|
+
case CT_LAMBERT_CONFORMAL_CONIC_1SP: {
|
|
256
|
+
const name = "Lambert Conic Conformal (1SP)";
|
|
257
|
+
return {
|
|
258
|
+
name,
|
|
259
|
+
method: { name },
|
|
260
|
+
parameters: [
|
|
261
|
+
angular("Latitude of natural origin", gkd.projNatOriginLat),
|
|
262
|
+
angular("Longitude of natural origin", gkd.projNatOriginLong),
|
|
263
|
+
scale("Scale factor at natural origin", gkd.projScaleAtNatOrigin),
|
|
264
|
+
linear("False easting", gkd.projFalseEasting),
|
|
265
|
+
linear("False northing", gkd.projFalseNorthing),
|
|
266
|
+
],
|
|
267
|
+
};
|
|
268
|
+
}
|
|
269
|
+
case CT_LAMBERT_AZIMUTHAL_EQUAL_AREA: {
|
|
270
|
+
const name = "Lambert Azimuthal Equal Area";
|
|
271
|
+
return {
|
|
272
|
+
name,
|
|
273
|
+
method: { name },
|
|
274
|
+
parameters: [
|
|
275
|
+
angular("Latitude of natural origin", gkd.projCenterLat),
|
|
276
|
+
angular("Longitude of natural origin", gkd.projCenterLong),
|
|
277
|
+
linear("False easting", gkd.projFalseEasting),
|
|
278
|
+
linear("False northing", gkd.projFalseNorthing),
|
|
279
|
+
],
|
|
280
|
+
};
|
|
281
|
+
}
|
|
282
|
+
case CT_ALBERS_EQUAL_AREA: {
|
|
283
|
+
const name = "Albers Equal Area";
|
|
284
|
+
return {
|
|
285
|
+
name,
|
|
286
|
+
method: { name },
|
|
287
|
+
parameters: [
|
|
288
|
+
angular("Latitude of false origin", gkd.projFalseOriginLat ?? gkd.projNatOriginLat),
|
|
289
|
+
angular("Longitude of false origin", gkd.projFalseOriginLong ?? gkd.projNatOriginLong),
|
|
290
|
+
angular("Latitude of 1st standard parallel", gkd.projStdParallel1),
|
|
291
|
+
angular("Latitude of 2nd standard parallel", gkd.projStdParallel2),
|
|
292
|
+
linear("Easting at false origin", gkd.projFalseOriginEasting ?? gkd.projFalseEasting),
|
|
293
|
+
linear("Northing at false origin", gkd.projFalseOriginNorthing ?? gkd.projFalseNorthing),
|
|
294
|
+
],
|
|
295
|
+
};
|
|
296
|
+
}
|
|
297
|
+
case CT_AZIMUTHAL_EQUIDISTANT: {
|
|
298
|
+
const name = "Modified Azimuthal Equidistant";
|
|
299
|
+
return {
|
|
300
|
+
name,
|
|
301
|
+
method: { name },
|
|
302
|
+
parameters: [
|
|
303
|
+
angular("Latitude of natural origin", gkd.projCenterLat),
|
|
304
|
+
angular("Longitude of natural origin", gkd.projCenterLong),
|
|
305
|
+
linear("False easting", gkd.projFalseEasting),
|
|
306
|
+
linear("False northing", gkd.projFalseNorthing),
|
|
307
|
+
],
|
|
308
|
+
};
|
|
309
|
+
}
|
|
310
|
+
case CT_STEREOGRAPHIC: {
|
|
311
|
+
const name = "Stereographic";
|
|
312
|
+
return {
|
|
313
|
+
name,
|
|
314
|
+
method: { name },
|
|
315
|
+
parameters: [
|
|
316
|
+
angular("Latitude of natural origin", gkd.projCenterLat),
|
|
317
|
+
angular("Longitude of natural origin", gkd.projCenterLong),
|
|
318
|
+
scale("Scale factor at natural origin", gkd.projScaleAtCenter),
|
|
319
|
+
linear("False easting", gkd.projFalseEasting),
|
|
320
|
+
linear("False northing", gkd.projFalseNorthing),
|
|
321
|
+
],
|
|
322
|
+
};
|
|
323
|
+
}
|
|
324
|
+
case CT_POLAR_STEREOGRAPHIC: {
|
|
325
|
+
const name = "Polar Stereographic (variant B)";
|
|
326
|
+
return {
|
|
327
|
+
name,
|
|
328
|
+
method: { name },
|
|
329
|
+
parameters: [
|
|
330
|
+
angular("Latitude of standard parallel", gkd.projNatOriginLat ?? gkd.projStdParallel1),
|
|
331
|
+
angular("Longitude of origin", gkd.projStraightVertPoleLong ?? gkd.projNatOriginLong),
|
|
332
|
+
linear("False easting", gkd.projFalseEasting),
|
|
333
|
+
linear("False northing", gkd.projFalseNorthing),
|
|
334
|
+
],
|
|
335
|
+
};
|
|
336
|
+
}
|
|
337
|
+
case CT_OBLIQUE_STEREOGRAPHIC: {
|
|
338
|
+
const name = "Oblique Stereographic";
|
|
339
|
+
return {
|
|
340
|
+
name,
|
|
341
|
+
method: { name },
|
|
342
|
+
parameters: [
|
|
343
|
+
angular("Latitude of natural origin", gkd.projCenterLat),
|
|
344
|
+
angular("Longitude of natural origin", gkd.projCenterLong),
|
|
345
|
+
scale("Scale factor at natural origin", gkd.projScaleAtCenter),
|
|
346
|
+
linear("False easting", gkd.projFalseEasting),
|
|
347
|
+
linear("False northing", gkd.projFalseNorthing),
|
|
348
|
+
],
|
|
349
|
+
};
|
|
350
|
+
}
|
|
351
|
+
case CT_EQUIRECTANGULAR: {
|
|
352
|
+
const name = "Equidistant Cylindrical";
|
|
353
|
+
return {
|
|
354
|
+
name,
|
|
355
|
+
method: { name },
|
|
356
|
+
parameters: [
|
|
357
|
+
angular("Latitude of 1st standard parallel", gkd.projStdParallel1 ?? gkd.projCenterLat),
|
|
358
|
+
angular("Longitude of natural origin", gkd.projCenterLong),
|
|
359
|
+
linear("False easting", gkd.projFalseEasting),
|
|
360
|
+
linear("False northing", gkd.projFalseNorthing),
|
|
361
|
+
],
|
|
362
|
+
};
|
|
363
|
+
}
|
|
364
|
+
case CT_CASSINI_SOLDNER: {
|
|
365
|
+
const name = "Cassini-Soldner";
|
|
366
|
+
return {
|
|
367
|
+
name,
|
|
368
|
+
method: { name },
|
|
369
|
+
parameters: [
|
|
370
|
+
angular("Latitude of natural origin", gkd.projNatOriginLat),
|
|
371
|
+
angular("Longitude of natural origin", gkd.projNatOriginLong),
|
|
372
|
+
linear("False easting", gkd.projFalseEasting),
|
|
373
|
+
linear("False northing", gkd.projFalseNorthing),
|
|
374
|
+
],
|
|
375
|
+
};
|
|
376
|
+
}
|
|
377
|
+
case CT_POLYCONIC: {
|
|
378
|
+
const name = "American Polyconic";
|
|
379
|
+
return {
|
|
380
|
+
name,
|
|
381
|
+
method: { name },
|
|
382
|
+
parameters: [
|
|
383
|
+
angular("Latitude of natural origin", gkd.projNatOriginLat),
|
|
384
|
+
angular("Longitude of natural origin", gkd.projNatOriginLong),
|
|
385
|
+
linear("False easting", gkd.projFalseEasting),
|
|
386
|
+
linear("False northing", gkd.projFalseNorthing),
|
|
387
|
+
],
|
|
388
|
+
};
|
|
389
|
+
}
|
|
390
|
+
case CT_SINUSOIDAL: {
|
|
391
|
+
const name = "Sinusoidal";
|
|
392
|
+
return {
|
|
393
|
+
name,
|
|
394
|
+
method: { name },
|
|
395
|
+
parameters: [
|
|
396
|
+
angular("Longitude of natural origin", gkd.projCenterLong),
|
|
397
|
+
linear("False easting", gkd.projFalseEasting),
|
|
398
|
+
linear("False northing", gkd.projFalseNorthing),
|
|
399
|
+
],
|
|
400
|
+
};
|
|
401
|
+
}
|
|
402
|
+
case CT_ORTHOGRAPHIC: {
|
|
403
|
+
const name = "Orthographic";
|
|
404
|
+
return {
|
|
405
|
+
name,
|
|
406
|
+
method: { name },
|
|
407
|
+
parameters: [
|
|
408
|
+
angular("Latitude of natural origin", gkd.projCenterLat),
|
|
409
|
+
angular("Longitude of natural origin", gkd.projCenterLong),
|
|
410
|
+
linear("False easting", gkd.projFalseEasting),
|
|
411
|
+
linear("False northing", gkd.projFalseNorthing),
|
|
412
|
+
],
|
|
413
|
+
};
|
|
414
|
+
}
|
|
415
|
+
case CT_NEW_ZEALAND_MAP_GRID: {
|
|
416
|
+
const name = "New Zealand Map Grid";
|
|
417
|
+
return {
|
|
418
|
+
name,
|
|
419
|
+
method: { name },
|
|
420
|
+
parameters: [
|
|
421
|
+
angular("Latitude of natural origin", gkd.projNatOriginLat),
|
|
422
|
+
angular("Longitude of natural origin", gkd.projNatOriginLong),
|
|
423
|
+
linear("False easting", gkd.projFalseEasting),
|
|
424
|
+
linear("False northing", gkd.projFalseNorthing),
|
|
425
|
+
],
|
|
426
|
+
};
|
|
427
|
+
}
|
|
428
|
+
default:
|
|
429
|
+
throw new Error(`Unsupported coordinate transformation type: ${ct}`);
|
|
430
|
+
}
|
|
431
|
+
}
|
|
432
|
+
function _geographicCs(gkd) {
|
|
433
|
+
const unit = ANGULAR_UNIT[gkd.angularUnits ?? ANGULAR_UNIT_DEGREE] ?? "degree";
|
|
434
|
+
return {
|
|
435
|
+
subtype: "ellipsoidal",
|
|
436
|
+
axis: [
|
|
437
|
+
{
|
|
438
|
+
name: "Geodetic latitude",
|
|
439
|
+
abbreviation: "Lat",
|
|
440
|
+
direction: "north",
|
|
441
|
+
unit,
|
|
442
|
+
},
|
|
443
|
+
{
|
|
444
|
+
name: "Geodetic longitude",
|
|
445
|
+
abbreviation: "Lon",
|
|
446
|
+
direction: "east",
|
|
447
|
+
unit,
|
|
448
|
+
},
|
|
449
|
+
],
|
|
450
|
+
};
|
|
451
|
+
}
|
|
452
|
+
function _projectedCs(gkd) {
|
|
453
|
+
const unit = LINEAR_UNIT[gkd.projLinearUnits ?? LINEAR_UNIT_METRE] ?? "metre";
|
|
454
|
+
return {
|
|
455
|
+
subtype: "Cartesian",
|
|
456
|
+
axis: [
|
|
457
|
+
{ name: "Easting", abbreviation: "E", direction: "east", unit },
|
|
458
|
+
{ name: "Northing", abbreviation: "N", direction: "north", unit },
|
|
459
|
+
],
|
|
460
|
+
};
|
|
461
|
+
}
|
|
462
|
+
//# sourceMappingURL=crs.js.map
|
package/dist/crs.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"crs.js","sourceRoot":"","sources":["../src/crs.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { Compression, SampleFormat } from "@cogeotiff/core";
|
|
2
|
+
import type { RasterTypedArray } from "../array.js";
|
|
3
|
+
/** The result of a decoding process */
|
|
4
|
+
export type DecodedPixels = {
|
|
5
|
+
layout: "pixel-interleaved";
|
|
6
|
+
data: RasterTypedArray;
|
|
7
|
+
} | {
|
|
8
|
+
layout: "band-separate";
|
|
9
|
+
bands: RasterTypedArray[];
|
|
10
|
+
};
|
|
11
|
+
/** Metadata from the TIFF IFD, passed to decoders that need it. */
|
|
12
|
+
export type DecoderMetadata = {
|
|
13
|
+
sampleFormat: SampleFormat;
|
|
14
|
+
bitsPerSample: number;
|
|
15
|
+
samplesPerPixel: number;
|
|
16
|
+
};
|
|
17
|
+
/**
|
|
18
|
+
* A decoder returns either:
|
|
19
|
+
* - An ArrayBuffer of raw decompressed bytes (byte-level codecs like deflate, zstd)
|
|
20
|
+
* - A DecodedPixels with typed pixel data (image codecs like LERC, JPEG)
|
|
21
|
+
*/
|
|
22
|
+
export type Decoder = (bytes: ArrayBuffer, metadata: DecoderMetadata) => Promise<ArrayBuffer | DecodedPixels>;
|
|
23
|
+
export declare const registry: Map<Compression, () => Promise<Decoder>>;
|
|
24
|
+
/**
|
|
25
|
+
* Decode a tile's bytes according to its compression and image metadata.
|
|
26
|
+
*/
|
|
27
|
+
export declare function decode(bytes: ArrayBuffer, compression: Compression, metadata: DecoderMetadata): Promise<DecodedPixels>;
|
|
28
|
+
//# sourceMappingURL=api.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../../src/decode/api.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC5D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAGpD,uCAAuC;AACvC,MAAM,MAAM,aAAa,GACrB;IAAE,MAAM,EAAE,mBAAmB,CAAC;IAAC,IAAI,EAAE,gBAAgB,CAAA;CAAE,GACvD;IAAE,MAAM,EAAE,eAAe,CAAC;IAAC,KAAK,EAAE,gBAAgB,EAAE,CAAA;CAAE,CAAC;AAE3D,mEAAmE;AACnE,MAAM,MAAM,eAAe,GAAG;IAC5B,YAAY,EAAE,YAAY,CAAC;IAC3B,aAAa,EAAE,MAAM,CAAC;IACtB,eAAe,EAAE,MAAM,CAAC;CACzB,CAAC;AAEF;;;;GAIG;AACH,MAAM,MAAM,OAAO,GAAG,CACpB,KAAK,EAAE,WAAW,EAClB,QAAQ,EAAE,eAAe,KACtB,OAAO,CAAC,WAAW,GAAG,aAAa,CAAC,CAAC;AAM1C,eAAO,MAAM,QAAQ,yBAA8B,OAAO,CAAC,OAAO,CAAC,CAAG,CAAC;AAyBvE;;GAEG;AACH,wBAAsB,MAAM,CAC1B,KAAK,EAAE,WAAW,EAClB,WAAW,EAAE,WAAW,EACxB,QAAQ,EAAE,eAAe,GACxB,OAAO,CAAC,aAAa,CAAC,CAiBxB"}
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
import { Compression, SampleFormat } from "@cogeotiff/core";
|
|
2
|
+
import { decode as decodeViaCanvas } from "../codecs/canvas.js";
|
|
3
|
+
async function decodeUncompressed(bytes) {
|
|
4
|
+
return bytes;
|
|
5
|
+
}
|
|
6
|
+
export const registry = new Map();
|
|
7
|
+
registry.set(Compression.None, () => Promise.resolve(decodeUncompressed));
|
|
8
|
+
registry.set(Compression.Deflate, () => import("../codecs/deflate.js").then((m) => m.decode));
|
|
9
|
+
registry.set(Compression.DeflateOther, () => import("../codecs/deflate.js").then((m) => m.decode));
|
|
10
|
+
// registry.set(Compression.Zstd, () =>
|
|
11
|
+
// import("../codecs/zstd.js").then((m) => m.decode),
|
|
12
|
+
// );
|
|
13
|
+
// registry.set(Compression.Lzma, () =>
|
|
14
|
+
// import("../codecs/lzma.js").then((m) => m.decode),
|
|
15
|
+
// );
|
|
16
|
+
// registry.set(Compression.Jp2000, () =>
|
|
17
|
+
// import("../codecs/jp2000.js").then((m) => m.decode),
|
|
18
|
+
// );
|
|
19
|
+
registry.set(Compression.Jpeg, () => Promise.resolve(decodeViaCanvas));
|
|
20
|
+
registry.set(Compression.Jpeg6, () => Promise.resolve(decodeViaCanvas));
|
|
21
|
+
registry.set(Compression.Webp, () => Promise.resolve(decodeViaCanvas));
|
|
22
|
+
registry.set(Compression.Lerc, () => import("../codecs/lerc.js").then((m) => m.decode));
|
|
23
|
+
/**
|
|
24
|
+
* Decode a tile's bytes according to its compression and image metadata.
|
|
25
|
+
*/
|
|
26
|
+
export async function decode(bytes, compression, metadata) {
|
|
27
|
+
const loader = registry.get(compression);
|
|
28
|
+
if (!loader) {
|
|
29
|
+
throw new Error(`Unsupported compression: ${compression}`);
|
|
30
|
+
}
|
|
31
|
+
const decoder = await loader();
|
|
32
|
+
const result = await decoder(bytes, metadata);
|
|
33
|
+
if (result instanceof ArrayBuffer) {
|
|
34
|
+
return {
|
|
35
|
+
layout: "pixel-interleaved",
|
|
36
|
+
data: toTypedArray(result, metadata),
|
|
37
|
+
};
|
|
38
|
+
}
|
|
39
|
+
return result;
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Convert a raw ArrayBuffer of pixel data into a typed array based on the
|
|
43
|
+
* sample format and bits per sample. This is used for codecs that return raw
|
|
44
|
+
* bytes.
|
|
45
|
+
*/
|
|
46
|
+
function toTypedArray(buffer, metadata) {
|
|
47
|
+
const { sampleFormat, bitsPerSample } = metadata;
|
|
48
|
+
switch (sampleFormat) {
|
|
49
|
+
case SampleFormat.Uint:
|
|
50
|
+
switch (bitsPerSample) {
|
|
51
|
+
case 8:
|
|
52
|
+
return new Uint8Array(buffer);
|
|
53
|
+
case 16:
|
|
54
|
+
return new Uint16Array(buffer);
|
|
55
|
+
case 32:
|
|
56
|
+
return new Uint32Array(buffer);
|
|
57
|
+
}
|
|
58
|
+
break;
|
|
59
|
+
case SampleFormat.Int:
|
|
60
|
+
switch (bitsPerSample) {
|
|
61
|
+
case 8:
|
|
62
|
+
return new Int8Array(buffer);
|
|
63
|
+
case 16:
|
|
64
|
+
return new Int16Array(buffer);
|
|
65
|
+
case 32:
|
|
66
|
+
return new Int32Array(buffer);
|
|
67
|
+
}
|
|
68
|
+
break;
|
|
69
|
+
case SampleFormat.Float:
|
|
70
|
+
switch (bitsPerSample) {
|
|
71
|
+
case 32:
|
|
72
|
+
return new Float32Array(buffer);
|
|
73
|
+
case 64:
|
|
74
|
+
return new Float64Array(buffer);
|
|
75
|
+
}
|
|
76
|
+
break;
|
|
77
|
+
}
|
|
78
|
+
throw new Error(`Unsupported sample format/depth: SampleFormat=${sampleFormat}, BitsPerSample=${bitsPerSample}`);
|
|
79
|
+
}
|
|
80
|
+
//# sourceMappingURL=api.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"api.js","sourceRoot":"","sources":["../../src/decode/api.ts"],"names":[],"mappings":"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"}
|
package/dist/decode.d.ts
ADDED
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import type { PlanarConfiguration } from "@cogeotiff/core";
|
|
2
|
+
import { Compression, SampleFormat } from "@cogeotiff/core";
|
|
3
|
+
import type { RasterTypedArray } from "./array.js";
|
|
4
|
+
import type { Predictor } from "./ifd.js";
|
|
5
|
+
/** The result of a decoding process */
|
|
6
|
+
export type DecodedPixels = {
|
|
7
|
+
layout: "pixel-interleaved";
|
|
8
|
+
data: RasterTypedArray;
|
|
9
|
+
} | {
|
|
10
|
+
layout: "band-separate";
|
|
11
|
+
bands: RasterTypedArray[];
|
|
12
|
+
};
|
|
13
|
+
/** Metadata from the TIFF IFD, passed to decoders that need it. */
|
|
14
|
+
export type DecoderMetadata = {
|
|
15
|
+
sampleFormat: SampleFormat;
|
|
16
|
+
bitsPerSample: number;
|
|
17
|
+
samplesPerPixel: number;
|
|
18
|
+
width: number;
|
|
19
|
+
height: number;
|
|
20
|
+
predictor: Predictor;
|
|
21
|
+
planarConfiguration: PlanarConfiguration;
|
|
22
|
+
};
|
|
23
|
+
/**
|
|
24
|
+
* A decoder returns either:
|
|
25
|
+
* - An ArrayBuffer of raw decompressed bytes (byte-level codecs like deflate, zstd)
|
|
26
|
+
* - A DecodedPixels with typed pixel data (image codecs like LERC, JPEG)
|
|
27
|
+
*/
|
|
28
|
+
export type Decoder = (bytes: ArrayBuffer, metadata: DecoderMetadata) => Promise<ArrayBuffer | DecodedPixels>;
|
|
29
|
+
export declare const registry: Map<Compression, () => Promise<Decoder>>;
|
|
30
|
+
/**
|
|
31
|
+
* Decode a tile's bytes according to its compression and image metadata.
|
|
32
|
+
*/
|
|
33
|
+
export declare function decode(bytes: ArrayBuffer, compression: Compression, metadata: DecoderMetadata): Promise<DecodedPixels>;
|
|
34
|
+
//# sourceMappingURL=decode.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"decode.d.ts","sourceRoot":"","sources":["../src/decode.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AAC3D,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC5D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAGnD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAE1C,uCAAuC;AACvC,MAAM,MAAM,aAAa,GACrB;IAAE,MAAM,EAAE,mBAAmB,CAAC;IAAC,IAAI,EAAE,gBAAgB,CAAA;CAAE,GACvD;IAAE,MAAM,EAAE,eAAe,CAAC;IAAC,KAAK,EAAE,gBAAgB,EAAE,CAAA;CAAE,CAAC;AAE3D,mEAAmE;AACnE,MAAM,MAAM,eAAe,GAAG;IAC5B,YAAY,EAAE,YAAY,CAAC;IAC3B,aAAa,EAAE,MAAM,CAAC;IACtB,eAAe,EAAE,MAAM,CAAC;IACxB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,SAAS,CAAC;IACrB,mBAAmB,EAAE,mBAAmB,CAAC;CAC1C,CAAC;AAEF;;;;GAIG;AACH,MAAM,MAAM,OAAO,GAAG,CACpB,KAAK,EAAE,WAAW,EAClB,QAAQ,EAAE,eAAe,KACtB,OAAO,CAAC,WAAW,GAAG,aAAa,CAAC,CAAC;AAM1C,eAAO,MAAM,QAAQ,yBAA8B,OAAO,CAAC,OAAO,CAAC,CAAG,CAAC;AA4BvE;;GAEG;AACH,wBAAsB,MAAM,CAC1B,KAAK,EAAE,WAAW,EAClB,WAAW,EAAE,WAAW,EACxB,QAAQ,EAAE,eAAe,GACxB,OAAO,CAAC,aAAa,CAAC,CAkCxB"}
|