La classe "\fire\gear\op\Utility" consente di eseguire determinate operazioni (unione, intersezione, ...) fra le geometrie.
Source code:
include("fxcore.php");
$wktReader = new \fire\gear\io\WktReader();
$multiPolygon0Wkt = "MULTIPOLYGON (((15.8538446426392170 40.5608825683594318, 15.8545198440552326 40.5535812377929688, 15.8559789657593910 40.5504226684571449, 15.8591308593750000 40.5456047058104900, 15.8599224090577309 40.5446624755859943, 15.8622837066650959 40.5429420471191406, 15.8642511367797283 40.5415267944335938, 15.8653068542480469 40.5410308837891193, 15.8660707473754883 40.5407409667968182, 15.8669509887695312 40.5404090881348793, 15.8675861358643147 40.5401458740235512, 15.8683357238769531 40.5397224426269531, 15.8688859939576332 40.5393257141113281, 15.8723373413086506 40.5368194580078693, 15.8732719421386150 40.5360488891602131, 15.8735275268555824 40.5358314514161293, 15.8715524673461914 40.5336723327637287, 15.8695774078370277 40.5315818786621662, 15.8692302703857990 40.5312232971191975, 15.8689079284667969 40.5309181213378338, 15.8685369491578285 40.5306053161621662, 15.8681545257569496 40.5302581787109375, 15.8667545318602947 40.5288619995118324, 15.8666467666626545 40.5286636352540199, 15.8665103912354652 40.5281982421875000, 15.8664236068726154 40.5268936157227131, 15.8663015365600018 40.5210723876954262, 15.8663091659545898 40.5207328796387287, 15.8671760559081463 40.5184478759765625, 15.8676919937133789 40.5172424316407387, 15.8681459426879314 40.5167388916015625, 15.8700370788573650 40.5150833129883381, 15.8729095458984943 40.5127449035645668, 15.8759603500366779 40.5103988647462074, 15.8717851638793377 40.5069770812988850, 15.8646421432496254 40.4985542297363281, 15.8522901535034180 40.4913749694825356, 15.8394947052001953 40.4881210327148438, 15.8248863220214844 40.4821891784668537, 15.8191061019898029 40.4793014526368324, 15.8157482147216797 40.4767608642578693, 15.8150339126586346 40.4762039184570881, 15.8143911361695473 40.4757957458495525, 15.8117017745971680 40.4748573303222656, 15.8008689880371094 40.4714775085449787, 15.8002176284790039 40.4714698791503906, 15.7796068191529457 40.4730720520020668, 15.7760887145996662 40.4739608764649574, 15.7727451324462891 40.4745445251465412, 15.7682657241822426 40.4747352600098225, 15.7606163024902344 40.4795417785645100, 15.7600421905518147 40.4797859191895668, 15.7594642639160156 40.4799003601074787, 15.7556257247924805 40.4806175231933594, 15.7441606521607582 40.4850502014160725, 15.7393007278442951 40.4872283935547443, 15.7445516586304848 40.4926376342774574, 15.7487859725953285 40.4977684020996094, 15.7493867874145508 40.4987564086915199, 15.7495565414428143 40.4991607666015057, 15.7496786117554279 40.4995574951171875, 15.7497301101684570 40.4999465942382812, 15.7497787475585369 40.5011749267578693, 15.7495718002318768 40.5016822814942543, 15.7368612289429279 40.5123214721679119, 15.7363195419312092 40.5124702453613281, 15.7241468429565430 40.5187530517579262, 15.7226142883300781 40.5266647338867188, 15.7185382843017010 40.5307083129883381, 15.7179079055786133 40.5314064025879475, 15.7132110595703125 40.5393524169923012, 15.7129688262940590 40.5399475097657387, 15.7127122879027752 40.5470695495606606, 15.7127056121827309 40.5497283935546875, 15.7135953903199379 40.5522346496583168, 15.7169923782349201 40.5562400817872231, 15.7173366546630859 40.5565338134766762, 15.7198648452758221 40.5585823059082031, 15.7202062606811523 40.5586090087891762, 15.7215976715087322 40.5584716796874432, 15.7221050262451172 40.5583801269531818, 15.7233676910400391 40.5583953857422443, 15.7269163131715004 40.5586585998535725, 15.7293500900269123 40.5598449707031250, 15.7295894622803303 40.5602149963379475, 15.7296037673950764 40.5604553222656818, 15.7295856475831215 40.5610351562500568, 15.7313852310181232 40.5625457763671875, 15.7344303131103516 40.5632553100585938, 15.7388954162598225 40.5642356872559731, 15.7431993484498207 40.5658912658691975, 15.7440080642700195 40.5662155151367756, 15.7445068359375000 40.5665092468262287, 15.7459239959716228 40.5675773620605469, 15.7475357055664062 40.5691719055176350, 15.7492799758912270 40.5708351135253906, 15.7497911453247639 40.5711021423340981, 15.7499389648438637 40.5711669921875568, 15.7500877380371094 40.5712242126464844, 15.7504787445069496 40.5712852478027912, 15.7510452270508381 40.5702171325683594, 15.7522373199463459 40.5679244995117756, 15.7522583007811932 40.5676460266113850, 15.7494344711303711 40.5634994506835938, 15.7472267150878906 40.5603446960449219, 15.7468805313110920 40.5599784851074787, 15.7466039657593342 40.5596084594727699, 15.7464113235474770 40.5592231750488850, 15.7456111907959553 40.5574531555175781, 15.7458686828612713 40.5572738647462074, 15.7463026046753498 40.5570907592774574, 15.7525777816773598 40.5551147460938068, 15.7602519989013672 40.5560455322265625, 15.7651538848876953 40.5571289062501137, 15.7656879425048828 40.5572662353516193, 15.7660112380982014 40.5575103759766762, 15.7662124633789062 40.5577239990234375, 15.7663812637330238 40.5579032897949787, 15.7667150497437660 40.5583152770996662, 15.7669811248779865 40.5587234497070312, 15.7671527862549965 40.5592803955078125, 15.7670879364013103 40.5598182678223225, 15.7670574188233559 40.5602607727051918, 15.7670516967774006 40.5607566833496662, 15.7670478820800213 40.5615844726562500, 15.7670755386353107 40.5620079040526775, 15.7671909332274822 40.5627746582031818, 15.7691774368286133 40.5627212524414062, 15.7696352005005451 40.5627021789551350, 15.7703800201417152 40.5626335144042969, 15.7776460647583576 40.5588264465332031, 15.7778453826904865 40.5585784912109943, 15.7791538238526527 40.5563850402832600, 15.7793273925782387 40.5559654235839844, 15.7793703079224201 40.5555763244628906, 15.7793540954590412 40.5553016662598793, 15.7790346145631020 40.5543518066406818, 15.7787961959840004 40.5539779663086506, 15.7785310745239258 40.5535507202148438, 15.7785387039184570 40.5531997680664062, 15.7789058685302166 40.5502548217774574, 15.7791185379028320 40.5492248535156818, 15.7792463302612305 40.5489120483399574, 15.7795467376708984 40.5485382080079262, 15.7819976806641762 40.5459632873536293, 15.7823133468627930 40.5457229614257812, 15.7830152511597817 40.5451965332031818, 15.7834987640380291 40.5450706481933594, 15.7937431335448650 40.5425491333008381, 15.7943229675292400 40.5426063537597656, 15.7952251434326740 40.5429382324219318, 15.8102560043334961 40.5488815307618324, 15.8114309310913086 40.5504150390626137, 15.8120470046998207 40.5513305664063068, 15.8119897842406658 40.5516281127929688, 15.8118638992310707 40.5519447326660156, 15.8118076324462322 40.5521774291991619, 15.8117523193360512 40.5524711608886150, 15.8116979599000160 40.5528373718262856, 15.8117837905883221 40.5531616210937500, 15.8131284713746254 40.5568275451661293, 15.8133306503295898 40.5571403503418537, 15.8153810501098633 40.5586776733398438, 15.8156433105468750 40.5588188171386719, 15.8166618347167969 40.5590553283691975, 15.8169631958007812 40.5589637756347656, 15.8172283172608559 40.5588798522949787, 15.8177566528320881 40.5586891174316975, 15.8233280181884766 40.5565147399902344, 15.8257532119750977 40.5547218322755043, 15.8359336853027344 40.5539093017578125, 15.8414011001586914 40.5547943115235512, 15.8456468582152752 40.5581321716309731, 15.8459463119506836 40.5583305358887856, 15.8538446426392170 40.5608825683594318)))";
$multiPolygon0 = $wktReader->read($multiPolygon0Wkt);
$multiPolygon1Wkt = "MULTIPOLYGON (((10.7099294662476723 44.1559104919434162, 10.7077074050903889 44.1540794372559731, 10.7056655883789062 44.1487884521484943, 10.7036256790160564 44.1430664062500568, 10.7039699554443928 44.1424140930176350, 10.7166948318482014 44.1294021606446449, 10.7175035476685707 44.1288528442382812, 10.7183647155762287 44.1283607482909588, 10.7195405960083576 44.1279830932617756, 10.7208709716796307 44.1277198791504475, 10.7121505737304688 44.1191825866700356, 10.7047891616821857 44.1203613281250568, 10.7027511596679119 44.1204376220704262, 10.6932439804077148 44.1196975708007812, 10.6886167526245686 44.1191520690919106, 10.6874828338623047 44.1188201904297443, 10.6712932586669922 44.1129608154298012, 10.6668691635131268 44.1102142333984375, 10.6641130447388832 44.1103477478027912, 10.6575088500977699 44.1105690002442543, 10.6557674407958416 44.1103973388671875, 10.6528263092040447 44.1093139648438068, 10.6393613815307617 44.1126594543457600, 10.6297006607056801 44.1185073852540199, 10.6250629425049397 44.1213188171386719, 10.6252479553222656 44.1215667724610512, 10.6256742477417561 44.1225242614746662, 10.6258726119995686 44.1234130859375568, 10.6263313293458168 44.1277999877930256, 10.6256618499755859 44.1353073120118324, 10.6255302429199787 44.1423339843751137, 10.6422185897828285 44.1607856750487713, 10.6437520980836098 44.1610412597657387, 10.6449775695801350 44.1610488891602699, 10.6594161987305824 44.1572494506837074, 10.6603441238403320 44.1569137573242188, 10.6613960266114418 44.1562423706055256, 10.6624889373779297 44.1553421020508949, 10.6735124588012695 44.1555747985840412, 10.6799898147583008 44.1573638916016193, 10.6812229156495277 44.1576232910157387, 10.6925630569457439 44.1584281921387287, 10.6949939727783203 44.1585998535155682, 10.7099294662476723 44.1559104919434162)))";
$multiPolygon1 = $wktReader->read($multiPolygon1Wkt);
$geometries = new \fire\vector_fire_gear_geom_Geometry_pointer();
$geometries->push($multiPolygon0);
$geometries->push($multiPolygon1);
$utility = new \fire\gear\op\Utility();
$mergedGeometry = $utility->geometrymerge($geometries);
echo "merged geometry: " . $mergedGeometry->toString() . "\n";