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
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118 | import {
AuthenticationJWTTokenApi,
BackgroundLayersAndAreasOfInterestMapdataApi,
CreatePublicDataSetRequest,
CreatePublicMapboxMapDataRequest,
DataSetsApi,
HttpBearerAuth,
ProjectResourcesDataSetsApi,
ProjectResourcesMapdataApi,
ProjectsApi,
} from "./gen/api";
import { createReadStream } from "fs";
import TypeEnumMapboxTypes = CreatePublicMapboxMapDataRequest.TypeEnum;
import TypeEnumDataSet = CreatePublicDataSetRequest.TypeEnum;
const userName = "replace with your API user name";
const password = "replace with your API user password";
const path = "/change/this/path/to/where/you/saved/the/files/";
async function getJWTToken() {
const authenticationApi = new AuthenticationJWTTokenApi();
return await authenticationApi
.obtainToken({
userName: userName,
password: password,
})
.then((r) => {
return r.body.jwtToken;
})
.catch((reason) => {
console.log(reason);
return null;
});
}
getJWTToken().then(async (token) => {
console.log("Got access token : " + token);
if (token == null) {
return;
}
const authentication = new HttpBearerAuth();
authentication.accessToken = token;
// Creating a project
console.log("Creating a new project");
const projectsApi = new ProjectsApi();
projectsApi.setDefaultAuthentication(authentication);
const project = (
await projectsApi.createProject({
name: "New York Taxi",
description: "Project created with the REST API",
})
).body;
// Creating a Mapbox background layer and adding it to the project
const mapDataApi = new BackgroundLayersAndAreasOfInterestMapdataApi();
mapDataApi.setDefaultAuthentication(authentication);
console.log("Creating a Mapbox light background layer");
const backgroundLayer = (
await mapDataApi.createMapboxBackgroundLayer({
type: TypeEnumMapboxTypes.Light,
})
).body;
console.log("Attaching the Mapbox background layer to the project");
const projectMapDataApi = new ProjectResourcesMapdataApi();
projectMapDataApi.setDefaultAuthentication(authentication);
await projectMapDataApi.addMapDataToProject(project.id, {
mapDataId: backgroundLayer.id,
});
// Creating and uploading a new time series data set and attaching it to the project
console.log("Creating a new data set");
const dataSetsApi = new DataSetsApi();
dataSetsApi.setDefaultAuthentication(authentication);
const dataSet = (
await dataSetsApi.createDataSet({
name: "New York Taxi",
description: "Data set created with the API",
type: TypeEnumDataSet.TimeSeriesData,
assetsName: "zones",
})
).body;
console.log("Defining the GeoJSON structure using a properties file");
await dataSetsApi.uploadTimeSeriesMetadataDefinitionFile(
dataSet.id,
createReadStream(path + "geojsonproperties.csv")
);
console.log("Uploading the GeoJSON file");
await dataSetsApi.uploadGeoJSONShapeFile(
dataSet.id,
createReadStream(path + "NYC_Taxi_Zones.geojson.gz")
);
console.log("Defining the time series data structure");
await dataSetsApi.uploadDataDefinitionFile(
dataSet.id,
createReadStream(path + "dataproperties.csv")
);
console.log("Uploading the time series data");
await dataSetsApi.uploadData(
dataSet.id,
createReadStream(path + "taxidata.csv.gz")
);
console.log("Attaching the data set to the new project");
let projectDataSetsAPI = new ProjectResourcesDataSetsApi();
projectDataSetsAPI.setDefaultAuthentication(authentication);
await projectDataSetsAPI.addDataSetToProject(project.id, {
dataSetId: dataSet.id,
});
});
|