void object::test<22>() { using geos::geom::Coordinate; // Buffer for geometries std::vector<GeometryPtr>* vec = new std::vector<GeometryPtr>(); // Add single point Coordinate coord(x_, y_, z_); GeometryPtr point = factory_.createPoint(coord); ensure( point != 0 ); vec->push_back(point); // Add single LineString CoordArrayPtr coords = new geos::geom::CoordinateArraySequence(3); ensure( coords != 0 ); coords->setAt(Coordinate(0, 0), 0); coords->setAt(Coordinate(5, 5), 1); coords->setAt(Coordinate(10, 5), 2); ensure_equals( coords->getSize(), 3u ); GeometryPtr line = factory_.createLineString(coords); vec->push_back(line); // Create geometry collection GeometryColPtr col = factory_.createGeometryCollection(vec); ensure( coords != 0 ); ensure_equals( col->getGeometryTypeId(), geos::geom::GEOS_GEOMETRYCOLLECTION ); ensure_equals( col->getNumGeometries(), 2u ); // FREE MEMORY factory_.destroyGeometry(col); }
void object::test<16>() { const std::size_t size = 5; CoordArrayPtr coords = new geos::geom::CoordinateArraySequence(size); ensure( coords != 0 ); ensure_equals( coords->getSize(), size ); LineStringPtr line = factory_.createLineString(coords); ensure( "createLineString() returned null pointer.", line != 0 ); ensure( "createLineString() returned empty point.", !line->isEmpty() ); ensure( line->isSimple() ); ensure( line->getCoordinate() != 0 ); // TODO - mloskot - is this correct? //ensure( line->isValid() ); ensure_equals( line->getGeometryTypeId(), geos::geom::GEOS_LINESTRING ); ensure_equals( line->getDimension(), geos::geom::Dimension::L ); ensure_equals( line->getBoundaryDimension(), geos::geom::Dimension::False ); ensure_equals( line->getNumPoints(), size ); ensure_equals( line->getLength(), 0.0 ); ensure_equals( line->getArea(), 0.0 ); // FREE MEMORY factory_.destroyGeometry(line); }
void object::test<19>() { using geos::geom::Coordinate; const std::size_t size = 7; // Create sequence of coordiantes CoordArrayPtr coords = new geos::geom::CoordinateArraySequence(size); ensure( coords != 0 ); coords->setAt(Coordinate(0, 10), 0); coords->setAt(Coordinate(5, 5), 1); coords->setAt(Coordinate(10, 5), 2); coords->setAt(Coordinate(15, 10), 3); coords->setAt(Coordinate(10, 15), 4); coords->setAt(Coordinate(5, 15), 5); coords->setAt(Coordinate(0, 10), 6); ensure_equals( coords->getSize(), size ); // Create exterior ring LinearRingPtr exterior = factory_.createLinearRing(coords); ensure( "createLinearRing returned null pointer.", exterior != 0 ); ensure( "createLinearRing() returned empty point.", !exterior->isEmpty() ); ensure( exterior->isSimple() ); ensure_equals( exterior->getGeometryTypeId(), geos::geom::GEOS_LINEARRING ); ensure_equals( exterior->getDimension(), geos::geom::Dimension::L ); ensure_equals( exterior->getBoundaryDimension(), geos::geom::Dimension::False ); ensure_equals( exterior->getNumPoints(), size ); ensure_equals( exterior->getArea(), 0.0 ); ensure_not_equals( exterior->getLength(), 0.0 ); // Create polygon PolygonPtr poly = factory_.createPolygon(exterior, 0); ensure( "createPolygon returned null pointer.", poly != 0 ); ensure( "createPolygon() returned empty point.", !poly->isEmpty() ); ensure( poly->isSimple() ); ensure_equals( poly->getGeometryTypeId(), geos::geom::GEOS_POLYGON ); ensure_equals( poly->getDimension(), geos::geom::Dimension::A ); ensure_equals( poly->getBoundaryDimension(), geos::geom::Dimension::L ); ensure_equals( poly->getNumPoints(), size ); ensure_not_equals( poly->getArea(), 0.0 ); ensure_not_equals( poly->getLength(), 0.0 ); // FREE MEMORY factory_.destroyGeometry(poly); }
void object::test<30>() { using geos::geom::Coordinate; const std::size_t size = 5; const std::size_t lineSize = 2; std::vector<GeometryPtr> lines; for (std::size_t i = 0; i < size; ++i) { const std::size_t factor = i * i; CoordArrayPtr coords = new geos::geom::CoordinateArraySequence(lineSize); ensure( coords != 0 ); coords->setAt(Coordinate(0 + factor, 0 + factor), 0); coords->setAt(Coordinate(5 + factor, 5 + factor), 1); ensure_equals( coords->getSize(), lineSize ); LineStringPtr line = factory_.createLineString(coords); ensure( "createLineString() returned empty point.", !line->isEmpty() ); ensure_equals( line->getNumPoints(), lineSize ); ensure( line->isSimple() ); ensure( line->getCoordinate() != 0 ); ensure_equals( line->getGeometryTypeId(), geos::geom::GEOS_LINESTRING ); lines.push_back(line); } MultiLineStringPtr mls = factory_.createMultiLineString(lines); ensure( mls != 0 ); // TODO - mloskot - why isValid() returns false? //ensure( mls->isValid() ); ensure_equals( mls->getNumGeometries(), size ); ensure_equals( mls->getGeometryTypeId(), geos::geom::GEOS_MULTILINESTRING ); // FREE MEMORY factory_.destroyGeometry(mls); std::vector<GeometryPtr>::const_iterator it; for (it = lines.begin(); it != lines.end(); ++it) { delete (*it); } }
void object::test<20>() { using geos::geom::Coordinate; const std::size_t exteriorSize = 7; const std::size_t interiorSize = 5; // Create sequence of coordiantes CoordArrayPtr coords = new geos::geom::CoordinateArraySequence(exteriorSize); ensure( coords != 0 ); coords->setAt(Coordinate(0, 10), 0); coords->setAt(Coordinate(5, 5), 1); coords->setAt(Coordinate(10, 5), 2); coords->setAt(Coordinate(15, 10), 3); coords->setAt(Coordinate(10, 15), 4); coords->setAt(Coordinate(5, 15), 5); coords->setAt(Coordinate(0, 10), 6); ensure_equals( coords->getSize(), exteriorSize ); // Create exterior ring LinearRingPtr exterior = factory_.createLinearRing(coords); ensure( "createLinearRing returned null pointer.", exterior != 0 ); ensure( "createLinearRing() returned empty point.", !exterior->isEmpty() ); ensure( exterior->isSimple() ); ensure_equals( exterior->getGeometryTypeId(), geos::geom::GEOS_LINEARRING ); ensure_equals( exterior->getDimension(), geos::geom::Dimension::L ); ensure_equals( exterior->getBoundaryDimension(), geos::geom::Dimension::False ); ensure_equals( exterior->getNumPoints(), exteriorSize ); ensure_equals( exterior->getArea(), 0.0 ); ensure_not_equals( exterior->getLength(), 0.0 ); // Create collection of holes GeometryPtr geo = reader_.read(("LINEARRING(7 7, 12 7, 12 12, 7 12, 7 7)")); ensure( geo != 0 ); LinearRingPtr hole = static_cast<LinearRingPtr>(geo); ensure( hole->isRing() ); ensure_equals( hole->getNumPoints(), interiorSize ); // REMEMBER TO DEALLOCATE THIS COLLECTION std::vector<GeometryPtr> holes; holes.push_back(hole); // Create polygon using copy ctor PolygonPtr poly = factory_.createPolygon((*exterior), holes); ensure( "createPolygon returned null pointer.", poly != 0 ); ensure( "createPolygon() returned empty point.", !poly->isEmpty() ); ensure( poly->isSimple() ); ensure_equals( poly->getGeometryTypeId(), geos::geom::GEOS_POLYGON ); ensure_equals( poly->getDimension(), geos::geom::Dimension::A ); ensure_equals( poly->getBoundaryDimension(), geos::geom::Dimension::L ); ensure_equals( poly->getNumPoints(), exteriorSize + interiorSize ); ensure_not_equals( poly->getArea(), 0.0 ); ensure_not_equals( poly->getLength(), 0.0 ); ensure_equals( poly->getNumGeometries(), 1u ); ensure_equals( poly->getNumInteriorRing(), 1u ); // FREE MEMORY std::vector<GeometryPtr>::const_iterator it; for (it = holes.begin(); it != holes.end(); ++it) { delete (*it); } holes.clear(); factory_.destroyGeometry(exterior); factory_.destroyGeometry(poly); }