多边形联合使用boost [英] polygons union using boost

查看:427
本文介绍了多边形联合使用boost的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我使用boost :: geometry :: union_来合并随机多边形的向量,这里是我写的:

  #include< iostream> 
#include< vector>
#include< fstream>
#include< boost / geometry.hpp>
#include< boost / geometry / geometries / point_xy.hpp>
#include< boost / geometry / geometries / polygon.hpp>
#include< boost / geometry / io / wkt / wkt.hpp>

#include< boost / foreach.hpp>
typedef boost :: geometry :: model :: polygon< boost :: geometry :: model :: d2 :: point_xy< double> >多边形


void union_polys(std :: vector< polygon> In_polys,std :: vector< polygon>& Out_polys)
{
std :: vector< polygon> ; temp_polys;
bool * considered = new bool [In_polys.size()];
for(unsigned i = 0; i for(unsigned i = 0; i< In_polys.size()/ 2; i ++)
{
if(!consider [i])
{
polygon inetr = In_polys.at(i);
for(unsigned j = i + 1; j< In_polys.size(); j ++)
{

if
temp_polys.clear();
boost :: geometry :: union_(inetr,In_polys.at(j),temp_polys);
if(temp_polys.size()== 1)
{
inetr = temp_polys.at(0);
considered [j] = true;
j = i;
}
}
}
Out_polys.push_back(inetr);
}
}
}

int main()
{
std :: ifstream file(test01.txt);

polygon * poly;
std :: vector< polygon>输入;


while(!file.eof())
{
poly = new polygon;
std :: string poly_str;

std :: getline(file,poly_str);

boost :: geometry :: read_wkt(poly_str,* poly);
boost :: geometry :: correct(* poly);

input.push_back(* poly);
}
std :: cout<< input size is:<< input.size()<< std :: endl;

std :: vector< polygon>输出;
union_polys(input,output);

std :: cout<< output size is:<< output.size()<< std :: endl;

int i = 0;
std :: cout<< green || blue:<< std :: endl;

BOOST_FOREACH(polygon const& p,output)
{
std :: cout< i ++<< :<< boost :: geometry :: area(p)<< std :: endl;
}

系统(pause);
return 0;
}

我用两个不同的多边形集合测试了这个函数union_polys:



测试01
test 02



它适用于第一个测试,但它失败

解决方案

问题是你的第二个问题是什么?文件包含自相交多边形。这是不允许的。



您可以通过定义

启用调试功能。

  #define BOOST_GEOMETRY_DEBUG_HAS_SELF_INTERSECTIONS 





文档说: http://www.boost.org/doc/libs/1_55_0/libs/geometry/doc/html/geometry/reference/concepts/concept_polygon.html#geometry.reference.concepts.concept_polygon .rules


规则



在编译时检查,还有一些有效多边形必须满足的其他规则。这遵循opengeospatial规则(见上面的链接)。




  • 多边形是简单的几何对象(另请参阅wiki,但Boost.Geometry多边形中允许有孔)。

  • 如果底层ring_type的多边形定义为顺时针,外部环必须具有顺时针方向,任何内部环必须颠倒。定义的方向(因此:逆时针方向为顺时针外环)。如果ring_type是逆时针定义的,反之亦然。

  • 如果底层ring_type的多边形定义为关闭,所有环必须关闭:第一个点必须在空间上等于最后一个点。

  • 内部是连接点集。

  • 应该没有自相交,但允许自相切(在外部/内部环之间)(只要内部是连接点集。 / li>
  • 不应有切割线,尖刺或穿孔。

  • 内环应位于外环内。内环可能不在彼此。



交集,面积,质心,联合等算法不会检查有效性。是一个算法 is_valid ,用于在运行时检查这些规则的有效性,并且之前可以调用(由库用户调用)。


所以目前只能在库的实现细节中使用自相交。



如果你不介意使用这些,你可以使用下面的例子来清除有问题的多边形:

  std :: string poly_str ; 
while(std :: getline(file,poly_str))
{
polygon poly;

boost :: geometry :: read_wkt(poly_str,poly);
boost :: geometry :: correct(poly);

try
{
bool ignored = boost :: geometry :: detail :: overlay :: has_self_intersections(poly);

// redundant:
if(ignored)
throw boost :: geometry :: overlay_invalid_input_exception();

input.push_back(std :: move(poly));
} catch(boost :: geometry :: overlay_invalid_input_exception const& e)
{
std :: cerr< 自我交错多边形被忽略:< boost :: geometry :: dsv(poly) \\\
;
}
}

您的代码和固定循环条件)

 自交错多边形已忽略:((449719,4.04975e + 06 ),(449720,4.04976e + 06),(449721,4.04976e + 06),(449727,4.04976e + 06),(449734,4.04976e + 06),(449736,4.04976e + 4.04975e + 06),(449742,4.04975e + 06),(449744,4.04975e + 06),(449745,4.04974e + 06),(449744,4.04973e + ,(449737,4.04973e + 06),(449734,4.04973e + 06),(449728,4.04972e + 06),(449725,4.04972e + 06),(449721,4.04973e + 06),(449716,4.04973 e + 06),(449712,4.04973e + 06),(449711,4.04974e + 06),(449710,4.04974e + 06),(449711,4.04975e + 06),(449714,4.04975e + (449718,4.04976e + 06),(449721,4.04975e + 06),(449721,4.04975e + 06),(449719,4.04975e + 06),(449718,4.04974e + 06),(449719,4.04974e +06),(449719,4.04974e + 06),(449721,4.04974e + 06),(449724,4.04973e + 06),(449726,4.04973e + 06),(449728,4.04973e + 449736,4.04974e + 06),(449733,4.04973e + 06),(449734,4.04974e + 06),(449736,4.04974e + 06),(449737,4.04974e + 06),(449735,4.04975e + 06),(449734,4.04975e + 06),(449732,4.04975e + 06),(449731,4.04975e + 06),(449727,4.04975e + ,4.04975e + 06),(449719,4.04975e + 06)))
忽略自我交错多边形:(((451355,4.04939e + 06),(451363,4.0494e + 06),(451365,4.0494 e + 06),(451368,4.0494e + 06),(451369,4.04939e + 06),(451370,4.04939e + 06),(451368,4.04938e + 06),(451366,4.04938e + (451362,4.04938e + 06),(451359,4.04938e + 06),(451355,4.04938e + 06),(451351,4.04938e + 06),(451347,4.04938e + 06),(451345,4.04939e +06),(451345,4.04939e + 06),(451346,4.04939e + 06),(451348,4.0494e + 06),(451351,4.0494e + 06),(451355,4.0494e + 451362,4.04939e + 06),(451356,4.04939e + 06),(451357,4.04939e + 06),(451355,4.04939e + 06),(451354,4.04939e + 06),(451354,4.04939e + 06),(451353,4.04939e + 06),(451353,4.04939e + 06),(451354,4.04939e + 06),(451355,4.04939e + 06),(451356,4.04938e + ,4.04938e + 06),(451359,4.04938e + 06),(451360,4.04939e + 06),(451361,4.04939e + 06),(451361,4.04939e + ),(451361,4.04939e + 06),(451360,4.04939e + 06),(451355,4.04939e + 06)))
自我交错多边形被忽略:(((451353,4.04937e + 06) (451361,4.04938e + 06),(451360,4.04938e + 06),(451380,4.04937e + 06),(451403,4.04936e + 06),(451427,4.04936e + 06),(451442,4.04935e +06),(451466,4.04934e + 06),(451489,4.04933e + 06),(451508,4.04932e + 06),(451517,4.04933e + 06),(451518,4.04933e + 451524,4.04936e + 06),(451526,4.04937e + 06),(451534,4.04939e + 06),(451541,4.04942e + 06),(451542,4.04942e + 06),(451557,4.04944e + 06),(451558,4.04944e + 06),(451577,4.04946e + 06),(451579,4.04946e + 06),(451601,4.04947e + 06),(451620,4.04948e + ,4.04949e + 06),(451635,4.0955e + 06),(451640,4.09495e + 06),(451645,4.09595e + 06),(451646,4.04955e + ),(451654,4.04965e + 06),(451655,4.04965e + 06),(451660,4.04962e + 06),(451664,4.04964e + 06),(451669,4.04966e + 4.04969e + 06),(451675,4.04969e + 06),(451680,4.04972e + 06),(451686,4.04974e + 06),(451688,4.04975e + ,(451701,4.04976e + 06),(451696,4.04975e + 06),(451694,4.04974e + 06),(451689,4.04972e + 06),(451683,4.04969e + 06),(451682,4.04969 e + 06),(451677,4.04966e + 06),(451673,4.04964e + 06),(451668,4.04961e + 06),(451663,4.09495e + 06),(451661,4.04958e + 06) (451655,4.04995e + 06),(451653,4.04954e + 06),(451653,4.04954e + 06),(451648,4.09495e + 06),(451642,4.04949e + 06),(451636,4.04948e +06),(451624,4.04947e + 06),(451606,4.04946e + 06),(451584,4.04945e + 06),(451583,4.04945e + 06),(451564,4.04944e + 451550,4.04942e + 06),(451549,4.04941e + 06),(451542,4.04939e + 06),(451535,4.04937e + 06),(451531,4.04935e + 06),(451526,4.04933e + 06),(451521,4.04932e + 06),(451509,4.04931e + 06),(451486,4.04932e + 06),(451463,4.04933e + 06),(451440,4.04934e + ,4.04935e + 06),(451400,4.04936e + 06),(451377,4.04936e + 06),(451357,4.04937e + 06),(451353,4.04937e + 06))
自交多边形忽略:((451703,4.04978e + 06),(451693,4.04978e + 06),(451693,4.04978e + 06),(451691,4.04978e + 06),(451688,4.04978e + 06) (451686,4.04978e + 06),(451683,4.04978e + 06),(451681,4.04978e + 06),(451679,4.04977e + 06),(451678,4.04977e + 06),(451679,4.04977e +06),(451680,4.04977e + 06),(451682,4.04976e + 06),(451685,4.04976e + 06),(451688,4.04976e + 06),(451691,4.04976e + 451693,4.04976e + 06),(451694,4.04977e + 06),(451695,4.04977e + 06),(451693,4.04978e + 06),(451703,4.04977e + 06),(451704,4.04977e + 06),(451702,4.04976e + 06),(451699,4.04976e + 06),(451695,4.04976e + 06),(451689,4.04975e + 06),(451683,4.04975e + ,4.04976e + 06),(451673,4.04976e + 06),(451670,4.04977e + 06),(451670,4.04977e + 06),(451672,4.04978e + ),(451679,4.04979e + 06),(451685,4.04979e + 06),(451690,4.04979e + 06),(451696,4.04978e + 06),(451700,4.04978e + 06),(451703, ((452873,4.05001e + 06),(452866,4.05e + 06),(452863,4.05e + 06),(452854,4.04999e) +26),(452841,4.04999e + 06),(452818,4.04999e + 06),(452817,4.04999e + 06),(452793,4.09499e + 06),(452783,4.04999e + 452773,4.04997e + 06),(452750,4.04999e + 06),(452741,4.049999e + 06),(452737,4.049999e + 06),(452731,4.0999e + 06),(452719,4.04998e + 06),(452699,4.04999e + 06),(452685,4.04999e + 06),(452680,4.04999e + 06),(452680,4.09499e + 06),(452679,4.04999e + ,4.04996e + 06),(452677,4.04999e + 06),(452678,4.04999e + 06),(452687,4.09499e + 06),(452697,4.04999e + 06),(452705,4.04999e + ),(452713,4.04999e + 06),(452729,4.04999e + 06),(452747,4.09499e + 06),(452762,4.09499e + 06),(452772,4.09499e + 06),(452779, 4.04991e + 06),(452770,4.04999e + 06),(452768,4.04999e + 06),(452759,4.04999e + 06),(452746,4.09499e + ,(452708,4.04999e + 06),(452699,4.09499e + 06),(452692,4.09499e + 06),(452683,4.09499e + 06),(452674,4.09499e + 06),(452668,4.094994 e + 06),(452671,4.04999e + 06),(452670,4.04999e + 06),(452672,4.09499e + 06),(452674,4.09499e + 06),(452684,4.04999e + (452698,4.04999e + 06),(452716,4.04999e + 06),(452729,4.0999e + 06),(452737,4.05e + 06),(452745,4.04999e + 06),(452753,4.04999e +26),(452753,4.04999e + 06),(452776,4.04999e + 06),(452786,4.04999e + 06),(452793,4.04999e + 06),(452815,4.09499e + 452837,4.0999e + 06),(452848,4.05e + 06),(452861,4.05001e + 06),(452873,4.05001e + 06)))
自我交错多边形被忽略:(((452726, 4.04985e + 06),(452722,4.04985e + 06),(452733,4.04985e + 06),(452731,4.04985e + 06),(452730,4.04985e + ,(452726,4.04987e + 06)))
忽略自我交错多边形:(((440107,4.04713e + 06),(440102,4.04714e + 06),(440112,4.04717e + 06) 440122,4.04719e + 06),(440132,4.04721e + 06),(440134,4.04722e + 06),(440143,4.04724e + 06),(440153,4.04726e + 06),(440163,4.04728e + 06),(440173,4.04731e + 06),(440186,4.04733e + 06),(440186,4.04734e + 06),(440196,4.04736e + 06),(440206,4.04738e + ,(440225,4.04743e + 06),(440227,4.04744e + 06),(440238,4.04746e + 06),(440247,4.04748e + 06),(440255,4.0475e + 06) ),(440259,4.04756e + 06),(440262,4.04753e + 06),(440267,4.04754e + 06),(440273,4.04755e + 06),(440289,4.04756e + 4.04756e + 06),(440325,4.04758e + 06),(440342,4.04758e + 06),(440346,4.04759e + 06),(440362,4.0476e + ,(440374,4.04765e + 06),(440388,4.04763e + 06),(440391,4.04764e + 06),(440392,4.04765e + 06),(440390,4.04765e + 06),(440382,4.04768 e + 06),(440381,4.04768e + 06),(440378,4.04769e + 06),(440377,4.04769e + 06),(440376,4.04769e + 06),(440376,4.04769e + (440375,4.04766e + 06),(440372,4.04767e + 06),(440368,4.04766e + 06),(440363,4.04766e + 06),(440356,4.04766e + 06),(440331,4.04765e +6),(440319,4.04765e + 06),(440304,4.04765e + 06),(440288,4.04765e + 06),(440263,4.04765e + 06),(440253,4.04765e + 440244,4.04766e + 06),(440238,4.04767e + 06),(440237,4.04768e + 06),(440238,4.04768e + 06),(440245,4.04769e + 06),(440258,4.0477e + 06),(440265,4.07777e + 06),(440270,4.07777e + 06),(440272,4.07777e + 06),(440271,4.04774e + 06),(440266,4.04776e + ,4.04773e + 06),(440271,4.04779e + 06),(440276,4.04781e + 06),(440278,4.04782e + 06),(440277,4.04783e + ),(440266,4.04784e + 06),(440254,4.04784e + 06),(440237,4.04785e + 06),(440217,4.04786e + 06),(440214,4.04786e + 4.04788e + 06),(440191,4.04788e + 06),(440178,4.0479e + 06),(440170,4.04791e + 06),(440164,4.04792e + 06),(440158,4.04794e + ,(440154,4.04795e + 06),(440147,4.04795e + 06),(440127,4.04796e + 06),(440106,4.04796e + 06),(440082,4.04797e + 06),(440079,4.04797 e + 06),(440069,4.04798e + 06),(440061,4.04798e + 06),(440051,4.04798e + 06),(440028,4.04797e + 06) (440006,4.04797e + 06),(439997,4.04798e + 06),(439986,4.04798e + 06),(439975,4.04799e + 06),(439964,4.04880e + 06),(439952,4.04803e +26),(439950,4.04818e + 06),(439937,4.04880e + 06),(439931,4.04880e + 06),(439918,4.04880e + 06),(439905,4.04811e + 439902,4.04812e + 06),(439892,4.04814e + 06),(439891,4.04815e + 06),(439893,4.04816e + 06),(439906,4.04818e + 06),(439917,4.0482e + 06),(439930,4.04822e + 06),(439930,4.04822e + 06),(439939,4.04823e + 06),(439953,4.04824e + 06),(439967,4.04825e + ,4.04825e + 06),(439972,4.04826e + 06),(439971,4.04826e + 06),(439967,4.04826e + 06),(439951,4.04827e + ),(439913,4.0483e + 06),(439893,4.04831e + 06),(439874,4.04833e + 06),(439854,4.04835e + 06),(439845,4.04835e + 4.04839e + 06),(439818,4.04837e + 06),(439813,4.04838e + 06),(439816,4.04839e + 06),(439825,4.04839e + (439859,4.04838e + 06),(439884,4.04838e + 06),(439889,4.04838e + 06),(439914,4.04837e + 06),(439935,4.04837e + 06),(439959,4.04836 e + 06),(439984,4.04836e + 06),(440009,4.04836e + 06),(440034,4.04835e + 06),(440058,4.04835e + 06),(440083,4.04835e + (440108,4.04834e + 06),(440118,4.04834e + 06),(440143,4.04834e + 06),(440152,4.04834e + 06),(440166,4.04834e + 06),(440179,4.04834e +640),(440200,4.04835e + 06),(440216,4.04836e + 06),(440230,4.04837e + 06),(440240,4.04838e + 06),(440251,4.04839e + 440265,4.04841e + 06),(440265,4.04841e + 06),(440277,4.04844e + 06),(440283,4.04845e + 06),(440294,4.04847e + 06),(440301,4.04849e + 06),(440310,4.04851e + 06),(440319,4.04853e + 06),(440323,4.04855e + 06),(440324,4.04856e + 06),(440323,4.04858e + ,4.04866e + 06),(440316,4.08686e + 06),(440310,4.08686e + 06),(440304,4.04867e + 06),(440303,4.08486e + ),(440294,4.0487e + 06),(440287,4.04873e + 06),(440281,4.04874e + 06),(440270,4.04875e + 06),(440254,4.04877e + 4.04877e + 06),(440241,4.04879e + 06),(440240,4.08888e + 06),(440235,4.04888e + 06),(440230,4.04888e + ,(440225,4.04885e + 06),(440217,4.04887e + 06),(440217,4.04887e + 06),(440206,4.04888e + 06),(440192,4.04891e + 06),(440186,4.04889e e + 06),(440172,4.04989e + 06),(440157,4.04989e + 06),(440143,4.04889e + 06),(440136,4.04899e + 06),(440119,4.04901e + (440004,4.0491e + 06),(440087,4.0491e + 06),(440074,4.04990e + 06),(440064,4.04990e + 06),(440047,4.0491e + +06),(440054,4.0491e + 06),(440070,4.04908e + 06),(440077,4.04907e + 06),(440093,4.04905e + 06),(440110,4.04904e + 440146,4.04995e + 06),(440142,4.049e + 06),(440149,4.04899e + 06),(440164,4.04889e + 06),(440178,4.04895e + 06),(440199,4.04892e + 06),(440213,4.0489e + 06),(440224,4.04888e + 06),(440225,4.04888e + 06),(440233,4.04885e + ,4.04885e + 06),(440238,4.04883e + 06),(440243,4.04888e + 06),(440247,4.04888e + 06),(440260,4.04878e + ),(440288,4.04874e + 06),(440294,4.04873e + 06),(440301,4.04871e + 06),(440304,4.04871e + 06),(440311,4.08486e + 4.04868e + 06),(440318,4.04886e + 06),(440324,4.08686e + 06),(440327,4.04861e + 06),(440331,4.04858e + ,(440332,4.04855e + 06),(440327,4.04853e + 06),(440327,4.04853e + 06),(440318,4.0485e + 06),(440309,4.04848e + 06),(440301,4.04847 e + 06),(440291,4.04844e + 06),(440284,4.04843e + 06),(440272,4.04841e + 06),(440271,4.04841e + 06),(440257,4.04839e + (440246,4.04837e + 06),(440236,4.04836e + 06),(440221,4.04835e + 06),(440203,4.04834e + 06),(440182,4.04833e + 06),(440168,4.04833e +06),(440152,4.04833e + 06),(440140,4.04833e + 06),(440116,4.04833e + 06),(440107,4.04834e + 06),(440082,4.04834e + 440057,4.04834e + 06),(440032,4.04835e + 06),(440007,4.04835e + 06),(439983,4.04835e + 06),(439958,4.04836e + 06),(439933,4.04836e + 06),(439912,4.04836e + 06),(439887,4.04837e + 06),(439883,4.04837e + 06),(439859,4.04838e + 06),(439834,4.04838e + ,4.04838e + 06),(439823,4.04838e + 06),(439822,4.04838e + 06),(439825,4.04837e + 06),(439835,4.04837e + ),(439859,4.04835e + 06),(439879,4.04834e + 06),(439898,4.04832e + 06),(439918,4.0483e + 06),(439937,4.04829e + 4.04828e + 06),(439970,4.04827e + 06),(439978,4.04827e + 06),(439980,4.04826e + 06),(439978,4.04825e + ,(439957,4.04823e + 06),(439945,4.04823e + 06),(439937,4.04822e + 06),(439937,4.04822e + 06),(439924,4.04819e + 06),(439913,4.04818 e + 06),(439901,4.04816e + 06),(439900,4.04815e + 06),(439900,4.04814e + 06),(439909,4.04812e + 06),(439912,4.04812e + (439925,4.04809e + 06),(439939,4.04880e + 06),(439944,4.04880e + 06),(439957,4.04880e + 06),(439958,4.04880e + 06),(439970,4.04880e +26),(439982,4.0488e + 06),(439990,4.04799e + 06),(439999,4.04798e + 06),(440007,4.04798e + 06) 440027,4.04798e + 06),(440050,4.04798e + 06),(440062,4.04798e + 06),(440071,4.04798e + 06),(440082,4.04798e + 06),(440085,4.04798e + 06),(440108,4.04797e + 06),(440129,4.04796e + 06),(440149,4.04796e + 06),(440159,4.04796e + 06),(440166,4.04795e + ,4.04793e + 06),(440178,4.04791e + 06),(440184,4.0479e + 06),(440196,4.04789e + 06),(440199,4.04789e + ),(440221,4.04787e + 06),(440241,4.04785e + 06),(440256,4.04785e + 06),(440270,4.04784e + 06),(440279,4.04784e + 4.04783e + 06),(440286,4.04782e + 06),(440284,4.04781e + 06),(440279,4.04778e + 06),(440275,4.04777e + ,(440279,4.04774e + 06),(440280,4.04772e + 06),(440278,4.04771e + 06),(440272,4.0477e + 06),(440264,4.04769e + 06),(440250,4.04768 e + 06),(440246,4.04768e + 06),(440245,4.04768e + 06),(440246,4.04767e + 06),(440250,4.04767e + 06),(440256,4.04766e + (440264,4.04766e + 06),(440289,4.04766e + 06),(440304,4.04766e + 06),(440318,4.04766e + 06),(440329,4.04766e + 06),(440354,4.04766e +06),(440359,4.04767e + 06),(440362,4.04767e + 06),(440365,4.04767e + 06),(440367,4.04768e + 06),(440368,4.04769e + 440370,4.04769e + 06),(440376,4.04769e + 06),(440382,4.04769e + 06),(440388,4.04769e + 06),(440390,4.04768e + 06),(440398,4.04766e + 06),(440400,4.04765e + 06),(440399,4.04764e + 06),(440395,4.04762e + 06),(440380,4.04761e + 06),(440369,4.0476e + ,4.04765e + 06),(440352,4.04475e + 06),(440345,4.04757e + 06),(440328,4.04757e + 06),(440315,4.04756e + ),(440278,4.04754e + 06),(440274,4.04754e + 06),(440270,4.04753e + 06),(440267,4.04751e + 06),(440263,4.0475e + 4.04748e + 06),(440246,4.04746e + 06),(440235,4.04743e + 06),(440232,4.04743e + 06),(440223,4.0474e + ,(440204,4.04736e + 06),(440194,4.04733e + 06),(440189,4.04732e + 06),(440179,4.0473e + 06),(440169,4.04728e + 06),(440159,4.04725 e + 06),(440149,4.04723e + 06),(440139,4.04721e + 06),(440137,4.0472e + 06),(440127,4.04718e + 06),(440117,4.04716e + (440107,4.04713e + 06)))
自交错多边形被忽略:(((440604,4.04772e + 06),(440595,4.04772e + 06),(440593,4.04772e + 06), ,4.04776e + 06),(440597,4.04776e + 06),(440601,4.04774e + 06),(440608,4.04775e + 06),(440618,4.04776e + ),(440638,4.04775e + 06),(440650,4.04775e + 06),(440642,4.04775e + 06),(440637,4.04775e + 06) (440601,4.04772e + 06),(440601,4.04772e + 06),(440615,4.04774e + 06),(440608,4.04773e + 06),(440603,4.04773e + ,(440604,4.04776e + 06)))
自我交错多边形被忽略:(((448423,4.04808e + 06),(448424,4.04880e + 06),(448446,4.0481e + 06) 448458,4.04811e + 06),(448479,4.04812e + 06),(448485,4.04812e + 06),(448504,4.04814e + 06),(448510,4.04815e + 06),(448525,4.04817e + 06),(448533,4.04818e + 06),(448546,4.0482e + 06),(448559,4.04822e + 06),(448572,4.04824e + 06),(448578,4.04825e + ,4.04822e + 06),(448584,4.04821e + 06),(448595,4.04819e + 06),(448598,4.04819e + 06),(448613,4.04817e + ),(448643,4.04814e + 06),(448664,4.04812e + 06),(448671,4.04812e + 06),(448692,4.0481e + 06),(448712,4.04880e + 06),(448734, 4.04804e + 06),(448758,4.04804e + 06),(448778,4.04880e + 06),(448800,4.04880e + 06),(448807,4.04880e + ,(448796,4.04808e + 06),(448774,4.04880e + 06),(448752,4.04880e + 06),(448730,4.04880e + 06),(448708,4.04880e + e + 06),(448666,4.04811e + 06),(448658,4.04812e + 06),(448637,4.04813e + 06),(448617,4.04815e + 06),(448605,4.04816e + (448591,4.04818e + 06),(448587,4.04819e + 06),(448576,4.04821e + 06),(448573,4.04823e + 06),(448568,4.04825e + 06),(448565,4.04824e +06),(448557,4.04822e + 06),(448548,4.04819e + 06),(448540,4.04817e + 06),(448531,4.04816e + 06),(448516,4.04814e + 448509,4.04813e + 06),(448490,4.04812e + 06),(448483,4.04811e + 06),(448462,4.0481e + 06),(448445,4.04880e + 06),(448423,4.04880e + (448741,4.04925e + 06),(448751,4.04925e + 06),(448753,4.04924e + 06),(448755,4.04923e + 06) ,(448752,4.04922e + 06),(448747,4.04922e + 06),(448739,4.04921e + 06),(448729,4.04921e + 06),(448722,4.04922e + 06),(448715,4.04922 e + 06),(448710,4.04923e + 06),(448708,4.04924e + 06),(448711,4.04924e + 06),(448716,4.04925e + 06),(448724,4.04926e + (448733,4.04926e + 06),(448742,4.04926e + 06),(448750,4.04925e + 06),(448741,4.04925e + 06),(448738,4.04925e + 06),(448732,4.04925e +06),(448727,4.04925e + 06),(448722,4.04925e + 06),(448718,4.04924e + 06),(448717,4.04924e + 06),(448718,4.04923e + 448720,4.04923e + 06),(448726,4.04923e + 06),(448732,4.04922e + 06),(448736,4.04922e + 06),(448741,4.04922e + 06),(448745,4.04923e +自由交错多边形忽略:(((451354,4.04907e + 06),(448746,4.04923e + 06),(448745,4.04924e + 06),(448741,4.04925e + ,(451363,4.04908e + 06),(451384,4.04090e + 06),(451406,4.04990e + 06),(451427,4.09490e + 06),(451427,4.09490e + 06),(451432,4.04902 e + 06),(451420,4.04090e + 06),(451403,4.09090e + 06),(451386,4.04904e + 06),(451385,4.04590e + 06),(451364,4.04906e + (451362,4.04912e + 06),(451340,4.04990e + 06),(451325,4.04990e + 06),(451320,4.0491e + 06),(451305,4.04912e + 06),(451289,4.04914e +06),(451288,4.04914e + 06),(451288,4.04915e + 06),(451287,4.04916e + 06),(451288,4.04917e + 06),(451296,4.04917e + 451295,4.04916e + 06),(451296,4.04914e + 06),(451297,4.04914e + 06),(451311,4.04912e + 06),(451327,4.0491e + 06),(451330,4.0491e + 06),(451345,4.04090e + 06),(451366,4.09490e + 06),(451370,4.04907e + 06),(451390,4.04905e + 06),(451403,4.09490e + ,4.04905e + 06),(451423,4.04090e + 06),(451420,4.04090e + 06),(451418,4.04904e + 06),(451397,4.04905e + ),(451354,4.04068e + 06)))
忽略自我交错多边形:(((455315,4.04068e + 06),(455309,4.04068e + 06),(455309,4.04068e + 06) (455284,4.04068e + 06),(455277,4.04068e + 06),(455252,4.04068e + 06),(455227,4.04069e + 06),(455203,4.04069e + 06),(455184,4.04069e +60),(455160,4.0407e + 06),(455135,4.0407e + 06),(455111,4.04071e + 06),(455090,4.04071e + 06) 455041,4.04072e + 06),(455026,4.04073e + 06),(455001,4.04073e + 06),(454976,4.04073e + 06),(454951,4.04074e + 06),(454929,4.04074e + 06),(454905,4.04074e + 06),(454880,4.04075e + 06),(454855,4.04075e + 06),(454830,4.04075e + 06),(454805,4.04076e + ,4.04076e + 06),(454766,4.04076e + 06),(454758,4.04076e + 06),(454733,4.04076e + 06),(454717,4.04076e + 06) ),(454667,4.04075e + 06),(454642,4.04075e + 06),(454618,4.04075e + 06),(454593,4.04075e + 06),(454568,4.04074e + 06),(454564, 4.04074e + 06),(454538,4.04074e + 06),(454537,4.04074e + 06),(454512,4.04074e + 06),(454487,4.04074e + ,(454437,4.04075e + 06),(454412,4.04075e + 06),(454387,4.04075e + 06),(454362,4.04075e + 06),(454337,4.04075e + 06),(454313,4.04075 e + 06),(454309,4.04075e + 06),(454285,4.04075e + 06),(454282,4.04075e + 06),(454258,4.04076e + 06),(454233,4.04076e + (454208,4.04076e + 06),(454184,4.04077e + 06),(454176,4.04077e + 06),(454152,4.04078e + 06),(454131,4.04078e + 06),(454108,4.04079e +06),(454084,4.0408e + 06),(454061,4.04081e + 06),(454050,4.04081e + 06),(454026,4.04082e + 06),(454003,4.04083e + 453980,4.04084e + 06),(453956,4.04085e + 06),(453933,4.04086e + 06),(453910,4.04087e + 06),(453887,4.04088e + 06),(453863,4.04089e + 06),(453861,4.04089e + 06),(453838,4.04089e + 06),(453815,4.0409e + 06),(453791,4.04091e + 06),(453776,4.04092e + ,4.04092e + 06),(453794,4.04092e + 06),(453818,4.04091e + 06),(453841,4.0409e + 06),(453864,4.04089e + 06),(453887,4.04088e + 06 ),(453911,4.04088e + 06),(453934,4.04087e + 06),(453957,4.04086e + 06),(453981,4.04085e + 06),(454004,4.04084e + 4.04083e + 06),(454051,4.04082e + 06),(454063,4.04082e + 06),(454087,4.04081e + 06),(454110,4.0408e + 06),(454133,4.04079e + ,(454154,4.04078e + 06),(454178,4.04078e + 06),(454185,4.04078e + 06),(454210,4.04077e + 06),(454234,4.04077e + 06),(454259,4.04076 e + 06),(454283,4.04076e + 06),(454285,4.04076e + 06),(454310,4.04076e + 06),(454313,4.04076e + 06),(454338,4.04076e + (454363,4.04076e + 06),(454387,4.04075e + 06),(454412,4.04075e + 06),(454437,4.04075e + 06),(454462,4.04075e + 06),(454487,4.04075e +26),(454512,4.04075e + 06),(454537,4.04075e + 06),(454538,4.04075e + 06),(454563,4.04075e + 06),(454567,4.04075e + 454592,4.04076e + 06),(454617,4.04076e + 06),(454617,4.04076e + 06),(454642,4.04076e + 06),(454667,4.04076e + 06),(454692,4.04076e + 06),(454717,4.04076e + 06),(454733,4.04077e + 06),(454758,4.04077e + 06),(454767,4.04077e + 06),(454792,4.04077e + 06) ,4.04076e + 06),(454831,4.04076e + 06),(454856,4.04076e + 06),(454881,4.04075e + 06),(454906,4.04075e + ),(454953,4.04074e + 06),(454978,4.04074e + 06),(455002,4.04074e + 06),(455027,4.04073e + 06),(455042,4.04073e + 06),(455066, (455114,4.0407e + 06),(455166,4.0407e + 06),(455181,4.0407e + 06),(455091,4.04072e + 06),(455113,4.04072e + ,(455204,4.0407e + 06),(455228,4.04069e + 06),(455253,4.04069e + 06),(455278,4.04069e + 06),(455285,4.04069e + 06),(455310,4.04068 e + 06),(455315,4.04068e + 06)))


I'm using boost::geometry::union_ to merge a vector of random polygons, and here what I wrote:

#include <iostream>
#include <vector>
#include <fstream>
#include <boost/geometry.hpp>
#include <boost/geometry/geometries/point_xy.hpp>
#include <boost/geometry/geometries/polygon.hpp>
#include <boost/geometry/io/wkt/wkt.hpp>

#include <boost/foreach.hpp>
typedef boost::geometry::model::polygon<boost::geometry::model::d2::point_xy<double> > polygon;


void union_polys(std::vector<polygon> In_polys,std::vector<polygon> &Out_polys)
{
    std::vector<polygon> temp_polys;
    bool *considered = new bool [In_polys.size()];
    for(unsigned i = 0 ; i < In_polys.size() ; i++) considered[i] = false;
    for(unsigned i = 0 ; i < In_polys.size()/2; i++)
    {
        if(!considered[i])
        {
            polygon inetr = In_polys.at(i);
            for(unsigned j = i + 1 ; j < In_polys.size() ; j++)
            {

                if(!considered[j])
                {
                    temp_polys.clear();
                    boost::geometry::union_(inetr, In_polys.at(j) , temp_polys);
                    if(temp_polys.size() == 1)
                    {
                        inetr = temp_polys.at(0);
                        considered[j] = true;
                        j = i;
                    }
                }
            }
            Out_polys.push_back(inetr);
        }
    }
}

int main()
{
    std::ifstream file("test01.txt");

    polygon *poly;
    std::vector<polygon> input;


    while(!file.eof())
    {
        poly = new polygon;
        std::string poly_str;

        std::getline(file, poly_str);

        boost::geometry::read_wkt(poly_str, *poly);
        boost::geometry::correct(*poly);

        input.push_back(*poly);
    }
    std::cout << " input size is : " << input.size() << std::endl;

    std::vector<polygon> output;
    union_polys(input, output);

    std::cout << " output size is : " << output.size() << std::endl;

    int i = 0;
    std::cout << "green || blue:" << std::endl;

    BOOST_FOREACH(polygon const& p, output)
    {
        std::cout << i++ << ": " << boost::geometry::area(p) << std::endl;
    }

    system("pause");
    return 0;
}

I tested this function union_polys with two different polygon sets:

test 01 test 02

It works for the first test but it fails for the second, I searched but I can't spot the mistake, can any one helps ?

解决方案

The problem is your second file contains a self-intersecting polygon. This is not allowed.

You can enable debugging by defining

#define BOOST_GEOMETRY_DEBUG_HAS_SELF_INTERSECTIONS

before inclusion of the Boost Geometry headers.

The documentation says: http://www.boost.org/doc/libs/1_55_0/libs/geometry/doc/html/geometry/reference/concepts/concept_polygon.html#geometry.reference.concepts.concept_polygon.rules

Rules

Besides the Concepts, which are checks on compile-time, there are some other rules that valid polygons must fulfill. This follows the opengeospatial rules (see link above).

  • Polygons are simple geometric objects (See also wiki but holes are allowed in Boost.Geometry polygons).
  • If the polygons underlying ring_type is defined as clockwise, the exterior ring must have the clockwise orientation, and any interior ring must be reversed w.r.t. the defined orientation (so: counter clockwise for clockwise exterior rings). If the ring_type is defined counter clockwise, it is vice versa.
  • If the polygons underlying ring_type is defined as closed, all rings must be closed: the first point must be spatially equal to the last point.
  • The interior is a connected point set.
  • There should be no self intersections, but self tangencies (between exterior/interior rings) are allowed (as long as the interior is a connected point set.
  • There should be no cut lines, spikes or punctures.
  • The interior rings should be located within the exterior ring. Interior rings may not be located within each other.

The algorithms such as intersection, area, centroid, union, etc. do not check validity. There will be an algorithm is_valid which checks for validity against these rules, at runtime, and which can be called (by the library user) before.

So currently, the self-intersection is only available in the implementation details of the library

If you don't mind using these you can e.g. use the following to weed out the offending polygons:

std::string poly_str;
while(std::getline(file, poly_str))
{
    polygon poly;

    boost::geometry::read_wkt(poly_str, poly);
    boost::geometry::correct(poly);

    try
    {
        bool ignored = boost::geometry::detail::overlay::has_self_intersections(poly);

        // redundant:
        if (ignored)
            throw boost::geometry::overlay_invalid_input_exception();

        input.push_back(std::move(poly));
    } catch(boost::geometry::overlay_invalid_input_exception const& e)
    {
        std::cerr << "Self intersecing polygon ignored: " << boost::geometry::dsv(poly) << "\n";
    }
}

(Note the removal of memory leaks from your code and the fixed loop condition)

Self intersecing polygon ignored: (((449719, 4.04975e+06), (449720, 4.04976e+06), (449721, 4.04976e+06), (449727, 4.04976e+06), (449734, 4.04976e+06), (449736, 4.04976e+06), (449739, 4.04975e+06), (449742, 4.04975e+06), (449744, 4.04975e+06), (449745, 4.04974e+06), (449744, 4.04973e+06), (449741, 4.04973e+06), (449737, 4.04973e+06), (449734, 4.04973e+06), (449728, 4.04972e+06), (449725, 4.04972e+06), (449721, 4.04973e+06), (449716, 4.04973e+06), (449712, 4.04973e+06), (449711, 4.04974e+06), (449710, 4.04974e+06), (449711, 4.04975e+06), (449714, 4.04975e+06), (449718, 4.04976e+06), (449721, 4.04975e+06), (449721, 4.04975e+06), (449719, 4.04975e+06), (449718, 4.04974e+06), (449719, 4.04974e+06), (449719, 4.04974e+06), (449721, 4.04974e+06), (449724, 4.04973e+06), (449726, 4.04973e+06), (449728, 4.04973e+06), (449731, 4.04973e+06), (449733, 4.04973e+06), (449734, 4.04974e+06), (449736, 4.04974e+06), (449737, 4.04974e+06), (449736, 4.04975e+06), (449735, 4.04975e+06), (449734, 4.04975e+06), (449732, 4.04975e+06), (449731, 4.04975e+06), (449727, 4.04975e+06), (449724, 4.04975e+06), (449719, 4.04975e+06)))
Self intersecing polygon ignored: (((451355, 4.04939e+06), (451363, 4.0494e+06), (451365, 4.0494e+06), (451368, 4.0494e+06), (451369, 4.04939e+06), (451370, 4.04939e+06), (451368, 4.04938e+06), (451366, 4.04938e+06), (451362, 4.04938e+06), (451359, 4.04938e+06), (451355, 4.04938e+06), (451351, 4.04938e+06), (451347, 4.04938e+06), (451345, 4.04939e+06), (451345, 4.04939e+06), (451346, 4.04939e+06), (451348, 4.0494e+06), (451351, 4.0494e+06), (451355, 4.0494e+06), (451362, 4.0494e+06), (451356, 4.04939e+06), (451357, 4.04939e+06), (451355, 4.04939e+06), (451354, 4.04939e+06), (451354, 4.04939e+06), (451353, 4.04939e+06), (451353, 4.04939e+06), (451354, 4.04939e+06), (451355, 4.04939e+06), (451356, 4.04938e+06), (451358, 4.04938e+06), (451359, 4.04938e+06), (451360, 4.04939e+06), (451361, 4.04939e+06), (451361, 4.04939e+06), (451361, 4.04939e+06), (451361, 4.04939e+06), (451360, 4.04939e+06), (451355, 4.04939e+06)))
Self intersecing polygon ignored: (((451353, 4.04937e+06), (451361, 4.04938e+06), (451360, 4.04938e+06), (451380, 4.04937e+06), (451403, 4.04936e+06), (451427, 4.04936e+06), (451442, 4.04935e+06), (451466, 4.04934e+06), (451489, 4.04933e+06), (451508, 4.04932e+06), (451517, 4.04933e+06), (451518, 4.04933e+06), (451524, 4.04936e+06), (451526, 4.04937e+06), (451534, 4.04939e+06), (451541, 4.04942e+06), (451542, 4.04942e+06), (451557, 4.04944e+06), (451558, 4.04944e+06), (451577, 4.04946e+06), (451579, 4.04946e+06), (451601, 4.04947e+06), (451620, 4.04948e+06), (451630, 4.04949e+06), (451635, 4.0495e+06), (451640, 4.04952e+06), (451645, 4.04955e+06), (451646, 4.04955e+06), (451649, 4.04956e+06), (451654, 4.04959e+06), (451655, 4.04959e+06), (451660, 4.04962e+06), (451664, 4.04964e+06), (451669, 4.04966e+06), (451674, 4.04969e+06), (451675, 4.04969e+06), (451680, 4.04972e+06), (451686, 4.04974e+06), (451688, 4.04975e+06), (451696, 4.04977e+06), (451701, 4.04976e+06), (451696, 4.04975e+06), (451694, 4.04974e+06), (451689, 4.04972e+06), (451683, 4.04969e+06), (451682, 4.04969e+06), (451677, 4.04966e+06), (451673, 4.04964e+06), (451668, 4.04961e+06), (451663, 4.04959e+06), (451661, 4.04958e+06), (451655, 4.04955e+06), (451653, 4.04954e+06), (451653, 4.04954e+06), (451648, 4.04952e+06), (451642, 4.04949e+06), (451636, 4.04948e+06), (451624, 4.04947e+06), (451606, 4.04946e+06), (451584, 4.04945e+06), (451583, 4.04945e+06), (451564, 4.04944e+06), (451550, 4.04942e+06), (451549, 4.04941e+06), (451542, 4.04939e+06), (451535, 4.04937e+06), (451531, 4.04935e+06), (451526, 4.04933e+06), (451521, 4.04932e+06), (451509, 4.04931e+06), (451486, 4.04932e+06), (451463, 4.04933e+06), (451440, 4.04934e+06), (451424, 4.04935e+06), (451400, 4.04936e+06), (451377, 4.04936e+06), (451357, 4.04937e+06), (451353, 4.04937e+06)))
Self intersecing polygon ignored: (((451703, 4.04978e+06), (451693, 4.04978e+06), (451693, 4.04978e+06), (451691, 4.04978e+06), (451688, 4.04978e+06), (451686, 4.04978e+06), (451683, 4.04978e+06), (451681, 4.04978e+06), (451679, 4.04977e+06), (451678, 4.04977e+06), (451679, 4.04977e+06), (451680, 4.04977e+06), (451682, 4.04976e+06), (451685, 4.04976e+06), (451688, 4.04976e+06), (451691, 4.04976e+06), (451693, 4.04976e+06), (451694, 4.04977e+06), (451695, 4.04977e+06), (451693, 4.04978e+06), (451703, 4.04977e+06), (451704, 4.04977e+06), (451702, 4.04976e+06), (451699, 4.04976e+06), (451695, 4.04976e+06), (451689, 4.04975e+06), (451683, 4.04975e+06), (451678, 4.04976e+06), (451673, 4.04976e+06), (451670, 4.04977e+06), (451670, 4.04977e+06), (451672, 4.04978e+06), (451674, 4.04978e+06), (451679, 4.04979e+06), (451685, 4.04979e+06), (451690, 4.04979e+06), (451696, 4.04978e+06), (451700, 4.04978e+06), (451703, 4.04978e+06)))
Self intersecing polygon ignored: (((452873, 4.05001e+06), (452866, 4.05e+06), (452863, 4.05e+06), (452854, 4.04999e+06), (452841, 4.04998e+06), (452818, 4.04997e+06), (452817, 4.04997e+06), (452793, 4.04997e+06), (452783, 4.04997e+06), (452773, 4.04997e+06), (452750, 4.04998e+06), (452741, 4.04999e+06), (452737, 4.04999e+06), (452731, 4.04999e+06), (452719, 4.04998e+06), (452699, 4.04997e+06), (452685, 4.04997e+06), (452680, 4.04997e+06), (452680, 4.04997e+06), (452679, 4.04997e+06), (452679, 4.04996e+06), (452677, 4.04995e+06), (452678, 4.04995e+06), (452687, 4.04994e+06), (452697, 4.04994e+06), (452705, 4.04993e+06), (452713, 4.04992e+06), (452729, 4.04992e+06), (452747, 4.04992e+06), (452762, 4.04991e+06), (452772, 4.04991e+06), (452779, 4.04991e+06), (452770, 4.0499e+06), (452768, 4.0499e+06), (452759, 4.04991e+06), (452746, 4.04991e+06), (452728, 4.04991e+06), (452708, 4.04991e+06), (452699, 4.04992e+06), (452692, 4.04993e+06), (452683, 4.04994e+06), (452674, 4.04994e+06), (452668, 4.04994e+06), (452671, 4.04996e+06), (452670, 4.04997e+06), (452672, 4.04997e+06), (452674, 4.04998e+06), (452684, 4.04998e+06), (452698, 4.04998e+06), (452716, 4.04999e+06), (452729, 4.04999e+06), (452737, 4.05e+06), (452745, 4.04999e+06), (452753, 4.04999e+06), (452753, 4.04999e+06), (452776, 4.04998e+06), (452786, 4.04998e+06), (452793, 4.04998e+06), (452815, 4.04998e+06), (452837, 4.04999e+06), (452848, 4.05e+06), (452861, 4.05001e+06), (452873, 4.05001e+06)))
Self intersecing polygon ignored: (((452726, 4.04987e+06), (452733, 4.04986e+06), (452731, 4.04985e+06), (452730, 4.04985e+06), (452722, 4.04985e+06), (452722, 4.04985e+06), (452726, 4.04987e+06)))
Self intersecing polygon ignored: (((440107, 4.04713e+06), (440102, 4.04714e+06), (440112, 4.04717e+06), (440122, 4.04719e+06), (440132, 4.04721e+06), (440134, 4.04722e+06), (440143, 4.04724e+06), (440153, 4.04726e+06), (440163, 4.04728e+06), (440173, 4.04731e+06), (440183, 4.04733e+06), (440186, 4.04734e+06), (440196, 4.04736e+06), (440206, 4.04738e+06), (440215, 4.04741e+06), (440225, 4.04743e+06), (440227, 4.04744e+06), (440238, 4.04746e+06), (440247, 4.04748e+06), (440255, 4.0475e+06), (440259, 4.04752e+06), (440262, 4.04753e+06), (440267, 4.04754e+06), (440273, 4.04755e+06), (440289, 4.04756e+06), (440311, 4.04757e+06), (440325, 4.04758e+06), (440342, 4.04758e+06), (440346, 4.04759e+06), (440362, 4.0476e+06), (440363, 4.04761e+06), (440374, 4.04762e+06), (440388, 4.04763e+06), (440391, 4.04764e+06), (440392, 4.04765e+06), (440390, 4.04765e+06), (440382, 4.04768e+06), (440381, 4.04768e+06), (440378, 4.04769e+06), (440377, 4.04769e+06), (440376, 4.04769e+06), (440376, 4.04769e+06), (440375, 4.04767e+06), (440372, 4.04767e+06), (440368, 4.04766e+06), (440363, 4.04766e+06), (440356, 4.04766e+06), (440331, 4.04765e+06), (440319, 4.04765e+06), (440304, 4.04765e+06), (440288, 4.04765e+06), (440263, 4.04765e+06), (440253, 4.04765e+06), (440244, 4.04766e+06), (440238, 4.04767e+06), (440237, 4.04768e+06), (440238, 4.04768e+06), (440245, 4.04769e+06), (440258, 4.0477e+06), (440265, 4.04771e+06), (440270, 4.04772e+06), (440272, 4.04772e+06), (440271, 4.04774e+06), (440266, 4.04776e+06), (440266, 4.04777e+06), (440271, 4.04779e+06), (440276, 4.04781e+06), (440278, 4.04782e+06), (440277, 4.04783e+06), (440273, 4.04783e+06), (440266, 4.04784e+06), (440254, 4.04784e+06), (440237, 4.04785e+06), (440217, 4.04786e+06), (440214, 4.04786e+06), (440194, 4.04788e+06), (440191, 4.04788e+06), (440178, 4.0479e+06), (440170, 4.04791e+06), (440164, 4.04792e+06), (440158, 4.04794e+06), (440154, 4.04795e+06), (440147, 4.04795e+06), (440127, 4.04796e+06), (440106, 4.04796e+06), (440082, 4.04797e+06), (440079, 4.04797e+06), (440069, 4.04798e+06), (440061, 4.04798e+06), (440051, 4.04798e+06), (440028, 4.04797e+06), (440018, 4.04797e+06), (440006, 4.04797e+06), (439997, 4.04798e+06), (439986, 4.04798e+06), (439975, 4.04799e+06), (439964, 4.04801e+06), (439952, 4.04803e+06), (439950, 4.04804e+06), (439937, 4.04806e+06), (439931, 4.04807e+06), (439918, 4.04809e+06), (439905, 4.04811e+06), (439902, 4.04812e+06), (439892, 4.04814e+06), (439891, 4.04815e+06), (439893, 4.04816e+06), (439906, 4.04818e+06), (439917, 4.0482e+06), (439930, 4.04822e+06), (439930, 4.04822e+06), (439939, 4.04823e+06), (439953, 4.04824e+06), (439967, 4.04825e+06), (439970, 4.04825e+06), (439972, 4.04826e+06), (439971, 4.04826e+06), (439967, 4.04826e+06), (439951, 4.04827e+06), (439932, 4.04828e+06), (439913, 4.0483e+06), (439893, 4.04831e+06), (439874, 4.04833e+06), (439854, 4.04835e+06), (439845, 4.04835e+06), (439831, 4.04836e+06), (439818, 4.04837e+06), (439813, 4.04838e+06), (439816, 4.04839e+06), (439825, 4.04839e+06), (439835, 4.04839e+06), (439859, 4.04838e+06), (439884, 4.04838e+06), (439889, 4.04838e+06), (439914, 4.04837e+06), (439935, 4.04837e+06), (439959, 4.04836e+06), (439984, 4.04836e+06), (440009, 4.04836e+06), (440034, 4.04835e+06), (440058, 4.04835e+06), (440083, 4.04835e+06), (440108, 4.04834e+06), (440118, 4.04834e+06), (440143, 4.04834e+06), (440152, 4.04834e+06), (440166, 4.04834e+06), (440179, 4.04834e+06), (440200, 4.04835e+06), (440216, 4.04836e+06), (440230, 4.04837e+06), (440240, 4.04838e+06), (440251, 4.04839e+06), (440265, 4.04841e+06), (440265, 4.04841e+06), (440277, 4.04844e+06), (440283, 4.04845e+06), (440294, 4.04847e+06), (440301, 4.04849e+06), (440310, 4.04851e+06), (440319, 4.04853e+06), (440323, 4.04855e+06), (440324, 4.04856e+06), (440323, 4.04858e+06), (440319, 4.04861e+06), (440316, 4.04863e+06), (440310, 4.04865e+06), (440304, 4.04867e+06), (440303, 4.04868e+06), (440296, 4.04871e+06), (440294, 4.04871e+06), (440287, 4.04873e+06), (440281, 4.04874e+06), (440270, 4.04875e+06), (440254, 4.04877e+06), (440254, 4.04877e+06), (440241, 4.04879e+06), (440240, 4.0488e+06), (440235, 4.04881e+06), (440230, 4.04882e+06), (440226, 4.04885e+06), (440225, 4.04885e+06), (440217, 4.04887e+06), (440217, 4.04887e+06), (440206, 4.04889e+06), (440192, 4.04891e+06), (440186, 4.04892e+06), (440172, 4.04894e+06), (440157, 4.04896e+06), (440143, 4.04898e+06), (440136, 4.04899e+06), (440119, 4.04901e+06), (440103, 4.04903e+06), (440087, 4.04905e+06), (440071, 4.04907e+06), (440064, 4.04908e+06), (440047, 4.0491e+06), (440044, 4.0491e+06), (440054, 4.0491e+06), (440070, 4.04908e+06), (440077, 4.04907e+06), (440093, 4.04905e+06), (440110, 4.04904e+06), (440126, 4.04902e+06), (440142, 4.049e+06), (440149, 4.04899e+06), (440164, 4.04897e+06), (440178, 4.04895e+06), (440193, 4.04893e+06), (440199, 4.04892e+06), (440213, 4.0489e+06), (440224, 4.04888e+06), (440225, 4.04888e+06), (440233, 4.04885e+06), (440234, 4.04885e+06), (440238, 4.04883e+06), (440243, 4.04881e+06), (440247, 4.0488e+06), (440260, 4.04878e+06), (440276, 4.04876e+06), (440288, 4.04874e+06), (440294, 4.04873e+06), (440301, 4.04871e+06), (440304, 4.04871e+06), (440311, 4.04868e+06), (440312, 4.04868e+06), (440318, 4.04865e+06), (440324, 4.04863e+06), (440327, 4.04861e+06), (440331, 4.04858e+06), (440332, 4.04856e+06), (440332, 4.04855e+06), (440327, 4.04853e+06), (440327, 4.04853e+06), (440318, 4.0485e+06), (440309, 4.04848e+06), (440301, 4.04847e+06), (440291, 4.04844e+06), (440284, 4.04843e+06), (440272, 4.04841e+06), (440271, 4.04841e+06), (440257, 4.04839e+06), (440246, 4.04837e+06), (440236, 4.04836e+06), (440221, 4.04835e+06), (440203, 4.04834e+06), (440182, 4.04833e+06), (440168, 4.04833e+06), (440152, 4.04833e+06), (440140, 4.04833e+06), (440116, 4.04833e+06), (440107, 4.04834e+06), (440082, 4.04834e+06), (440057, 4.04834e+06), (440032, 4.04835e+06), (440007, 4.04835e+06), (439983, 4.04835e+06), (439958, 4.04836e+06), (439933, 4.04836e+06), (439912, 4.04836e+06), (439887, 4.04837e+06), (439883, 4.04837e+06), (439859, 4.04838e+06), (439834, 4.04838e+06), (439826, 4.04838e+06), (439823, 4.04838e+06), (439822, 4.04838e+06), (439825, 4.04837e+06), (439835, 4.04837e+06), (439849, 4.04836e+06), (439859, 4.04835e+06), (439879, 4.04834e+06), (439898, 4.04832e+06), (439918, 4.0483e+06), (439937, 4.04829e+06), (439955, 4.04828e+06), (439970, 4.04827e+06), (439978, 4.04827e+06), (439980, 4.04826e+06), (439978, 4.04825e+06), (439971, 4.04824e+06), (439957, 4.04823e+06), (439945, 4.04823e+06), (439937, 4.04822e+06), (439937, 4.04822e+06), (439924, 4.04819e+06), (439913, 4.04818e+06), (439901, 4.04816e+06), (439900, 4.04815e+06), (439900, 4.04814e+06), (439909, 4.04812e+06), (439912, 4.04812e+06), (439925, 4.04809e+06), (439939, 4.04807e+06), (439944, 4.04806e+06), (439957, 4.04804e+06), (439958, 4.04804e+06), (439970, 4.04802e+06), (439982, 4.048e+06), (439990, 4.04799e+06), (439999, 4.04798e+06), (440007, 4.04798e+06), (440018, 4.04798e+06), (440027, 4.04798e+06), (440050, 4.04798e+06), (440062, 4.04798e+06), (440071, 4.04798e+06), (440082, 4.04798e+06), (440085, 4.04798e+06), (440108, 4.04797e+06), (440129, 4.04796e+06), (440149, 4.04796e+06), (440159, 4.04796e+06), (440166, 4.04795e+06), (440172, 4.04793e+06), (440178, 4.04791e+06), (440184, 4.0479e+06), (440196, 4.04789e+06), (440199, 4.04789e+06), (440219, 4.04787e+06), (440221, 4.04787e+06), (440241, 4.04785e+06), (440256, 4.04785e+06), (440270, 4.04784e+06), (440279, 4.04784e+06), (440285, 4.04783e+06), (440286, 4.04782e+06), (440284, 4.04781e+06), (440279, 4.04778e+06), (440275, 4.04777e+06), (440275, 4.04776e+06), (440279, 4.04774e+06), (440280, 4.04772e+06), (440278, 4.04771e+06), (440272, 4.0477e+06), (440264, 4.04769e+06), (440250, 4.04768e+06), (440246, 4.04768e+06), (440245, 4.04768e+06), (440246, 4.04767e+06), (440250, 4.04767e+06), (440256, 4.04766e+06), (440264, 4.04766e+06), (440289, 4.04766e+06), (440304, 4.04766e+06), (440318, 4.04766e+06), (440329, 4.04766e+06), (440354, 4.04766e+06), (440359, 4.04767e+06), (440362, 4.04767e+06), (440365, 4.04767e+06), (440367, 4.04768e+06), (440368, 4.04769e+06), (440370, 4.04769e+06), (440376, 4.04769e+06), (440382, 4.04769e+06), (440388, 4.04769e+06), (440390, 4.04768e+06), (440398, 4.04766e+06), (440400, 4.04765e+06), (440399, 4.04764e+06), (440395, 4.04762e+06), (440380, 4.04761e+06), (440369, 4.0476e+06), (440368, 4.0476e+06), (440352, 4.04758e+06), (440345, 4.04757e+06), (440328, 4.04757e+06), (440315, 4.04756e+06), (440294, 4.04755e+06), (440278, 4.04754e+06), (440274, 4.04754e+06), (440270, 4.04753e+06), (440267, 4.04751e+06), (440263, 4.0475e+06), (440255, 4.04748e+06), (440246, 4.04746e+06), (440235, 4.04743e+06), (440232, 4.04743e+06), (440223, 4.0474e+06), (440213, 4.04738e+06), (440204, 4.04736e+06), (440194, 4.04733e+06), (440189, 4.04732e+06), (440179, 4.0473e+06), (440169, 4.04728e+06), (440159, 4.04725e+06), (440149, 4.04723e+06), (440139, 4.04721e+06), (440137, 4.0472e+06), (440127, 4.04718e+06), (440117, 4.04716e+06), (440107, 4.04713e+06)))
Self intersecing polygon ignored: (((440604, 4.04772e+06), (440595, 4.04772e+06), (440593, 4.04772e+06), (440593, 4.04773e+06), (440597, 4.04773e+06), (440601, 4.04774e+06), (440608, 4.04775e+06), (440618, 4.04776e+06), (440628, 4.04776e+06), (440638, 4.04776e+06), (440650, 4.04776e+06), (440642, 4.04775e+06), (440637, 4.04775e+06), (440630, 4.04775e+06), (440623, 4.04775e+06), (440615, 4.04774e+06), (440608, 4.04773e+06), (440603, 4.04773e+06), (440601, 4.04772e+06), (440601, 4.04772e+06), (440604, 4.04772e+06)))
Self intersecing polygon ignored: (((448423, 4.04808e+06), (448424, 4.04809e+06), (448446, 4.0481e+06), (448458, 4.04811e+06), (448479, 4.04812e+06), (448485, 4.04812e+06), (448504, 4.04814e+06), (448510, 4.04815e+06), (448525, 4.04817e+06), (448533, 4.04818e+06), (448546, 4.0482e+06), (448559, 4.04822e+06), (448572, 4.04824e+06), (448578, 4.04825e+06), (448582, 4.04822e+06), (448584, 4.04821e+06), (448595, 4.04819e+06), (448598, 4.04819e+06), (448613, 4.04817e+06), (448623, 4.04815e+06), (448643, 4.04814e+06), (448664, 4.04812e+06), (448671, 4.04812e+06), (448692, 4.0481e+06), (448712, 4.04809e+06), (448734, 4.04808e+06), (448756, 4.04807e+06), (448778, 4.04806e+06), (448800, 4.04804e+06), (448807, 4.04804e+06), (448798, 4.04804e+06), (448796, 4.04804e+06), (448774, 4.04805e+06), (448752, 4.04806e+06), (448730, 4.04807e+06), (448708, 4.04808e+06), (448687, 4.0481e+06), (448666, 4.04811e+06), (448658, 4.04812e+06), (448637, 4.04813e+06), (448617, 4.04815e+06), (448605, 4.04816e+06), (448591, 4.04818e+06), (448587, 4.04819e+06), (448576, 4.04821e+06), (448573, 4.04823e+06), (448568, 4.04825e+06), (448565, 4.04824e+06), (448557, 4.04822e+06), (448548, 4.04819e+06), (448540, 4.04817e+06), (448531, 4.04816e+06), (448516, 4.04814e+06), (448509, 4.04813e+06), (448490, 4.04812e+06), (448483, 4.04811e+06), (448462, 4.0481e+06), (448445, 4.04809e+06), (448423, 4.04808e+06)))
Self intersecing polygon ignored: (((448741, 4.04925e+06), (448751, 4.04925e+06), (448753, 4.04924e+06), (448755, 4.04923e+06), (448752, 4.04922e+06), (448747, 4.04922e+06), (448739, 4.04921e+06), (448729, 4.04921e+06), (448722, 4.04922e+06), (448715, 4.04922e+06), (448710, 4.04923e+06), (448708, 4.04924e+06), (448711, 4.04924e+06), (448716, 4.04925e+06), (448724, 4.04926e+06), (448733, 4.04926e+06), (448742, 4.04926e+06), (448750, 4.04925e+06), (448741, 4.04925e+06), (448738, 4.04925e+06), (448732, 4.04925e+06), (448727, 4.04925e+06), (448722, 4.04925e+06), (448718, 4.04924e+06), (448717, 4.04924e+06), (448718, 4.04923e+06), (448720, 4.04923e+06), (448726, 4.04923e+06), (448732, 4.04922e+06), (448736, 4.04922e+06), (448741, 4.04922e+06), (448745, 4.04923e+06), (448746, 4.04923e+06), (448745, 4.04924e+06), (448741, 4.04925e+06)))
Self intersecing polygon ignored: (((451354, 4.04907e+06), (451363, 4.04908e+06), (451384, 4.04907e+06), (451406, 4.04905e+06), (451427, 4.04904e+06), (451427, 4.04904e+06), (451432, 4.04902e+06), (451420, 4.04901e+06), (451403, 4.04903e+06), (451386, 4.04904e+06), (451385, 4.04905e+06), (451364, 4.04906e+06), (451362, 4.04906e+06), (451340, 4.04907e+06), (451325, 4.04909e+06), (451320, 4.0491e+06), (451305, 4.04912e+06), (451289, 4.04914e+06), (451288, 4.04914e+06), (451288, 4.04915e+06), (451287, 4.04916e+06), (451288, 4.04917e+06), (451296, 4.04917e+06), (451295, 4.04916e+06), (451296, 4.04914e+06), (451297, 4.04914e+06), (451311, 4.04912e+06), (451327, 4.0491e+06), (451330, 4.0491e+06), (451345, 4.04908e+06), (451366, 4.04907e+06), (451370, 4.04907e+06), (451390, 4.04905e+06), (451403, 4.04904e+06), (451420, 4.04902e+06), (451423, 4.04902e+06), (451420, 4.04903e+06), (451418, 4.04904e+06), (451397, 4.04905e+06), (451375, 4.04906e+06), (451354, 4.04907e+06)))
Self intersecing polygon ignored: (((455315, 4.04068e+06), (455309, 4.04068e+06), (455309, 4.04068e+06), (455284, 4.04068e+06), (455277, 4.04068e+06), (455252, 4.04068e+06), (455227, 4.04069e+06), (455203, 4.04069e+06), (455184, 4.04069e+06), (455160, 4.0407e+06), (455135, 4.0407e+06), (455111, 4.04071e+06), (455090, 4.04071e+06), (455065, 4.04072e+06), (455041, 4.04072e+06), (455026, 4.04073e+06), (455001, 4.04073e+06), (454976, 4.04073e+06), (454951, 4.04074e+06), (454929, 4.04074e+06), (454905, 4.04074e+06), (454880, 4.04075e+06), (454855, 4.04075e+06), (454830, 4.04075e+06), (454805, 4.04076e+06), (454791, 4.04076e+06), (454766, 4.04076e+06), (454758, 4.04076e+06), (454733, 4.04076e+06), (454717, 4.04076e+06), (454692, 4.04075e+06), (454667, 4.04075e+06), (454642, 4.04075e+06), (454618, 4.04075e+06), (454593, 4.04075e+06), (454568, 4.04074e+06), (454564, 4.04074e+06), (454539, 4.04074e+06), (454537, 4.04074e+06), (454512, 4.04074e+06), (454487, 4.04074e+06), (454462, 4.04074e+06), (454437, 4.04075e+06), (454412, 4.04075e+06), (454387, 4.04075e+06), (454362, 4.04075e+06), (454337, 4.04075e+06), (454313, 4.04075e+06), (454309, 4.04075e+06), (454285, 4.04075e+06), (454282, 4.04075e+06), (454258, 4.04076e+06), (454233, 4.04076e+06), (454208, 4.04076e+06), (454184, 4.04077e+06), (454176, 4.04077e+06), (454152, 4.04078e+06), (454131, 4.04078e+06), (454108, 4.04079e+06), (454084, 4.0408e+06), (454061, 4.04081e+06), (454050, 4.04081e+06), (454026, 4.04082e+06), (454003, 4.04083e+06), (453980, 4.04084e+06), (453956, 4.04085e+06), (453933, 4.04086e+06), (453910, 4.04087e+06), (453887, 4.04088e+06), (453863, 4.04089e+06), (453861, 4.04089e+06), (453838, 4.04089e+06), (453815, 4.0409e+06), (453791, 4.04091e+06), (453776, 4.04092e+06), (453784, 4.04092e+06), (453794, 4.04092e+06), (453818, 4.04091e+06), (453841, 4.0409e+06), (453864, 4.04089e+06), (453887, 4.04088e+06), (453911, 4.04088e+06), (453934, 4.04087e+06), (453957, 4.04086e+06), (453981, 4.04085e+06), (454004, 4.04084e+06), (454027, 4.04083e+06), (454051, 4.04082e+06), (454063, 4.04082e+06), (454087, 4.04081e+06), (454110, 4.0408e+06), (454133, 4.04079e+06), (454154, 4.04078e+06), (454178, 4.04078e+06), (454185, 4.04078e+06), (454210, 4.04077e+06), (454234, 4.04077e+06), (454259, 4.04076e+06), (454283, 4.04076e+06), (454285, 4.04076e+06), (454310, 4.04076e+06), (454313, 4.04076e+06), (454338, 4.04076e+06), (454363, 4.04076e+06), (454387, 4.04075e+06), (454412, 4.04075e+06), (454437, 4.04075e+06), (454462, 4.04075e+06), (454487, 4.04075e+06), (454512, 4.04075e+06), (454537, 4.04075e+06), (454538, 4.04075e+06), (454563, 4.04075e+06), (454567, 4.04075e+06), (454592, 4.04076e+06), (454617, 4.04076e+06), (454617, 4.04076e+06), (454642, 4.04076e+06), (454667, 4.04076e+06), (454692, 4.04076e+06), (454717, 4.04076e+06), (454733, 4.04077e+06), (454758, 4.04077e+06), (454767, 4.04077e+06), (454792, 4.04077e+06), (454806, 4.04076e+06), (454831, 4.04076e+06), (454856, 4.04076e+06), (454881, 4.04075e+06), (454906, 4.04075e+06), (454930, 4.04075e+06), (454953, 4.04074e+06), (454978, 4.04074e+06), (455002, 4.04074e+06), (455027, 4.04073e+06), (455042, 4.04073e+06), (455066, 4.04073e+06), (455091, 4.04072e+06), (455113, 4.04072e+06), (455137, 4.04071e+06), (455161, 4.04071e+06), (455186, 4.0407e+06), (455204, 4.0407e+06), (455228, 4.04069e+06), (455253, 4.04069e+06), (455278, 4.04069e+06), (455285, 4.04069e+06), (455310, 4.04068e+06), (455315, 4.04068e+06)))

这篇关于多边形联合使用boost的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆