generate_training_input.py 文件源码

python
阅读 21 收藏 0 点赞 0 评论 0

项目:high-risk-traffic 作者: kshepard 项目源码 文件源码
def read_records(records_csv, road_projection, record_projection, tz, col_id,
                 col_x, col_y, col_occurred):
    """Reads records csv, projects points, and localizes datetimes
    :param records_csv: Path to CSV containing record data
    :param road_projection: Projection CRS for road data
    :param record_projection: Projection CRS for record data
    :param tz: Timezone id for record data
    :param col_id: Record id column name
    :param col_x: Record x-coordinate column name
    :param col_y: Record y-coordinate column name
    :param col_occurred: Record occurred datetime column name
    """

    # Create a function for projecting a point
    project = partial(
        pyproj.transform,
        pyproj.Proj(record_projection),
        pyproj.Proj(road_projection)
    )

    records = []
    min_occurred = None
    max_occurred = None
    with open(records_csv, 'rb') as records_file:
        csv_reader = csv.DictReader(records_file)
        for row in csv_reader:
            # Collect min and max occurred datetimes, as they'll be used later on
            try:
                parsed_dt = parser.parse(row[col_occurred])

                # Localize datetimes that aren't timezone-aware
                occurred = parsed_dt if parsed_dt.tzinfo else tz.localize(parsed_dt)
            except:
                # Skip the record if it has an invalid datetime
                continue

            if not min_occurred or occurred < min_occurred:
                min_occurred = occurred
            if not max_occurred or occurred > max_occurred:
                max_occurred = occurred

            records.append({
                'id': row[col_id],
                'point': transform(project, Point(float(row[col_x]), float(row[col_y]))),
                'occurred': occurred
            })

    return records, min_occurred, max_occurred
评论列表
文章目录


问题


面经


文章

微信
公众号

扫码关注公众号