forked from datagouv/dvf
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathlat-long-worker.js
More file actions
44 lines (34 loc) · 1.85 KB
/
lat-long-worker.js
File metadata and controls
44 lines (34 loc) · 1.85 KB
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
const {getParcellesDepartement} = require("./lib/parcelles");
const {getLonLat} = require("./lib/turf");
const fs = require("fs");
const workerData = require('node:worker_threads').workerData
const process = async () => {
const dateAndDepartmentArray = workerData.dateAndDepartmentArray;
const parcelsByDateAndDepartment = workerData.parcelsByDateAndDepartment;
const number = workerData.number;
for (const dateAndDepartment of dateAndDepartmentArray) {
const dateAndDepartmentParts = dateAndDepartment.split("&")
const date = dateAndDepartmentParts[0]
const department = dateAndDepartmentParts[1]
console.log(`${new Date().getTime() / 1000}: Récupération des parcelles du millesime ${date} et département ${department}`)
const parcelsToDecorate = parcelsByDateAndDepartment[dateAndDepartment]
const parcelIdsToFind = parcelsToDecorate.map((p) => p.parcel)
const parcelles = await getParcellesDepartement(department, date, parcelIdsToFind)
console.log('Récupération des latitudes et longitudes...')
for (const parcelToDecorate of parcelsToDecorate) {
const parcelle = parcelles[parcelToDecorate.parcel]
const [lon, lat] = getLonLat(parcelle)
parcelToDecorate.longitude = lon
parcelToDecorate.latitude = lat
}
const fsWriteStream = fs.createWriteStream(`parcels-matches-lon-lat-${number}.csv`, {flags: 'a'})
for (const decoratedParcel of parcelsToDecorate) {
//TODO: dummy CSV - a CSV lib would probably be better
const csv = decoratedParcel.parcel + ',' + decoratedParcel.date + ',' + decoratedParcel.department +
',' + decoratedParcel.longitude + ',' + decoratedParcel.latitude + '\n'
fsWriteStream.write(csv)
}
fsWriteStream.end('')
}
}
process();