def read_roads(roads_shp, records, buffer_size):
"""Reads shapefile and extracts roads and projection
:param roads_shp: Path to the shapefile containing roads
:param records: List of shapely geometries representing record points
:param buffer_size: Number of units to buffer record for checking if road should be kept
"""
# Create a spatial index for record buffers to efficiently find intersecting roads
record_buffers_index = rtree.index.Index()
for idx, record in enumerate(records):
record_point = record['point']
record_buffer_bounds = record_point.buffer(buffer_size).bounds
record_buffers_index.insert(idx, record_buffer_bounds)
shp_file = fiona.open(roads_shp)
roads = []
logger.info('Number of total roads in shapefile: {:,}'.format(len(shp_file)))
for road in shp_file:
road_shp = shape(road['geometry'])
if should_keep_road(road, road_shp, record_buffers_index):
roads.append(road_shp)
return (roads, shp_file.bounds)
generate_training_input.py 文件源码
python
阅读 25
收藏 0
点赞 0
评论 0
评论列表
文章目录