from matplotlib import pyplot as plt
from matplotlib.path import Path
from matplotlib.patches import PathPatch

import numpy
import geopandas as gpd
import shapely
from shapely.wkt import loads
import cartagen as c4

polygons = [
    loads('POLYGON ((435888.46215316333 5838337.5659597125, 435940.8931990471 5838326.351843779, 435919.7226445056 5838373.807868073, 436071.6185537182 5838524.273491832, 436137.36694733734 5838450.149316189, 436002.1276122302 5838362.680255206, 435994.03550677863 5838263.997827742, 436037.5327092578 5838206.549812298, 436119.29591556377 5838265.152831649, 436180.4548014965 5838257.467065572, 436248.8616903421 5838350.361191608, 436256.7206964943 5838416.217930336, 436396.935918527 5838296.047051908, 436456.92475857347 5838287.356192507, 436460.7062192432 5838251.432936372, 436290.96078367846 5838085.208967579, 436172.2765009194 5838026.603785082, 436121.3708416951 5838069.321605785, 436068.6103694678 5838039.432980151, 436000.7846222687 5838159.04284669, 435944.21395977965 5838150.259802227, 435897.40547587577 5838196.851164992, 435892.15179029736 5838243.394933615, 435929.82573184825 5838283.338541016, 435888.46215316333 5838337.5659597125))'), 
    loads('POLYGON ((434131.95092200907 5841077.591325291, 434184.33923659014 5841099.223846519, 434308.04560471507 5841329.427167279, 434759.36746782315 5841594.379671, 434845.40605196013 5841708.1876220275, 434907.4305252131 5841710.67014325, 434929.3754693534 5841641.102183132, 434978.49961528985 5841630.218630747, 434995.76598381734 5841556.92693702, 434941.8999178329 5841495.209011429, 434961.7885008163 5841322.060525463, 435003.3549585595 5841309.084695558, 435000.8660468272 5841117.162735313, 435051.02810076467 5840944.398732604, 434787.437059205 5840970.975196471, 434736.31798006996 5840895.715445147, 434648.1224225399 5840972.722637613, 434418.9608900709 5841008.482373717, 434339.98875401274 5841170.821313138, 434215.6559852879 5841038.273543496, 434302.14726848085 5841014.761308458, 434191.95240404515 5840978.970275829, 434131.95092200907 5841077.591325291))'), 
    loads('POLYGON ((438744.1591730058 5841615.031622161, 438892.4602466935 5841905.052825023, 438848.15281327436 5841955.282663452, 438900.1169541334 5841939.837789541, 438896.5643570225 5841969.961577766, 438961.46579618467 5842006.967346385, 439020.9268571488 5841988.5254053, 439022.9573872155 5841940.109440691, 439097.7727180954 5841873.091719978, 439183.71450310794 5841852.4419880165, 439157.7622485398 5841886.903515556, 439176.30162118474 5841923.156020332, 439238.79539356334 5841916.1565690655, 439231.6837018122 5841830.068023073, 439286.96291293384 5841825.480062755, 439341.8555395357 5841776.42924468, 439406.9419944463 5841889.430207154, 439475.3936883428 5841859.832978792, 439431.6135444107 5841832.749641377, 439444.3633835079 5841772.434660038, 439408.1974862342 5841667.370416277, 439211.3903252051 5841440.577485717, 439076.21488001244 5841522.8486344535, 438744.1591730058 5841615.031622161))'), 
    loads('POLYGON ((433418.71190912783 5836929.798634336, 433659.47981100215 5836905.276679269, 433668.21561208146 5836756.020817433, 433602.2419814096 5836708.408622952, 433632.13055972295 5836663.046510151, 433584.7599975355 5836544.931242422, 433375.3352525447 5836587.97468498, 433283.3346193003 5836645.65842862, 433289.116422719 5836670.572821362, 433126.516444247 5836822.73154445, 433234.37223095674 5836925.789360948, 433269.1784370338 5836931.20437287, 433370.17684758233 5836836.672301595, 433418.71190912783 5836929.798634336))'), 
    loads('POLYGON ((436184.12383142195 5839154.238600778, 436396.2863703565 5839118.347751083, 436434.9727940924 5838983.22824635, 436235.1260932012 5838869.638019863, 436156.6223819058 5839030.35136502, 436184.12383142195 5839154.238600778))'), 
    loads('POLYGON ((433625.21766112687 5838929.232270054, 434054.05551017134 5838846.188936346, 434045.1481955653 5838571.738113557, 433810.89276725834 5838408.085630546, 433844.6094530746 5838355.11700207, 433736.7294820138 5838354.457842097, 433983.92242721893 5838152.6352337515, 433981.96193913335 5837979.803710261, 433890.1766859469 5837840.2463391535, 433831.0734049859 5837863.143786942, 433814.0270153967 5837828.187159686, 433743.21724290913 5837840.178262217, 433594.7380599621 5837769.678252174, 433555.5205318939 5837784.213450728, 433362.6031515309 5837727.287482916, 433396.6481726916 5837754.78914945, 433389.1035911258 5837791.91364446, 433328.87036118197 5837907.345853843, 433238.17155931296 5837991.894728812, 433302.02323370497 5838133.230549921, 433282.3970846156 5838151.900636096, 433386.29979299736 5838249.497219252, 433427.38247358537 5838400.100795887, 433409.18878996675 5838455.942366389, 433339.62987156067 5838476.6325079985, 433320.79655416857 5838514.323781024, 433243.1068045958 5838430.226283343, 433205.2926731026 5838441.113517959, 433176.02535476367 5838516.690705152, 433186.3510343075 5838623.632954162, 433229.1678998241 5838606.878340247, 433276.57749614905 5838702.215867051, 433125.21745921054 5838762.76311169, 433113.0885135726 5838843.087920999, 433164.60149449325 5838917.027560966, 433508.41876700695 5838780.498068051, 433578.7102853304 5838811.657919621, 433625.21766112687 5838929.232270054))'), 
    loads('POLYGON ((434520.55293473275 5837680.715529423, 434532.79827876826 5837548.399208486, 434599.9386054111 5837506.959173667, 434575.5371866966 5837360.54183509, 434512.3476201028 5837316.677493032, 434365.5121595661 5837263.169202338, 434314.415515527 5837353.07909021, 434279.63178592507 5837349.846344919, 434298.11513490457 5837383.767026574, 434249.3206757847 5837485.271041523, 434074.7076516913 5837484.653617789, 434073.5357237415 5837521.704786164, 434520.55293473275 5837680.715529423))'), 
    loads('POLYGON ((437234.4639778732 5837020.387110485, 437096.6278762614 5837007.051168503, 437102.6783621935 5836843.587972545, 436906.26280181576 5836846.91470541, 436893.794593496 5836894.989202389, 436937.12174754724 5836923.236990695, 436885.56172319537 5836971.045078543, 436894.54122969374 5837008.556311185, 436933.1182160364 5836989.512474065, 437019.69614931743 5837076.509352849, 437189.30666096904 5837318.2282666555, 437498.51615052833 5837043.704148302, 437498.38978284894 5837020.612619691, 437345.85135668836 5837025.17346541, 437267.29689891695 5836931.259515874, 437234.4639778732 5837020.387110485))'), 
    loads('POLYGON ((432513.113609804 5838588.623404666, 432707.27432678605 5838535.595099409, 432817.8754441205 5838455.90627258, 432892.2476822679 5838373.720701663, 432885.00639348774 5838244.521819416, 432841.4611531877 5838209.134701903, 432782.68961740367 5838262.090656803, 432671.34269080905 5838274.96653952, 432584.42858067824 5838168.018883473, 432548.481210298 5838060.934085193, 432450.5778897033 5837954.982890433, 432394.43341719103 5837945.010368961, 432359.61057319684 5838262.785236553, 432317.6977320788 5838360.579451446, 432395.35142781015 5838416.358888608, 432471.764204902 5838555.387321606, 432513.113609804 5838588.623404666))'), 
    loads('POLYGON ((437475.87546502217 5838647.0706989, 437579.1803236871 5838627.691368329, 437617.5112181499 5838562.595148004, 437712.4195585414 5838506.562060105, 437679.00597765966 5838398.737178012, 437554.0347219636 5838237.524292974, 437358.9015689641 5838118.248515786, 437284.23217553605 5838233.15680149, 437226.8338350631 5838215.676193969, 437162.4710022044 5838283.54423088, 437216.45500065264 5838281.455580119, 437475.87546502217 5838647.0706989))'), 
    loads('POLYGON ((439677.11137764837 5842245.428830263, 439644.88272171794 5842287.961969953, 439588.2732357877 5842278.471855601, 439428.82172691275 5842390.840772775, 439245.67896599113 5842315.003127662, 439153.78412762727 5842201.30018245, 439053.9213957755 5842172.416581024, 439000.2809617451 5842205.32173179, 439139.002992396 5842358.719679927, 439006.6276940099 5842458.403847397, 438974.1098431619 5842525.644914529, 439104.090213065 5842674.50316079, 439151.077666745 5842788.0253535975, 439293.6482065873 5842656.239776672, 439332.2321464627 5842672.488962628, 439353.3095921048 5842739.088333199, 439415.62010784994 5842740.518556829, 439431.281003367 5842814.450159231, 439352.7851907499 5843058.832823394, 439545.523369616 5843099.823095415, 439782.67465728545 5843087.078893425, 439762.1670531578 5843044.161075671, 439707.04816341895 5843038.576981821, 439781.2620502357 5842969.372386273, 439820.86138201755 5842768.331528224, 439747.7226273767 5842709.628399414, 439667.2715614849 5842705.512781493, 439702.8274476905 5842686.626524755, 439703.8164981119 5842612.059518331, 439742.2615423626 5842616.6820139615, 439670.96977963333 5842446.053561819, 439725.7799321541 5842426.208778186, 439699.7989025826 5842337.436839574, 439746.40090898116 5842345.884527162, 439749.8948215566 5842323.171426333, 439677.11137764837 5842245.428830263))'), 
    loads('POLYGON ((437658.0700365105 5838074.585187532, 437857.68836264475 5837996.687358683, 437943.36859000695 5837895.445519225, 438010.6456951695 5837461.802373696, 437996.91804472345 5837378.158694957, 437854.79161433346 5837357.622777686, 437758.45235819137 5837413.957754818, 437696.5874672676 5837385.641426652, 437679.18942045746 5837445.107545131, 437641.40129957034 5837432.7731748745, 437609.88510356605 5837461.323790965, 437681.3567059782 5837567.815543429, 437621.923720943 5837623.277576104, 437673.77058051556 5837747.578860779, 437583.7365236783 5837823.448699046, 437633.5467970926 5837996.14688134, 437603.4933379278 5838026.134508118, 437658.0700365105 5838074.585187532))'), 
    loads('POLYGON ((435300.4747907212 5840765.346744953, 435833.1673013196 5840689.134845014, 435859.6738363637 5840676.766819964, 435838.5289634489 5840639.23519757, 435861.5963576146 5840592.471746899, 435972.7472234385 5840660.630560189, 436055.1903177948 5840650.952365534, 436202.20912186155 5840427.225252342, 436286.6647997647 5840379.018711335, 436194.00853982323 5840344.503495078, 436227.3257391886 5840257.665694148, 436209.5260240379 5840221.405305614, 436122.7917153982 5840235.348018195, 436110.8784522688 5840294.620678964, 436183.86358419433 5840381.38109643, 436112.5191279016 5840473.748718111, 436037.2089966959 5840473.899985528, 436035.3338668257 5840311.91918074, 435981.5803555044 5840197.329043628, 435894.0170878504 5840114.5159218, 435806.3848039689 5840113.355694656, 435835.3472255263 5840075.534431778, 435804.7537142657 5840059.908376773, 435819.2938490822 5840039.834863706, 435777.9146041347 5840055.861669651, 435692.1114019231 5840024.895015772, 435660.4929006529 5839832.467319922, 435683.7753575142 5839741.685180793, 435631.6104259799 5839801.856964893, 435609.7948618137 5839768.69481451, 435480.2461083139 5839774.264818053, 435439.58207463747 5839638.460912539, 435283.2225473152 5839642.159216454, 435277.797848115 5839674.183920512, 435124.54523687565 5839696.294300725, 435164.9230125718 5839895.8839361435, 435034.5580534426 5839868.331773276, 434983.5863201991 5839906.693851519, 435044.2210319098 5840066.972505955, 435071.80528033496 5840047.621460592, 435168.6997947538 5840073.526320874, 435156.94991047564 5840122.33381184, 435348.5966734331 5840226.906391054, 435328.797277433 5840293.533729543, 435407.49509270897 5840336.21058655, 435308.4543738429 5840665.724629593, 435300.4747907212 5840765.346744953))'), 
    loads('POLYGON ((433948.10389098193 5840578.5350571, 434184.2082749477 5840275.224016302, 434234.5219571454 5840114.829023713, 434197.6694166062 5839841.38525443, 434288.94100528356 5839793.559081494, 434314.71792834473 5839717.135527456, 434287.0888606703 5839643.503483465, 434158.4804176751 5839642.505452664, 434132.7077320576 5839732.148556896, 434027.7881942933 5839764.147493749, 433970.6479381878 5839744.169740746, 433943.6851253232 5839984.487981504, 433994.42277711164 5840014.419102088, 433982.7653426645 5840071.940852612, 433814.0099445859 5840132.707702513, 433593.58653718536 5840401.826734472, 433605.4717885324 5840428.280327115, 433724.8995207038 5840423.288891084, 433751.7066596533 5840514.083355255, 433796.4503709986 5840500.49703872, 433948.10389098193 5840578.5350571))'), 
    loads('POLYGON ((434387.5876874035 5838433.425777906, 434457.5200694326 5838382.2183142295, 434420.11466010526 5838377.998952098, 434409.2580625182 5838327.427635842, 434263.4134588902 5838209.695821453, 434232.2105687604 5838266.994219709, 434270.10778393917 5838314.495919528, 434227.5475343507 5838328.056455802, 434230.08252553374 5838359.984639056, 434282.76421702973 5838446.97392042, 434387.5876874035 5838433.425777906))'), 
    loads('POLYGON ((436198.6908933333 5841581.465797829, 436428.80841828603 5841440.294953382, 436511.2937195157 5841346.4765678765, 436629.3581313558 5841310.510236897, 436590.56444679847 5841188.179497353, 436553.59472383413 5841122.933965457, 436418.33074981935 5841161.860517503, 436264.65801720147 5841062.378190436, 436107.6121539338 5841008.994886072, 436102.20182584616 5840979.561307866, 436012.1107597597 5840979.448713567, 436024.88632559864 5841119.664144001, 436142.124254684 5841199.959824378, 436282.30825182854 5841235.377161434, 436272.1545184786 5841296.52518102, 436182.7339651442 5841367.026767642, 436133.38372703665 5841383.150581262, 436042.0344002508 5841349.776971372, 436019.68970405817 5841421.529861518, 436187.6012376766 5841536.984112226, 436198.6908933333 5841581.465797829))'), 
    loads('POLYGON ((438496.24554276303 5841517.008504448, 438564.09391735203 5841497.598702334, 438589.7096563528 5841178.33777068, 438668.177140631 5841150.809172387, 438678.58430234494 5841039.235190991, 438622.1786664541 5841021.746083079, 438647.0518788545 5840798.844976647, 438467.44557981694 5840810.288458181, 438477.29886259214 5841018.389930286, 438411.5115909481 5841162.591248807, 438432.1300071341 5841240.230267541, 438381.81662025274 5841358.094553814, 438468.7184871109 5841479.846290796, 438456.5880051398 5841556.280172088, 438508.5983481261 5841581.525513713, 438496.24554276303 5841517.008504448))'), 
    loads('POLYGON ((439865.3160703698 5841200.50082061, 439933.85691342474 5841178.893055662, 439889.09082930075 5841057.522265752, 439853.7897029726 5841012.613802472, 439801.8275409636 5841015.566559835, 439783.2323338341 5841107.478973472, 439865.3160703698 5841200.50082061))'), 
    loads('POLYGON ((437757.2813785214 5838781.045738672, 437885.2069215074 5839019.950731803, 437948.0166151154 5839372.949215197, 437894.5496881364 5839726.615066124, 438005.9918316761 5839892.660296771, 438030.6347577574 5840066.422010112, 438105.34325547103 5840003.350850774, 438135.37109196204 5840032.051487567, 438189.522952049 5840018.76736287, 438219.04762399226 5840090.624579335, 438348.6756459882 5840066.997121352, 438265.8787468197 5840254.245637368, 438585.35018246714 5840387.012008321, 438590.8771388957 5840279.138322248, 438629.9869552675 5840218.665579786, 438616.0699262414 5840168.706402262, 438523.5160023931 5840057.938356003, 438397.53814737085 5839998.419829915, 438478.0415928827 5839740.304061288, 438466.00728344225 5839543.590454261, 438655.85443648294 5839530.863716479, 438732.9223734998 5839581.807643926, 438720.0305118105 5839715.621423555, 438781.08256544353 5839832.28088838, 438789.366188 5839944.342673349, 438721.0527057889 5839960.124349972, 438696.9747059721 5840005.741971803, 438722.933437115 5840203.7519995365, 438807.0041705342 5840368.089356527, 438829.67685698665 5840228.627453787, 438902.0909454909 5840143.491601106, 438953.3007638409 5840199.396191322, 439071.33287329075 5840065.621596159, 439199.610596751 5839795.591518753, 439235.5502606761 5839773.367069769, 439220.65419556067 5839738.677872863, 439318.69153445185 5839677.642779705, 439405.6629368234 5839563.276636733, 439457.6357583269 5839331.947852032, 439505.24311296846 5839316.846769658, 439424.04423272086 5839223.395070371, 439326.30903584213 5839345.586209863, 439173.3842794127 5839393.912853815, 439158.7875908384 5839444.935615561, 438952.36166189215 5839439.421416852, 438751.2864615631 5839335.7757943, 438747.98496935295 5839301.675233158, 438630.35920133215 5839274.026012793, 438511.0954515473 5839193.659979484, 438431.860466481 5839044.973457307, 438306.81271441834 5838940.415532941, 438293.80131433613 5838881.009772916, 438163.566976913 5838827.357424496, 438142.1970728805 5838771.247506553, 437875.1652936722 5838720.815096201, 437757.2813785214 5838781.045738672))'), 
    loads('POLYGON ((436379.2161234008 5842719.896950307, 436349.49310635065 5842692.776645183, 436553.2950889611 5842615.837783019, 436595.52572785737 5842572.470824838, 436441.49709504616 5842444.640731496, 436208.60260937735 5842473.520769048, 436071.4485805484 5842351.156442959, 436093.11795419955 5842095.860530991, 436282.1037174939 5841941.5048942845, 436049.4275983902 5841700.3767908625, 435814.47918815695 5841963.6653879685, 435731.457467729 5842012.149762558, 435725.68513231 5842265.077753106, 436029.19769542845 5842518.048505764, 436147.05692978983 5842750.36622205, 436255.84297036746 5842737.034158016, 436297.7775252775 5842692.944865715, 436352.211106466 5842752.185693981, 436379.2161234008 5842719.896950307))'), 
    loads('POLYGON ((432837.43315975927 5842675.081679541, 433070.72480934893 5842809.057595184, 433063.7668808845 5842886.017715569, 433304.81280912453 5842794.489148975, 433222.75519128045 5842776.08998026, 433243.98885385296 5842410.346066338, 433234.6738138913 5842252.047299655, 433177.1643539673 5842136.149846303, 433198.3047427071 5842083.88534851, 433097.96526898077 5842139.5168328, 433002.6306252307 5842099.17840407, 432904.82157473755 5842135.160687835, 432910.7915686839 5842241.178806877, 433008.59273466823 5842475.210290233, 432945.7175536313 5842552.218072275, 432898.44593411183 5842561.035748402, 432837.43315975927 5842675.081679541))'), 
    loads('POLYGON ((437121.12855085445 5843850.912504669, 437228.09515711735 5843582.211140089, 437181.0436899909 5843436.693754543, 437200.18703572196 5843178.486496876, 437163.72717813816 5843133.134159927, 437222.14407735143 5843049.312368201, 437162.93289512664 5843065.270489352, 437096.0329295707 5843006.033942518, 437114.7539443599 5842971.65945282, 437036.04658517643 5843017.640142113, 436928.2968900642 5842946.238911312, 436873.5297886924 5842970.572160375, 436782.76219064166 5843100.552030927, 436624.1796778655 5843018.115859263, 436434.3620496299 5843077.455641541, 436288.8322503765 5843270.56862313, 436461.1861265921 5843602.844580887, 436503.2145397259 5843641.305731805, 436500.8965118143 5843591.478933578, 436735.77139386535 5843270.13347434, 436818.70119335613 5843486.447885999, 436980.6132625284 5843542.974299863, 436912.5380329451 5843755.5455849795, 437034.3082440643 5843835.655073374, 437121.12855085445 5843850.912504669))'), 
    loads('POLYGON ((433582.8352984753 5842571.701366335, 433658.98715892993 5842772.554180168, 433917.31394966785 5842941.104653562, 434059.5080130144 5842960.554867961, 434097.29575223225 5842996.747689376, 434096.03885111073 5843077.423969406, 434170.6245974871 5843139.066520599, 434176.41297544393 5843202.222771499, 434065.6111193249 5843396.066388756, 433898.33227357717 5843528.785420527, 433949.33673245786 5843529.3662438225, 433938.6555798228 5843596.783040428, 434162.3026839293 5843745.389150383, 434348.9729118489 5843916.073192282, 434396.01836318686 5844014.082696404, 434603.92921327264 5843975.6494353, 434669.9008316569 5843891.02351116, 434774.74449990725 5843835.602031079, 434795.73379723815 5843745.243954828, 434699.171118065 5843624.989586173, 434715.4857490019 5843569.279786651, 434750.1446769857 5843559.4336853605, 434771.9863248979 5843594.356067086, 434806.9944923381 5843526.367532602, 434961.72626848996 5843564.264411091, 434953.2690367807 5843635.436174914, 434989.26669333153 5843691.851914882, 435112.0962978725 5843562.820351316, 435111.1032374624 5843514.141178862, 435025.6366771629 5843477.337910509, 435059.66173281695 5843412.267437159, 434999.6448183457 5843295.232637714, 435030.72077560134 5843263.62590647, 434970.46873615345 5843189.17994924, 435023.74420352135 5842806.621748758, 434991.72746138467 5842793.911028026, 434949.07266827417 5842611.2851401325, 434815.5568272791 5842400.353221933, 434650.67824441835 5842334.673074134, 434336.3280544399 5842270.849372364, 434226.2777145553 5842402.030340861, 434147.5697191692 5842385.05559355, 433955.63622455933 5842487.959828255, 433582.8352984753 5842571.701366335))'), 
    loads('POLYGON ((432353.2031236254 5839435.167146159, 432426.9372253176 5839450.319321168, 432492.540366928 5839398.734717924, 432537.18646307365 5839441.525133348, 432427.47499714844 5839472.540800404, 432892.8286010693 5839543.133956492, 432862.4237389122 5839388.756068943, 432746.0317464983 5839211.089935156, 432861.0856825724 5839140.351288126, 432805.9470794167 5839001.222243065, 432350.8118382029 5838961.311495779, 432406.3739913219 5839333.602584755, 432353.2031236254 5839435.167146159))'), 
    loads('POLYGON ((431734.06344227004 5841297.0498407865, 431798.267201897 5841431.034520189, 431878.1255276645 5841500.618044453, 432437.7656886902 5841600.132819967, 432476.08130661235 5841632.8334860485, 432561.10249299323 5841593.514395774, 432611.50279010413 5840971.465712948, 432305.41573792783 5840863.605663926, 432116.17221456097 5841037.911027436, 431734.06344227004 5841297.0498407865))'), 
    loads('POLYGON ((434005.1912759611 5836345.103584862, 434083.0100721575 5836441.517409874, 434183.4883178249 5836748.259019878, 434221.2802243935 5836761.623856148, 434228.0775409871 5836888.33632327, 434329.9235300749 5836996.388435689, 434497.21299696533 5836901.518592065, 434572.5912763004 5836821.209336783, 434666.7771978983 5836790.6445566015, 434717.75493522617 5836665.593241701, 434903.9737305627 5836619.153881544, 435058.36704394774 5836473.885756682, 435045.1629313793 5836370.199605461, 435081.8611177098 5836351.332206505, 435097.3350000783 5836185.886211557, 435072.3705988289 5835927.677934746, 434904.87277189805 5835686.0777778225, 434807.34892504703 5835638.8438617475, 434674.3995714327 5835658.234717808, 434378.3669485666 5835809.318690508, 434079.4192400137 5836252.762995673, 434012.25791937794 5836202.410904433, 434005.1912759611 5836345.103584862))'), 
    loads('POLYGON ((436763.01320205093 5837592.487181023, 436788.8367331294 5837783.187524043, 436905.89307271445 5837950.305992491, 436928.63270181307 5838074.958130011, 437324.2253437349 5837941.023009537, 437228.6380448681 5837753.322041674, 437223.3861448127 5837613.9441921115, 437187.8267464218 5837544.644175264, 437061.7554094362 5837498.051876638, 437035.0752215894 5837581.302038044, 436998.40818831796 5837565.756068393, 436981.18238058133 5837504.083302306, 436919.8524364358 5837509.016394356, 436763.01320205093 5837592.487181023))'), 
    loads('POLYGON ((438043.70336851734 5841059.877896448, 438149.6574229423 5841348.216466179, 438189.73212687834 5841319.69504341, 438277.1347452806 5841337.109146086, 438289.4083078615 5841297.148220829, 438209.91575882904 5841250.433186955, 438275.2543144051 5841227.132735335, 438293.5509412102 5841157.603251309, 438338.3501033417 5841124.520988094, 438343.77878784237 5840897.926709201, 438260.13095876493 5840903.7178790895, 438251.16218104505 5841002.630996463, 438062.4920290156 5841031.901427809, 438043.70336851734 5841059.877896448))'), 
    loads('POLYGON ((440156.5674895528 5842436.973738957, 440215.4692553458 5842516.33575806, 440394.7300947385 5843061.63280811, 440543.37735253363 5843134.093999653, 440547.649058846 5843103.9567815, 440481.23169729183 5843062.616286957, 440476.0118629604 5843014.282178844, 440505.53090556775 5842999.389501211, 440455.72851127054 5842954.213828567, 440459.51777639287 5842884.115774339, 440400.08903846407 5842881.49524373, 440428.48854379385 5842857.896536486, 440399.4400194288 5842827.72917121, 440425.17593731213 5842799.512281068, 440560.40181904397 5842780.718616705, 440583.9929452669 5842802.812990721, 440522.20638311165 5842652.999735983, 440358.9474723649 5842377.404593022, 440285.3417392531 5842376.118247381, 440156.5674895528 5842436.973738957))'), 
    loads('POLYGON ((438341.78821733105 5843234.405503623, 438477.24620496196 5843576.528361327, 438580.39104599756 5843563.378912315, 438615.8250030157 5843497.114109089, 438601.3561738183 5843376.65124275, 438551.59058303846 5843358.350875026, 438562.8258081293 5843328.421499794, 438756.19675702904 5843239.632391726, 438795.5433720898 5843283.34544846, 438759.9638358897 5843190.898231714, 438786.25814971776 5843014.142422359, 438719.22661331116 5843054.476002942, 438565.67297846667 5842835.690399244, 438505.2172758918 5842844.11471578, 438476.35561114596 5843000.25897963, 438344.11352461844 5843149.353821211, 438367.27380367776 5843184.395411707, 438341.78821733105 5843234.405503623))'), 
]

areas = gpd.GeoDataFrame(geometry=polygons, crs=3857)
patches = c4.generalize_area_patches(areas, 10, 50000, 100000)

import matplotlib.gridspec as gridspec
fig = plt.figure(1, (12, 12))

# Define a grid with 2 rows and 1 column
# height_ratios=[2, 1] makes the first row twice as large as the second
gs = gridspec.GridSpec(2, 1, height_ratios=[2, 1])

#############################################################

# Assign the first subplot to the top grid cell
sub1 = fig.add_subplot(gs[0])
sub1.set_aspect('equal')
sub1.set_title('initial_scale=50,000 - final_scale=100,000')
sub1.axes.get_xaxis().set_visible(False)
sub1.axes.get_yaxis().set_visible(False)

for polygon in polygons:
    poly = Path.make_compound_path(Path(numpy.asarray(polygon.exterior.coords)[:, :2]),
                                   *[Path(numpy.asarray(ring.coords)[:, :2]) for ring in polygon.interiors])
    sub1.add_patch(PathPatch(poly, facecolor="darkgray", edgecolor='none'))

# Assign the second subplot to the bottom grid cell
sub2 = fig.add_subplot(gs[1])
sub2.set_aspect('equal')
sub2.axes.get_xaxis().set_visible(False)
sub2.axes.get_yaxis().set_visible(False)

for polygon in patches.geometry:
    if polygon.geom_type == 'MultiPolygon':
        for p in polygon.geoms:
            poly = Path.make_compound_path(Path(numpy.asarray(p.exterior.coords)[:, :2]),
                                           *[Path(numpy.asarray(ring.coords)[:, :2]) for ring in p.interiors])
            sub2.add_patch(PathPatch(poly, facecolor="darkgray", edgecolor='none'))
    else:
        poly = Path.make_compound_path(Path(numpy.asarray(polygon.exterior.coords)[:, :2]),
                                       *[Path(numpy.asarray(ring.coords)[:, :2]) for ring in polygon.interiors])
        sub2.add_patch(PathPatch(poly, facecolor="darkgray", edgecolor='none'))

sub1.autoscale_view()
sub2.autoscale_view()
plt.tight_layout()
plt.show()