Skip to content

Commit

Permalink
Special-case a longitude wraparound of exactly 360°
Browse files Browse the repository at this point in the history
  • Loading branch information
e-n-f committed Oct 27, 2023
1 parent e1c665b commit 2af162f
Show file tree
Hide file tree
Showing 3 changed files with 26 additions and 2 deletions.
7 changes: 5 additions & 2 deletions serial.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -328,10 +328,13 @@ static long long scale_geometry(struct serialization_state *sst, long long *bbox
if (geom[i].op == VT_LINETO) {
x += offset;
if (has_prev) {
if (x - prev > (1LL << 31)) {
// jumps at least 180° but not exactly 360°,
// which in some data sets is an intentional
// line across the world
if (x - prev > (1LL << 31) && x - prev != (1LL << 32)) {
offset -= 1LL << 32;
x -= 1LL << 32;
} else if (prev - x > (1LL << 31)) {
} else if (prev - x > (1LL << 31) && prev - x != (1LL << 32)) {
offset += 1LL << 32;
x += 1LL << 32;
}
Expand Down
Loading

0 comments on commit 2af162f

Please sign in to comment.