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