Giriş
Şu satırı dahil ederiz.
area - multi_polygon
Örnek
Şöyle yaparız.
Elimizde iki polgon olsun. İkisnin kesişimini bulup toplam alanı hesaplamak için şöyle yaparız.
Şu satırı dahil ederiz.
#include <boost/geometry/algorithms/area.hpp>
2 boyutlu noktlar için çalışır, 3 boyutlular için çalışmaz.area - multi_polygon
Örnek
Şöyle yaparız.
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;
multipolygon_type out = ...İ
std::cout << bg::area(out) << " " << bg::wkt(out) << std::endl;
ÖrnekElimizde iki polgon olsun. İkisnin kesişimini bulup toplam alanı hesaplamak için şöyle yaparız.
#include <iostream>
#include <boost/geometry.hpp>
#include <boost/geometry/io/io.hpp>
#include <boost/geometry/algorithms/area.hpp>
#include <boost/geometry/geometries/point.hpp>
#include <boost/geometry/geometries/point_xy.hpp>
#include <boost/geometry/geometries/polygon.hpp>
namespace bg = boost::geometry;
namespace bgm = bg::model;
typedef bgm::polygon<bgm::d2::point_xy<double> > polygon;
int main() {
polygon poly1, poly2;
bg::read<bg::format_wkt>(poly1, "POLYGON((...))");
bg::read<bg::format_wkt>(poly2, "POLYGON((...))");
std::cout << bg::wkt(poly1) << "\n";
std::cout << bg::wkt(poly2) << "\n";
std::deque<polygon> output;
bg::intersection(poly1, poly2, output);
double area = 0;
for (auto& p : output)
area += bg::area(p);
}
Hiç yorum yok:
Yorum Gönder