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

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

line = loads('LineString (-176341.48260207643033937 5373725.60607721097767353, -176320.93910819885786623 5373730.39955911599099636, -176307.4717066569137387 5373734.96477997675538063, -176294.23256615805439651 5373740.89956709742546082, -176283.73255817621247843 5373747.74739839043468237, -176275.97168271132977679 5373755.50827385485172272, -176268.21080724647617899 5373765.32349870819598436, -176260.44993178165168501 5373777.19307294767349958, -176254.2868836183915846 5373788.14960301574319601, -176249.72166275666677393 5373798.19308891240507364, -176245.15644189500017092 5373809.60614106617867947, -176240.59122103330446407 5373822.38875947892665863, -176236.48252225780743174 5373835.17137789167463779, -176232.8303455684799701 5373847.95399630349129438, -176230.09121305146254599 5373861.19313680194318295, -176228.26512470678426325 5373874.88879938796162605, -176226.66729740519076586 5373887.89967884309589863, -176225.2977311466820538 5373900.22577516920864582, -176222.10207654349505901 5373912.3236104529350996, -176217.08033359568798915 5373924.19318469427525997, -176209.31945813083439134 5373934.23667059000581503, -176198.81945014896336943 5373942.45406814012676477, -176187.40639799475320615 5373947.47581108845770359, -176175.0803016682039015 5373949.30189943313598633, -176163.21072742785327137 5373948.38885526079684496, -176151.79767527367221192 5373944.73667857144027948, -176143.12375563647947274 5373939.25841353740543127, -176137.18896851624595001 5373931.95406015869230032, -176131.48244243915542029 5373922.59535739198327065, -176126.00417740514967591 5373911.18230523820966482, -176123.49330593121703714 5373899.31273099780082703, -176123.94982801738660783 5373886.98663467075675726, -176126.00417740514967591 5373873.97575521469116211, -176129.65635409450624138 5373860.28009263053536415, -176134.22157495620194823 5373849.32356256246566772, -176139.69983999020769261 5373841.10616501048207283, -176147.23245441197650507 5373831.74746224470436573, -176156.81941822147928178 5373821.24745426326990128, -176164.12377160019241273 5373810.51918523851782084, -176169.14551454802858643 5373799.56265517044812441, -176173.25421332352561876 5373787.23655884340405464, -176176.44986792671261355 5373773.54089625924825668, -176178.50421731447568163 5373761.4430609755218029, -176179.417261486814823 5373750.94305299315601587, -176179.18900044373003766 5373738.84521771036088467, -176177.81943418522132561 5373725.14955512434244156, -176175.99334584054304287 5373711.910414625890553, -176173.71073540969518945 5373699.12779621314257383, -176171.19986393579165451 5373687.02996092941612005, -176168.46073141877423041 5373675.61690877564251423, -176163.21072742782416753 5373665.80168392229825258, -176155.44985196299967356 5373657.58428637217730284, -176147.00419336889171973 5373653.2473265528678894, -176137.87375164550030604 5373652.79080446716398001, -176128.05852679291274399 5373653.93210968188941479, -176117.55851881104172207 5373656.67124219983816147, -176108.65633813076419756 5373660.09515784587711096, -176101.35198475210927427 5373664.20385662093758583, -176095.41719763190485537 5373669.68212165497243404, -176090.85197677023825236 5373676.5299529479816556, -176087.19980008088168688 5373683.83430632669478655, -176084.46066756386426277 5373691.5951817911118269, -176081.94979608996072784 5373700.4973624711856246, -176079.66718565911287442 5373710.54084836784750223, -176077.84109731443459168 5373721.95390052162110806, -176076.47153105592587963 5373734.73651893436908722, -176074.64544271127670072 5373748.20392047613859177, -176072.36283228039974347 5373762.35610514786094427, -176068.0258724618179258 5373776.96481190528720617, -176061.63456325547304004 5373792.03004074841737747, -176054.78673196292947978 5373804.35613707546144724, -176047.48237858424545266 5373813.94310088455677032, -176040.17802520556142554 5373823.7583257369697094, -176032.87367182690650225 5373833.80181163270026445, -176025.11279636202380061 5373843.61703648511320353, -176016.89539881102973595 5373853.20400029420852661, -176007.08017395841307007 5373861.42139784526079893, -175995.66712180420290679 5373868.26922913827002048, -175984.93885277924709953 5373871.69314478430896997, -175974.89536688354564831 5373871.69314478430896997, -175967.36275246177683584 5373868.0409680949524045, -175962.34100951394066215 5373860.73661471623927355, -175959.60187699692323804 5373852.74747820850461721, -175959.14535491075366735 5373844.07355857081711292, -175961.88448742777109146 5373835.17137789074331522, -175967.81927454794640653 5373826.04093616828322411, -175974.66710584046086296 5373817.36701653152704239, -175982.4279813053435646 5373809.14961897954344749, -175990.41711781328194775 5373798.87787204049527645, -175998.63451536427601241 5373786.55177571438252926, -176003.88451935519697145 5373773.08437417261302471, -176006.1671297860739287 5373758.47566741518676281, -176007.53669604455353692 5373745.92131004575639963, -176007.99321813072310761 5373735.4213020633906126, -176007.30843500149785541 5373724.46477199532091618, -176005.48234665679046884 5373713.05171984154731035, -176003.65625831214128993 5373701.63866768684238195, -176001.8301699674630072 5373690.22561553306877613, -175999.31929849353036843 5373677.67125816270709038, -175996.12364389037247747 5373663.97559557855129242, -175992.24320615793112665 5373653.2473265528678894, -175987.67798529626452364 5373645.48645108845084906, -175979.68884878832614049 5373638.18209770973771811, -175968.27579663411597721 5373631.33426641672849655, -175956.40622239376534708 5373628.59513390064239502, -175944.08012606721604243 5373629.96470015868544579, -175934.26490121459937654 5373634.07339893374592066, -175926.96054783591534942 5373640.92123022675514221, -175921.48228280188050121 5373648.68210569117218256, -175917.83010611255303957 5373657.35602532885968685, -175915.31923463864950463 5373666.48646705225110054, -175913.94966838011168875 5373676.07343086134642363, -175912.35184107854729518 5373684.06256736908107996, -175910.52575273386901245 5373690.45387657638639212, -175909.38444751844508573 5373697.75822995509952307, -175908.92792543227551505 5373705.97562750522047281, -175907.558359173766803 5373716.70389652997255325, -175905.27574874291894957 5373729.94303702935576439, -175901.16704996742191724 5373742.95391648542135954, -175895.23226284724660218 5373755.7365348981693387, -175887.69964842544868588 5373768.29089226759970188, -175878.56920670211547986 5373780.61698859371244907, -175868.75398184949881397 5373790.88873553276062012, -175858.25397386762779206 5373799.10613308474421501, -175849.80831527354894206 5373806.41048646345734596, -175843.41700606714584865 5373812.80179566890001297, -175834.28656434378353879 5373817.5952775739133358, -175822.41699010343290865 5373820.79093217756599188, -175811.91698212159099057 5373818.73658278957009315, -175802.78654039819957688 5373811.4322294108569622, -175797.53653640727861784 5373802.07352664414793253, -175796.16697014879900962 5373790.66047449037432671, -175797.99305849347729236 5373779.93220546562224627, -175803.01480144131346606 5373769.88871956896036863, -175808.2648054322344251 5373760.98653888888657093, -175813.74307046626927331 5373753.22566342446953058, -175818.53655237102066167 5373743.18217752873897552, -175822.645251146517694 5373730.85608120169490576, -175825.3843836635351181 5373717.84520174562931061, -175826.75394992204383016 5373704.14953916147351265, -175826.75394992204383016 5373693.87779222242534161, -175825.3843836635351181 5373687.02996092941612005, -175822.41699010343290865 5373676.75821399129927158, -175817.85176924176630564 5373663.06255140528082848, -175812.37350420776056126 5373651.64949925150722265, -175805.98219500138657168 5373642.51905752811580896, -175794.79740389029029757 5373635.21470414940267801, -175778.81913087441353127 5373629.7364391153678298, -175760.32998638460412621 5373625.62774034030735493, -175739.32997042089118622 5373622.88860782235860825, -175717.64517132789478637 5373623.11686886567622423, -175695.27558910567313433 5373626.31252346932888031, -175672.90600688342237845 5373627.22556764166802168, -175650.53642466117162257 5373625.85600138269364834, -175633.87336851604050025 5373621.06251947768032551, -175617.43857341402326711 5373608.73642315156757832)')

fig = plt.figure(1)

sub1 = fig.add_subplot(111)
sub1.set_aspect('equal')
sub1.axes.get_xaxis().set_visible(False)
sub1.axes.get_yaxis().set_visible(False)

path = Path(numpy.asarray(line.coords)[:, :2])
pathdouglas = Path(numpy.asarray(c4.schematization(line).coords)[:, :2])
sub1.add_patch(PathPatch(path, facecolor="none", edgecolor='gray', linewidth=1))
sub1.add_patch(PathPatch(pathdouglas, facecolor="none", edgecolor='red', linewidth=1))
sub1.autoscale_view()

plt.show()