bjornharrtell / jsts

JavaScript Topology Suite
http://bjornharrtell.github.io/jsts/
Other
1.49k stars 232 forks source link

jsts.operation.overlay.OverlayOp.difference fails silently with the following geometries #525

Open Stophface opened 1 month ago

Stophface commented 1 month ago

Thanks for the awesome library. I think I have run into a bug.

I have this cover geometry

const cover = '{"type":"Polygon","coordinates":[[[-180,-90],[180,-90],[180,90],[-180,90],[-180,-90]]]}'

And this is the geometry I want to substract from it

const substract = '{"type":"MultiPolygon","coordinates":[[[[11.3582165852589,49.605796423266156],[11.35938210886658,49.593914318370565],[11.343173991041912,49.58664605796745],[11.325799836750775,49.59125862223311],[11.309598085585405,49.58398604821548],[11.31077099606537,49.57210219092058],[11.294576120487468,49.56482658787256],[11.2957511100792,49.552940193089384],[11.313115679293572,49.54832861050819],[11.31428745240765,49.53643888850257],[11.298099949891482,49.529161540563784],[11.299273800478307,49.51726928393577],[11.283093163560594,49.50998891462938],[11.26573817845313,49.514599522315876],[11.24956391108442,49.50731485560685],[11.250745120943,49.495420861609695],[11.234577716789783,49.4881331814979],[11.235760994391512,49.476236658857054],[11.219600450358437,49.46894596925506],[11.22078579286905,49.457046920189676],[11.204632105859792,49.44975322501224],[11.20581951044802,49.43785165174474],[11.189672677365373,49.43055495490888],[11.190862141203127,49.41865085966482],[11.17472215894895,49.4113511650898],[11.175913679211229,49.39944455009797],[11.193239918143068,49.39483682643362],[11.194428231614248,49.38292688957892],[11.17829556739262,49.375625480284],[11.1794859356811,49.363713026596834],[11.196803709480573,49.359101178228876],[11.197990874244024,49.34718540487109],[11.181865521576183,49.33988228450619],[11.183054739551451,49.32796399724284],[11.200364056351273,49.3233480256403],[11.201550074062666,49.311426420909974],[11.185432026478232,49.30412159313678],[11.186620095797688,49.29219747743936],[11.203920963718973,49.2875773840826],[11.20510583603079,49.275649953133396],[11.188995087067742,49.268343421625296],[11.190182009385593,49.256413482659035],[11.207474436538046,49.25178926903981],[11.20865816509966,49.23985601704842],[11.192554708304263,49.23254778549051],[11.19374048527162,49.22061202844375],[11.21102447975341,49.215983696065194],[11.212207066210992,49.20404462823142],[11.229487395120994,49.19941170731133],[11.230666793109911,49.1874693302274],[11.247943454391715,49.18283182230204],[11.249119665953392,49.170886137508404],[11.233024451502088,49.163578766530115],[11.234202712269047,49.151630581082536],[11.251470954728463,49.146988960650965],[11.252646032304511,49.13503746975552],[11.26991060797106,49.13039126623614],[11.271082504395299,49.11843647144304],[11.254995054739233,49.11112868595848],[11.256168999959847,49.09917139423035],[11.27342516775633,49.09452108212755],[11.274595935053993,49.08256048878126],[11.291848436902647,49.07790559752915],[11.293016028314184,49.06594170412463],[11.310264862182061,49.06128223528308],[11.311429279744637,49.049315043383935],[11.328674443604072,49.04465099851742],[11.329835689355273,49.032680509690906],[11.34707718118392,49.02801189036859],[11.348235257161647,49.016038106185576],[11.332157062652461,49.00873374450949],[11.333317190555388,48.99675746934353],[11.350550294126263,48.99208475260418],[11.351707255469059,48.98010518439732],[11.368936687890766,48.975427897190215],[11.370090484709003,48.963445037523115],[11.387316243973473,48.95876318143158],[11.40339290999486,48.96606370832109],[11.420619693582383,48.96137680696007],[11.421765110851993,48.94938985713336],[11.438988212376158,48.94469838923201],[11.44013047006684,48.93270815195823],[11.457349887536925,48.92801211911363],[11.45848898768866,48.91601859598566],[11.442413886489579,48.9087219038523],[11.443555045572152,48.89672589422454],[11.460766092231838,48.8920257785212],[11.461904096972804,48.880026485391724],[11.445836266355302,48.87272810683698],[11.446976328405773,48.860726330286795],[11.430915235739892,48.853424991038246],[11.432057352324472,48.841420733393754],[11.449255356698433,48.83671701450398],[11.450394323289832,48.82470947648617],[11.434340488069267,48.81740645851676],[11.435481507579116,48.80539644250162],[11.452671162235104,48.800688643241116],[11.453809034937532,48.78867534923386],[11.437762450746977,48.78137065636801],[11.43890237475395,48.76935488747207],[11.422862512157083,48.76204724568604],[11.424004484703913,48.7500290042435],[11.44118112848551,48.74531760108489],[11.442319958558404,48.73329608482139],[11.45949293770889,48.72858012982731],[11.46062862733154,48.71655534036907],[11.477797939881947,48.71183483516576],[11.478930491078302,48.699806774142715],[11.462898917033534,48.69250002080228],[11.464033517459477,48.68046949192927],[11.48119450709759,48.675744913866176],[11.482325972266086,48.663711115850774],[11.49948329624171,48.65898199169408],[11.50061162817438,48.64694492617615],[11.517765284532546,48.64221125756633],[11.518890485251328,48.630170926189386],[11.502867210382975,48.62286506492568],[11.503994461002701,48.61082227043907],[11.52113980819208,48.60608453566482],[11.522263930756786,48.594038477765764],[11.53940561128412,48.58929620268491],[11.54052660781342,48.57724688302684],[11.557664619737649,48.5725000692942],[11.558782492251439,48.560447489534255],[11.575916833636631,48.55569613880921],[11.57703158415512,48.543640300608295],[11.561017166626353,48.53633661279873],[11.562133968827528,48.52427831708212],[11.57926001768672,48.519522909465174],[11.580373701038807,48.50746135778454],[11.564366504106665,48.50015601410519],[11.565482237524003,48.48809200810907],[11.549481706686617,48.48078373486453],[11.550599487428979,48.468717276943956],[11.567712636762066,48.46395829026853],[11.568827302921495,48.4518885796935],[11.552833979704836,48.44457865847003],[11.553950691577482,48.432506499188726],[11.571055569167378,48.42774345841414],[11.572169169591927,48.415668048984415],[11.556183047639287,48.408356483724],[11.55729869216698,48.39627862881784],[11.574395305888808,48.39151153573802],[11.575507842098608,48.379430433201215],[11.559528915061422,48.372117227857586],[11.560643493766069,48.36003368308596],[11.57773185148385,48.35526253950662],[11.578843324996136,48.343175749633915],[11.595928029581145,48.33840008427546],[11.597036399905527,48.32631005100007],[11.614117449447956,48.32152986555622],[11.615222718589168,48.30943659058021],[11.59925208215434,48.302124304162774],[11.600359394413914,48.29002859189384],[11.617432201588311,48.28524436289299],[11.618536415780392,48.273145411477344],[11.635605568904248,48.26835666665937],[11.63670668703122,48.25625447780917],[11.620743790384205,48.24894183674754],[11.621846951129456,48.23683721473417],[11.605890673757955,48.229521667983896],[11.606995874405804,48.217414615241694],[11.62405222033968,48.212622304669125],[11.625154329137553,48.2005120179235],[11.642207026804657,48.1957151966947],[11.643306045749716,48.18360167767038],[11.660355093260755,48.178800347503234],[11.676309687043306,48.18611206168326],[11.693359643720989,48.181305748304645],[11.69445044464103,48.169188197188994],[11.711496742621213,48.16437737745022],[11.712584458586424,48.15225659838316],[11.729627095996634,48.14744127401597],[11.730711729008126,48.13531726873469],[11.747750703980946,48.13049744147555],[11.748832256040147,48.11837021172099],[11.732879961340931,48.11106360771558],[11.733963560989006,48.09893395329961],[11.718017856959994,48.09162444760234],[11.719103501490409,48.07949237098355],[11.70316438531175,48.07217996763183],[11.686139050622133,48.07699836378977],[11.670205949925808,48.06968178926254],[11.671298752702002,48.057548096584306],[11.65537223787703,48.05022863247799],[11.656467076340059,48.03809252410548],[11.640547144557493,48.030770174462965],[11.641644016011398,48.01863165286459],[11.658655711525908,48.01381467361797],[11.659749508577464,48.00167293283791],[11.6767575683562,47.99685145770351],[11.677848292989879,47.98470649950181],[11.661936062418942,47.97738382354921],[11.66302881953703,47.96523645638074],[11.680028705070441,47.96041095802851],[11.681118392844468,47.94826037609974],[11.698114643652737,47.9434303862436],[11.699201264064865,47.93127659132468],[11.683296732677036,47.92395359322175],[11.6843853850621,47.91179739362065],[11.701373472241341,47.90696338514332],[11.702459060331217,47.894803975231646],[11.719443513804427,47.889965479656105],[11.72052603957893,47.8778028612141],[11.737506857495603,47.87295988030728],[11.73858632293486,47.86079405511902],[11.755563503449476,47.85594659065259],[11.771465730625975,47.86326447803382],[11.788443780025485,47.85841205711088],[11.789515093369532,47.846242223925415],[11.806489496965584,47.84138532211266],[11.82239708996501,47.84869777681403],[11.839372344696685,47.843835917893564],[11.840435506913549,47.831662082721145],[11.857407107461892,47.82679574560019],[11.85846721711965,47.814618710814166],[11.875435161667301,47.809747897287295],[11.891347485205731,47.817053637664515],[11.908316256603566,47.812177867317445],[11.924234499894547,47.819479444787476],[11.941204086943646,47.81459871610407],[11.95712824158617,47.82189612668273],[11.974098633079102,47.81701043815523],[11.975140393870994,47.804827826577174],[11.992107107958605,47.799937666216536],[12.008036531153246,47.80722962837153],[12.025004031945045,47.8023345076037],[12.040939342159827,47.80962229496872],[12.057907618434912,47.80472221230857],[12.073848807214015,47.812005820923126],[12.09081784774311,47.80710077489388],[12.091841242288023,47.794912615939836],[12.108806584083867,47.79000310273487],[12.124752982359123,47.79728125127171],[12.141719070665108,47.79236677418793],[12.157671323058056,47.79964073613936],[12.17463814663189,47.7947212937227],[12.175648274828456,47.78252839076006],[12.192611384911068,47.77760448493492],[12.208568803586832,47.78487297915287],[12.225532631194522,47.77994410752418],[12.241495879464296,47.78720840736836],[12.258460413342045,47.78227456850486],[12.274429482658448,47.78953467005614],[12.29139471154309,47.78459586253507],[12.307369593341749,47.79185176188093],[12.324335505961965,47.78690798428789],[12.340316191661604,47.794159677522416],[12.357282776738083,47.78921092845158],[12.373269257740471,47.796458411675495],[12.372289871158358,47.80865592029443],[12.388282863134638,47.815900466292106],[12.405254518111153,47.810946226540636],[12.421253295647046,47.81818655464485],[12.438225595659402,47.8132273382321],[12.454230150108957,47.82046344455921],[12.471203083842042,47.81549925010731],[12.487213406542459,47.82273113078037],[12.50418696267323,47.81776195691992],[12.52020304494484,47.82498960806871],[12.537177212142497,47.82001545343887],[12.538130907064527,47.807814175493846],[12.555101289566059,47.802835568507795],[12.571122360877554,47.81005771015677],[12.58809333665761,47.805074122089614],[12.604120142612418,47.812292026620185],[12.621091700328561,47.807303456134164],[12.637124232193916,47.814517119700696],[12.65409636049607,47.809523565466584],[12.670134609522428,47.816732984230285],[12.687107297052867,47.811734444927495],[12.703151254474065,47.81893961505634],[12.720124489867349,47.8139360893728],[12.73617414690053,47.82113700704158],[12.753147918783728,47.816128493673894],[12.769203266629344,47.82332515506427],[12.786177563621955,47.8183116527176],[12.802238593463889,47.82550405401803],[12.819213404177937,47.82048556140621],[12.820122839276495,47.808275215198954],[12.837093812197923,47.80325228065524],[12.838000232505749,47.791038768415916],[12.85496736602559,47.78601139387715],[12.855870773610498,47.7737947174589],[12.872834066124682,47.76876290486658],[12.873734463054442,47.756543066126284],[12.890693912963846,47.7515068174266],[12.906757291001139,47.75868985578273],[12.923717217640176,47.75364861993797],[12.939786229875653,47.760827391278674],[12.956746621858745,47.755781167043885],[12.972821259416646,47.76295566759596],[12.971936357444301,47.77517766620018],[12.954971649752439,47.780224447289804],[12.938896160402116,47.773048672460305],[12.921931913041343,47.77809046280569],[12.905862056538735,47.770910417009176],[12.888898280906277,47.77594721785254],[12.88800003692031,47.788164617690505],[12.87103241388661,47.79319698158195],[12.87013115830638,47.80541121817337],[12.853159689468514,47.81043914316695],[12.852255420223424,47.82265021465753],[12.835280107183404,47.82767369881208],[12.834372822202848,47.8398816033513],[12.81739366656767,47.844900644730295],[12.801326141506877,47.83771123234392],[12.784347494614172,47.84272528109171],[12.76828565025371,47.835531604653944],[12.75130752350318,47.8405406620541],[12.735251368673218,47.833342725373996],[12.718273773457067,47.83834679271869],[12.702223316971153,47.831144599612124],[12.685246264674083,47.83614367820218],[12.669201515329103,47.82893723249194],[12.65222501732825,47.83393132363673],[12.651288899796466,47.84613239847203],[12.634308592971811,47.85112203954891],[12.61826877885522,47.84391006927444],[12.601289044140644,47.848894723169956],[12.585254962236332,47.84167850782616],[12.568275810997779,47.846658175872896],[12.552247470049744,47.83943771930733],[12.535268913645485,47.84441240284644],[12.519246322381019,47.83718770891348],[12.502268372161504,47.84215740929472],[12.501308619911502,47.85435233120703],[12.484326888349285,47.85931757545201],[12.468309308605525,47.85208737166647],[12.451328201038137,47.857047633086054],[12.435316395902495,47.84981319955112],[12.41833592366874,47.854768479518064],[12.402329901815142,47.84752982011272],[12.385350076245878,47.85248012000839],[12.369349846331357,47.84523723861826],[12.370330165601203,47.83304533445207],[12.354336453074898,47.82579951173345],[12.337361703761733,47.83074431687015],[12.32137379292903,47.82349428005165],[12.322361343746023,47.811300715366784],[12.306379948759314,47.80404774525976],[12.289410296701469,47.808987063379774],[12.288417617208365,47.82117986329095],[12.271444227434912,47.82611472007637],[12.255467945800167,47.81885626676868],[12.256465751269598,47.80666423412544],[12.240495987653421,47.799402855523525],[12.223527727303766,47.80433223293435],[12.20756379222336,47.79706665595696],[12.190596244632221,47.80199106515211],[12.189588195344866,47.81418155578401],[12.172616929512628,47.81910150069718],[12.156658155946785,47.81183045203156],[12.139687620630815,47.81674542919572],[12.123734700159083,47.80947018993736],[12.106764906613579,47.81438020080406],[12.105743582506003,47.82656594968491],[12.088770085481691,47.83147149249966],[12.07282236978737,47.82419078919866],[12.055849632292471,47.82909136622171],[12.03990779417359,47.82180648015741],[12.022935827449325,47.82670209286311],[12.02190123361131,47.83888308466962],[12.004925578216946,47.843774225599475],[11.988988988067927,47.83648388321564],[11.972014121203904,47.84137006037296],[11.956083433034053,47.834075543101754],[11.939109365928301,47.83895675798357],[11.923184588169782,47.83165806980048],[11.906211332041803,47.83653432391218],[11.90515836961949,47.848709751076115],[11.888181446216686,47.85358152881265],[11.88712543110376,47.865753756327194],[11.87014484223524,47.870621055889835],[11.854224763422478,47.86331564549292],[11.837245009837298,47.868177983972245],[11.83618083687608,47.88034621351707],[11.819197426196537,47.885204071121635],[11.80328269281376,47.877893220060535],[11.786300135187508,47.882746117214886],[11.785227803372461,47.894910342774644],[11.768241597044868,47.89975875637283],[11.752332236243657,47.89244246861969],[11.735346900743977,47.89728592242534],[11.734266409108137,47.909446137999076],[11.717277433321762,47.91428510558666],[11.716193878289106,47.926442111721826],[11.732104398506836,47.933760954792426],[11.731022879217267,47.94591555466122],[11.714025737829134,47.950750506954996],[11.712941152076704,47.96290189470485],[11.695940369366156,47.96773235636757],[11.694852715165617,47.97988053022713],[11.710770948713447,47.98719904710732],[11.70968533077686,47.99934481041705],[11.692676371833908,48.00417125218423],[11.691587682375998,48.01631379894152],[11.674575081083459,48.02113574568645],[11.673483318116627,48.03327507413008],[11.689409267058517,48.04059326066962],[11.706426409990856,48.035770840741385],[11.72235836773584,48.04308486013812],[11.721273756715064,48.055222576586594],[11.737212295818424,48.062533702375696],[11.736129728064665,48.074668999966136],[11.752074851341435,48.081977228106744],[11.750994329557507,48.09411010437432],[11.766946039821656,48.10141543082787],[11.765867566713162,48.11354588331103],[11.781825866777607,48.12084830404114],[11.780749445053006,48.13297633028147],[11.763709592169116,48.13780113975388],[11.762630090408193,48.14992594239169],[11.778595574902996,48.15722673090998],[11.777518126152621,48.169349103978874],[11.760470057094452,48.17416989320191],[11.759389525215658,48.18628904005769],[11.742337784155575,48.19110532464953],[11.741254167141205,48.203221243556385],[11.724198755943288,48.20803302178111],[11.708231519192621,48.20072840061585],[11.691177001181684,48.20553519157534],[11.690085159232972,48.217647082419056],[11.673026979617324,48.222449364421614],[11.65706520883795,48.215139278421816],[11.640007940402885,48.219936573903645],[11.638907872614281,48.23204443077959],[11.654870208272918,48.239355794313134],[11.653772184208389,48.25146121888206],[11.669741138315597,48.258769672688835],[11.668645160692794,48.270872662516624],[11.651575087685831,48.27566639800774],[11.650476014895709,48.287766151263675],[11.666452158669893,48.295072968876376],[11.665355133938066,48.30717028411011],[11.6482768194267,48.311959981916196],[11.647176696415066,48.324054058017175],[11.630094718255481,48.32883923827422],[11.6289914949559,48.3409300735354],[11.611905855046063,48.3457107345406],[11.610799529450617,48.357798327258664],[11.62678399385121,48.3651060598293],[11.625679715711696,48.377191209574306],[11.60858582063289,48.38196782592712],[11.607478437075173,48.394049730592435],[11.623470103421624,48.401355819047595],[11.622364768936032,48.41343527749339],[11.605262610822765,48.418207847378945],[11.60415416779199,48.43028405822029],[11.620153042445317,48.43758849860357],[11.619046650104556,48.449662259990674],[11.601936221080372,48.454430781605936],[11.600826717062835,48.46650129287562],[11.616832806392257,48.4738040812423],[11.61572535468441,48.485872139834775],[11.598606646861716,48.49063661138852],[11.597496080340814,48.50270141736235],[11.613509390723829,48.510002549779436],[11.612400878134132,48.52206489986481],[11.628420856694392,48.529363094675475],[11.627314400781101,48.541422986484775],[11.610182790892836,48.54618388710113],[11.609073215903623,48.55824052299047],[11.625100428519312,48.565537053973074],[11.623992911833621,48.577591228393075],[11.606853002343401,48.582348076164045],[11.60574236343417,48.594398992191906],[11.588598771778972,48.599151302931936],[11.587485008619772,48.6111989589081],[11.570337736727147,48.61594673095357],[11.569220847291925,48.627991125222195],[11.552069897094478,48.632734356914106],[11.550949879357425,48.644775487823075],[11.53379525279302,48.64951417750717],[11.53267210472862,48.66155204340803],[11.515513803740246,48.66628618943467],[11.514387523323332,48.6783207886827],[11.530424730863471,48.68562204116759],[11.52930050471963,48.69765417178553],[11.51213388158853,48.70238425070468],[11.51100651992657,48.71441311224048],[11.493836221407967,48.7191386433697],[11.492705722200292,48.731164234188526],[11.475531750251152,48.735885215892445],[11.474398111470553,48.74790753436316],[11.490443638162763,48.75520967137286],[11.489312052987128,48.76722951650804],[11.472129745112527,48.771946424443456],[11.470995017188285,48.783962994825295],[11.48704779545677,48.791263456795036],[11.485915122755564,48.80327755072171],[11.501974624807405,48.81057505574768],[11.50084401009906,48.822586670880575],[11.483648688614226,48.82729998308503],[11.482514926826944,48.8393083203017],[11.498581693566717,48.84660414255202],[11.497449991395994,48.85860999787319],[11.480246312950555,48.86331923376167],[11.479111460513666,48.8753218087902],[11.495185498377866,48.88261594444955],[11.494052707183048,48.89461603449253],[11.476840663772206,48.89932119241391],[11.475704719119209,48.9113179997995],[11.491786034552662,48.918610445064196],[11.490652152769062,48.93060476438588],[11.473431736376735,48.935305842700636],[11.472294697938153,48.94729687701182],[11.45507059059858,48.951993391149976],[11.45393039346179,48.96398113885655],[11.436702597158774,48.968673087216615],[11.435559239280883,48.98065754672822],[11.41832775600349,48.98534492771335],[11.4171812353419,48.997326097443214],[11.399946067084505,49.00200890946118],[11.39879638159694,49.01398678782628],[11.381557530359194,49.01866502928956],[11.38040467800375,49.03063961471049],[11.36316214579052,49.035313284036135],[11.362006124525603,49.047284574937144],[11.344759913347108,49.05195367054694],[11.34360072113145,49.06392166535592],[11.326350833003213,49.06858618567628],[11.3251884677959,49.08055088282483],[11.307934904738659,49.085210826286755],[11.30676936449911,49.09717222421008],[11.28951212853894,49.10182758924926],[11.288343411226997,49.11378568638622],[11.304437160086795,49.121089221953106],[11.303270495554576,49.13304482059678],[11.28600484944255,49.13769608027383],[11.284835004609596,49.14964837585097],[11.267565684732132,49.154295053159444],[11.266392657555889,49.16624404411872],[11.282494186160193,49.17354716134474],[11.281323212182594,49.18549365009303],[11.264045471185192,49.19013621811162],[11.26287131162847,49.2020793999795],[11.24558989601268,49.20671738170473],[11.244412548832015,49.218657255150575],[11.22712746064738,49.223290649041694],[11.225946923798286,49.235227212527505],[11.242056717579233,49.24253118662969],[11.240878233143109,49.25446524350489],[11.223584709963719,49.25909452184518],[11.222403032613125,49.27102526652153],[11.238520125740465,49.27832753663786],[11.237340502409253,49.29025577174268],[11.220038536131772,49.29488093302696],[11.21885571663521,49.30680585370564],[11.23498011557445,49.314106416153166],[11.233799351705434,49.326028824311024],[11.21648893421497,49.33064986704547],[11.215304970924814,49.34256895856136],[11.231436682149829,49.34986780966891],[11.230254776097118,49.361784385726274],[11.212935899267288,49.36640130842845],[11.21175079053278,49.37831456563951],[11.227889820525792,49.385611701747564],[11.226706770640368,49.39752244057398],[11.209379426333303,49.40213524177281],[11.208193170500477,49.414042659560074],[11.224339525752105,49.42133807702086],[11.22315533038178,49.43324297350894],[11.239308535786634,49.44053538917082],[11.256645451663081,49.43592162838528],[11.27280502079025,49.44320975868428],[11.271628164404309,49.45511292896118],[11.287794586078137,49.462398049486424],[11.286619799853101,49.47429869245897],[11.302793077156364,49.481580799295536],[11.301620363927974,49.49347891274189],[11.31780049994247,49.50075800197708],[11.316629862549524,49.51265358367852],[11.332816860356054,49.51992965140187],[11.331648301640527,49.53182269914296],[11.347842164318928,49.539095741446275],[11.346675687125886,49.550986253014734],[11.362876417755048,49.55825626599211],[11.3617120249327,49.57014423917891],[11.377919626590495,49.577411218926706],[11.37675732099009,49.589296651525984],[11.392971796753377,49.59656059414277],[11.391811581229423,49.60844348395193],[11.408032934174091,49.615704385538606],[11.425413975495028,49.61108111593769],[11.441641676867203,49.618337691526875],[11.440488869581747,49.630218817330096],[11.456723450431653,49.637472343947486],[11.45557274299997,49.64935092101571],[11.47181420639405,49.6566013947678],[11.470665601682157,49.66847742090829],[11.486913950685754,49.67572483790391],[11.485767451562806,49.68759831092715],[11.502022689240304,49.694842667277385],[11.500878298578584,49.70671358499712],[11.517140427993173,49.713954876815336],[11.515998148668103,49.72582323704846],[11.532267172882015,49.73306146045039],[11.531127007772156,49.74492726101704],[11.51371247792454,49.74955406694973],[11.512569086146879,49.7614165355292],[11.528845567150537,49.76865296878018],[11.527704291280095,49.78051287489058],[11.543987677101347,49.78774623212207],[11.542848520023833,49.79960357359291],[11.52542062752215,49.80422678886013],[11.524278239275272,49.81608079563826],[11.506846556006778,49.82069939301801],[11.505700934467752,49.832550063650444],[11.521992349146274,49.839782906085084],[11.520848846904086,49.85163100867785],[11.537147180345702,49.85886076767157],[11.554588454551327,49.85424114086891],[11.57089314360674,49.86146652964323],[11.56975712551483,49.87331282766796],[11.586068735564195,49.88053512509726],[11.603515790220664,49.8759098410249],[11.61983374608815,49.88312776006174],[11.618705226372237,49.89497224589019],[11.635030105432831,49.90218706568481],[11.633903721890663,49.91402897391836],[11.61644708517027,49.918655302663616],[11.615317463327333,49.930493872542975],[11.63164985475839,49.937706872751576],[11.630522370811855,49.94954286228817],[11.613057116264551,49.95416509262923],[11.611926390687158,49.96599774177561],[11.628266301266027,49.97320891894997],[11.627137715309647,49.9850389850172],[11.643484566160714,49.99224705171432],[11.642358122741424,50.00407453256677],[11.624879440136263,50.008693189985706],[11.623749750561451,50.020517327834064],[11.640104134372535,50.027723564384516],[11.638976589065525,50.03954511429939],[11.655337923248338,50.04674823284713],[11.654212525132625,50.05856719270231],[11.670580812759594,50.0657671894001],[11.669457564761755,50.077583557072515],[11.685832808904127,50.08478042807546],[11.703330700341763,50.08015964621871],[11.71971229855351,50.08735210278051],[11.7185966116727,50.09916662563714],[11.734985168548297,50.1063559486384],[11.733871641768037,50.118167873533984],[11.750267160368562,50.1253540591357],[11.749155796627196,50.137163383957116],[11.731643497146287,50.141785777239825],[11.715247365042108,50.1345983063674],[11.716364145094575,50.12278972794936],[11.699974978712435,50.11559911986146],[11.701093917681835,50.10378794291084],[11.68471171395399,50.09659420144529],[11.667209969103663,50.10121035240891],[11.650834127621843,50.09401219660306],[11.651960627498184,50.08219917510165],[11.63559174650776,50.074997893783866],[11.618095775639866,50.0796083497346],[11.601733266864235,50.07240266223521],[11.602867313320521,50.060587803762814],[11.586511762841077,50.05337899862426],[11.587647951178424,50.0415615510531],[11.571299355908506,50.034349632122655],[11.572437683204685,50.02252959757634],[11.589919217191404,50.0179207226232],[11.5910542952271,50.006097342812346],[11.574713225412818,49.99888359790767],[11.575850440685231,49.987057633835796],[11.593323342256218,49.98244465462492],[11.594457311609027,49.97061534730129],[11.578123760467161,49.96339977984938],[11.57925986533646,49.95156789099039],[11.596724142888556,49.946950808832995],[11.597857005173976,49.935115578746355],[11.581530965930336,49.927898192185935],[11.582665962014016,49.91606038330108],[11.60012162393194,49.91143919951948],[11.601253380762444,49.89959805144237],[11.584934846651752,49.8923788492239],[11.567483980806436,49.89699951229871],[11.551171800611538,49.889775931792315],[11.533721926636177,49.894391454147346],[11.517416109303515,49.88716349949582],[11.518560727163091,49.87532130591864],[11.502261835581868,49.86809026412591],[11.50340857443591,49.85624549974109],[11.487116605523578,49.84901137467528],[11.488265462477198,49.83716404163799],[11.471980413150145,49.82992683716951],[11.473131385311572,49.8180769376382],[11.490562057014168,49.813463471014046],[11.4917097949592,49.80161023450329],[11.475432208574302,49.79437123680388],[11.476582060037648,49.78251543657942],[11.494004153105546,49.77789786178063],[11.495150773667797,49.766038726649725],[11.478880643532673,49.75879793921857],[11.480029375925707,49.746936243165784],[11.497442898672007,49.74231456155781],[11.498588403474221,49.73044953268296],[11.482325722905305,49.72320695903091],[11.464916989700468,49.72782813283229],[11.44866066162337,49.72058121307989],[11.449813609039797,49.70871440170841],[11.433564177378113,49.7014644216206],[11.434719227993453,49.68959505585874],[11.452118382706178,49.68497489255634],[11.453270209317632,49.67310219586959],[11.437028206383772,49.66585044074525],[11.438182134520657,49.65397519249005],[11.421947017989655,49.646720384651864],[11.423103044785016,49.634842587017964],[11.406874811584082,49.627584730358244],[11.389490023069932,49.63220339068383],[11.373268146288458,49.624941208142594],[11.374431581020843,49.61306164668728],[11.3582165852589,49.605796423266156]]],[[[13.156063732200812,47.51629111150816],[13.1400124506646,47.5091259081395],[13.140867935926646,47.49685885999018],[13.157769558207095,47.49175630640906],[13.15862206590255,47.479486126167025],[13.17551982065876,47.47437916825474],[13.176369352855698,47.462105857841834],[13.193263238571628,47.45699449762421],[13.194109797338108,47.44471805896612],[13.210999812502536,47.43960229847367],[13.211843399906572,47.427322733499885],[13.228729543013117,47.422202574767816],[13.244776333068355,47.42936141321851],[13.261662832844568,47.42423628918434],[13.277715114956688,47.43139086453033],[13.294601960101286,47.42626077406263],[13.295432297329764,47.413976680136685],[13.312315256420836,47.40884219586158],[13.328372097773013,47.41599123222467],[13.345255384684341,47.41085178159837],[13.361317692796815,47.41799654773143],[13.378201296218368,47.41285212964585],[13.37901838062758,47.40056352280338],[13.395898084051037,47.39541471538852],[13.396712208112561,47.38312299188963],[13.38065177332712,47.37598076929105],[13.38146808186247,47.36368662406697],[13.36541403350953,47.356541403586796],[13.366232523819097,47.344244839229404],[13.383099923916346,47.33909280030412],[13.383915457679423,47.32679312321653],[13.367868727586975,47.319646180785305],[13.368686441290315,47.30734408815241],[13.385545751288745,47.30218824226359],[13.386360511379124,47.289883039854764],[13.40321593124147,47.284722813400116],[13.404027739789239,47.27241450318063],[13.387989258740909,47.26526711482042],[13.388803246255984,47.25295639365681],[13.405650586993154,47.24779236549521],[13.40646162589201,47.235478539493904],[13.423305078318846,47.23031013578904],[13.424113170669028,47.21799320692566],[13.40808293488968,47.21084537684228],[13.408893205230711,47.198526041661985],[13.425728589489601,47.19335384153892],[13.426535916201255,47.18103140648827],[13.443367413981488,47.17585483586665],[13.444171799128473,47.16352930293162],[13.460999408988641,47.15834836391255],[13.461800854635609,47.14601973508307],[13.478624575139124,47.14083442977238],[13.494651013632673,47.14797717414564],[13.511475002872006,47.14278692418946],[13.512268393489947,47.13045451078503],[13.529088485797947,47.12525989790434],[13.529878942271171,47.11292439357258],[13.546695136227628,47.10772541988687],[13.562725022840064,47.11486136737104],[13.579541462042306,47.10965745052423],[13.580323869021816,47.09731817113466],[13.597136402332822,47.0921098968782],[13.597915880539661,47.07976753155014],[13.581887942209285,47.07263412517072],[13.582669608650408,47.06028936008816],[13.566647995349289,47.05315297022694],[13.567431847349804,47.04080580803383],[13.584232201809778,47.035594349457995],[13.585013128760753,47.02324410540753],[13.601809583940401,47.01802829541196],[13.602587587905841,47.00567497152497],[13.586574243986512,46.99853814358565],[13.587354432493612,46.986182427316734],[13.604142860048746,46.980962853096564],[13.604920128457533,46.96860406006044],[13.588914071876419,46.96146552782613],[13.589693522983945,46.94910434611237],[13.573693772938487,46.94196284319048],[13.574475404081113,46.92959927546188],[13.558481958284851,46.92245480594411],[13.541705913829885,46.927672633582546],[13.525717806926604,46.920523930345716],[13.52650670695145,46.90815867114693],[13.51052490356751,46.90100700931841],[13.511315974822159,46.888639371052825],[13.495340472660184,46.881484754730536],[13.49613371248982,46.86911474007089],[13.480164509250669,46.86195717335515],[13.480959915003009,46.84958478497745],[13.464997008385772,46.84242427197095],[13.465794577411007,46.8300495125544],[13.482549976076784,46.82483456735602],[13.483344631633623,46.81245673963887],[13.500096170331307,46.807237455151295],[13.500887914459497,46.79485656118622],[13.517635591780081,46.78963293956553],[13.518424426519328,46.77724898140909],[13.535168241058482,46.77202102481601],[13.53595416844837,46.75963400452868],[13.552694118806402,46.75440171512869],[13.553477140886491,46.74201163477478],[13.5702132256684,46.736775014738],[13.57099334447812,46.72438187638576],[13.587725562293516,46.719140927887054],[13.588502779872275,46.70674473360856],[13.605231129335404,46.701499458827435],[13.606005447722449,46.68910021069873],[13.622729927452237,46.68385061181942],[13.638684180851758,46.690999680845735],[13.655408877468847,46.685745178494045],[13.671368410551521,46.692890032208915],[13.670604230033623,46.70529065862758],[13.653875445808739,46.7105457439483],[13.653108368560515,46.722943318497194],[13.636375703934505,46.72819408014655],[13.635605727911576,46.74058860074728],[13.618869184256566,46.74583503653718],[13.602906714114905,46.73868637005872],[13.586170394365402,46.74392789747563],[13.585392443786274,46.756318671242816],[13.568652252420227,46.76155586931695],[13.56787139775113,46.77394358400343],[13.551127336156723,46.77917645056032],[13.55034357535551,46.79156110410058],[13.533595644925633,46.796789636970495],[13.532808975950127,46.809171227302876],[13.516057178082267,46.81439542432072],[13.515267598890212,46.826773949387466],[13.531234895599074,46.83392897264774],[13.53044748399053,46.84630512613087],[13.513687695235522,46.85152556107589],[13.51289737053898,46.86389864617093],[13.528871917324402,46.87105199090183],[13.5280837620334,46.8834227006657],[13.544064606197884,46.89057309109037],[13.543278622966062,46.90294142284726],[13.559265766801413,46.91008885486675],[13.57603792794034,46.90486668356426],[13.592030403360726,46.91200988216384],[13.591251688610404,46.92437652252456],[13.607250464419838,46.931516754714984],[13.624026977883924,46.92628907547013],[13.640031074811489,46.93342506673196],[13.639259640415945,46.945790007205034],[13.65527003842075,46.95292302406154],[13.654500791028658,46.965285575294935],[13.637716042063769,46.970514426671215],[13.636943877877652,46.982873904153564],[13.652961568532424,46.990005212569656],[13.652191593199303,47.0023622971029],[13.63539881891119,47.007587390846695],[13.634625923900952,47.019941398552135],[13.617829242839482,47.025162144306314],[13.617053426085594,47.037513073158124],[13.633079402251171,47.044643938924125],[13.6323057753813,47.05699247009073],[13.615501058059337,47.0622094527622],[13.614724506555685,47.074554902017226],[13.63075778897522,47.08168405064196],[13.629983429208261,47.094027098532045],[13.613170667988614,47.09924031569694],[13.612393380693488,47.11158027862977],[13.595576707463158,47.116789139662124],[13.594796490567669,47.12912601562886],[13.577975906728215,47.13433051839585],[13.577192758160056,47.14666430539149],[13.560368265117802,47.15186444776495],[13.544331070599574,47.14473021761654],[13.527506823845219,47.1499254132632],[13.5267156181297,47.162255422806716],[13.509887469723914,47.16744625467224],[13.493854686802843,47.160306494623924],[13.477026802057106,47.16549237954077],[13.47622753694822,47.17781860509807],[13.45939575812577,47.18300012286542],[13.458593552670498,47.19532325151062],[13.441757881205783,47.20050040002303],[13.440952733336768,47.21282042976901],[13.456988381113284,47.21996400345009],[13.456185414771532,47.232281625271554],[13.43934167403502,47.23745498091468],[13.438535762361514,47.24976950084437],[13.421688127134889,47.254938482180826],[13.42087926805939,47.2672498982419],[13.436923174366692,47.27439302574904],[13.43611649780417,47.286702029259374],[13.41926078233647,47.291867212432834],[13.41845115544685,47.30417310910074],[13.401591543647088,47.30933391293792],[13.400778964357292,47.321636700796965],[13.416831133005243,47.32877937793331],[13.416020737210609,47.34107974864137],[13.43207928450882,47.34821942817834],[13.431271074906524,47.360517379137505],[13.4143991758665,47.36567495900638],[13.413588010073896,47.37796979721211],[13.429653887789609,47.38510774642086],[13.428844910032419,47.397400161296524],[13.411964907639318,47.402553936048704],[13.41115297075375,47.414843235233725],[13.394269062138617,47.419992621878016],[13.393454164043208,47.4322788034255],[13.376566350667844,47.43742379989557],[13.36049764596114,47.43028203597174],[13.343610144010302,47.435422062666106],[13.327546904556565,47.42827602459056],[13.310659725351538,47.43341108261458],[13.309831566422524,47.4456927534745],[13.292940496404468,47.45082341684329],[13.27688181081503,47.443671835989974],[13.259991081104538,47.4487975306017],[13.243937886098642,47.441641682715535],[13.227047508008273,47.44676240969892],[13.226206090860689,47.45903955383633],[13.209311835955585,47.46415588172939],[13.208467446559348,47.4764298985765],[13.22452245664378,47.48358829186775],[13.223680239321641,47.49585988432959],[13.206777864887522,47.50097237912876],[13.20593267235818,47.5132408414045],[13.189026419356999,47.51834893220022],[13.188178249546826,47.53061426236946],[13.20424148327753,47.53777220638816],[13.203395486471983,47.55003510767199],[13.186481102939757,47.555139360260284],[13.185632125887645,47.56739912656047],[13.168713862042347,47.572498970254166],[13.167861902667275,47.584755599660625],[13.18393336364757,47.59191309032346],[13.183083578203865,47.60416728637024],[13.166157172809287,47.609263286774954],[13.165304402069681,47.62151434306945],[13.148374114622344,47.62660592971037],[13.147518356507641,47.63885384435284],[13.163598048326962,47.64601087760638],[13.162744465066675,47.658256354440795],[13.145806025035526,47.663344092743024],[13.144949451419969,47.67558642508543],[13.128007127602784,47.68066974477663],[13.127147561549954,47.69290893073753],[13.110201355481415,47.69798782982162],[13.109338794909245,47.71022386751533],[13.125427610052855,47.717381712623244],[13.124567224348992,47.72961530715074],[13.107612851384367,47.734690350049014],[13.106749468171023,47.74692079349439],[13.089791211235875,47.751991410969886],[13.073700629150975,47.74483101896322],[13.056742785585516,47.74989664429594],[13.055871228963195,47.762123225912156],[13.038909509334172,47.767184422700026],[13.022823647824302,47.76001847501702],[13.00586235933904,47.76507467973205],[13.004982627371007,47.77729739322442],[12.988017470752554,47.782349166291944],[12.971936357444301,47.77517766620018],[12.954971649752439,47.780224447289804],[12.938896160402116,47.773048672460305],[12.939786229875653,47.760827391278674],[12.956746621858745,47.755781167043885],[12.972821259416646,47.76295566759596],[12.989782105350862,47.75790445373486],[12.990664002159496,47.74567929747834],[13.00762098476282,47.74062365280976],[13.008499878484113,47.72839534076901],[13.025452996188232,47.72333526726167],[13.041531520598456,47.73050294536885],[13.0584850681235,47.725437883268555],[13.059355794302252,47.71320570524928],[13.076305469010112,47.70813621742062],[13.077173197417556,47.695900888307676],[13.094118997756745,47.69082697673304],[13.094983730472146,47.67858849840717],[13.111925654896028,47.67351016507364],[13.112787393998643,47.66126853941932],[13.129725440965519,47.656185786318645],[13.130584188534547,47.64394101522419],[13.114510051644116,47.63677970505653],[13.115370970446605,47.62453249775335],[13.13230086609521,47.61944589281762],[13.133158796345478,47.60719554291349],[13.1170919886596,47.600032506423354],[13.117952088329215,47.587779723807145],[13.134873840431878,47.58268926923015],[13.135730954526167,47.57043334686427],[13.15264883413819,47.56533848021121],[13.153502964730823,47.55307942000073],[13.137444367461784,47.54591593462409],[13.138300666560735,47.53365444616846],[13.155210413633794,47.52855573493851],[13.156063732200812,47.51629111150816]]],[[[13.921387321063863,46.62609549481989],[13.904677215672937,46.63139667525129],[13.903949959597947,46.6438128683638],[13.887235937147036,46.64910974287279],[13.886505798833948,46.661522897469304],[13.86978786063775,46.66681546382285],[13.853804109641334,46.65969427813331],[13.854539325133256,46.6472817953164],[13.871253215006845,46.641989825948976],[13.871985546984753,46.629574303612785],[13.888695525762266,46.6242780269636],[13.889424976279956,46.61185946721074],[13.906131042644423,46.6065588855132],[13.922111696957016,46.61367626529517],[13.93881788397789,46.60837078117901],[13.954803728467194,46.61548392605126],[13.954084429329235,46.62790382272369],[13.937374208388606,46.63320990783708],[13.921387321063863,46.62609549481989]]]]}'

This is the code I am using, which works with all of my other substract geometries, but not with the one above.

import * as jsts from 'jsts';

const reader = new jsts.io.GeoJSONReader();
const writer = new jsts.io.GeoJSONWriter();
const coverJsts = reader.read(cover);
const geometryJsts = reader.read(substract);
const difference = jsts.operation.overlay.OverlayOp.difference(coverJsts, geometryJsts);

Now. this line const difference = jsts.operation.overlay.OverlayOp.difference(coverJsts, geometryJsts) fails silently. It never finishes, never produces an error, never produces an output and I cannot see any reason. If needed, I can provide different geometries of similar shape with which I do not encounter this problem. Here, a visualisation of substractGeojson and coverGeojson done on geojson.io.

coverGeojson (basically a geometry that covers the whole world)

Screenshot 2024-10-03 at 12 01 59

substractGeojson (the 'path' I want to stencil into the cover)

Screenshot 2024-10-03 at 11 59 56

I am using jsts: 2.11.0

bjornharrtell commented 1 month ago

Perhaps it's hitting a path that is highly inefficient as ported JavaScript, so that it will simply run "forever". Will require a substantial effort to get to the root cause and might be difficult to fix, so it's not likely I will be able to help in short term. A first step would be to compare with upstream, both with the version that the port is based on and newer. Assuming latest upstream work I would and you need to resolve this quicker I would suggest to do this kind of calculation serverside using upstream.

Stophface commented 1 month ago

@bjornharrtell thanks for the quick response. Is there a potential workaround? Like splitting the geometry into smaller parts and do the calculation step by step? I cannot do it Server side, it must run on the client.

bjornharrtell commented 1 month ago

I do not think that will help. No immediate solution comes to mind, but I do wonder if your use case really needs this perhaps you can rethink.

Stophface commented 1 month ago

@bjornharrtell what do you mean by „if my use case really needs this“.

My (offline) application displays the path a user took. If you drive from lets New York to Washington, that is the path I want to display. Not sure how I can work around this.

The strange thing is: when I try to run the difference algorithm with a waaaaay more complex cover geometry, it works like a charm.

bjornharrtell commented 1 month ago

Well, why do you need it cut out to display it?

Anyway it's surely possible find out the root cause if you dig deep enough.

Stophface commented 1 month ago

@bjornharrtell Because that is what my app needs to do :)

I will play around with it and let you know if I find sth out! Thanks for your help!