def mm(tid, method, interval=1):
    alg = algs[method]

    gw = cg.new_gw()
    trd = cdb.new_track_reader(offset=0)
    pwd = cdb.new_path_writer_for_method(method=method)
    pt2j = cj.new_pt2geojson(method=method)

    track = trd.fetch_by_id(tid)
    track.sample(interval)
    track.summary()
    pt2j.write_t_geojson(track)

    alg.prepare(gw)

    path = alg.match(gw, track)

    pt2j.write_p_geojson(path)

    # pwd.insert_update(path)

    path.summary()

    del trd, pwd

    return path
def mm(tid, method, interval=1):
    alg = algs[method]

    gw = cg.new_gw()
    trd = cdb.new_track_reader(offset = 0)
    pwd = cdb.new_path_writer_for_method(method = method)
    pt2j = cj.new_pt2geojson(method = method)

    track = trd.fetch_by_id(tid)
    track.sample(interval)
    track.summary()
    pt2j.write_t_geojson(track)

    alg.prepare(gw)

    path = alg.match(gw, track)

    pt2j.write_p_geojson(path)

    # pwd.insert_update(path)

    path.summary()

    del trd,pwd

    return path
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)
Beispiel #4
0
def compare():
    gw = cg.new_gw()
    trd = cdb.new_track_reader(offset=0)
    prd = cdb.new_path_reader(gw=gw, tbname="taxi_paths_truth")

    global matched_length, missed_length, false_length

    matched_length = {}
    missed_length = {}
    false_length = {}

    for method in algs.iterkeys():
        matched_length[method] = {}
        missed_length[method] = {}
        false_length[method] = {}
        for interval in intervals:
            matched_length[method][interval] = []
            missed_length[method][interval] = []
            false_length[method][interval] = []

    for method in algs.iterkeys():
        alg = algs[method]
        alg.prepare(gw)
        for tid in tids:
            print method, tid,
            gt_path = prd.fetch_path_by_tid(tid)
            for interval in intervals:
                print interval,
                path = mm(gw, trd, method, tid, interval)
                if path is None:
                    print "failed"
                    continue
                result = path.compare(gt_path)
                matched_length[method][interval].append(
                    result['matched_length'])
                missed_length[method][interval].append(result['missed_length'])
                false_length[method][interval].append(result['false_length'])
            print ""

    for method in algs.iterkeys():
        for interval in intervals:
            print method, interval,
            print sum(matched_length[method][interval]),
            print sum(missed_length[method][interval]),
            print sum(false_length[method][interval])
def compare():
    gw = cg.new_gw()
    trd = cdb.new_track_reader(offset = 0)
    prd = cdb.new_path_reader(gw=gw, tbname="taxi_paths_truth")

    global matched_length, missed_length, false_length

    matched_length = {}
    missed_length  = {}
    false_length   = {}
   
    for method in algs.iterkeys():
        matched_length[method] = {}
        missed_length[method] = {}
        false_length[method] = {}
        for interval in intervals:
            matched_length[method][interval] = []
            missed_length[method][interval] = []
            false_length[method][interval] = []

    for method in algs.iterkeys():
        alg = algs[method]
        alg.prepare(gw)
        for tid in tids:
            print method,tid,
            gt_path = prd.fetch_path_by_tid(tid)
            for interval in intervals:
                print interval,
                path = mm(gw, trd, method, tid, interval)
                if path is None:
                    print "failed"
                    continue
                result = path.compare(gt_path)
                matched_length[method][interval].append(result['matched_length'])
                missed_length[method][interval].append(result['missed_length'])
                false_length[method][interval].append(result['false_length'])
            print ""

    for method in algs.iterkeys():
        for interval in intervals:
            print method,interval,
            print sum(matched_length[method][interval]),
            print sum(missed_length[method][interval]),
            print sum(false_length[method][interval])
def insert_paths_attr():
    gw = cg.new_gw()

    prd = cdb.new_path_reader_for_method(method='bn', gw=gw, limit=10000, offset=0)
    if prd is None:
        return
    trd = cdb.new_track_reader()
    
    pawd = cdb.new_path_attr_writer('taxi_paths_bn_attr')

    path = prd.fetch_one()    
    while path is not None:
        print prd.fetched_num, path.tid
        track = trd.fetch_by_id(path.tid)
        pawd.insert(path, track)
        path = prd.fetch_one()

    del prd
    del pawd
def insert_paths_attr():
    gw = cg.new_gw()

    prd = cdb.new_path_reader_for_method(method='bn',
                                         gw=gw,
                                         limit=10000,
                                         offset=0)
    if prd is None:
        return
    trd = cdb.new_track_reader()

    pawd = cdb.new_path_attr_writer('taxi_paths_bn_attr')

    path = prd.fetch_one()
    while path is not None:
        print prd.fetched_num, path.tid
        track = trd.fetch_by_id(path.tid)
        pawd.insert(path, track)
        path = prd.fetch_one()

    del prd
    del pawd
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)
import sys
import datetime

import ccgraph as cg
import cctrack as ct
import ccpath as cp
import ccdb as cdb

import alg_ways_attr as alg

TRACKS_FROM_TID = 150001
TRACKS_TO_TID = 350000

gw = cg.new_gw()
trd = cdb.new_track_reader_for_purpose(purpose="mm")

# alg.init_ways_attrs_tb()


def match(track):

    print "Matching..",
    path = alg.match(gw, track)

    if path is not None:
        print "end   ",
        path.summary()
        print ""
        return True
    else:
        print ""
import sys
import datetime

import ccgraph as cg
import cctrack as ct
import ccpath as cp
import ccdb as cdb

import alg_ways_attr as alg

TRACKS_FROM_TID = 150001
TRACKS_TO_TID = 350000

gw = cg.new_gw()
trd = cdb.new_track_reader_for_purpose(purpose="mm")

# alg.init_ways_attrs_tb()

def match(track):
    
    print "Matching..",
    path = alg.match(gw, track)

    if path is not None:
        print "end   ",    
        path.summary()
        print ""
        return True
    else:
        print ""
        return False