-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathpreprocessing.py
More file actions
88 lines (81 loc) · 6.11 KB
/
preprocessing.py
File metadata and controls
88 lines (81 loc) · 6.11 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
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
import csv
from geopy.distance import vincenty
readdata = csv.reader(open("density-map-from-20160101-to-20161231-5-probability.csv"))
graph = {}
ligne = 0
colonne = 0
separateur = "$"
precision = 5
def conversion(ligne, colonne):
longitude = -180 + float((colonne - 1)) / precision
latitude = 90 - float((ligne - 1)) / precision
return round(latitude, 6), round(longitude, 6)
myFile = open('nodes.csv', 'wb')
with myFile:
myFields = ['id', 'lat', 'long']
writer = csv.DictWriter(myFile, fieldnames=myFields)
writer.writeheader()
id = 1
for row in readdata:
ligne += 1
colonne = 0
for node in row:
colonne += 1
if float(node) > 0.0001:
latitude, longitude = conversion(int(ligne), int(colonne))
writer.writerow({'id': id, 'lat': latitude, 'long': longitude})
graph[str(ligne) + separateur + str(colonne)] = [id, latitude, longitude, float(node)]
id += 1
# poidArc = distanceEnKm(node, nextNode) * ((1-density[node])+(1-density[nextNode))
myFile = open('arcs.csv', 'wb')
with myFile:
myFields = ['node', 'nextNode', 'distance']
writer = csv.DictWriter(myFile, fieldnames=myFields)
writer.writeheader()
for key in graph.keys():
ligne, colonne = key.split(separateur)
if (ligne + separateur + str(int(colonne) - 1)) in graph:
writer.writerow({'node': graph[ligne + separateur + str(int(colonne) - 1)][0], 'nextNode': graph[key][0],
'distance': round(vincenty((graph[ligne + separateur + str(int(colonne) - 1)][1],
graph[ligne + separateur + str(int(colonne) - 1)][2]),
(graph[key][1], graph[key][2])).km * (1 - graph[key][3] + 1 - graph[ligne + separateur + str(int(colonne) - 1)][3]), 3)})
if (str(int(ligne) - 1) + separateur + colonne) in graph:
writer.writerow({'node': graph[str(int(ligne) - 1) + separateur + colonne][0], 'nextNode': graph[key][0],
'distance': round(vincenty((graph[str(int(ligne) - 1) + separateur + colonne][1],
graph[str(int(ligne) - 1) + separateur + colonne][2]),
(graph[key][1], graph[key][2])).km * (1 - graph[key][3] + 1 - graph[str(int(ligne) - 1) + separateur + colonne][3]), 3)})
if (ligne + separateur + str(int(colonne) + 1)) in graph:
writer.writerow({'node': graph[ligne + separateur + str(int(colonne) + 1)][0], 'nextNode': graph[key][0],
'distance': round(vincenty((graph[ligne + separateur + str(int(colonne) + 1)][1],
graph[ligne + separateur + str(int(colonne) + 1)][2]),
(graph[key][1], graph[key][2])).km * (1 - graph[key][3] + 1 - graph[ligne + separateur + str(int(colonne) + 1)][3]), 3)})
if (str(int(ligne) + 1) + separateur + colonne) in graph:
writer.writerow({'node': graph[str(int(ligne) + 1) + separateur + colonne][0], 'nextNode': graph[key][0],
'distance': round(vincenty((graph[str(int(ligne) + 1) + separateur + colonne][1],
graph[str(int(ligne) + 1) + separateur + colonne][2]),
(graph[key][1], graph[key][2])).km * (1 - graph[key][3] + 1 - graph[str(int(ligne) + 1) + separateur + colonne][3]), 3)})
if (str(int(ligne) - 1) + separateur + str(int(colonne) - 1)) in graph:
writer.writerow(
{'node': graph[str(int(ligne) - 1) + separateur + str(int(colonne) - 1)][0], 'nextNode': graph[key][0],
'distance': round(vincenty((graph[str(int(ligne) - 1) + separateur + str(int(colonne) - 1)][1],
graph[str(int(ligne) - 1) + separateur + str(int(colonne) - 1)][2]),
(graph[key][1], graph[key][2])).km * (1 - graph[key][3] + 1 - graph[str(int(ligne) - 1) + separateur + str(int(colonne) - 1)][3]), 3)})
if (str(int(ligne) + 1) + separateur + str(int(colonne) - 1)) in graph:
writer.writerow(
{'node': graph[str(int(ligne) + 1) + separateur + str(int(colonne) - 1)][0], 'nextNode': graph[key][0],
'distance': round(vincenty((graph[str(int(ligne) + 1) + separateur + str(int(colonne) - 1)][1],
graph[str(int(ligne) + 1) + separateur + str(int(colonne) - 1)][2]),
(graph[key][1], graph[key][2])).km * (1 - graph[key][3] + 1 - graph[str(int(ligne) + 1) + separateur + str(int(colonne) - 1)][3]), 3)})
if (str(int(ligne) - 1) + separateur + str(int(colonne) + 1)) in graph:
writer.writerow(
{'node': graph[str(int(ligne) - 1) + separateur + str(int(colonne) + 1)][0], 'nextNode': graph[key][0],
'distance': round(vincenty((graph[str(int(ligne) - 1) + separateur + str(int(colonne) + 1)][1],
graph[str(int(ligne) - 1) + separateur + str(int(colonne) + 1)][2]),
(graph[key][1], graph[key][2])).km * (1 - graph[key][3] + 1 - graph[str(int(ligne) - 1) + separateur + str(int(colonne) + 1)][3]), 3)})
if (str(int(ligne) + 1) + separateur + str(int(colonne) + 1)) in graph:
writer.writerow(
{'node': graph[str(int(ligne) + 1) + separateur + str(int(colonne) + 1)][0], 'nextNode': graph[key][0],
'distance': round(vincenty((graph[str(int(ligne) + 1) + separateur + str(int(colonne) + 1)][1],
graph[str(int(ligne) + 1) + separateur + str(int(colonne) + 1)][2]),
(graph[key][1], graph[key][2])).km * (1 - graph[key][3] + 1 - graph[str(int(ligne) + 1) + separateur + str(int(colonne) + 1)][3]), 3)})
del graph[key]