-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathgeo-file-type.js
64 lines (58 loc) · 1.58 KB
/
geo-file-type.js
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
const isAsciiGrid = require("ascii-grid/src/is-ascii-grid");
const isAuxXML = require("aux-xml/is-aux-xml");
const isCOG = require("is-cog");
const isJPG = require("id-jpg");
const isGeoTIFF = require("is-geotiff");
const isWorldFile = require("is-wld");
const isPNG = require("id-png");
const isPRJ = require("is-prj");
const isSHP = require("is-shp");
const isTIF = require("id-tif");
const {
ASC,
AUX_XML,
COG,
GEOTIFF,
JPG,
PNG,
PRJ,
SHP,
TIF,
WLD
} = require("./constants");
function identify({ data, debug }) {
if (debug) console.log("[geo-file-type] starting identify with:", data);
let fileType;
// works with many different types of data
// so try that first
if (isWorldFile(data)) {
fileType = WLD;
} else if (isAsciiGrid(data, { debug })) {
fileType = ASC;
} else if (isPNG(data)) {
fileType = PNG;
} else if (isJPG(data)) {
fileType = JPG;
} else if (isAuxXML(data, debug)) {
fileType = AUX_XML;
} else if (isSHP({ data, debug }).result) {
fileType = SHP;
} else if (isPRJ({ data, debug }).result) {
fileType = PRJ;
} else if (isTIF(data)) {
if (debug) console.log("[geo-file-type] input is a TIFF");
fileType = TIF;
if (isGeoTIFF({ data, debug }).result) {
fileType = GEOTIFF;
if (isCOG({ data, debug }).is_cog) {
fileType = COG;
}
}
} else if (typeof data === "object" && data.data && data.metadata) {
return "Simple Object";
}
const result = { type: fileType };
if (debug) console.log("[geo-file-type] returning", result);
return result;
}
module.exports = identify;