Hi Rob, Doing poly.buffer(0) on that one seems to give what you are after.
Michael On 30 April 2014 07:44, Rob Emanuele <[email protected]> wrote: > Hi JTS folk, > > This is Rob from the GeoTrellis team. We have an algorithm that performs > vectorization against raster data that does a RegionGroup operation over the > raster and then vectorizes each region along the cell borders. > > We're wrapping JTS in scala code (you can find it here: > https://github.com/geotrellis/geotrellis/tree/master/feature/src/main/scala/geotrellis/feature). > This is replacing some earlier wrapping work contained in GeoTrellis <= > 0.9.X. One difference between the two wrappers is that the current Polygon > checks to see that the JTS geometry is valid in the constructor (as does > each geometry type). > > This is causing one of our previous Vectorization unit tests to fail. In > this case, the Raster looks like this: > > X X X X X > X P P P X > X P X P X > X X P P X > X X X X X > > Where X represents NoData, and P represents a value (The letter choice is > arbitrary). The algorithm creates a vector who's border LineString goes > around the perimeter of the region of P's. > > The problem is, the algorithm creates a border with two points being the > same: > ______ > | __ | > |__| _| | > | __ | > > (apologies for the very rough ASCII art, I hope it translates). > > So because the border intersects itself, it's considered an invalid polygon. > The algorithm could possibly changed to consider the outside perimeter as > the LineRing and the space in the middle as a hole; this would require some > significant changes to an already complex algorithm, and I'm not sure it > could handle all of the edge cases. > > My question is, is there a way to solve this in JTS? To take a LineString > that is invalid for the border of the polygon, and separate it out into a > valid border and a hole, and to create a valid polygon from it, in a generic > way? > > Thanks, > Rob > > > ------------------------------------------------------------------------------ > "Accelerate Dev Cycles with Automated Cross-Browser Testing - For FREE > Instantly run your Selenium tests across 300+ browser/OS combos. Get > unparalleled scalability from the best Selenium testing platform available. > Simple to use. Nothing to install. Get started now for free." > http://p.sf.net/sfu/SauceLabs > _______________________________________________ > Jts-topo-suite-user mailing list > [email protected] > https://lists.sourceforge.net/lists/listinfo/jts-topo-suite-user > ------------------------------------------------------------------------------ "Accelerate Dev Cycles with Automated Cross-Browser Testing - For FREE Instantly run your Selenium tests across 300+ browser/OS combos. Get unparalleled scalability from the best Selenium testing platform available. Simple to use. Nothing to install. Get started now for free." http://p.sf.net/sfu/SauceLabs _______________________________________________ Jts-topo-suite-user mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/jts-topo-suite-user
