3 Ekim 2017 Salı

geometry dsv metodu

Giriş
wkt metodu çıktı olarak şunu verir.
POLYGON((1 3,4 5,9 0,1 3))
dsv metodu çıktı olarak şunu verir.
(((1, 3), (4, 5), (9, 0), (1, 3)))
Örnek
Elimizde bir polygon olsun
typedef boost::geometry::model::d2::point_xy<double> point;
typedef boost::geometry::model::polygon<point> polygon;

polygon poly;
Şöyle yaparız
std::cout << boost::geometry::dsv(poly) << std::endl;
Örnek
Elimizde bir polygon olsun.
namespace bg = boost::geometry;
namespace bgm = bg::model;

using point      = bgm::d2::point_xy<int>;
using polygon    = bgm::polygon<point>;
dsv metodu şöyle olsun.
void debug_print(polygon const& p) {
  std::string reason;
  bool valid = bg::is_valid(p, reason);
  std::cout << bg::dsv(p) << " - " << (!valid?"invalid ("+reason+")":"valid") << "\n";
}
Bu yapıları dolduralım ve string'e çevirelim.
point arr[] { {1,3}, {4,5}, {9, 0} };

polygon p { {std::begin(arr), std::end(arr)} };
debug_print(p);
Çıktı olarak şunu alırız.
(((1, 3), (4, 5), (9, 0))) - invalid (Geometry has too few points)
polygon'u düzeltelim ve tekrar stirng'e çevirelim.
bg::correct(p);
debug_print(p);
Çıktı olarak şunu alırız.
(((1, 3), (4, 5), (9, 0), (1, 3))) - valid


Hiç yorum yok:

Yorum Gönder