Merge "Issue #2896 Fix sat best res on weird projections" into omaha_14.2.1

Former-commit-id: cef0438c35 [formerly 85f5821a6f] [formerly afbdf6962c [formerly d463531d4cf3bce8862ce1c29b12e9a594d8c63b]]
Former-commit-id: afbdf6962c
Former-commit-id: 09f4bd9883
This commit is contained in:
Nate Jensen 2014-03-11 12:35:44 -05:00 committed by Gerrit Code Review
commit 3411167042

View file

@ -63,11 +63,13 @@ import com.vividsolutions.jts.geom.Polygon;
* *
* SOFTWARE HISTORY * SOFTWARE HISTORY
* Date Ticket# Engineer Description * Date Ticket# Engineer Description
* ------------ ---------- ----------- -------------------------- * ------------- -------- ----------- --------------------------
* Jul 30, 2010 mschenke Initial creation * Jul 30, 2010 mschenke Initial creation
* Oct 31, 2012 DR 15287 D. Friedman Fix overlap calculation * Oct 31, 2012 15287 D. Friedman Fix overlap calculation
* Nov 06, 2012 DR 15157 D. Friedman Allow configured inclusion percentage * Nov 06, 2012 15157 D. Friedman Allow configured inclusion percentage
* Oct 10, 2013 2104 mschenke Fixed broken percentage calculation * Oct 10, 2013 2104 mschenke Fixed broken percentage calculation
* Mar 11, 2014 2896 bsteffen Limit the number of divisions.
*
* *
* </pre> * </pre>
* *
@ -322,11 +324,22 @@ public class SatBestResResourceData extends AbstractRequestableResourceData {
double threshold = targetGeometry.getEnvelope().getSpan(0) double threshold = targetGeometry.getEnvelope().getSpan(0)
/ targetGeometry.getGridRange().getSpan(0); / targetGeometry.getGridRange().getSpan(0);
int xDiv = (int) (envWidth / 100);
int yDiv = (int) (envHeight / 100);
if (xDiv * yDiv > 1024 * 1024) {
/* Don't wasste too much time/memory, preserve aspect ratio. */
if (xDiv > yDiv) {
yDiv = 1024 * yDiv / xDiv;
xDiv = 1024;
} else {
xDiv = 1024 * xDiv / yDiv;
yDiv = 1024;
}
}
Geometry intersection = EnvelopeIntersection Geometry intersection = EnvelopeIntersection
.createEnvelopeIntersection(gridGeometry.getEnvelope(), .createEnvelopeIntersection(gridGeometry.getEnvelope(),
targetGeometry.getEnvelope(), threshold, targetGeometry.getEnvelope(), threshold, xDiv,
(int) (envWidth / 100.0), yDiv);
(int) (envHeight / 100.0));
if (area == null) { if (area == null) {
area = intersection; area = intersection;
} else { } else {