⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 geometryfactorytest.cpp

📁 在Linux下做的QuadTree的程序
💻 CPP
📖 第 1 页 / 共 3 页
字号:
		PointPtr pt = factory_.createPoint(sequence);		ensure( "createPoint() returned null pointer.", pt != 0 );		ensure( "createPoint() returned empty point.", !pt->isEmpty() );		ensure( pt->isSimple() );		ensure( pt->isValid() );		ensure( pt->getCoordinate() != 0 );		CoordinateCPtr pcoord = pt->getCoordinate();		ensure( pcoord != 0 );		ensure_equals( pcoord->x, x_ );		ensure_equals( pcoord->y, y_ );		ensure_equals( pcoord->z, z_ );		GeometryPtr geo = 0;		geo = pt->getEnvelope();		ensure( geo != 0 );		ensure( !geo->isEmpty() );		factory_.destroyGeometry(geo);		geo = pt->getCentroid();		ensure( geo != 0 );		ensure( !geo->isEmpty() );		factory_.destroyGeometry(geo);		geo = pt->getBoundary();		ensure( geo != 0 );		ensure( geo->isEmpty() );		factory_.destroyGeometry(geo);		geo = pt->convexHull();		ensure( geo != 0 );		ensure( !geo->isEmpty() );		factory_.destroyGeometry(geo);		ensure_equals( pt->getGeometryTypeId(), geos::geom::GEOS_POINT );		ensure_equals( pt->getDimension(), geos::geom::Dimension::P );		ensure_equals( pt->getBoundaryDimension(), geos::geom::Dimension::False );		ensure_equals( pt->getNumPoints(), 1u );			ensure_equals( pt->getLength(), 0.0 );		ensure_equals( pt->getArea(), 0.0 );		// FREE MEMORY		factory_.destroyGeometry(pt);	}	// Test of createLinearRing() const	template<>	template<>	void object::test<12>()	{		LinearRingPtr lr = factory_.createLinearRing();		ensure( "createLinearRing() returned null pointer.", lr != 0 );		ensure( "createLinearRing() returned non-empty point.", lr->isEmpty() );		ensure( lr->isEmpty() );		ensure( lr->isSimple() );		ensure( lr->isValid() );		ensure( lr->getCoordinate() == 0 );		// TODO - mloskot		//http://geos.refractions.net/pipermail/geos-devel/2006-March/001961.html		//ensure( lr->isClosed() );				// TODO - mloskot		//http://geos.refractions.net/pipermail/geos-devel/2006-March/001962.html		//ensure_equals( lr->getStartPoint(), lr->getEndPoint() );				ensure_equals( lr->getGeometryTypeId(), geos::geom::GEOS_LINEARRING );		ensure_equals( lr->getDimension(), geos::geom::Dimension::L );		ensure_equals( lr->getBoundaryDimension(), geos::geom::Dimension::False );		ensure_equals( lr->getNumPoints(), 0u );		ensure_equals( lr->getLength(), 0.0 );		ensure_equals( lr->getArea(), 0.0 );		// FREE MEMORY		factory_.destroyGeometry(lr);	}	// Test of createLinearRing(CoordinateSequence* newCoords) const	template<>	template<>	void object::test<13>()	{		const std::size_t size = 5;		CoordArrayPtr coords = new geos::geom::CoordinateArraySequence(size);		ensure( coords != 0 );		ensure_equals( coords->getSize(), size );		LinearRingPtr lr = factory_.createLinearRing(coords);		ensure( "createLinearRing() returned null pointer.", lr != 0 );		ensure( "createLinearRing() returned empty point.", !lr->isEmpty() );		ensure( lr->isSimple() );		ensure( lr->getCoordinate() != 0 );		// TODO - mloskot - is this correct?		//ensure( !lr->isValid() );		ensure_equals( lr->getGeometryTypeId(), geos::geom::GEOS_LINEARRING );		ensure_equals( lr->getDimension(), geos::geom::Dimension::L );		ensure_equals( lr->getBoundaryDimension(), geos::geom::Dimension::False );		ensure_equals( lr->getNumPoints(), size );		ensure_equals( lr->getLength(), 0.0 );		ensure_equals( lr->getArea(), 0.0 );		// FREE MEMORY		factory_.destroyGeometry(lr);		}	// Test of createLinearRing(const CoordinateSequence& coordinates) const	template<>	template<>	void object::test<14>()	{		const std::size_t size = 5;		geos::geom::CoordinateArraySequence coords(size);		ensure_equals( coords.getSize(), size );		LinearRingPtr lr = factory_.createLinearRing(coords);		ensure( "createLinearRing() returned empty point.", !lr->isEmpty() );		ensure_equals( lr->getNumPoints(), size );		ensure( lr->isSimple() );		ensure( lr->getCoordinate() != 0 );				ensure_equals( lr->getGeometryTypeId(), geos::geom::GEOS_LINEARRING );		ensure_equals( lr->getDimension(), geos::geom::Dimension::L );		ensure_equals( lr->getBoundaryDimension(), geos::geom::Dimension::False );		ensure_equals( lr->getNumPoints(), size );		ensure_equals( lr->getLength(), 0.0 );		ensure_equals( lr->getArea(), 0.0 );		// FREE MEMORY		factory_.destroyGeometry(lr);	}	// Test of createLineString() const	template<>	template<>	void object::test<15>()	{		LineStringPtr line = factory_.createLineString();				ensure( "createLineString() returned null pointer.", line != 0 );		ensure( "createLineString() returned non-empty point.", line->isEmpty() );		ensure( line->isSimple() );		ensure( line->isValid() );		ensure( line->getCentroid() == 0 );				// TODO - mloskot - waiting for some decision		// http://geos.refractions.net/pipermail/geos-devel/2006-March/002006.html		//ensure( line->getCoordinate() == 0 );		GeometryPtr geo = 0;		geo = line->getEnvelope();		ensure( geo != 0 );		ensure( geo->isEmpty() );		factory_.destroyGeometry(geo);		geo = line->getBoundary();		ensure( geo != 0 );		ensure( geo->isEmpty() );		factory_.destroyGeometry(geo);		geo = line->convexHull();		ensure( geo != 0 );		ensure( geo->isEmpty() );		factory_.destroyGeometry(geo);		ensure_equals( line->getGeometryTypeId(), geos::geom::GEOS_LINESTRING );		ensure_equals( line->getDimension(), geos::geom::Dimension::L );		ensure_equals( line->getBoundaryDimension(), geos::geom::Dimension::P ); // empty linestring		ensure_equals( line->getNumPoints(), 0u );		ensure_equals( line->getLength(), 0.0 );		ensure_equals( line->getArea(), 0.0 );		// FREE MEMORY		factory_.destroyGeometry(line);	}	// Test of createLineString(CoordinateSequence* coordinates) const	template<>	template<>	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);		}	// Test of createLineString(const CoordinateSequence& coordinates) const	template<>	template<>	void object::test<17>()	{		const std::size_t size = 5;		geos::geom::CoordinateArraySequence coords(size);		ensure_equals( coords.getSize(), size );		LineStringPtr line = factory_.createLineString(coords);		ensure( "createLineString() returned empty point.", !line->isEmpty() );		ensure_equals( line->getNumPoints(), size );		ensure( line->isSimple() );		ensure( line->getCoordinate() != 0 );				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);	}	// Test of createPolygon() const	template<>	template<>	void object::test<18>()	{		PolygonPtr poly = factory_.createPolygon();		ensure( "createPolygon() returned null pointer.", poly != 0 );		ensure( "createPolygon() returned non-empty point.", poly->isEmpty() );		ensure( poly->isSimple() );		ensure( poly->isValid() );		ensure( poly->getCentroid() == 0 );		// TODO - mloskot - waiting for some decision		// http://geos.refractions.net/pipermail/geos-devel/2006-March/002006.html		//ensure( poly->getCoordinate() == 0 );		GeometryPtr geo = 0;		// TODO - mloskot - waiting for resolution		// http://geos.refractions.net/pipermail/geos-devel/2006-March/002011.html		//geo = poly->getEnvelope();		//ensure( geo != 0 );		//ensure( geo->isEmpty() );		//factory_.destroyGeometry(geo);		geo = poly->getBoundary();		ensure( geo != 0 );		ensure( geo->isEmpty() );		factory_.destroyGeometry(geo);		geo = poly->convexHull();		ensure( geo != 0 );		ensure( geo->isEmpty() );		factory_.destroyGeometry(geo);		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(), 0u );		ensure_equals( poly->getLength(), 0.0 );		ensure_equals( poly->getArea(), 0.0 );		// FREE MEMORY		factory_.destroyGeometry(poly);	}	// Test of createPolygon(LinearRing* shell, std::vector<Geometry*>* holes) const	template<>	template<>	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);		}	// Test of createPolygon(const LinearRing& shell, const std::vector<Geometry*>& holes) const	template<>	template<>	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);	}	// Test of createGeometryCollection() const	template<>	template<>	void object::test<21>()	{		GeometryColPtr col = factory_.createGeometryCollection();		ensure( "createGeometryCollection() returned null pointer.", col != 0 );		ensure( col->isEmpty() );		ensure( col->isValid() );		try		{			ensure( !col->isSimple() );			fail("IllegalArgumentException expected"); 		}		catch ( geos::util::IllegalArgumentException const& e )		{			const char* msg = e.what(); // ok 			ensure( msg != 0 );		}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -