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

📄 simplegeometryprecisionreducertest.cpp

📁 在Linux下做的QuadTree的程序
💻 CPP
字号:
// $Id$// // Test Suite for geos::precision::SimpleGeometryPrecisionReducer class.// TUT#include <tut.h>// GEOS#include <geos/precision/SimpleGeometryPrecisionReducer.h>#include <geos/geom/Geometry.h>#include <geos/geom/GeometryFactory.h>#include <geos/geom/PrecisionModel.h>#include <geos/io/WKTReader.h>// STL#include <string>#include <vector>namespace tut{    //    // Test Group    //    // Common data used by tests    struct test_sgpr_data    {        typedef std::auto_ptr<geos::geom::Geometry> GeometryPtr;        geos::geom::PrecisionModel pm_float_;        geos::geom::PrecisionModel pm_fixed_;        geos::geom::GeometryFactory factory_;        geos::io::WKTReader reader_;        geos::precision::SimpleGeometryPrecisionReducer reducer_;        geos::precision::SimpleGeometryPrecisionReducer reducer2_; // keep collapse        test_sgpr_data() :            pm_float_(),            pm_fixed_(1),            factory_(&pm_float_, 0),            reader_(&factory_),            reducer_(&pm_fixed_),            reducer2_(&pm_fixed_)        {            reducer2_.setRemoveCollapsedComponents(false);        }};    typedef test_group<test_sgpr_data> group;    typedef group::object object;    group test_sgpr_group("geos::precision::SimpleGeometryPrecisionReducer");    //    // Test Cases    //    // Test square    template<>    template<>    void object::test<1>()    {        GeometryPtr g1(reader_.read("POLYGON (( 0 0, 0 1.4, 1.4 1.4, 1.4 0, 0 0 ))"));        GeometryPtr g2(reader_.read("POLYGON (( 0 0, 0 1, 1 1, 1 0, 0 0 ))"));        GeometryPtr result(reducer_.reduce(g1.get()));        ensure( result->equalsExact(g2.get()) );    }    // Test tiny square collapse    template<>    template<>    void object::test<2>()    {        GeometryPtr g1(reader_.read("POLYGON (( 0 0, 0 .4, .4 .4, .4 0, 0 0 ))"));        GeometryPtr g2(reader_.read("POLYGON EMPTY"));        GeometryPtr result(reducer_.reduce(g1.get()));        ensure( result->equalsExact(g2.get()) );    }    // Test square collapse    template<>    template<>    void object::test<3>()    {        GeometryPtr g1(reader_.read("POLYGON (( 0 0, 0 1.4, .4 .4, .4 0, 0 0 ))"));        GeometryPtr g2(reader_.read("POLYGON EMPTY"));        GeometryPtr result(reducer_.reduce(g1.get()));        ensure( result->equalsExact(g2.get()) );    }    // Test square keep collapse    template<>    template<>    void object::test<4>()    {        GeometryPtr g1(reader_.read("POLYGON (( 0 0, 0 1.4, .4 .4, .4 0, 0 0 ))"));        GeometryPtr g2(reader_.read("POLYGON (( 0 0, 0 1, 0 0, 0 0, 0 0 ))"));        GeometryPtr result(reducer2_.reduce(g1.get()));        ensure( result->equalsExact(g2.get()) );    }    // Test line    template<>    template<>    void object::test<5>()    {        GeometryPtr g1(reader_.read("LINESTRING ( 0 0, 0 1.4 )"));        GeometryPtr g2(reader_.read("LINESTRING (0 0, 0 1)"));        GeometryPtr result(reducer_.reduce(g1.get()));        ensure( result->equalsExact(g2.get()) );    }    // Test line remove collapse    template<>    template<>    void object::test<6>()    {        GeometryPtr g1(reader_.read("LINESTRING ( 0 0, 0 .4 )"));        GeometryPtr g2(reader_.read("LINESTRING EMPTY"));        GeometryPtr result(reducer_.reduce(g1.get()));        ensure( result->equalsExact(g2.get()) );    }    // Test line keep collapse    template<>    template<>    void object::test<7>()    {        GeometryPtr g1(reader_.read("LINESTRING ( 0 0, 0 .4 )"));        GeometryPtr g2(reader_.read("LINESTRING ( 0 0, 0 0 )"));        GeometryPtr result(reducer2_.reduce(g1.get()));        ensure( result->equalsExact(g2.get()) );    }} // namespace tut

⌨️ 快捷键说明

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