コード例 #1
0
def get_address(accident, streets):
    """
    extracts the address of the main street.
    tries to build the full address: <street_name> <street_number>, <settlement>,
    but might return a partial one if unsuccessful.
    """
    street = get_street(
        accident.get(field_names.yishuv_symbol), accident.get(field_names.street1), streets
    )
    if not street:
        return ""

    # the house_number field is invalid if it's empty or if it contains 9999
    house_number = (
        int(accident.get(field_names.house_number))
        if not pd.isnull(accident.get(field_names.house_number))
        and int(accident.get(field_names.house_number)) != 9999
        else None
    )
    settlement = localization.get_city_name(accident.get(field_names.yishuv_symbol))

    if not house_number and not settlement:
        return street
    if not house_number and settlement:
        return "{}, {}".format(street, settlement)
    if house_number and not settlement:
        return "{} {}".format(street, house_number)

    return "{} {}, {}".format(street, house_number, settlement)
コード例 #2
0
def import_involved(involved, **kwargs):
    logging.info("Importing involved")
    involved_result = []
    for _, involve in involved.iterrows():
        if not involve.get(field_names.id) or pd.isnull(
            involve.get(field_names.id)
        ):  # skip lines with no accident id
            continue
        involved_result.append(
            {
                "accident_id": int(involve.get(field_names.id)),
                "provider_and_id": int(
                    str(int(involve.get(field_names.file_type)))
                    + str(int(involve.get(field_names.id)))
                ),
                "provider_code": int(involve.get(field_names.file_type)),
                "file_type_police": get_data_value(involve.get(field_names.file_type_police)),
                "involved_type": int(involve.get(field_names.involved_type)),
                "license_acquiring_date": int(involve.get(field_names.license_acquiring_date)),
                "age_group": int(involve.get(field_names.age_group)),
                "sex": get_data_value(involve.get(field_names.sex)),
                "vehicle_type": get_data_value(involve.get(field_names.vehicle_type_involved)),
                "safety_measures": get_data_value(involve.get(field_names.safety_measures)),
                "involve_yishuv_symbol": get_data_value(
                    involve.get(field_names.involve_yishuv_symbol)
                ),
                "involve_yishuv_name": localization.get_city_name(
                    involve.get(field_names.involve_yishuv_symbol)
                ),
                "injury_severity": get_data_value(involve.get(field_names.injury_severity)),
                "injured_type": get_data_value(involve.get(field_names.injured_type)),
                "injured_position": get_data_value(involve.get(field_names.injured_position)),
                "population_type": get_data_value(involve.get(field_names.population_type)),
                "home_region": get_data_value(involve.get(field_names.home_region)),
                "home_district": get_data_value(involve.get(field_names.home_district)),
                "home_natural_area": get_data_value(involve.get(field_names.home_natural_area)),
                "home_municipal_status": get_data_value(
                    involve.get(field_names.home_municipal_status)
                ),
                "home_yishuv_shape": get_data_value(involve.get(field_names.home_yishuv_shape)),
                "hospital_time": get_data_value(involve.get(field_names.hospital_time)),
                "medical_type": get_data_value(involve.get(field_names.medical_type)),
                "release_dest": get_data_value(involve.get(field_names.release_dest)),
                "safety_measures_use": get_data_value(involve.get(field_names.safety_measures_use)),
                "late_deceased": get_data_value(involve.get(field_names.late_deceased)),
                "car_id": get_data_value(involve.get(field_names.car_id)),
                "involve_id": get_data_value(involve.get(field_names.involve_id)),
                "accident_year": get_data_value(involve.get(field_names.accident_year)),
                "accident_month": get_data_value(involve.get(field_names.accident_month)),
            }
        )
    db.session.bulk_insert_mappings(Involved, involved_result)
    db.session.commit()
    logging.info("Finished Importing involved")
    return len(involved_result)
コード例 #3
0
 def test_hebrew(self):
     self.assertEqual(get_city_name(RAMAT_GAN_CITY_CODE, "he"), "רמת גן")
コード例 #4
0
 def test_not_found(self):
     self.assertIsNone(get_city_name("NOT_AN_ACTUAL_CODE", "en"))
コード例 #5
0
 def test_english(self):
     self.assertEqual(get_city_name(RAMAT_GAN_CITY_CODE, "en"), "RAMAT GAN")
コード例 #6
0
def create_marker(accident, streets, roads, non_urban_intersection):
    if field_names.x not in accident or field_names.y not in accident:
        raise ValueError("Missing x and y coordinates")
    if (
        accident.get(field_names.x)
        and not math.isnan(accident.get(field_names.x))
        and accident.get(field_names.y)
        and not math.isnan(accident.get(field_names.y))
    ):
        lng, lat = coordinates_converter.convert(
            accident.get(field_names.x), accident.get(field_names.y)
        )
    else:
        lng, lat = None, None  # Must insert everything to avoid foreign key failure
    main_street, secondary_street = get_streets(accident, streets)
    km = accident.get(field_names.km)
    km = None if km is None or math.isnan(km) else str(km)
    km_accurate = None
    if km is not None:
        km_accurate = False if "-" in km else True
        km = float(km.strip("-"))
    accident_datetime = parse_date(accident)
    marker = {
        "id": int(accident.get(field_names.id)),
        "provider_and_id": int(
            str(int(accident.get(field_names.file_type))) + str(int(accident.get(field_names.id)))
        ),
        "provider_code": int(accident.get(field_names.file_type)),
        "file_type_police": get_data_value(accident.get(field_names.file_type_police)),
        "title": "Accident",
        "description": json.dumps(load_extra_data(accident, streets, roads)),
        "address": get_address(accident, streets),
        "latitude": lat,
        "longitude": lng,
        "accident_type": get_data_value(accident.get(field_names.accident_type)),
        "accident_severity": get_data_value(accident.get(field_names.accident_severity)),
        "created": accident_datetime,
        "location_accuracy": get_data_value(accident.get(field_names.location_accuracy)),
        "road_type": get_data_value(accident.get(field_names.road_type)),
        "road_shape": get_data_value(accident.get(field_names.road_shape)),
        "day_type": get_data_value(accident.get(field_names.day_type)),
        "police_unit": get_data_value(accident.get(field_names.police_unit)),
        "mainStreet": main_street,
        "secondaryStreet": secondary_street,
        "junction": get_junction(accident, roads),
        "one_lane": get_data_value(accident.get(field_names.one_lane)),
        "multi_lane": get_data_value(accident.get(field_names.multi_lane)),
        "speed_limit": get_data_value(accident.get(field_names.speed_limit)),
        "road_intactness": get_data_value(accident.get(field_names.road_intactness)),
        "road_width": get_data_value(accident.get(field_names.road_width)),
        "road_sign": get_data_value(accident.get(field_names.road_sign)),
        "road_light": get_data_value(accident.get(field_names.road_light)),
        "road_control": get_data_value(accident.get(field_names.road_control)),
        "weather": get_data_value(accident.get(field_names.weather)),
        "road_surface": get_data_value(accident.get(field_names.road_surface)),
        "road_object": get_data_value(accident.get(field_names.road_object)),
        "object_distance": get_data_value(accident.get(field_names.object_distance)),
        "didnt_cross": get_data_value(accident.get(field_names.didnt_cross)),
        "cross_mode": get_data_value(accident.get(field_names.cross_mode)),
        "cross_location": get_data_value(accident.get(field_names.cross_location)),
        "cross_direction": get_data_value(accident.get(field_names.cross_direction)),
        "road1": get_data_value(accident.get(field_names.road1)),
        "road2": get_data_value(accident.get(field_names.road2)),
        "km": km,
        "km_raw": get_data_value(accident.get(field_names.km)),
        "km_accurate": km_accurate,
        "yishuv_symbol": get_data_value(accident.get(field_names.yishuv_symbol)),
        "yishuv_name": localization.get_city_name(accident.get(field_names.yishuv_symbol)),
        "geo_area": get_data_value(accident.get(field_names.geo_area)),
        "day_night": get_data_value(accident.get(field_names.day_night)),
        "day_in_week": get_data_value(accident.get(field_names.day_in_week)),
        "traffic_light": get_data_value(accident.get(field_names.traffic_light)),
        "region": get_data_value(accident.get(field_names.region)),
        "district": get_data_value(accident.get(field_names.district)),
        "natural_area": get_data_value(accident.get(field_names.natural_area)),
        "municipal_status": get_data_value(accident.get(field_names.municipal_status)),
        "yishuv_shape": get_data_value(accident.get(field_names.yishuv_shape)),
        "street1": get_data_value(accident.get(field_names.street1)),
        "street1_hebrew": get_street(
            accident.get(field_names.yishuv_symbol), accident.get(field_names.street1), streets
        ),
        "street2": get_data_value(accident.get(field_names.street2)),
        "street2_hebrew": get_street(
            accident.get(field_names.yishuv_symbol), accident.get(field_names.street2), streets
        ),
        "house_number": get_data_value(accident.get(field_names.house_number)),
        "urban_intersection": get_data_value(accident.get(field_names.urban_intersection)),
        "non_urban_intersection": get_data_value(accident.get(field_names.non_urban_intersection)),
        "non_urban_intersection_hebrew": get_non_urban_intersection(accident, roads),
        "non_urban_intersection_by_junction_number": get_non_urban_intersection_by_junction_number(
            accident, non_urban_intersection
        ),
        "accident_year": get_data_value(accident.get(field_names.accident_year)),
        "accident_month": get_data_value(accident.get(field_names.accident_month)),
        "accident_day": get_data_value(accident.get(field_names.accident_day)),
        "accident_hour_raw": get_data_value(accident.get(field_names.accident_hour)),
        "accident_hour": accident_datetime.hour,
        "accident_minute": accident_datetime.minute,
        "x": accident.get(field_names.x),
        "y": accident.get(field_names.y),
        "vehicle_type_rsa": None,
        "violation_type_rsa": None,
        "geom": None,
    }
    return marker