def mm(): for tbname_suffix in tbname_suffixs: gw = cg.new_gw() cdb.create_path_occupied_crusing_table(tbname_suffix,method=METHOD)#函数调用的时候,如果第一个参数使用了关键字绑定,后面的参数也必须使用关键字绑定! cdb.create_path_occupied_crusing_table_attr(tbname_suffix,method=METHOD) trd = cdb.new_track_reader_for_purpose(tbname_suffix,purpose='mm') pwd = cdb.new_path_writer_for_method(tbname_suffix,method=METHOD) pawd = cdb.new_path_attr_writer_for_method(tbname_suffix,method=METHOD) #p2tj = cj.new_pt2geojson(method=METHOD) print '' start_at = datetime.datetime.now() print tbname_suffix + (' start at ' + str(start_at) + ' ').center(70, '-') print 'preparing...', alg.prepare(gw) print 'end' tracks_num = 0 paths_failed = 0 max_fetched = TRACKS_TO_ROW - TRACKS_FROM_ROW + 1 start_match_at = datetime.datetime.now() print (' start matching at ' + str(start_match_at) + '').center(70, '-') while TRACKS_TO_ROW < 0 or trd.fetched_num < max_fetched: track = trd.fetch_one() if trd.fetched_num % 1000 == 0: print 'fetched', trd.fetched_num if track is None: break d_max = 0 pre_lonlat = track.rds[0]['gps_lonlat'] for i in range(1,len(track.rds)): cur_lonlat = track.rds[i]['gps_lonlat'] d = cg.lonlats2km(pre_lonlat, cur_lonlat) if d > d_max: d_max = d pre_lonlat = cur_lonlat if d_max > 3 or track.length() >= 80: continue else: tracks_num += 1 print 'track', str(track.tid).ljust(10),' ', if not match(pwd,pawd,gw,track): paths_failed += 1 end_match_at = datetime.datetime.now() print(' end matching at ' + str(end_match_at) + ' ').center(70, '-'),'elapsed time',str(end_match_at - start_match_at) print 'fetched tracks: %s, paths failed: %s' % (trd.fetched_num, paths_failed) print ''.center(70, '-') #clear() end_at = datetime.datetime.now() print tbname_suffix + (' end at ' + str(end_at) + ' ').center(70, '-'),'elapsed time',str(end_at - start_at)
def mm(): for tbname_suffix in tbname_suffixs: gw = cg.new_gw() cdb.create_path_occupied_crusing_table( tbname_suffix, method=METHOD) #函数调用的时候,如果第一个参数使用了关键字绑定,后面的参数也必须使用关键字绑定! cdb.create_path_occupied_crusing_table_attr(tbname_suffix, method=METHOD) trd = cdb.new_track_reader_for_purpose(tbname_suffix, purpose='mm') pwd = cdb.new_path_writer_for_method(tbname_suffix, method=METHOD) pawd = cdb.new_path_attr_writer_for_method(tbname_suffix, method=METHOD) #p2tj = cj.new_pt2geojson(method=METHOD) print '' start_at = datetime.datetime.now() print tbname_suffix + (' start at ' + str(start_at) + ' ').center( 70, '-') print 'preparing...', alg.prepare(gw) print 'end' tracks_num = 0 paths_failed = 0 max_fetched = TRACKS_TO_ROW - TRACKS_FROM_ROW + 1 start_match_at = datetime.datetime.now() print(' start matching at ' + str(start_match_at) + '').center(70, '-') while TRACKS_TO_ROW < 0 or trd.fetched_num < max_fetched: track = trd.fetch_one() if trd.fetched_num % 1000 == 0: print 'fetched', trd.fetched_num if track is None: break d_max = 0 pre_lonlat = track.rds[0]['gps_lonlat'] for i in range(1, len(track.rds)): cur_lonlat = track.rds[i]['gps_lonlat'] d = cg.lonlats2km(pre_lonlat, cur_lonlat) if d > d_max: d_max = d pre_lonlat = cur_lonlat if d_max > 3 or track.length() >= 80: continue else: tracks_num += 1 print 'track', str(track.tid).ljust(10), ' ', if not match(pwd, pawd, gw, track): paths_failed += 1 end_match_at = datetime.datetime.now() print(' end matching at ' + str(end_match_at) + ' ').center( 70, '-'), 'elapsed time', str(end_match_at - start_match_at) print 'fetched tracks: %s, paths failed: %s' % (trd.fetched_num, paths_failed) print ''.center(70, '-') #clear() end_at = datetime.datetime.now() print tbname_suffix + (' end at ' + str(end_at) + ' ').center( 70, '-'), 'elapsed time', str(end_at - start_at)
TRACKS_FROM_ROW = 1 TRACKS_TO_ROW = -1 # There are 2638410 tracks in table taxi_tracks, id from 1-2638410 TRACKS_FROM_TID = 1 TRACKS_TO_TID = 2638410 TID_DP_TBNAME = "taxi_tid_dp_1" METHOD = 'bn' alg = abn gw = cg.new_gw() trd = cdb.new_track_reader_for_purpose(purpose="mm") pwd = cdb.new_path_writer_for_method(method = METHOD) pawd = cdb.new_path_attr_writer_for_method(method = METHOD) tdpdb = cdb.new_tid_dp_db(tbname=TID_DP_TBNAME) pt2j = cj.new_pt2geojson(method = METHOD) req_nodes = [19808,12055,19800,19943,28533,19804,19801,23737,23736,23739] def rect_of_nodes(nodes, r=1): latgap = cg.km2latgap(r) longap = cg.km2longap(r, 39.0) min_lon = INF min_lat = INF max_lon = -INF max_lat = -INF for v in nodes: (lon, lat) = gw.nodes_pos[v] min_lon = min(min_lon, lon)
TRACKS_FROM_ROW = 1 TRACKS_TO_ROW = -1 # There are 2638410 tracks in table taxi_tracks, id from 1-2638410 TRACKS_FROM_TID = 1 TRACKS_TO_TID = 2638410 TID_DP_TBNAME = "taxi_tid_dp_1" METHOD = 'bn' alg = abn gw = cg.new_gw() trd = cdb.new_track_reader_for_purpose(purpose="mm") pwd = cdb.new_path_writer_for_method(method=METHOD) pawd = cdb.new_path_attr_writer_for_method(method=METHOD) tdpdb = cdb.new_tid_dp_db(tbname=TID_DP_TBNAME) pt2j = cj.new_pt2geojson(method=METHOD) req_nodes = [ 19808, 12055, 19800, 19943, 28533, 19804, 19801, 23737, 23736, 23739 ] def rect_of_nodes(nodes, r=1): latgap = cg.km2latgap(r) longap = cg.km2longap(r, 39.0) min_lon = INF min_lat = INF max_lon = -INF max_lat = -INF