Use correct bounding box
For some reason envelop = make_inverse<box_t>(); boost::geometry::expand(envelop, next); normalizes longitude to [-180,180]
This commit is contained in:
parent
20ff138f08
commit
a7c1967ca0
@ -99,7 +99,11 @@ void LocationDependentData::loadLocationDependentData(const boost::filesystem::p
|
|||||||
|
|
||||||
std::vector<segment_t> segments;
|
std::vector<segment_t> segments;
|
||||||
auto append_ring_segments = [&segments, &to_point](const auto &coordinates_array) -> box_t {
|
auto append_ring_segments = [&segments, &to_point](const auto &coordinates_array) -> box_t {
|
||||||
box_t envelop;
|
using coord_t = boost::geometry::traits::coordinate_type<point_t>::type;
|
||||||
|
auto x_min = std::numeric_limits<coord_t>::max();
|
||||||
|
auto y_min = std::numeric_limits<coord_t>::max();
|
||||||
|
auto x_max = std::numeric_limits<coord_t>::min();
|
||||||
|
auto y_max = std::numeric_limits<coord_t>::min();
|
||||||
if (!coordinates_array.Empty())
|
if (!coordinates_array.Empty())
|
||||||
{
|
{
|
||||||
point_t curr = to_point(coordinates_array[0]), next;
|
point_t curr = to_point(coordinates_array[0]), next;
|
||||||
@ -107,10 +111,14 @@ void LocationDependentData::loadLocationDependentData(const boost::filesystem::p
|
|||||||
{
|
{
|
||||||
next = to_point(coordinates_array[i]);
|
next = to_point(coordinates_array[i]);
|
||||||
segments.emplace_back(curr, next);
|
segments.emplace_back(curr, next);
|
||||||
boost::geometry::expand(envelop, next);
|
x_min = std::min(x_min, next.x());
|
||||||
|
x_max = std::max(x_max, next.x());
|
||||||
|
y_min = std::min(y_min, next.y());
|
||||||
|
y_max = std::max(y_max, next.y());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return envelop;
|
|
||||||
|
return box_t{{x_min, y_min}, {x_max, y_max}};
|
||||||
};
|
};
|
||||||
|
|
||||||
auto envelop = append_ring_segments(rings[0].GetArray());
|
auto envelop = append_ring_segments(rings[0].GetArray());
|
||||||
@ -121,7 +129,7 @@ void LocationDependentData::loadLocationDependentData(const boost::filesystem::p
|
|||||||
}
|
}
|
||||||
|
|
||||||
constexpr const std::size_t segments_per_band = 10;
|
constexpr const std::size_t segments_per_band = 10;
|
||||||
constexpr const std::size_t max_bands = 10000;
|
constexpr const std::size_t max_bands = 100000;
|
||||||
auto num_bands = segments.size() / segments_per_band;
|
auto num_bands = segments.size() / segments_per_band;
|
||||||
if (num_bands < 1)
|
if (num_bands < 1)
|
||||||
{
|
{
|
||||||
|
Loading…
Reference in New Issue
Block a user