#include #include #include #include #include using namespace std; using namespace boost; using namespace boost::polygon; using namespace boost::polygon::operators; typedef point_data BPoint; typedef polygon_data BPolygon; typedef polygon_with_holes_data BPolygonWithHoles; typedef polygon_set_data BPolygonSet; int main(int argc, char *argv[]) { cout << "Start main" << endl; BPolygonSet hole_set; BPolygonSet rect_set; vector hole_points; vector rec_points; long double rect_data[] = { 234192743,152532547, 234178199,152561636, 233483178,154160183, 233603877,155705125, 233260158,157423720, 231628565,159028565, 230128565,160553565, 228544284,162111875, 228397404,162185315, 218301395,165831785, 216409102,167750000, 216150000,167750000, 213820027,167750000, 207360263,169595647, 205528561,171403561, 203628561,173328561, 201799044,175134318, 195425000,199539218, 195425000,199941616, 194787046,200539697, 194531139,200625000, 194332166,200625000, 192115266,200466650, 191903820,200360927, 189964073,198421180, 189843548,198180131, 189975000,195761423, 189975000,193488431, 189838748,190954145, 190019795,190773099, 191209455,189560992, 191324464,187099786, 191194559,184267848, 191320134,184016698, 193379529,182163243, 195271439,180246439, 197196439,178346439, 199093680,176424234, 208601713,166740126, 208844329,166618819, 211258693,166744567, 214588435,165299400, 217843400,165299400, 218270800,164871900, 218271300,164871900, 221793300,161349900, 221793300,161349400, 221982300,161160500, 221982300,161116835, 223864356,161225000, 225797136,161225000, 232190313,153870442, 232251883,153131604, 232493443,150474451, 232646447,150321447, 232871447,150096447, 233042893,149925000, 234343034,149925000, 234571180,150039073, 234753553,150221447, 234925000,150392893, 234925000,151203637 }; for (size_t i = 0; i < sizeof(rect_data) / sizeof(*rect_data); i += 2) { rec_points.push_back(BPoint(rect_data[i], rect_data[i + 1])); } rect_set |= BPolygon(rec_points.begin(), rec_points.end()); long double hole_1_data[] = { 191209300,199179000, 191176200,199301900, 191106800,199408500, 191091900,199430200, 191081900,199460400, 191081800,199492200, 191091500,199522400, 191110100,199548200, 191165349,199622456, 190464784,198921891, 190502800,198863500, 190601800,198783500, 190720700,198738000, 190847800,198731500, 190970700,198764600, 191077300,198834000, 191157300,198933000, 191202800,199051900, 191209300,199179000 }; hole_points.clear(); for (size_t i = 0; i < sizeof(hole_1_data) / sizeof(*hole_1_data); i += 2) { hole_points.push_back(BPoint(hole_1_data[i], hole_1_data[i + 1])); } hole_set |= BPolygon(hole_points.begin(), hole_points.end()); long double hole_2_data[] = { 192517800,197625700, 192505976,197723078, 192471192,197814796, 192415469,197895525, 192342046,197960572, 192255189,198006158, 192159946,198029633, 192061854,198029633, 191966611,198006158, 191879754,197960572, 191806331,197895525, 191750608,197814796, 191715824,197723078, 191704000,197625700, 191715824,197528322, 191750608,197436604, 191806331,197355875, 191879754,197290828, 191966611,197245242, 192061854,197221767, 192159946,197221767, 192255189,197245242, 192342046,197290828, 192415469,197355875, 192471192,197436604, 192505976,197528322, 192517800,197625700 }; hole_points.clear(); for (size_t i = 0; i < sizeof(hole_2_data) / sizeof(*hole_2_data); i += 2) { hole_points.push_back(BPoint(hole_2_data[i], hole_2_data[i + 1])); } hole_set |= BPolygon(hole_points.begin(), hole_points.end()); long double hole_3_data[] = { 193417500,200324300, 193415200,200451500, 193378752,200556899, 192632004,200503559, 192611700,200436900, 192614000,200309700, 192655600,200189400, 192732200,200087800, 192836500,200014800, 192958300,199977700, 193085500,199980000, 193205800,200021600, 193307400,200098200, 193380400,200202500, 193417500,200324300 }; hole_points.clear(); for (size_t i = 0; i < sizeof(hole_3_data) / sizeof(*hole_3_data); i += 2) { hole_points.push_back(BPoint(hole_3_data[i], hole_3_data[i + 1])); } hole_set |= BPolygon(hole_points.begin(), hole_points.end()); long double hole_4_data[] = { 193442300,198690000, 193424000,198703800, 193405800,198729900, 193399000,198743000, 193322400,198844600, 193218100,198917600, 193096300,198954700, 192969100,198952400, 192848800,198910800, 192747200,198834200, 192674200,198729900, 192637100,198608100, 192639400,198480900, 192681000,198360600, 192757600,198259000, 192861900,198186000, 192983700,198148900, 193110900,198151200, 193231200,198192800, 193332800,198269400, 193405800,198373700, 193407500,198377100, 193426700,198402500, 193442300,198413400, 193442300,198690000 }; hole_points.clear(); for (size_t i = 0; i < sizeof(hole_4_data) / sizeof(*hole_4_data); i += 2) { hole_points.push_back(BPoint(hole_4_data[i], hole_4_data[i + 1])); } hole_set |= BPolygon(hole_points.begin(), hole_points.end()); long double hole_5_data[] = { 193893400,195666300, 193862600,195789800, 193795100,195897800, 193697600,195979600, 193579600,196027300, 193452600,196036100, 193329100,196005300, 193221100,195937900, 193139300,195840400, 193091600,195722300, 193082700,195595300, 193113500,195471800, 193181000,195363800, 193191300,195349700, 193203200,195320200, 193205400,195288500, 193197800,195257700, 193181000,195230800, 193129100,195155400, 193087500,195035100, 193085000,194907800, 193122100,194786000, 193194900,194681600, 193203200,194670200, 193208400,194655100, 193208700,194639200, 193204100,194624000, 193194900,194611000, 193129100,194520400, 193087500,194400100, 193085100,194272800, 193122100,194151000, 193194900,194046600, 193203200,194035200, 193208400,194020100, 193208700,194004200, 193204100,193989000, 193194900,193976000, 193129100,193885400, 193087500,193765100, 193085100,193637800, 193122100,193516000, 193194900,193411600, 193296500,193334800, 193416800,193293200, 193544100,193290800, 193665900,193327800, 193770300,193400700, 193847000,193502200, 193888600,193622500, 193891100,193749800, 193854000,193871600, 193781200,193976000, 193772900,193987400, 193767700,194002500, 193767400,194018400, 193772100,194033600, 193781200,194046600, 193847000,194137200, 193888600,194257500, 193891100,194384800, 193854000,194506600, 193781200,194611000, 193772900,194622400, 193767700,194637500, 193767400,194653400, 193772100,194668600, 193781200,194681600, 193836800,194754200, 193884500,194872300, 193893400,194999300, 193862600,195122800, 193795100,195230800, 193784900,195244900, 193772900,195274400, 193770700,195306000, 193778300,195336900, 193795100,195363800, 193836800,195421200, 193884500,195539300, 193893400,195666300 }; hole_points.clear(); for (size_t i = 0; i < sizeof(hole_5_data) / sizeof(*hole_5_data); i += 2) { hole_points.push_back(BPoint(hole_5_data[i], hole_5_data[i + 1])); } hole_set |= BPolygon(hole_points.begin(), hole_points.end()); long double hole_6_data[] = { 194335900,200430000, 194316400,200555900, 194283250,200621506, 193547832,200568976, 193542400,200558400, 193522100,200432800, 193541600,200306900, 193599000,200193300, 193688700,200103000, 193802000,200044800, 193927600,200024500, 194053500,200044000, 194167100,200101400, 194257400,200191100, 194315600,200304400, 194335900,200430000 }; hole_points.clear(); for (size_t i = 0; i < sizeof(hole_6_data) / sizeof(*hole_6_data); i += 2) { hole_points.push_back(BPoint(hole_6_data[i], hole_6_data[i + 1])); } hole_set |= BPolygon(hole_points.begin(), hole_points.end()); long double hole_7_data[] = { 194357300,198495500, 194355000,198622700, 194313400,198743000, 194236800,198844600, 194132500,198917600, 194129100,198919300, 194103700,198938500, 194085500,198964500, 194076200,198995000, 194076800,199026800, 194087200,199056800, 194106400,199082200, 194132500,199100400, 194153100,199111300, 194253200,199190000, 194324000,199295800, 194325700,199299300, 194344300,199325000, 194348100,199327800, 194348100,199616700, 194335300,199626000, 194316600,199651600, 194313500,199657500, 194236800,199759100, 194132500,199832000, 194010700,199869100, 193883500,199866800, 193763100,199825300, 193661500,199748600, 193588600,199644300, 193551500,199522500, 193553800,199395300, 193595300,199274900, 193672000,199173300, 193776300,199100400, 193779700,199098700, 193805100,199079500, 193823300,199053400, 193832600,199023000, 193832000,198991200, 193821600,198961200, 193802400,198935800, 193776300,198917600, 193763200,198910800, 193661600,198834200, 193588600,198729900, 193586900,198726500, 193569300,198703200, 193569300,198400600, 193570400,198399800, 193588600,198373700, 193595400,198360600, 193672000,198259000, 193776300,198186000, 193898100,198148900, 194025300,198151200, 194145600,198192800, 194247200,198269400, 194320200,198373700, 194357300,198495500 }; hole_points.clear(); for (size_t i = 0; i < sizeof(hole_7_data) / sizeof(*hole_7_data); i += 2) { hole_points.push_back(BPoint(hole_7_data[i], hole_7_data[i + 1])); } hole_set |= BPolygon(hole_points.begin(), hole_points.end()); long double hole_8_data[] = { 195200631,200151961, 194787046,200539697, 194546002,200620045, 194510500,200573400, 194468400,200453200, 194465600,200325900, 194502200,200204000, 194574700,200099400, 194676000,200022200, 194697300,200006700, 195026000,200006700, 195036000,200002500, 195036300,200002900, 195061600,200022200, 195142100,200079200, 195200631,200151961 }; hole_points.clear(); for (size_t i = 0; i < sizeof(hole_8_data) / sizeof(*hole_8_data); i += 2) { hole_points.push_back(BPoint(hole_8_data[i], hole_8_data[i + 1])); } hole_set |= BPolygon(hole_points.begin(), hole_points.end()); long double hole_9_data[] = { 195325200,198584300, 195295300,198708000, 195228600,198816500, 195131700,198899000, 195014000,198947600, 194887100,198957400, 194763400,198927500, 194654900,198860800, 194572400,198763900, 194523800,198646200, 194514000,198519300, 194543900,198395600, 194610600,198287100, 194707500,198204600, 194729300,198186600, 194747000,198160200, 194755600,198129600, 194754300,198097800, 194743300,198068000, 194723600,198043100, 194697100,198025500, 194603100,197965200, 194520600,197868300, 194472000,197750600, 194462200,197623700, 194492100,197500000, 194558800,197391500, 194655700,197309000, 194773400,197260400, 194900300,197250600, 195024000,197280500, 195132500,197347200, 195215000,197444100, 195263500,197561800, 195273300,197688700, 195243500,197812400, 195176800,197920900, 195079900,198003400, 195058100,198021400, 195040400,198047800, 195031800,198078400, 195033100,198110200, 195044100,198140000, 195063800,198164900, 195090300,198182500, 195184300,198242800, 195266800,198339700, 195315400,198457400, 195325200,198584300 }; hole_points.clear(); for (size_t i = 0; i < sizeof(hole_9_data) / sizeof(*hole_9_data); i += 2) { hole_points.push_back(BPoint(hole_9_data[i], hole_9_data[i + 1])); } hole_set |= BPolygon(hole_points.begin(), hole_points.end()); long double hole_10_data[] = { 195536148,199113653, 195425000,199539218, 195425000,199725469, 195391500,199688400, 195382800,199677000, 195358300,199656700, 195328700,199644900, 195297000,199642900, 195266200,199650800, 195239300,199667800, 195219100,199692300, 195162900,199766300, 195061600,199843400, 195039700,199859300, 195024100,199879700, 194713000,199879700, 194701300,199862700, 194676000,199843400, 194670000,199840100, 194570000,199761300, 194499200,199655400, 194497500,199651900, 194478900,199626200, 194475100,199623400, 194475100,199334500, 194487900,199325200, 194506600,199299600, 194552100,199229500, 194646600,199144100, 194762800,199092100, 194889400,199078600, 195013900,199104800, 195124300,199168300, 195209700,199262700, 195218400,199274200, 195242900,199294500, 195272500,199306300, 195304200,199308300, 195335000,199300400, 195361900,199283400, 195382100,199258900, 195415700,199210700, 195510100,199125300, 195536148,199113653 }; hole_points.clear(); for (size_t i = 0; i < sizeof(hole_10_data) / sizeof(*hole_10_data); i += 2) { hole_points.push_back(BPoint(hole_10_data[i], hole_10_data[i + 1])); } hole_set |= BPolygon(hole_points.begin(), hole_points.end()); long double hole_11_data[] = { 195721300,195709900, 195687700,195832700, 195617800,195939200, 195518500,196018800, 195399400,196063800, 195272300,196069800, 195149500,196036200, 195043000,195966300, 194963400,195867000, 194918400,195747900, 194912400,195620700, 194946000,195497900, 195015900,195391500, 195029100,195373500, 195040300,195343700, 195041700,195311900, 195033300,195281300, 195015900,195254600, 194957900,195172400, 194916300,195052100, 194913800,194924800, 194950900,194803000, 195023700,194698600, 195032000,194687200, 195037200,194672200, 195037500,194656200, 195032900,194641000, 195023700,194628000, 194957900,194537400, 194916300,194417100, 194913900,194289800, 194950900,194168000, 195023700,194063600, 195032000,194052200, 195037200,194037200, 195037500,194021200, 195032900,194006000, 195023700,193993000, 194957900,193902400, 194916300,193782100, 194913900,193654800, 194950900,193533000, 195023700,193428600, 195032000,193417200, 195037200,193402200, 195037500,193386200, 195032900,193371000, 195023700,193358000, 194957900,193267400, 194916300,193147100, 194913900,193019800, 194950900,192898000, 195023700,192793600, 195125300,192716900, 195245600,192675200, 195372900,192672800, 195494700,192709800, 195599100,192782700, 195675800,192884200, 195717400,193004500, 195719900,193131800, 195682800,193253600, 195610000,193358000, 195601700,193369400, 195596500,193384500, 195596200,193400400, 195600900,193415600, 195610000,193428600, 195675800,193519200, 195717400,193639500, 195719900,193766800, 195682800,193888600, 195610000,193993000, 195601700,194004400, 195596500,194019500, 195596200,194035400, 195600900,194050600, 195610000,194063600, 195675800,194154200, 195717400,194274500, 195719900,194401800, 195682800,194523600, 195610000,194628000, 195601700,194639400, 195596500,194654500, 195596200,194670400, 195600900,194685600, 195610000,194698600, 195670300,194779200, 195715300,194898300, 195721300,195025400, 195687700,195148200, 195617800,195254600, 195604700,195272800, 195593500,195302500, 195592000,195334300, 195600300,195365000, 195617800,195391500, 195670300,195463700, 195715300,195582800, 195721300,195709900 }; hole_points.clear(); for (size_t i = 0; i < sizeof(hole_11_data) / sizeof(*hole_11_data); i += 2) { hole_points.push_back(BPoint(hole_11_data[i], hole_11_data[i + 1])); } hole_set |= BPolygon(hole_points.begin(), hole_points.end()); long double hole_12_data[] = { 231627700,156766300, 231615876,156863678, 231581092,156955396, 231525369,157036125, 231451946,157101172, 231365089,157146758, 231269846,157170233, 231171754,157170233, 231076511,157146758, 230989654,157101172, 230916231,157036125, 230860508,156955396, 230825724,156863678, 230813900,156766300, 230825724,156668922, 230860508,156577204, 230916231,156496475, 230989654,156431428, 231076511,156385842, 231171754,156362367, 231269846,156362367, 231365089,156385842, 231451946,156431428, 231525369,156496475, 231581092,156577204, 231615876,156668922, 231627700,156766300 }; hole_points.clear(); for (size_t i = 0; i < sizeof(hole_12_data) / sizeof(*hole_12_data); i += 2) { hole_points.push_back(BPoint(hole_12_data[i], hole_12_data[i + 1])); } hole_set |= BPolygon(hole_points.begin(), hole_points.end()); long double hole_13_data[] = { 232827755,150140138, 232801600,150305200, 232720400,150464700, 232593800,150591200, 232477433,150650551, 232493443,150474451, 232646447,150321447, 232827755,150140138 }; hole_points.clear(); for (size_t i = 0; i < sizeof(hole_13_data) / sizeof(*hole_13_data); i += 2) { hole_points.push_back(BPoint(hole_13_data[i], hole_13_data[i + 1])); } hole_set |= BPolygon(hole_points.begin(), hole_points.end()); long double hole_14_data[] = { 233362303,156912990, 233297275,157238132, 233291600,157222600, 233287000,157095400, 233321900,156973000, 233362303,156912990 }; hole_points.clear(); for (size_t i = 0; i < sizeof(hole_14_data) / sizeof(*hole_14_data); i += 2) { hole_points.push_back(BPoint(hole_14_data[i], hole_14_data[i + 1])); } hole_set |= BPolygon(hole_points.begin(), hole_points.end()); long double hole_15_data[] = { 233528178,156083619, 233397669,156736164, 233393000,156729200, 233335300,156649800, 233291600,156530200, 233287000,156403000, 233321900,156280600, 233393000,156174900, 233493200,156096400, 233528178,156083619 }; hole_points.clear(); for (size_t i = 0; i < sizeof(hole_15_data) / sizeof(*hole_15_data); i += 2) { hole_points.push_back(BPoint(hole_15_data[i], hole_15_data[i + 1])); } hole_set |= BPolygon(hole_points.begin(), hole_points.end()); long double hole_16_data[] = { 234262700,152323800, 234247248,152433629, 234192743,152532547, 234178199,152561636, 234123012,152688565, 234042700,152774600, 234061053,152831071, 233483178,154160183, 233551326,155032483, 233514200,155026600, 233354900,154945400, 233228400,154818900, 233147200,154659500, 233119200,154482800, 233119200,153593500, 233136200,153455000, 233206200,153290300, 233323600,153155400, 233311500,153131500, 233276100,153009200, 233280300,152881900, 233323600,152762200, 233228400,152660100, 233147200,152500700, 233119200,152324100, 233119200,151612600, 233147200,151435900, 233228400,151276500, 233354900,151150000, 233514200,151068800, 233690900,151040800, 233867600,151068800, 234027000,151150000, 234153500,151276500, 234234700,151435900, 234262700,151612600, 234262700,152323800 }; hole_points.clear(); for (size_t i = 0; i < sizeof(hole_16_data) / sizeof(*hole_16_data); i += 2) { hole_points.push_back(BPoint(hole_16_data[i], hole_16_data[i + 1])); } hole_set |= BPolygon(hole_points.begin(), hole_points.end()); long double hole_17_data[] = { 234859075,150326969, 234773200,150389300, 234603100,150444600, 234424200,150444600, 234254000,150389300, 234109300,150284200, 233750100,149925000, 234343034,149925000, 234571180,150039073, 234753553,150221447, 234859075,150326969 }; hole_points.clear(); for (size_t i = 0; i < sizeof(hole_17_data) / sizeof(*hole_17_data); i += 2) { hole_points.push_back(BPoint(hole_17_data[i], hole_17_data[i + 1])); } hole_set |= BPolygon(hole_points.begin(), hole_points.end()); cout << "Data is set" < result; //CRASH IS HERE --------------- rect_set.get(result); cout << "Polygons with holes data is set" <