-
Notifications
You must be signed in to change notification settings - Fork 2
/
travelDeviceCalForEachGrid.py
72 lines (59 loc) · 2.03 KB
/
travelDeviceCalForEachGrid.py
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
# -*- coding: utf-8 -*-
#
# Input Format:
# [tripFlow-x]
# hour, id, time, lat, lng, from_lat, from_lng, from_time, to_lat, to_Lng, to_time
#
# Output Format:
# [hares-x]???
# id, seg, hour, wday, gid, state, admin, from_gid, to_gid, from_aid, to_aid
#
#
__author__ = 'lenovo'
import os
import json
from util.tripFlow.base import getFormatGID
from util.tripFlow.base import parseFormatGID
INPUT_PATH = "/datahouse/tripflow/200/bj-byhour-tf"
OUTPUT_PATH = "/datahouse/tripflow/test/bj-byhour-td"
start_index = 1
end_index = 2088
for hourId in range(start_index, end_index):
ifilename = "traveldata-" + str(hourId)
ofilename = str(hourId % 24) + "-" + str(hourId)
ifile = os.path.join(INPUT_PATH, ifilename)
res = [0] * 104000
#遍历
with open(ifile, 'rb') as f:
devIdDict = {}
for line in f:
linelist = line.split(',')
lat = linelist[3]
lng = linelist[4]
gid = getFormatGID([lng, lat])['gid']
devId = int(linelist[1])
if devIdDict.has_key(gid):
if devId not in devIdDict[gid]:
devIdDict[gid].append(devId)
res[gid] += 1
else:
devIdDict[gid] = [devId]
res[gid] += 1
#res[gid] += 1
f.close()
# 写入文件
preline=[[] for j in xrange(len(res))];
ofile = os.path.join(OUTPUT_PATH, ofilename)
with open(ofile, 'wb') as output:
for index in xrange(len(res)):
dirDict = parseFormatGID(index);
preline[index].append(int(index));
preline[index].append(float(dirDict['lng']));
preline[index].append(float(dirDict['lat']));
preline[index].append(int(res[index]));
output.write(str(index)+","+str(dirDict['lng'])+","+str(dirDict['lat'])+","+str(res[index])+"\n");
output.close()
ojsonFile = os.path.join(OUTPUT_PATH, ofilename+".json")
with open(ojsonFile, 'wb') as foutput:
foutput.write(json.dumps(preline));
foutput.close()