mirror of
https://codeberg.org/comaps/comaps
synced 2026-01-06 04:24:29 +00:00
Format all C++ and Java code via clang-format
Signed-off-by: Konstantin Pastbin <konstantin.pastbin@gmail.com>
This commit is contained in:
@@ -36,8 +36,8 @@ void ShiftSegmentOnShape(transit::LineSegment & lineSegment, transit::ShapeLink
|
||||
}
|
||||
|
||||
// Returns segment edge points on the polyline.
|
||||
std::pair<m2::PointD, m2::PointD> GetSegmentEdgesOnPolyline(
|
||||
std::vector<m2::PointD> const & polyline, transit::LineSegment const & segment)
|
||||
std::pair<m2::PointD, m2::PointD> GetSegmentEdgesOnPolyline(std::vector<m2::PointD> const & polyline,
|
||||
transit::LineSegment const & segment)
|
||||
{
|
||||
CHECK_GREATER(polyline.size(), std::max(segment.m_startIdx, segment.m_endIdx), ());
|
||||
|
||||
@@ -63,12 +63,10 @@ void UpdateReversedSegmentIndexes(transit::LineSegment & segment, size_t polylin
|
||||
}
|
||||
} // namespace
|
||||
|
||||
|
||||
|
||||
SubwayConverter::SubwayConverter(std::string const & subwayJson, WorldFeed & feed)
|
||||
: m_subwayJson(subwayJson), m_feed(feed)
|
||||
{
|
||||
}
|
||||
: m_subwayJson(subwayJson)
|
||||
, m_feed(feed)
|
||||
{}
|
||||
|
||||
bool SubwayConverter::Convert()
|
||||
{
|
||||
@@ -120,8 +118,7 @@ bool SubwayConverter::ConvertNetworks()
|
||||
m_feed.m_networks.m_data.emplace(networkId, networkSubway.GetTitle());
|
||||
}
|
||||
|
||||
LOG(LINFO,
|
||||
("Converted", m_feed.m_networks.m_data.size(), "networks from subways to public transport."));
|
||||
LOG(LINFO, ("Converted", m_feed.m_networks.m_data.size(), "networks from subways to public transport."));
|
||||
|
||||
return !m_feed.m_networks.m_data.empty();
|
||||
}
|
||||
@@ -143,13 +140,12 @@ bool SubwayConverter::SplitEdges()
|
||||
return !m_edgesSubway.empty() && !m_edgesTransferSubway.empty();
|
||||
}
|
||||
|
||||
std::pair<TransitId, RouteData> SubwayConverter::MakeRoute(
|
||||
routing::transit::Line const & lineSubway)
|
||||
std::pair<TransitId, RouteData> SubwayConverter::MakeRoute(routing::transit::Line const & lineSubway)
|
||||
{
|
||||
uint32_t routeSubwayId = GetSubwayRouteId(lineSubway.GetId());
|
||||
|
||||
std::string const routeHash = BuildHash(kHashPrefix, std::to_string(lineSubway.GetNetworkId()),
|
||||
std::to_string(routeSubwayId));
|
||||
std::string const routeHash =
|
||||
BuildHash(kHashPrefix, std::to_string(lineSubway.GetNetworkId()), std::to_string(routeSubwayId));
|
||||
|
||||
TransitId const routeId = m_feed.m_idGenerator.MakeId(routeHash);
|
||||
|
||||
@@ -165,8 +161,7 @@ std::pair<TransitId, RouteData> SubwayConverter::MakeRoute(
|
||||
std::pair<TransitId, GateData> SubwayConverter::MakeGate(routing::transit::Gate const & gateSubway)
|
||||
{
|
||||
// This id is used only for storing gates in gtfs_converter tool. It is not saved to json.
|
||||
TransitId const gateId =
|
||||
m_feed.m_idGenerator.MakeId(BuildHash(kHashPrefix, std::to_string(gateSubway.GetOsmId())));
|
||||
TransitId const gateId = m_feed.m_idGenerator.MakeId(BuildHash(kHashPrefix, std::to_string(gateSubway.GetOsmId())));
|
||||
GateData gateData;
|
||||
|
||||
gateData.m_isEntrance = gateSubway.GetEntrance();
|
||||
@@ -176,15 +171,14 @@ std::pair<TransitId, GateData> SubwayConverter::MakeGate(routing::transit::Gate
|
||||
|
||||
for (auto stopIdSubway : gateSubway.GetStopIds())
|
||||
{
|
||||
gateData.m_weights.emplace_back(TimeFromGateToStop(m_stopIdMapping[stopIdSubway] /* stopId */,
|
||||
gateSubway.GetWeight() /* timeSeconds */));
|
||||
gateData.m_weights.emplace_back(
|
||||
TimeFromGateToStop(m_stopIdMapping[stopIdSubway] /* stopId */, gateSubway.GetWeight() /* timeSeconds */));
|
||||
}
|
||||
|
||||
return {gateId, gateData};
|
||||
}
|
||||
|
||||
std::pair<TransitId, TransferData> SubwayConverter::MakeTransfer(
|
||||
routing::transit::Transfer const & transferSubway)
|
||||
std::pair<TransitId, TransferData> SubwayConverter::MakeTransfer(routing::transit::Transfer const & transferSubway)
|
||||
{
|
||||
TransitId const transferId =
|
||||
m_feed.m_idGenerator.MakeId(BuildHash(kHashPrefix, std::to_string(transferSubway.GetId())));
|
||||
@@ -198,8 +192,7 @@ std::pair<TransitId, TransferData> SubwayConverter::MakeTransfer(
|
||||
return {transferId, transferData};
|
||||
}
|
||||
|
||||
std::pair<TransitId, LineData> SubwayConverter::MakeLine(routing::transit::Line const & lineSubway,
|
||||
TransitId routeId)
|
||||
std::pair<TransitId, LineData> SubwayConverter::MakeLine(routing::transit::Line const & lineSubway, TransitId routeId)
|
||||
{
|
||||
TransitId const lineId = lineSubway.GetId();
|
||||
CHECK(!routing::FakeFeatureIds::IsTransitFeature(lineId), (lineId));
|
||||
@@ -212,12 +205,10 @@ std::pair<TransitId, LineData> SubwayConverter::MakeLine(routing::transit::Line
|
||||
return {lineId, lineData};
|
||||
}
|
||||
|
||||
std::pair<EdgeId, EdgeData> SubwayConverter::MakeEdge(routing::transit::Edge const & edgeSubway,
|
||||
uint32_t index)
|
||||
std::pair<EdgeId, EdgeData> SubwayConverter::MakeEdge(routing::transit::Edge const & edgeSubway, uint32_t index)
|
||||
{
|
||||
auto const lineId = edgeSubway.GetLineId();
|
||||
EdgeId const edgeId(m_stopIdMapping[edgeSubway.GetStop1Id()],
|
||||
m_stopIdMapping[edgeSubway.GetStop2Id()], lineId);
|
||||
EdgeId const edgeId(m_stopIdMapping[edgeSubway.GetStop1Id()], m_stopIdMapping[edgeSubway.GetStop2Id()], lineId);
|
||||
EdgeData edgeData;
|
||||
edgeData.m_weight = edgeSubway.GetWeight();
|
||||
edgeData.m_featureId = index;
|
||||
@@ -229,8 +220,8 @@ std::pair<EdgeId, EdgeData> SubwayConverter::MakeEdge(routing::transit::Edge con
|
||||
return {edgeId, edgeData};
|
||||
}
|
||||
|
||||
std::pair<EdgeTransferId, EdgeData> SubwayConverter::MakeEdgeTransfer(
|
||||
routing::transit::Edge const & edgeSubway, uint32_t index)
|
||||
std::pair<EdgeTransferId, EdgeData> SubwayConverter::MakeEdgeTransfer(routing::transit::Edge const & edgeSubway,
|
||||
uint32_t index)
|
||||
{
|
||||
EdgeTransferId const edgeTransferId(m_stopIdMapping[edgeSubway.GetStop1Id()] /* fromStopId */,
|
||||
m_stopIdMapping[edgeSubway.GetStop2Id()] /* toStopId */);
|
||||
@@ -270,8 +261,8 @@ bool SubwayConverter::ConvertLinesBasedData()
|
||||
|
||||
auto [lineId, lineData] = MakeLine(lineSubway, routeId);
|
||||
|
||||
TransitId const shapeId = m_feed.m_idGenerator.MakeId(
|
||||
BuildHash(kHashPrefix, std::string("shape"), std::to_string(lineId)));
|
||||
TransitId const shapeId =
|
||||
m_feed.m_idGenerator.MakeId(BuildHash(kHashPrefix, std::string("shape"), std::to_string(lineId)));
|
||||
lineData.m_shapeId = shapeId;
|
||||
|
||||
ShapeData shapeData;
|
||||
@@ -342,8 +333,8 @@ bool SubwayConverter::ConvertLinesBasedData()
|
||||
if (inserted)
|
||||
{
|
||||
itEdgeOnShape->second.push_back(edgePoints);
|
||||
LOG(LWARNING, ("Edge duplicate in subways. stop1_id", stopIdSubwayPrev, "stop2_id",
|
||||
stopIdSubway, "line_id", lineId));
|
||||
LOG(LWARNING,
|
||||
("Edge duplicate in subways. stop1_id", stopIdSubwayPrev, "stop2_id", stopIdSubway, "line_id", lineId));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -351,8 +342,7 @@ bool SubwayConverter::ConvertLinesBasedData()
|
||||
m_feed.m_shapes.m_data.emplace(shapeId, shapeData);
|
||||
}
|
||||
|
||||
LOG(LDEBUG, ("Converted", m_feed.m_routes.m_data.size(), "routes,", m_feed.m_lines.m_data.size(),
|
||||
"lines."));
|
||||
LOG(LDEBUG, ("Converted", m_feed.m_routes.m_data.size(), "routes,", m_feed.m_lines.m_data.size(), "lines."));
|
||||
|
||||
return !m_feed.m_lines.m_data.empty();
|
||||
}
|
||||
@@ -384,10 +374,8 @@ bool SubwayConverter::ConvertTransfers()
|
||||
for (auto const & stopId : transferData.m_stopsIds)
|
||||
{
|
||||
for (auto const & [lineId, lineData] : m_feed.m_lines.m_data)
|
||||
{
|
||||
if (base::IsExist(lineData.m_stopIds, stopId))
|
||||
routeToStops[lineData.m_routeId].insert(stopId);
|
||||
}
|
||||
}
|
||||
|
||||
// We don't count as transfers transfer points between lines on the same route, so we skip them.
|
||||
@@ -463,8 +451,7 @@ void SubwayConverter::MinimizeReversedLinesCount()
|
||||
if (revStopIds == lineDataStraight.m_stopIds)
|
||||
{
|
||||
lineData.m_shapeLink = lineDataStraight.m_shapeLink;
|
||||
LOG(LDEBUG, ("Reversed line", lineId, "to line", lineIdStraight, "shapeLink",
|
||||
lineData.m_shapeLink));
|
||||
LOG(LDEBUG, ("Reversed line", lineId, "to line", lineIdStraight, "shapeLink", lineData.m_shapeLink));
|
||||
reversed = true;
|
||||
break;
|
||||
}
|
||||
@@ -519,19 +506,15 @@ std::vector<LineSchemeData> SubwayConverter::GetLinesOnScheme(
|
||||
continue;
|
||||
|
||||
// New shape link is fully included into the existing one.
|
||||
if (shapeLink.m_startIndex <= newShapeLink.m_startIndex &&
|
||||
shapeLink.m_endIndex >= newShapeLink.m_endIndex)
|
||||
if (shapeLink.m_startIndex <= newShapeLink.m_startIndex && shapeLink.m_endIndex >= newShapeLink.m_endIndex)
|
||||
{
|
||||
insert = false;
|
||||
continue;
|
||||
}
|
||||
|
||||
// Existing shape link is fully included into the new one. It should be removed.
|
||||
if (newShapeLink.m_startIndex <= shapeLink.m_startIndex &&
|
||||
newShapeLink.m_endIndex >= shapeLink.m_endIndex)
|
||||
{
|
||||
if (newShapeLink.m_startIndex <= shapeLink.m_startIndex && newShapeLink.m_endIndex >= shapeLink.m_endIndex)
|
||||
linksForRemoval.push_back(shapeLink);
|
||||
}
|
||||
}
|
||||
|
||||
for (auto const & sl : linksForRemoval)
|
||||
@@ -570,10 +553,8 @@ enum class LineSegmentState
|
||||
struct LineSegmentInfo
|
||||
{
|
||||
LineSegmentInfo() = default;
|
||||
LineSegmentInfo(LineSegmentState const & state, bool codirectional)
|
||||
: m_state(state), m_codirectional(codirectional)
|
||||
{
|
||||
}
|
||||
LineSegmentInfo(LineSegmentState const & state, bool codirectional) : m_state(state), m_codirectional(codirectional)
|
||||
{}
|
||||
|
||||
LineSegmentState m_state = LineSegmentState::Start;
|
||||
bool m_codirectional = false;
|
||||
@@ -594,16 +575,13 @@ bool Equal(LineGeometry const & line1, LineGeometry const & line2)
|
||||
return false;
|
||||
|
||||
for (size_t i = 0; i < line1.size(); ++i)
|
||||
{
|
||||
if (!AlmostEqualAbs(line1[i], line2[i], kEps))
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
bool AddToCache(std::string const & color, LineGeometry const & linePart,
|
||||
ColorToLinepartsCache & cache)
|
||||
bool AddToCache(std::string const & color, LineGeometry const & linePart, ColorToLinepartsCache & cache)
|
||||
{
|
||||
auto [it, inserted] = cache.emplace(color, std::vector<LineGeometry>());
|
||||
|
||||
@@ -616,10 +594,8 @@ bool AddToCache(std::string const & color, LineGeometry const & linePart,
|
||||
std::vector<m2::PointD> linePartRev = GetReversed(linePart);
|
||||
|
||||
for (LineGeometry const & cachedPart : it->second)
|
||||
{
|
||||
if (Equal(cachedPart, linePart) || Equal(cachedPart, linePartRev))
|
||||
return false;
|
||||
}
|
||||
|
||||
it->second.push_back(linePart);
|
||||
return true;
|
||||
@@ -643,13 +619,10 @@ void SubwayConverter::CalculateLinePriorities(std::vector<LineSchemeData> const
|
||||
|
||||
for (auto const & [parallelLineId, parallelFirstPoint] : linePart.m_commonLines)
|
||||
{
|
||||
bool const codirectional =
|
||||
AlmostEqualAbs(linePart.m_firstPoint, parallelFirstPoint, kEps);
|
||||
bool const codirectional = AlmostEqualAbs(linePart.m_firstPoint, parallelFirstPoint, kEps);
|
||||
|
||||
startPointState.parallelLineStates[parallelLineId] =
|
||||
LineSegmentInfo(LineSegmentState::Start, codirectional);
|
||||
endPointState.parallelLineStates[parallelLineId] =
|
||||
LineSegmentInfo(LineSegmentState::Finish, codirectional);
|
||||
startPointState.parallelLineStates[parallelLineId] = LineSegmentInfo(LineSegmentState::Start, codirectional);
|
||||
endPointState.parallelLineStates[parallelLineId] = LineSegmentInfo(LineSegmentState::Finish, codirectional);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -705,14 +678,11 @@ void SubwayConverter::CalculateLinePriorities(std::vector<LineSchemeData> const
|
||||
}
|
||||
|
||||
LineSegmentOrder lso;
|
||||
lso.m_segment =
|
||||
LineSegment(static_cast<uint32_t>(startIndex), static_cast<uint32_t>(endIndex));
|
||||
lso.m_segment = LineSegment(static_cast<uint32_t>(startIndex), static_cast<uint32_t>(endIndex));
|
||||
|
||||
auto const & polyline =
|
||||
m_feed.m_shapes.m_data.at(lineSchemeData.m_shapeLink.m_shapeId).m_points;
|
||||
auto const & polyline = m_feed.m_shapes.m_data.at(lineSchemeData.m_shapeLink.m_shapeId).m_points;
|
||||
|
||||
if (!AddToCache(color,
|
||||
GetPolylinePart(polyline, lso.m_segment.m_startIdx, lso.m_segment.m_endIdx),
|
||||
if (!AddToCache(color, GetPolylinePart(polyline, lso.m_segment.m_startIdx, lso.m_segment.m_endIdx),
|
||||
routeSegmentsCache))
|
||||
{
|
||||
continue;
|
||||
@@ -735,10 +705,9 @@ void SubwayConverter::CalculateLinePriorities(std::vector<LineSchemeData> const
|
||||
|
||||
m_feed.m_linesMetadata.m_data[lineId].push_back(lso);
|
||||
|
||||
LOG(LINFO,
|
||||
("routeId", routeId, "lineId", lineId, "start", startIndex, "end", endIndex, "len",
|
||||
endIndex - startIndex + 1, "order", lso.m_order, "index", index, "reversed", reversed,
|
||||
"|| lines count:", parallelLines.size(), "colors count:", colors.size()));
|
||||
LOG(LINFO, ("routeId", routeId, "lineId", lineId, "start", startIndex, "end", endIndex, "len",
|
||||
endIndex - startIndex + 1, "order", lso.m_order, "index", index, "reversed", reversed,
|
||||
"|| lines count:", parallelLines.size(), "colors count:", colors.size()));
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -757,9 +726,8 @@ void SubwayConverter::PrepareLinesMetadata()
|
||||
auto const & shapeLink1 = linesInRegion.at(line1.m_lineId).m_shapeLink;
|
||||
|
||||
// |polyline1| is sub-polyline of the shapeLink1 geometry.
|
||||
auto const polyline1 =
|
||||
GetPolylinePart(m_feed.m_shapes.m_data.at(shapeLink1.m_shapeId).m_points,
|
||||
shapeLink1.m_startIndex, shapeLink1.m_endIndex);
|
||||
auto const polyline1 = GetPolylinePart(m_feed.m_shapes.m_data.at(shapeLink1.m_shapeId).m_points,
|
||||
shapeLink1.m_startIndex, shapeLink1.m_endIndex);
|
||||
|
||||
for (size_t j = i + 1; j < linesOnScheme.size(); ++j)
|
||||
{
|
||||
@@ -771,9 +739,8 @@ void SubwayConverter::PrepareLinesMetadata()
|
||||
CHECK_LESS(shapeLink1.m_startIndex, shapeLink1.m_endIndex, ());
|
||||
CHECK_LESS(shapeLink2.m_startIndex, shapeLink2.m_endIndex, ());
|
||||
|
||||
std::optional<LineSegment> inter =
|
||||
GetIntersection(shapeLink1.m_startIndex, shapeLink1.m_endIndex,
|
||||
shapeLink2.m_startIndex, shapeLink2.m_endIndex);
|
||||
std::optional<LineSegment> inter = GetIntersection(shapeLink1.m_startIndex, shapeLink1.m_endIndex,
|
||||
shapeLink2.m_startIndex, shapeLink2.m_endIndex);
|
||||
|
||||
if (inter != std::nullopt)
|
||||
{
|
||||
@@ -798,33 +765,26 @@ void SubwayConverter::PrepareLinesMetadata()
|
||||
std::tie(segments1, segments2) = FindIntersections(polyline1, polyline2Rev);
|
||||
|
||||
if (!segments1.empty())
|
||||
{
|
||||
for (auto & seg : segments2)
|
||||
UpdateReversedSegmentIndexes(seg, polyline2.size());
|
||||
}
|
||||
}
|
||||
|
||||
if (!segments1.empty())
|
||||
{
|
||||
for (size_t k = 0; k < segments1.size(); ++k)
|
||||
{
|
||||
auto const & [startPoint1, endPoint1] =
|
||||
GetSegmentEdgesOnPolyline(polyline1, segments1[k]);
|
||||
auto const & [startPoint2, endPoint2] =
|
||||
GetSegmentEdgesOnPolyline(polyline2, segments2[k]);
|
||||
auto const & [startPoint1, endPoint1] = GetSegmentEdgesOnPolyline(polyline1, segments1[k]);
|
||||
auto const & [startPoint2, endPoint2] = GetSegmentEdgesOnPolyline(polyline2, segments2[k]);
|
||||
|
||||
CHECK((AlmostEqualAbs(startPoint1, startPoint2, kEps) &&
|
||||
AlmostEqualAbs(endPoint1, endPoint2, kEps)) ||
|
||||
(AlmostEqualAbs(startPoint1, endPoint2, kEps) &&
|
||||
AlmostEqualAbs(endPoint1, startPoint2, kEps)), ());
|
||||
CHECK((AlmostEqualAbs(startPoint1, startPoint2, kEps) && AlmostEqualAbs(endPoint1, endPoint2, kEps)) ||
|
||||
(AlmostEqualAbs(startPoint1, endPoint2, kEps) && AlmostEqualAbs(endPoint1, startPoint2, kEps)),
|
||||
());
|
||||
|
||||
ShiftSegmentOnShape(segments1[k], shapeLink1);
|
||||
ShiftSegmentOnShape(segments2[k], shapeLink2);
|
||||
|
||||
UpdateLinePart(line1.m_lineParts, segments1[k], startPoint1, line2.m_lineId,
|
||||
startPoint2);
|
||||
UpdateLinePart(line2.m_lineParts, segments2[k], startPoint2, line1.m_lineId,
|
||||
startPoint1);
|
||||
UpdateLinePart(line1.m_lineParts, segments1[k], startPoint1, line2.m_lineId, startPoint2);
|
||||
UpdateLinePart(line2.m_lineParts, segments2[k], startPoint2, line1.m_lineId, startPoint1);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -836,12 +796,10 @@ void SubwayConverter::PrepareLinesMetadata()
|
||||
}
|
||||
}
|
||||
|
||||
routing::transit::Edge SubwayConverter::FindEdge(routing::transit::StopId stop1Id,
|
||||
routing::transit::StopId stop2Id,
|
||||
routing::transit::Edge SubwayConverter::FindEdge(routing::transit::StopId stop1Id, routing::transit::StopId stop2Id,
|
||||
routing::transit::LineId lineId) const
|
||||
{
|
||||
routing::transit::Edge edge(stop1Id, stop2Id, 0 /* weight */, lineId, false /* transfer */,
|
||||
{} /* shapeIds */);
|
||||
routing::transit::Edge edge(stop1Id, stop2Id, 0 /* weight */, lineId, false /* transfer */, {} /* shapeIds */);
|
||||
|
||||
auto const itEdge = m_edgesSubway.find(edge);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user