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)
Ejemplo n.º 3
0
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)
Ejemplo n.º 4
0
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