def count_all_daily_trs_by_city(city_id): city_trs_list = [] regions = region_service.get_regions_by_city_id(city_id, type_code=1, show_all=False) for region in regions: region_info = get_trs_by_region_id(region['id']) city_trs_list.append(region_info) results = sorted(city_trs_list, key=lambda t: _int(t['name'].split('\xe2\x80\x94')[-1])) results.insert(0, {u'区域平均交易额': sum([r['trs'] for r in results]) / len(results)}) return results
def count_all_daily_trs_by_city(city_id): city_trs_list = [] regions = region_service.get_regions_by_city_id(city_id, type_code=1, show_all=False) for region in regions: region_info = get_trs_by_region_id(region['id']) city_trs_list.append(region_info) results = sorted(city_trs_list, key=lambda t: _int(t['name'].split('\xe2\x80\x94')[-1])) results.insert( 0, {u'区域平均交易额': sum([r['trs'] for r in results]) / len(results)}) return results
def group_ungrouped_rsts(city_id): """ Group all ungrouped restaurants into their nearly regions :param city_id: :return: """ ungrouped_rsts = get_ungrouped_rst(city_id) regions = region_base.get_regions_by_city_id(city_id) region_infos = [[r['id'], region_area_to_polygons(r['area'])] for r in regions] for region_info in region_infos: region_info.append(get_centerpoint_of_region(region_info[1])) if not ungrouped_rsts: return 0 for rst in ungrouped_rsts: point = (float(rst.latitude), float(rst.longitude)) region_id = None for region in regions: if not region['area']: continue polygons = region_area_to_polygons(region['area']) for polygon in polygons: if geo.is_in_region(point, polygon, xy_reverse=True): region_id = region['id'] break if region_id: break if not region_id: region_id = region_infos[0] min_distance = sys.maxint for info in region_infos: center_points = info[2] cur_distance = min([get_dist(p, point) for p in center_points]) if cur_distance < min_distance: min_distance = cur_distance region_id = info[0] log.info('Restaurant {} does not have matched regions. Find closest' ' one with region_id {}, distance {}'.format( rst.id, region_id, min_distance)) log.info('update rst {} with region {}'.format(rst.id, region_id)) inner.update_restaurant_region(rst.id, region_id) return len(ungrouped_rsts)
def get_regions_by_city_id(): args_spec = { 'city_id': Arg(int), } if not check_get_regions_by_city_id(): raise_auth_exc(AUTH_FAILED_ERROR) args = args_parser.parse(args_spec) city_id = args['city_id'] result = region_base.get_regions_by_city_id(city_id) for region in result: region['_area'] = back_area_to_front_area(region['area']) if region['type_code'] == WHITE_COLLAR_TYPE_CODE: region['buildings'] = _get_building_by_region_id(region['id']) dic_fields_process(region, excludes=['has_geohash', 'color']) return result
def get_regions_by_city_id(): args_spec = { 'city_id': Arg(int), } if not check_get_regions_by_city_id(): raise_auth_exc(AUTH_FAILED_ERROR) args = args_parser.parse(args_spec) city_id = args['city_id'] result = region_base.get_regions_by_city_id(city_id) for region in result: region['_area'] = back_area_to_front_area(region['area']) if region['type_code'] == WHITE_COLLAR_TYPE_CODE: region['buildings'] = _get_building_by_region_id(region['id']) dic_fields_process(region, excludes=['has_geohash', 'color']) return result