Giriş
Eğer geometrik şekil hatalı ise bg::correct() çağrısı ile düzeltilebilir.
is_valid metodu - polygon + string
Örnek
Elimizde bir polygon olsun
Polygon veya Multi Polygon için kullanılabilir. Şöyle yaparız.
Eğer geometrik şekil hatalı ise bg::correct() çağrısı ile düzeltilebilir.
is_valid metodu - polygon + string
Örnek
Elimizde bir polygon olsun
typedef double base_type;
typedef bgm::d2::point_xy<base_type> point_type;
typedef bgm::polygon<point_type> polygon_type;
typedef bgm::multi_polygon<polygon_type> multipolygon_type;
polygon_type in = ...;
Şöyle yaparız.std::string reason;
cout << (bg::is_valid(in, reason)?"valid ":"invalid ") << reason << endl;
Hata varsa şu çıktıyı alırız.invalid Geometry has invalid self-intersections. A self-intersection point was
found at ...
is_valid metodu - multipolygonPolygon veya Multi Polygon için kullanılabilir. Şöyle yaparız.
MultiPolygonType multipolygon = ...;
std::cout << boost::geometry::is_valid (multipolygon) << std::endl;
is_valid metodu - multipolygon + validity_failure_type
Şöyle yaparız.
Şöyle yaparız.
MultiPolygonType multipolygon;
...
boost::geometry::validity_failure_type failure_type;
if(!boost::geometry::is_valid (multipolygon, failure_type)) { ...
}
Şöyle yaparız.template <typename TPolygon>
void printValidity (const TPolygon& polygons)
{
boost::geometry::validity_failure_type failure;
bool valid = boost::geometry::is_valid(polygons, failure);
if(!valid) {
std::cout << "not valid: " << failure << std::endl;
}
else {
std::cout << "valid." << std::endl;
}
}
Hiç yorum yok:
Yorum Gönder