예제 #1
0
/*public*/
std::auto_ptr<Coordinate::Vect>
LineStringSnapper::snapTo(const geom::Coordinate::ConstVect& snapPts)
{
	geom::CoordinateList coordList(srcPts);

	snapVertices(coordList, snapPts);
	snapSegments(coordList, snapPts);

	return coordList.toCoordinateArray();
}
예제 #2
0
/* private */
std::auto_ptr<geom::CoordinateSequence> 
BufferInputLineSimplifier::collapseLine() const
{
	std::auto_ptr<geom::CoordinateSequence> coordList(
		new CoordinateArraySequence());
	
	for (size_t i=0, n=inputLine.size(); i<n; ++i)
	{
		if (isDeleted[i] != DELETE)
			coordList->add(inputLine[i]);
	}

	return coordList;
}
/*public*/
DouglasPeuckerLineSimplifier::CoordsVectAutoPtr
DouglasPeuckerLineSimplifier::simplify()
{
    CoordsVectAutoPtr coordList(new CoordsVect());

    // empty coordlist is the simplest, won't simplify further
    if(! pts.size()) {
        return coordList;
    }

    usePt = BoolVectAutoPtr(new BoolVect(pts.size(), true));
    simplifySection(0, pts.size() - 1);

    for(std::size_t i = 0, n = pts.size(); i < n; ++i) {
        if(usePt->operator[](i)) {
            coordList->push_back(pts[i]);
        }
    }

    // unique_ptr transfer ownership to its
    // returned copy
    return coordList;
}