/
isGeoJSON.ts
87 lines (85 loc) · 2.79 KB
/
isGeoJSON.ts
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
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
import { isGeoJSON } from '@terascope/utils';
import { FieldType, GeoShapeType } from '@terascope/types';
import {
FieldValidateConfig,
ProcessMode,
FunctionDefinitionCategory,
FunctionDefinitionType
} from '../interfaces';
export const isGeoJSONConfig: FieldValidateConfig = {
name: 'isGeoJSON',
type: FunctionDefinitionType.FIELD_VALIDATION,
process_mode: ProcessMode.INDIVIDUAL_VALUES,
category: FunctionDefinitionCategory.GEO,
description: 'Returns the input if it is a GeoJSON object, otherwise returns null',
examples: [
{
args: {},
config: { version: 1, fields: { testField: { type: FieldType.String } } },
field: 'testField',
input: '60,40',
output: null,
},
{
args: {},
config: { version: 1, fields: { testField: { type: FieldType.GeoPoint } } },
field: 'testField',
input: { lat: 60, lon: 40 },
output: null
},
{
args: {},
config: { version: 1, fields: { testField: { type: FieldType.GeoJSON } } },
field: 'testField',
input: { type: GeoShapeType.Point, coordinates: [12, 12] },
output: { type: GeoShapeType.Point, coordinates: [12, 12] }
},
{
args: {},
config: { version: 1, fields: { testField: { type: FieldType.GeoJSON } } },
field: 'testField',
input: {
type: GeoShapeType.Polygon,
coordinates: [[[0, 0], [0, 15], [15, 15], [15, 0], [0, 0]]]
},
output: {
type: GeoShapeType.Polygon,
coordinates: [[[0, 0], [0, 15], [15, 15], [15, 0], [0, 0]]]
}
},
{
args: {},
config: { version: 1, fields: { testField: { type: FieldType.GeoJSON } } },
field: 'testField',
input: {
type: GeoShapeType.MultiPolygon,
coordinates: [
[
[[10, 10], [10, 50], [50, 50], [50, 10], [10, 10]],
],
[
[[-10, -10], [-10, -50], [-50, -50], [-50, -10], [-10, -10]],
]
]
},
output: {
type: GeoShapeType.MultiPolygon,
coordinates: [
[
[[10, 10], [10, 50], [50, 50], [50, 10], [10, 10]],
],
[
[[-10, -10], [-10, -50], [-50, -50], [-50, -10], [-10, -10]],
]
]
}
},
],
create() {
return isGeoJSON;
},
accepts: [
FieldType.GeoJSON,
FieldType.Object,
]
};