11 Eylül 2017 Pazartesi

geometry wkt metodları

Giriş
Şu satırı dahil ederiz.
#include <boost/geometry.hpp>
Şu satırı dahil ederiz.
#include <boost/geometry/io/io.hpp>
read metodu
Şöyle yaparız read_wkt() metodu yerine kullanılabilir.
namespace bg = boost::geometry;
namespace bgm = bg::model;
typedef bgm::polygon<bgm::d2::point_xy<double> > polygon;

polygon poly1, poly2;
bg::read<bg::format_wkt>(poly1, "POLYGON((0 0,0 1,1 1,1 0,0.05 0,0 0))");
bg::read<bg::format_wkt>(poly2, "POLYGON((0.5 -0.5,0.5 0.5,1.5 0.5,1.5 -0.5,0.5 -0.5))");
read_wkt metodu
Şunları okuyabilir.
"POINT(1 2)";
"LINESTRING(0 0,2 2,3 1)";
"POLYGON((0 0,0 7,4 2,2 0,0 0))";
"BOX(0 0,3 3)";
"SEGMENT(1 0,3 4)";
Şunu okuyabilir.
"MULTIPOLYGON(((...,... ...,... ...,... ...,... ...,... ...,... )))";
Point
Şöyle yaparız.
PointType point;boost::geometry::read_wkt("POINT(1 2)", point);
LineString
Şöyle yaparız.
LineStringType lineString;
boost::geometry::read_wkt("LINESTRING(0 0,2 2,3 1)", lineString);
Polygon
Şöyle yaparız.
PolygonType polygon;
boost::geometry::read_wkt("POLYGON((0 0,0 7,4 2,2 0,0 0))", polygon);
Okuma işleminden sonra correct () metodu ile polygon'u düzeltmek gerekebilir.

Box
Şöyle yaparız.
BoxType box;
boost::geometry::read_wkt("BOX(0 0,3 3)", box);
Segment
Şöyle yaparız.
SegmentType segment;
boost::geometry::read_wkt("SEGMENT(1 0,3 4)", e);
Multipolygon
Şöyle yaparız.
MultiPolygonType polygon;
boost::geometry::read_wkt("MULTIPOLYGON(((...)))", polygon);
wkt metodu
Bir stream'e yazdırmak için kullanılır.

Ö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.
bg::correct(in);
std::cout << std::fixed << std::setprecision(3) << bg::wkt(in) << "\n";
Çıktı olarak şunu alırız.
POLYGON((... ...,... ...,... ...,... ...,... ...))
Örnek
Elimizde bir multipolygon olsun. Şöyle yaparız.
MultiPolygonType polygon = ...;
std::cout << boost::geometry::wkt (polygon) << std::endl;
Çıktı olarak şunu alırız.
MULTIPOLYGON(((... ...,... ...,... ...,... ...,... ...,... ...,... ...)))

Hiç yorum yok:

Yorum Gönder