Skip to content

Commit fe2aff4

Browse files
committed
Address review comments: default to Float64
Addressing Daniel's review comments on PR #366, I've followed his advice to change the default writing to use Float64Array, rather than Uint8Array (which users can still provide manually).
1 parent 5072abf commit fe2aff4

File tree

3 files changed

+10
-5
lines changed

3 files changed

+10
-5
lines changed

src/geotiffwriter.js

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -257,7 +257,8 @@ const encodeImage = (values, width, height, metadata) => {
257257
const dataType = values.constructor.name;
258258
const TypedArray = typeMap[dataType];
259259

260-
let elementSize = 4;
260+
// default for Float64
261+
let elementSize = 8;
261262
if (TypedArray) {
262263
elementSize = TypedArray.BYTES_PER_ELEMENT;
263264
}
@@ -277,7 +278,9 @@ const encodeImage = (values, width, height, metadata) => {
277278
const buffer = new ArrayBuffer(elementSize);
278279
const view = new DataView(buffer);
279280

280-
if (dataType === 'Float32Array') {
281+
if (dataType === 'Float64Array') {
282+
view.setFloat64(0, value, false);
283+
} else if (dataType === 'Float32Array') {
281284
view.setFloat32(0, value, false);
282285
} else if (dataType === 'Uint32Array') {
283286
view.setUint32(0, value, false);
@@ -388,8 +391,8 @@ export function writeGeotiff(data, metadata) {
388391
if (!metadata.StripByteCounts) {
389392
// we are only writing one strip
390393

391-
// default for Uint8
392-
let elementSize = 1;
394+
// default for Float64
395+
let elementSize = 8;
393396

394397
if (ArrayBuffer.isView(flattenedValues)) {
395398
elementSize = flattenedValues.BYTES_PER_ELEMENT;

src/utils.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -188,6 +188,7 @@ export function isTypedUintArray(input) {
188188
}
189189

190190
export const typeMap = {
191+
Float64Array,
191192
Float32Array,
192193
Uint32Array,
193194
Uint16Array,

test/geotiff.spec.js

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -126,6 +126,7 @@ describe('writeTypedArrays', () => {
126126
new Uint16Array(generateTestDataArray(0, 65535, dataLength, true)),
127127
new Uint32Array(generateTestDataArray(0, 4294967295, dataLength, true)),
128128
new Float32Array(generateTestDataArray(-3.4e+38, 3.4e+38, dataLength, false)),
129+
new Float64Array(generateTestDataArray(Number.MIN_VALUE, Number.MAX_VALUE, dataLength, false)),
129130
];
130131

131132
const height = Math.sqrt(dataLength);
@@ -141,7 +142,7 @@ describe('writeTypedArrays', () => {
141142
width,
142143
};
143144

144-
const newGeoTiffAsBinaryData = await writeArrayBuffer((originalValues), metadata);
145+
const newGeoTiffAsBinaryData = await writeArrayBuffer(originalValues, metadata);
145146
const newGeoTiff = await fromArrayBuffer(newGeoTiffAsBinaryData);
146147
const image = await newGeoTiff.getImage();
147148
const newValues = await image.readRasters();

0 commit comments

Comments
 (0)