MCPcopy Create free account
hub / github.com/Project-OSRM/osrm-backend / coordinatesToTileLine

Function coordinatesToTileLine

src/engine/plugins/tile.cpp:124–156  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

122}
123
124std::vector<FixedLine> coordinatesToTileLine(const std::vector<util::Coordinate> &points,
125 const BBox &tile_bbox)
126{
127 FloatLine geo_line;
128 for (auto const &c : points)
129 {
130 geo_line.emplace_back(static_cast<double>(util::toFloating(c.lon)),
131 static_cast<double>(util::toFloating(c.lat)));
132 }
133
134 linestring_t unclipped_line = floatLineToTileLine(geo_line, tile_bbox);
135
136 multi_linestring_t clipped_line;
137 boost::geometry::intersection(clip_box, unclipped_line, clipped_line);
138
139 std::vector<FixedLine> result;
140
141 // b::g::intersection might return a line with one point if the
142 // original line was very short and coords were dupes
143 for (auto const &cl : clipped_line)
144 {
145 if (cl.size() < 2)
146 continue;
147
148 FixedLine tile_line;
149 for (const auto &p : cl)
150 tile_line.emplace_back(p.get<0>(), p.get<1>());
151
152 result.emplace_back(std::move(tile_line));
153 }
154
155 return result;
156}
157
158/**
159 * Return the x1,y1,x2,y2 pixel coordinates of a line in a given

Callers 1

encodeVectorTileFunction · 0.85

Calls 5

toFloatingFunction · 0.85
floatLineToTileLineFunction · 0.85
emplace_backMethod · 0.45
sizeMethod · 0.45
emptyMethod · 0.45

Tested by

no test coverage detected