Beispiel #1
0
    def updLastTravelRecs(self):
        if self.currentDatasets['fromAdmin'] == '':
            return 0
        #
        fromGid = formatGridID(getCityLocs(self.CITY),
                               self.currentDatasets['fromLatLng'])
        toGid = formatGridID(getCityLocs(self.CITY),
                             self.currentDatasets['toLatLng'])
        fromAdmin = getAdminNumber(self.currentDatasets['fromAdmin'])
        toAdmin = getAdminNumber(self.currentDatasets['toAdmin'])
        supStr = "%d,%d,%d,%d" % (fromGid, toGid, fromAdmin, toAdmin)

        # 遍历记录
        for each in self.currentDatasets['data']:
            ydayCurrent = each[1]
            newline = "%s,%s" % (each[0], supStr)

            self.COUNT[ydayCurrent] += 1
            self.MATRIX[ydayCurrent].append(newline)
            self.checkWriteOpt(ydayCurrent)

        # 重置
        self.currentDatasets['fromLatLng'] = [0, 0]
        self.currentDatasets['fromAdmin'] = ''
        self.currentDatasets['data'] = []
Beispiel #2
0
    def iterateFile(self, ifile):
        # stay travel 都处理的情况
        with open(ifile, 'rb') as stream:
            for line in stream:
                line = line.strip('\n')
                linelist = line.split(',')

                state = linelist[4]

                if state == 'U' or line == '':
                    continue

                # 分析日期
                tmp = formatTime(linelist[1])
                ydayCurrent = tmp['yday'] - 187

                wday = tmp['wday']
                hour = tmp['hour']
                seg = ydayCurrent * 24 + hour

                if ydayCurrent < 0 or ydayCurrent >= self.MAXDAY:
                    continue

                id = linelist[0]
                admin = getAdminNumber(linelist[6])
                gid = formatGridID(getCityLocs(self.CITY),
                                   [linelist[3], linelist[2]])
                newLinePreStr = "%s,%d,%d,%d,%d" % (id, seg, hour, wday, gid)

                # 分状态处理原始数据
                # S 时 currentDatasets 数据重置(重置前查看是否需要转存上一段 T 的数据)
                # T 时对比当前 from 是否为初始状态,若为初始状态当前数据存在 from,否则存在 to
                if state == 'T':
                    if self.currentDatasets['fromLatLng'][0] == 0:
                        self.currentDatasets['fromLatLng'] = [
                            linelist[3], linelist[2]
                        ]
                        self.currentDatasets['fromAdmin'] = linelist[6]
                        self.currentDatasets['stateId'] = linelist[5]
                    else:
                        # 判断 stateId 是否一致
                        if linelist[5] != self.currentDatasets['stateId']:
                            self.updLastTravelRecs()
                        else:
                            self.currentDatasets['toLatLng'] = [
                                linelist[3], linelist[2]
                            ]
                            self.currentDatasets['toAdmin'] = linelist[6]
                    tmp = "%s,T,%d" % (newLinePreStr, admin)
                    self.currentDatasets['data'].append([tmp, ydayCurrent])
                else:
                    self.updLastTravelRecs()

                    newline = "%s,S,%d,0,0,0,0" % (newLinePreStr, admin)
                    self.COUNT[ydayCurrent] += 1
                    self.MATRIX[ydayCurrent].append(newline)

                    self.checkWriteOpt(ydayCurrent)

        stream.close()
Beispiel #3
0
    def iterateFileOnlyTravel(self, ifile):
        # travel 情况
        with open(ifile, 'rb') as stream:
            for line in stream:
                line = line.strip('\n')
                linelist = line.split(',')

                state = linelist[4]

                if state == 'U' or line == '' or state == 'S':
                    continue

                # 分析日期
                tmp = formatTime(linelist[1])
                ydayCurrent = tmp['yday'] - 187

                wday = tmp['wday']
                hour = tmp['hour']
                seg = ydayCurrent * 24 + hour

                if ydayCurrent < 0 or ydayCurrent >= self.MAXDAY:
                    continue

                id = linelist[0]
                admin = getAdminNumber(linelist[6])
                gid = formatGridID(getCityLocs(self.CITY),
                                   [linelist[3], linelist[2]])
                newLinePreStr = "%d,%s,%s,%s,%s" % (hour, id, linelist[1],
                                                    linelist[2], linelist[3])

                # T 时对比当前 from 是否为初始状态,若为初始状态当前数据存在 from,否则存在 to
                if self.currentDatasets['fromLatLng'][0] == 0:
                    self.currentDatasets['fromLatLng'] = [
                        linelist[3], linelist[2]
                    ]
                    self.currentDatasets['fromAdmin'] = linelist[6]
                    self.currentDatasets['fromTime'] = linelist[1]
                    self.currentDatasets['stateId'] = linelist[5]
                else:
                    # 判断 stateId 是否一致
                    if linelist[5] != self.currentDatasets['stateId']:
                        self.updLastTravelRecsOnlyTravel()
                    else:
                        self.currentDatasets['toLatLng'] = [
                            linelist[3], linelist[2]
                        ]
                        self.currentDatasets['toAdmin'] = linelist[6]
                        self.currentDatasets['toTime'] = linelist[1]
                # tmp = "%s,T,%d" % (newLinePreStr, admin)
                self.currentDatasets['data'].append(
                    [newLinePreStr, ydayCurrent])

        stream.close()
Beispiel #4
0
    def updateDis(self, ifile):
        #
        resnum = 0
        with open(ifile, 'rb') as stream:
            for line in stream:
                line = line.strip('\n')
                resnum += 1
                linelist = line.split(',')

                grid = formatGridID(getCityLocs(self.CITY),
                                    [linelist[3], linelist[2]])
                fromGid = formatGridID(getCityLocs(self.CITY),
                                       [linelist[6], linelist[5]])
                toGrid = formatGridID(getCityLocs(self.CITY),
                                      [linelist[8], linelist[7]])
                state = linelist[4]

                # 无效 Travel 状态信息
                if state == 'T' and (line[6] == '0' or line[5] == '0'
                                     or line[8] == '0' or line[7] == '0'):
                    continue

                tmp = formatTime(linelist[1])
                ydayCurrent = tmp['day']
                hourCurrent = tmp['hour']

                if ydayCurrent == self.DAY and hourCurrent == self.HOUR:
                    self.dealPointState({
                        'id': linelist[0],
                        'state': state,
                        'day': ydayCurrent,
                        'grid': grid,
                        'fromGrid': fromGid,
                        'toGrid': toGrid
                    })
        stream.close()