Added by jgarnett, last edited by jgarnett on Jan 11, 2008

Labels

 
(None)

There are several occasions where you will need to take a LineString and close it (so the start and end points are exactly the same. This step is needed to create a LinearRing used as the outer boundary of a user supplied Polygon.

CoordinateList list = new CoordinateList( lineString.getCoordinates() );
list.closeRing();
LinearRing ring = factory.createLinearRing( list.toCoordinateArray() );

Alternative - Copy Coordinates

You will see a lot of code that ops to just copy coordinate sequence and duplicate the initial point.

LinearRing ring = null;
if( lineString.isClosed() )
    ring = factory.createLinearRing( splitter.getCoordinateSequence() );
else {
    CoordinateSequence sequence = lineString.getCoordinateSequence();
    Coordinate array[] = new Coordinate[ sequence.size() + 1 ];
    for( int i=0; i<sequence.size();i++){
    array[i] = sequence.getCoordinate(i);
    array[array.length-1] = sequence.getCoordinate(0);                        
    ring = factory.createLinearRing( array );
}
Polygon polygon = factory.createPolygon( ring, null );