Add GEOSPointOnSurface test for case of three similar polygons
Might help to catch significant changes in algorithm calculating point on surface. Source https://trac.osgeo.org/geos/ticket/8403.7
parent
080d94701c
commit
64e823b26b
|
|
@ -188,5 +188,61 @@ namespace tut
|
|||
|
||||
}
|
||||
|
||||
// Check point on surface for three similar polygons (shapes)
|
||||
// https://trac.osgeo.org/geos/ticket/840
|
||||
template<>
|
||||
template<>
|
||||
void object::test<7>()
|
||||
{
|
||||
// Polygon A
|
||||
{
|
||||
geom1_ = GEOSGeomFromWKT("POLYGON(("
|
||||
"182111.031940953 141935.935903267,181944.315698016 141813.663222482,"
|
||||
"181993.426552077 141735.161360171,182025.215323227 141755.058841504,"
|
||||
"182042.126877935 141723.338145732,182089.035943744 141755.453352846,"
|
||||
"182096.699289843 141744.892410235,182142.107084301 141773.967727472,"
|
||||
"182140.268233846 141825.482203511,182123.233970367 141827.369156254,"
|
||||
"182111.031940953 141935.935903267))");
|
||||
ensure(0 != geom1_);
|
||||
geom2_ = GEOSPointOnSurface(geom1_);
|
||||
ensure(0 != geom2_);
|
||||
|
||||
wkt_ = GEOSWKTWriter_write(wktw_, geom2_);
|
||||
ensure_equals(std::string(wkt_), std::string("POINT (182077.08 141881.65)"));
|
||||
}
|
||||
// Polygon B
|
||||
{
|
||||
geom1_ = GEOSGeomFromWKT("POLYGON(("
|
||||
"182512.231897141 141935.935903267,182344.315698016 141813.663222482,"
|
||||
"182393.426552077 141735.161360171,182425.215323227 141755.058841504,"
|
||||
"182442.126877935 141723.338145732,182489.035943744 141755.453352846,"
|
||||
"182496.699289843 141744.892410235,182542.107084301 141773.967727472,"
|
||||
"182540.268233846 141825.482203511,182522.034014178 141825.369229273,"
|
||||
"182512.231897141 141935.935903267))");
|
||||
ensure(0 != geom1_);
|
||||
geom2_ = GEOSPointOnSurface(geom1_);
|
||||
ensure(0 != geom2_);
|
||||
|
||||
wkt_ = GEOSWKTWriter_write(wktw_, geom2_);
|
||||
ensure_equals(std::string(wkt_), std::string("POINT (182476.76 141880.71)"));
|
||||
}
|
||||
// Polygon C
|
||||
{
|
||||
geom1_ = GEOSGeomFromWKT("POLYGON(("
|
||||
"182635.760119718 141846.477712277,182826.153168283 141974.473039044,"
|
||||
"182834.952846998 141857.67730337,182862.151853936 141851.277537031,"
|
||||
"182860.551912351 141779.280165725,182824.553226698 141748.881275618,"
|
||||
"182814.953577191 141758.480925126,182766.155358861 141721.682268681,"
|
||||
"182742.156235092 141744.881421657,182692.558045971 141716.882443927,"
|
||||
"182635.760119718 141846.477712277))");
|
||||
ensure(0 != geom1_);
|
||||
geom2_ = GEOSPointOnSurface(geom1_);
|
||||
ensure(0 != geom2_);
|
||||
|
||||
wkt_ = GEOSWKTWriter_write(wktw_, geom2_);
|
||||
ensure_equals(std::string(wkt_), std::string("POINT (182755.89 141812.88)"));
|
||||
}
|
||||
}
|
||||
|
||||
} // namespace tut
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue