Save both forward and reverse datasources.
This commit is contained in:
@@ -245,7 +245,8 @@ void CompressedEdgeContainer::InitializeBothwayVector()
|
||||
segment_data->rev_weights.reserve(m_compressed_oneway_geometries.size());
|
||||
segment_data->fwd_durations.reserve(m_compressed_oneway_geometries.size());
|
||||
segment_data->rev_durations.reserve(m_compressed_oneway_geometries.size());
|
||||
segment_data->datasources.reserve(m_compressed_oneway_geometries.size());
|
||||
segment_data->fwd_datasources.reserve(m_compressed_oneway_geometries.size());
|
||||
segment_data->rev_datasources.reserve(m_compressed_oneway_geometries.size());
|
||||
}
|
||||
|
||||
unsigned CompressedEdgeContainer::ZipEdges(const EdgeID f_edge_id, const EdgeID r_edge_id)
|
||||
@@ -270,7 +271,8 @@ unsigned CompressedEdgeContainer::ZipEdges(const EdgeID f_edge_id, const EdgeID
|
||||
segment_data->rev_weights.emplace_back(first_node.weight);
|
||||
segment_data->fwd_durations.emplace_back(INVALID_SEGMENT_DURATION);
|
||||
segment_data->rev_durations.emplace_back(first_node.duration);
|
||||
segment_data->datasources.emplace_back(LUA_SOURCE);
|
||||
segment_data->fwd_datasources.emplace_back(LUA_SOURCE);
|
||||
segment_data->rev_datasources.emplace_back(LUA_SOURCE);
|
||||
|
||||
for (std::size_t i = 0; i < forward_bucket.size() - 1; ++i)
|
||||
{
|
||||
@@ -284,7 +286,8 @@ unsigned CompressedEdgeContainer::ZipEdges(const EdgeID f_edge_id, const EdgeID
|
||||
segment_data->rev_weights.emplace_back(rev_node.weight);
|
||||
segment_data->fwd_durations.emplace_back(fwd_node.duration);
|
||||
segment_data->rev_durations.emplace_back(rev_node.duration);
|
||||
segment_data->datasources.emplace_back(LUA_SOURCE);
|
||||
segment_data->fwd_datasources.emplace_back(LUA_SOURCE);
|
||||
segment_data->rev_datasources.emplace_back(LUA_SOURCE);
|
||||
}
|
||||
|
||||
const auto &last_node = forward_bucket.back();
|
||||
@@ -294,7 +297,8 @@ unsigned CompressedEdgeContainer::ZipEdges(const EdgeID f_edge_id, const EdgeID
|
||||
segment_data->rev_weights.emplace_back(INVALID_SEGMENT_WEIGHT);
|
||||
segment_data->fwd_durations.emplace_back(last_node.duration);
|
||||
segment_data->rev_durations.emplace_back(INVALID_SEGMENT_DURATION);
|
||||
segment_data->datasources.emplace_back(LUA_SOURCE);
|
||||
segment_data->fwd_datasources.emplace_back(LUA_SOURCE);
|
||||
segment_data->rev_datasources.emplace_back(LUA_SOURCE);
|
||||
|
||||
return zipped_geometry_id;
|
||||
}
|
||||
|
||||
+16
-6
@@ -383,7 +383,9 @@ void Storage::PopulateLayout(DataLayout &layout)
|
||||
DataLayout::GEOMETRIES_FWD_DURATION_LIST, number_of_segment_duration_blocks);
|
||||
layout.SetBlockSize<extractor::SegmentDataView::SegmentDurationVector::block_type>(
|
||||
DataLayout::GEOMETRIES_REV_DURATION_LIST, number_of_segment_duration_blocks);
|
||||
layout.SetBlockSize<DatasourceID>(DataLayout::DATASOURCES_LIST,
|
||||
layout.SetBlockSize<DatasourceID>(DataLayout::GEOMETRIES_FWD_DATASOURCES_LIST,
|
||||
number_of_compressed_geometries);
|
||||
layout.SetBlockSize<DatasourceID>(DataLayout::GEOMETRIES_REV_DATASOURCES_LIST,
|
||||
number_of_compressed_geometries);
|
||||
}
|
||||
|
||||
@@ -720,10 +722,17 @@ void Storage::PopulateData(const DataLayout &layout, char *memory_ptr)
|
||||
layout.num_entries[storage::DataLayout::GEOMETRIES_REV_DURATION_LIST]),
|
||||
num_entries);
|
||||
|
||||
auto datasources_list_ptr = layout.GetBlockPtr<DatasourceID, true>(
|
||||
memory_ptr, storage::DataLayout::DATASOURCES_LIST);
|
||||
util::vector_view<DatasourceID> datasources_list(
|
||||
datasources_list_ptr, layout.num_entries[storage::DataLayout::DATASOURCES_LIST]);
|
||||
auto geometries_fwd_datasources_list_ptr = layout.GetBlockPtr<DatasourceID, true>(
|
||||
memory_ptr, storage::DataLayout::GEOMETRIES_FWD_DATASOURCES_LIST);
|
||||
util::vector_view<DatasourceID> geometry_fwd_datasources_list(
|
||||
geometries_fwd_datasources_list_ptr,
|
||||
layout.num_entries[storage::DataLayout::GEOMETRIES_FWD_DATASOURCES_LIST]);
|
||||
|
||||
auto geometries_rev_datasources_list_ptr = layout.GetBlockPtr<DatasourceID, true>(
|
||||
memory_ptr, storage::DataLayout::GEOMETRIES_REV_DATASOURCES_LIST);
|
||||
util::vector_view<DatasourceID> geometry_rev_datasources_list(
|
||||
geometries_rev_datasources_list_ptr,
|
||||
layout.num_entries[storage::DataLayout::GEOMETRIES_REV_DATASOURCES_LIST]);
|
||||
|
||||
extractor::SegmentDataView segment_data{std::move(geometry_begin_indices),
|
||||
std::move(geometry_node_list),
|
||||
@@ -731,7 +740,8 @@ void Storage::PopulateData(const DataLayout &layout, char *memory_ptr)
|
||||
std::move(geometry_rev_weight_list),
|
||||
std::move(geometry_fwd_duration_list),
|
||||
std::move(geometry_rev_duration_list),
|
||||
std::move(datasources_list)};
|
||||
std::move(geometry_fwd_datasources_list),
|
||||
std::move(geometry_rev_datasources_list)};
|
||||
|
||||
extractor::files::readSegmentData(config.GetPath(".osrm.geometry"), segment_data);
|
||||
}
|
||||
|
||||
@@ -320,7 +320,7 @@ updateSegmentData(const UpdaterConfig &config,
|
||||
auto new_fwd_datasources_range = segment_data.GetForwardDatasources(geometry_id);
|
||||
auto new_rev_durations_range =
|
||||
boost::adaptors::reverse(segment_data.GetReverseDurations(geometry_id));
|
||||
auto new_rev_datasources_range = segment_data.GetForwardDatasources(geometry_id);
|
||||
auto new_rev_datasources_range = segment_data.GetReverseDatasources(geometry_id);
|
||||
auto old_fwd_durations_range = segment_data_backup->GetForwardDurations(geometry_id);
|
||||
auto old_rev_durations_range =
|
||||
boost::adaptors::reverse(segment_data_backup->GetReverseDurations(geometry_id));
|
||||
|
||||
Reference in New Issue
Block a user