1
0
Fork 0

workaround for some missing polygons in ogrdecode

- we clip by row first, then tile.  when a polygon is clipped for a row,
  I can see all resulting polys, but subsequent tile intersection, the
  poly disappears.  I am assuming that the colinear horizontal line causes
  clipper some difficulty.
- workaround is to clip the row slightly larger, so when clipping each
  bucket, there won't be such perfect colinear lines.

I ran a test rectangle around lowi (3x3 degrees, and saw no issue.
This commit is contained in:
Peter Sadrozinski 2015-07-31 07:44:44 -04:00
parent 4f59886aaa
commit 082ee9b82f

View file

@ -103,8 +103,11 @@ void tgChopper::Add( const tgPolygon& subject, const std::string& type )
// Generate a clip rectangle for the whole row // Generate a clip rectangle for the whole row
SGBucket b_clip = b_min.sibling(0, row); SGBucket b_clip = b_min.sibling(0, row);
double clip_bottom = b_clip.get_center_lat() - SG_HALF_BUCKET_SPAN;
double clip_top = b_clip.get_center_lat() + SG_HALF_BUCKET_SPAN; // add a small offset when generating the row. clipper is having difficulty
// with colinear horizontal lines...
double clip_bottom = b_clip.get_center_lat() - 0.0630;
double clip_top = b_clip.get_center_lat() + 0.0630;
tgPolygon clip_row, clipped; tgPolygon clip_row, clipped;
SG_LOG( SG_GENERAL, SG_DEBUG, " CLIPPED row " << row << " center lat is " << b_clip.get_center_lat() << " clip_botton is " << clip_bottom << " clip_top is " << clip_top ); SG_LOG( SG_GENERAL, SG_DEBUG, " CLIPPED row " << row << " center lat is " << b_clip.get_center_lat() << " clip_botton is " << clip_bottom << " clip_top is " << clip_top );