
int main() { typedef boost::geometry::model::d2::point_xy<double> point_type; typedef boost::geometry::model::polygon<point_type> polygon;
// Polygon { polygon my_polygon; boost::geometry::read_wkt("POLYGON ((0 0,0 5,4 5,4 4,3 3,2 4,2 1,3 2,4 1,4 0,0 0))", my_polygon); boost::geometry::model::multi_polygon<polygon> my_output; boost::geometry::buffer_inserter<polygon> ( my_polygon, std::back_inserter(my_output), boost::geometry::strategy::buffer::distance_assymetric<double>(0.4, 0.4), boost::geometry::strategy::buffer::join_round<point_type, point_type>() );
std::cout << "Input polygon, area: " << boost::geometry::area(my_polygon) << std::endl; std::cout << "Output, area: " << boost::geometry::area(my_output) << std::endl;
}
return 0; }
Barend, When I compile your example, I get errors from MSVC++ 2010. I have the latest extensions, but I am using them with the 1.52 release; will that cause problems? John 1>------ Build started: Project: etl6_EngCore, Configuration: Debug x64 ------ 1> DL_GeometryBasics.cpp 1>F:\DataManagement\RPDM\Server\libraries\boost\boost/geometry/extensions/algorithms/buffer/buffered_piece_collection.hpp(1112): warning C4267: 'initializing' : conversion from 'size_t' to 'const int', possible loss of data 1> F:\DataManagement\RPDM\Server\libraries\boost\boost/geometry/extensions/algorithms/buffer/buffered_piece_collection.hpp(1111) : while compiling class template member function 'void boost::geometry::detail::buffer::buffered_piece_collection<Ring>::start_new_ring(void)' 1> with 1> [ 1> Ring=boost::geometry::model::ring<point_type,true,true,std::vector,std::allocator> 1> ] 1> F:\DataManagement\RPDM\Server\libraries\boost\boost/geometry/extensions/algorithms/buffer/buffer_inserter.hpp(357) : see reference to class template instantiation 'boost::geometry::detail::buffer::buffered_piece_collection<Ring>' being compiled 1> with 1> [ 1> Ring=boost::geometry::model::ring<point_type,true,true,std::vector,std::allocator> 1> ] 1> DL_GeometryBasics.cpp(34) : see reference to function template instantiation 'void boost::geometry::buffer_inserter<polygon,polygon,std::back_insert_iterator<_Container>,boost::geometry::strategy::buffer::distance_assymetric<CoordinateType>,boost::geometry::strategy::buffer::join_round<PointIn,PointOut>>(const GeometryInput &,OutputIterator,const DistanceStrategy &,const JoinStrategy &)' being compiled 1> with 1> [ 1> _Container=boost::geometry::model::multi_polygon<polygon>, 1> CoordinateType=double, 1> PointIn=point_type, 1> PointOut=point_type, 1> GeometryInput=polygon, 1> OutputIterator=std::back_insert_iterator<boost::geometry::model::multi_polygon<polygon>>, 1> DistanceStrategy=boost::geometry::strategy::buffer::distance_assymetric<double>, 1> JoinStrategy=boost::geometry::strategy::buffer::join_round<point_type,point_type> 1> ] 1>F:\DataManagement\RPDM\Server\libraries\boost\boost/geometry/extensions/algorithms/buffer/buffered_piece_collection.hpp(577): warning C4267: 'return' : conversion from 'size_t' to 'int', possible loss of data 1> F:\DataManagement\RPDM\Server\libraries\boost\boost/geometry/extensions/algorithms/buffer/buffered_piece_collection.hpp(567) : while compiling class template member function 'int boost::geometry::detail::buffer::buffered_piece_collection<Ring>::piece_count(const boost::geometry::detail::buffer::buffered_piece_collection<Ring>::buffer_occupation_info &)' 1> with 1> [ 1> Ring=boost::geometry::model::ring<point_type,true,true,std::vector,std::allocator> 1> ] 1>F:\DataManagement\RPDM\Server\libraries\boost\boost/geometry/extensions/algorithms/buffer/buffered_piece_collection.hpp(1130): warning C4267: 'return' : conversion from 'size_t' to 'int', possible loss of data 1> F:\DataManagement\RPDM\Server\libraries\boost\boost/geometry/extensions/algorithms/buffer/buffered_piece_collection.hpp(1122) : while compiling class template member function 'int boost::geometry::detail::buffer::buffered_piece_collection<Ring>::add_point(const boost::geometry::model::d2::point_xy<CoordinateType> &)' 1> with 1> [ 1> Ring=boost::geometry::model::ring<point_type,true,true,std::vector,std::allocator>, 1> CoordinateType=double 1> ] 1>F:\DataManagement\RPDM\Server\libraries\boost\boost/geometry/extensions/algorithms/buffer/buffered_piece_collection.hpp(1141): warning C4267: '=' : conversion from 'size_t' to 'int', possible loss of data 1> F:\DataManagement\RPDM\Server\libraries\boost\boost/geometry/extensions/algorithms/buffer/buffered_piece_collection.hpp(1134) : while compiling class template member function 'boost::geometry::detail::buffer::buffered_piece_collection<Ring>::piece &boost::geometry::detail::buffer::buffered_piece_collection<Ring>::add_piece(boost::geometry::detail::buffer::piece_type,bool)' 1> with 1> [ 1> Ring=boost::geometry::model::ring<point_type,true,true,std::vector,std::allocator> 1> ] 1>F:\DataManagement\RPDM\Server\libraries\boost\boost/geometry/extensions/algorithms/buffer/buffered_piece_collection.hpp(1177): warning C4267: 'initializing' : conversion from 'size_t' to 'int', possible loss of data 1> F:\DataManagement\RPDM\Server\libraries\boost\boost/geometry/extensions/algorithms/buffer/buffer_inserter.hpp(192) : see reference to function template instantiation 'boost::geometry::detail::buffer::buffered_piece_collection<Ring>::piece &boost::geometry::detail::buffer::buffered_piece_collection<Ring>::add_piece<std::vector<_Ty,_Ax>>(boost::geometry::detail::buffer::piece_type,const Range &)' being compiled 1> with 1> [ 1> Ring=boost::geometry::model::ring<point_type,true,true,std::vector,std::allocator>, 1> _Ty=point_type, 1> _Ax=std::allocator<point_type>, 1> Range=std::vector<point_type,std::allocator<point_type>> 1> ] 1> F:\DataManagement\RPDM\Server\libraries\boost\boost/geometry/extensions/algorithms/buffer/buffer_inserter.hpp(246) : see reference to function template instantiation 'void boost::geometry::detail::buffer::buffer_range<RingOutput,Tag>::iterate<Collection,std::_Vector_const_iterator<_Myvec>,DistanceStrategy,JoinStrategy>(Collection &,Iterator,Iterator,boost::geometry::buffer_side_selector,const DistanceStrategy &,const JoinStrategy &,bool)' being compiled 1> with 1> [ 1> RingOutput=output_ring_type, 1> Tag=boost::geometry::ring_tag, 1> Collection=boost::geometry::detail::buffer::buffered_piece_collection<boost::geometry::model::ring<point_type,true,true,std::vector,std::allocator>>, 1> _Myvec=std::_Vector_val<point_type,std::allocator<point_type>>, 1> DistanceStrategy=boost::geometry::strategy::buffer::distance_assymetric<double>, 1> JoinStrategy=boost::geometry::strategy::buffer::join_round<point_type,point_type>, 1> Iterator=std::_Vector_const_iterator<std::_Vector_val<point_type,std::allocator<point_type>>> 1> ] 1> F:\DataManagement\RPDM\Server\libraries\boost\boost/geometry/extensions/algorithms/buffer/buffer_inserter.hpp(313) : see reference to function template instantiation 'void boost::geometry::dispatch::buffer_inserter<Tag,RingInput,RingOutput>::apply<Collection,DistanceStrategy,JoinStrategy>(const RingInput &,Collection &,const DistanceStrategy &,const JoinStrategy &)' being compiled 1> with 1> [ 1> Tag=boost::geometry::ring_tag, 1> RingInput=input_ring_type, 1> RingOutput=output_ring_type, 1> Collection=boost::geometry::detail::buffer::buffered_piece_collection<boost::geometry::model::ring<point_type,true,true,std::vector,std::allocator>>, 1> DistanceStrategy=boost::geometry::strategy::buffer::distance_assymetric<double>, 1> JoinStrategy=boost::geometry::strategy::buffer::join_round<point_type,point_type> 1> ] 1> F:\DataManagement\RPDM\Server\libraries\boost\boost/geometry/extensions/algorithms/buffer/buffer_inserter.hpp(364) : see reference to function template instantiation 'void boost::geometry::dispatch::buffer_inserter<Tag,RingInput,RingOutput>::apply<boost::geometry::detail::buffer::buffered_piece_collection<Ring>,DistanceStrategy,JoinStrategy>(const PolygonInput &,Collection &,const DistanceStrategy &,const JoinStrategy &)' being compiled 1> with 1> [ 1> Tag=boost::geometry::polygon_tag, 1> RingInput=polygon, 1> RingOutput=polygon, 1> Ring=boost::geometry::model::ring<point_type,true,true,std::vector,std::allocator>, 1> DistanceStrategy=boost::geometry::strategy::buffer::distance_assymetric<double>, 1> JoinStrategy=boost::geometry::strategy::buffer::join_round<point_type,point_type>, 1> PolygonInput=polygon, 1> Collection=boost::geometry::detail::buffer::buffered_piece_collection<boost::geometry::model::ring<point_type,true,true,std::vector,std::allocator>> 1> ] ========== Build: 1 succeeded, 0 failed, 0 up-to-date, 0 skipped ==========