Merge "Issue #1307 Ensured wrap correcting occurs fully over -180-180 boundary at a minimum." into development

Former-commit-id: 479132da93 [formerly 18e03a8c57] [formerly 4fd1111b7b] [formerly 479132da93 [formerly 18e03a8c57] [formerly 4fd1111b7b] [formerly ada2d72a9c [formerly 4fd1111b7b [formerly 32c1912eef76a513b79e6419ec90c9141dd56479]]]]
Former-commit-id: ada2d72a9c
Former-commit-id: 86a5e917bb [formerly 7fc91039ca] [formerly 0fe208290bfe0cf473fda160a32f2ba2631152fa [formerly e7dfd27bd7]]
Former-commit-id: f86831a063f86a94ef70820aecd9b8a1464f0c65 [formerly 80900d875a]
Former-commit-id: 8c95642473
This commit is contained in:
Nate Jensen 2012-11-01 17:29:57 -05:00 committed by Gerrit Code Review
commit 0b7e6f64df

View file

@ -225,15 +225,25 @@ public class WorldWrapCorrector {
// throw them out since we can't guarantee integrity
GeometryFactory gf = flattenedGeom.getFactory();
double delta = 0.00001;
double start = checker.getLowInverseCentralMeridian() + offsets[0];
double end = checker.getHighInverseCentralMeridian() + offsets[1];
// Because Geometries are within bounds -180-180, ensure our initial
// start/end range will fully cover it
double lowInverseCentral = checker.getLowInverseCentralMeridian();
if (lowInverseCentral > -180.0) {
lowInverseCentral -= 360.0;
}
double highInverseCentral = checker.getHighInverseCentralMeridian();
if (highInverseCentral < 180.0) {
highInverseCentral += 360.0;
}
double start = lowInverseCentral + offsets[0];
double end = highInverseCentral + offsets[1];
double minY = -90, maxY = 90;
while (start < end) {
double useStart = start;
double useEnd = start + 360;
double minX = useStart + delta;
double maxX = (useEnd) - delta;
double maxX = useEnd - delta;
Geometry section = gf.createPolygon(
gf.createLinearRing(new Coordinate[] {
@ -246,7 +256,7 @@ public class WorldWrapCorrector {
if (section.isEmpty() == false) {
geoms.add(section);
}
start += 360.0;
start = useEnd;
}
}
}