Exemple #1
0
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
Exemple #2
0
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
Exemple #3
0
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)
Exemple #4
0
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
Exemple #5
0
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