-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathmobile-optimizer
executable file
·68 lines (61 loc) · 2.47 KB
/
mobile-optimizer
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
#!/usr/bin/env node
const GeoPackageOptimizer = require('./index.js');
const fs = require('fs');
const {GeoPackageAPI, setCanvasKitWasmLocateFile} = require('@ngageoint/geopackage');
const path = require('path');
setCanvasKitWasmLocateFile(file => path.join(__dirname, 'node_modules', '@ngageoint', 'geopackage', 'dist', 'canvaskit', file));
console.log('GeoPackage Optimizer For Mobile Clients');
const geoPackageFile = process.argv[2];
const outputGeoPackageFile = process.argv[3];
if (!geoPackageFile || !outputGeoPackageFile) {
console.log('Usage: mobile-optimizer <GeoPackage To Process> <GeoPackage To Write>');
console.log('If <GeoPackage To Process> and <GeoPackage To Write> are the same, the GeoPackage To Process');
console.log('will be modified.');
process.exit(1);
}
const same = outputGeoPackageFile === geoPackageFile;
fs.stat(geoPackageFile, function(err, stats) {
if (err || !stats || !stats.isFile()) {
console.log('File does not exist.', geoPackageFile);
process.exit(1);
}
return GeoPackageAPI.open(geoPackageFile)
.then(function(inputGeoPackage) {
console.log('Processing %s', geoPackageFile);
if (same) {
return GeoPackageAPI.open(outputGeoPackageFile).then(function(outputGeoPackage) {
return {
inputGeoPackage: inputGeoPackage,
outputGeoPackage: outputGeoPackage,
};
});
}
return GeoPackageAPI.create(outputGeoPackageFile).then(function(outputGeoPackage) {
return {
inputGeoPackage: inputGeoPackage,
outputGeoPackage: outputGeoPackage,
};
});
})
.then(function(options) {
const outputGeoPackage = options.outputGeoPackage;
const inputGeoPackage = options.inputGeoPackage;
console.log('Writing mobile optimized GeoPackage to %s', outputGeoPackageFile);
return GeoPackageOptimizer.optimize({
inputGeoPackage: inputGeoPackage,
outputGeoPackage: outputGeoPackage,
same: same,
progress: function(progress) {
console.log(progress)
if (progress.description) {
console.log('Processing %s: %s', progress.layer, progress.description);
} else {
console.log('Processing %s: %s of %s tiles complete.', progress.layer, progress.count, progress.totalCount);
}
},
}).then(function() {
console.log('Optimization Complete, optimized file: %s', outputGeoPackageFile);
process.exit(0);
});
});
});