Created
February 27, 2014 15:22
-
-
Save justincy/9252184 to your computer and use it in GitHub Desktop.
Mapshaper infinite loop bug
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
{ | |
"type": "Polygon", | |
"coordinates": [ | |
[ | |
[ | |
-3.3728184967442476, | |
51.76669033915902 | |
], | |
[ | |
-3.372450829956119, | |
51.76665686709262 | |
], | |
[ | |
-3.3715205726154114, | |
51.7666614313401 | |
], | |
[ | |
-3.3707364105456388, | |
51.766704747826786 | |
], | |
[ | |
-3.369953641155084, | |
51.766746244474035 | |
], | |
[ | |
-3.370020953700058, | |
51.766624070093144 | |
], | |
[ | |
-3.3699792116812533, | |
51.7664420223113 | |
], | |
[ | |
-3.369592988041278, | |
51.76660927559378 | |
], | |
[ | |
-3.369406207372449, | |
51.766662705335165 | |
], | |
[ | |
-3.369126110774298, | |
51.76669743974169 | |
], | |
[ | |
-3.3687725451979507, | |
51.76669886008676 | |
], | |
[ | |
-3.3683703648797487, | |
51.766626213099364 | |
], | |
[ | |
-3.368189864223243, | |
51.76655188371126 | |
], | |
[ | |
-3.367961511239705, | |
51.766428655880105 | |
], | |
[ | |
-3.36743031013672, | |
51.76611472763001 | |
], | |
[ | |
-3.3670911470796594, | |
51.76587319579386 | |
], | |
[ | |
-3.3668674548473847, | |
51.76571214592806 | |
], | |
[ | |
-3.366594400860183, | |
51.76554807283606 | |
], | |
[ | |
-3.3663788509981676, | |
51.76541660043709 | |
], | |
[ | |
-3.3661371617879996, | |
51.76533128983197 | |
], | |
[ | |
-3.3657888531325373, | |
51.7652184438237 | |
], | |
[ | |
-3.3646930330766605, | |
51.764921853011224 | |
], | |
[ | |
-3.363870371764921, | |
51.76469671491672 | |
], | |
[ | |
-3.363539199567167, | |
51.764527014863276 | |
], | |
[ | |
-3.363319290412533, | |
51.76439468827896 | |
], | |
[ | |
-3.3631980654144136, | |
51.76431516779579 | |
], | |
[ | |
-3.362939370748495, | |
51.76409786789801 | |
], | |
[ | |
-3.362711465495907, | |
51.76384424312407 | |
], | |
[ | |
-3.362487138134995, | |
51.763516843378824 | |
], | |
[ | |
-3.362339196384658, | |
51.76322362601425 | |
], | |
[ | |
-3.362288024917016, | |
51.76306416443621 | |
], | |
[ | |
-3.3622342022604146, | |
51.76281661356048 | |
], | |
[ | |
-3.3622304581096647, | |
51.76254780102845 | |
], | |
[ | |
-3.3623624431707664, | |
51.761733409100856 | |
], | |
[ | |
-3.362363828772587, | |
51.761490613395594 | |
], | |
[ | |
-3.362337869075901, | |
51.76120587299992 | |
], | |
[ | |
-3.362263405005783, | |
51.760898316000535 | |
], | |
[ | |
-3.362249140522654, | |
51.76071324943229 | |
], | |
[ | |
-3.362385119257772, | |
51.760320528262 | |
], | |
[ | |
-3.3624642239519877, | |
51.7600120903332 | |
], | |
[ | |
-3.362222799856903, | |
51.75998251810207 | |
], | |
[ | |
-3.362222071876551, | |
51.75870658418023 | |
], | |
[ | |
-3.3616763987492178, | |
51.75867783924302 | |
], | |
[ | |
-3.361669851252178, | |
51.758556525227064 | |
], | |
[ | |
-3.3620344964846227, | |
51.758492054674676 | |
], | |
[ | |
-3.362035458057727, | |
51.758475858213956 | |
], | |
[ | |
-3.362038354949596, | |
51.758475824642616 | |
], | |
[ | |
-3.362037408250711, | |
51.758444364163246 | |
], | |
[ | |
-3.362038072288462, | |
51.75841828012314 | |
], | |
[ | |
-3.362464024813396, | |
51.75832072710038 | |
], | |
[ | |
-3.362538600444414, | |
51.758247028632596 | |
], | |
[ | |
-3.362516401202523, | |
51.75818344389655 | |
], | |
[ | |
-3.3625035420092164, | |
51.75814133130472 | |
], | |
[ | |
-3.36256369980928, | |
51.75811815428509 | |
], | |
[ | |
-3.3627799235644624, | |
51.75803292238011 | |
], | |
[ | |
-3.3626832047381985, | |
51.75794862128603 | |
], | |
[ | |
-3.362634107717115, | |
51.757906029668845 | |
], | |
[ | |
-3.362908755356294, | |
51.75774009272591 | |
], | |
[ | |
-3.363071088475917, | |
51.75745316866912 | |
], | |
[ | |
-3.363307788952075, | |
51.757230123041396 | |
], | |
[ | |
-3.3635775703604076, | |
51.757047156426935 | |
], | |
[ | |
-3.3638983000546987, | |
51.75682403382046 | |
], | |
[ | |
-3.3641816936618607, | |
51.756612133906565 | |
], | |
[ | |
-3.3641596952605197, | |
51.756507184627274 | |
], | |
[ | |
-3.3642004630267626, | |
51.756321479362946 | |
], | |
[ | |
-3.3645257883069677, | |
51.75615495028444 | |
], | |
[ | |
-3.3648433695647335, | |
51.75601998169234 | |
], | |
[ | |
-3.365212222431282, | |
51.755855642750866 | |
], | |
[ | |
-3.3656202324198037, | |
51.75569264602489 | |
], | |
[ | |
-3.3661343699611423, | |
51.755445689267354 | |
], | |
[ | |
-3.3668407607692816, | |
51.75513624907722 | |
], | |
[ | |
-3.367732609054384, | |
51.75482734400719 | |
], | |
[ | |
-3.368090977402009, | |
51.754652327698025 | |
], | |
[ | |
-3.3683293774175986, | |
51.754486799764244 | |
], | |
[ | |
-3.3685368639660624, | |
51.75435310280133 | |
], | |
[ | |
-3.3684853307618075, | |
51.7543258281182 | |
], | |
[ | |
-3.368515163718433, | |
51.7542103849978 | |
], | |
[ | |
-3.368313755138279, | |
51.75396995000952 | |
], | |
[ | |
-3.368183579799706, | |
51.753929203801285 | |
], | |
[ | |
-3.368168200359123, | |
51.753899709719015 | |
], | |
[ | |
-3.368116187493283, | |
51.753808598288735 | |
], | |
[ | |
-3.368588156842135, | |
51.75370149520005 | |
], | |
[ | |
-3.3688080872038215, | |
51.75364408358864 | |
], | |
[ | |
-3.368845870769164, | |
51.753695796286756 | |
], | |
[ | |
-3.3693379971213995, | |
51.75363251549355 | |
], | |
[ | |
-3.3696668669223313, | |
51.753632279991905 | |
], | |
[ | |
-3.370066308850438, | |
51.753713945975214 | |
], | |
[ | |
-3.3703263897396387, | |
51.7537864453774 | |
], | |
[ | |
-3.370602928217336, | |
51.75358899655779 | |
], | |
[ | |
-3.370638618251242, | |
51.75357149580074 | |
], | |
[ | |
-3.3708998161951635, | |
51.75344166410654 | |
], | |
[ | |
-3.3712233429223426, | |
51.75331290299263 | |
], | |
[ | |
-3.371536370911448, | |
51.75322023093479 | |
], | |
[ | |
-3.3720614714280672, | |
51.7531457636415 | |
], | |
[ | |
-3.372076250200606, | |
51.753489979311894 | |
], | |
[ | |
-3.3720623763245334, | |
51.75370144996587 | |
], | |
[ | |
-3.372057972561334, | |
51.753747359856604 | |
], | |
[ | |
-3.3720463413058184, | |
51.75393722385788 | |
], | |
[ | |
-3.3722862113211987, | |
51.75425093668685 | |
], | |
[ | |
-3.3722859619247534, | |
51.754290503774115 | |
], | |
[ | |
-3.3722859305123896, | |
51.75433726180219 | |
], | |
[ | |
-3.372747248023614, | |
51.75445236527185 | |
], | |
[ | |
-3.3734025844116706, | |
51.75461105829663 | |
], | |
[ | |
-3.3737834861582665, | |
51.75470192021315 | |
], | |
[ | |
-3.3741845000323245, | |
51.75483480747749 | |
], | |
[ | |
-3.3746446502852185, | |
51.755006565892096 | |
], | |
[ | |
-3.374990960385478, | |
51.75515088047554 | |
], | |
[ | |
-3.3756410377702775, | |
51.75551733455312 | |
], | |
[ | |
-3.375824429697116, | |
51.75564017468077 | |
], | |
[ | |
-3.3761584782394767, | |
51.75590512029615 | |
], | |
[ | |
-3.3763759783508456, | |
51.75614895028014 | |
], | |
[ | |
-3.3765544568232575, | |
51.75639593446821 | |
], | |
[ | |
-3.3765820856062843, | |
51.756446864456514 | |
], | |
[ | |
-3.3763188371295683, | |
51.756461636941644 | |
], | |
[ | |
-3.375878367787117, | |
51.75646139912177 | |
], | |
[ | |
-3.3755533032481173, | |
51.75649217969786 | |
], | |
[ | |
-3.374564150140526, | |
51.75712688821441 | |
], | |
[ | |
-3.374826276618988, | |
51.7573135503801 | |
], | |
[ | |
-3.374793809716704, | |
51.757341804917246 | |
], | |
[ | |
-3.374781101704758, | |
51.75735274379466 | |
], | |
[ | |
-3.374957090421479, | |
51.75756559041596 | |
], | |
[ | |
-3.3752512227552227, | |
51.757756373132416 | |
], | |
[ | |
-3.3753304767889287, | |
51.757694301112416 | |
], | |
[ | |
-3.3756618060001546, | |
51.75786936137091 | |
], | |
[ | |
-3.375677574688616, | |
51.75786378168739 | |
], | |
[ | |
-3.3756976339885725, | |
51.757856353408705 | |
], | |
[ | |
-3.375749339459846, | |
51.757889018046974 | |
], | |
[ | |
-3.3758616870543405, | |
51.75796233530961 | |
], | |
[ | |
-3.375913338390796, | |
51.75794554530293 | |
], | |
[ | |
-3.3759321405342586, | |
51.75794442600081 | |
], | |
[ | |
-3.3760275176797028, | |
51.75793611589031 | |
], | |
[ | |
-3.376147326629342, | |
51.75792122533583 | |
], | |
[ | |
-3.3762974429743764, | |
51.757902383015036 | |
], | |
[ | |
-3.3763679235165602, | |
51.75788537231234 | |
], | |
[ | |
-3.3763310022665327, | |
51.75781476901819 | |
], | |
[ | |
-3.3763099316927585, | |
51.75774128254 | |
], | |
[ | |
-3.3764465199264317, | |
51.757754069940994 | |
], | |
[ | |
-3.376571986893317, | |
51.75792524411803 | |
], | |
[ | |
-3.3767025650349227, | |
51.75807387864944 | |
], | |
[ | |
-3.376721750546868, | |
51.75813300016796 | |
], | |
[ | |
-3.3768114722905676, | |
51.75822456527341 | |
], | |
[ | |
-3.3768234425084938, | |
51.758237013646095 | |
], | |
[ | |
-3.3768937334934255, | |
51.75830902422781 | |
], | |
[ | |
-3.3768679898383893, | |
51.758320116044956 | |
], | |
[ | |
-3.376823662627896, | |
51.75833951822763 | |
], | |
[ | |
-3.376802538324759, | |
51.75840720460901 | |
], | |
[ | |
-3.3768661608227935, | |
51.758450519384574 | |
], | |
[ | |
-3.3768987100077443, | |
51.75847261770725 | |
], | |
[ | |
-3.3769012521914674, | |
51.7585085553486 | |
], | |
[ | |
-3.3769138530077707, | |
51.75863699126426 | |
], | |
[ | |
-3.376928064794259, | |
51.758675489746786 | |
], | |
[ | |
-3.37704648444016, | |
51.75880538343779 | |
], | |
[ | |
-3.377055778656135, | |
51.758920370292714 | |
], | |
[ | |
-3.3770287503250374, | |
51.7589368723078 | |
], | |
[ | |
-3.377028859711657, | |
51.75894046776833 | |
], | |
[ | |
-3.3769447683069713, | |
51.75898641225535 | |
], | |
[ | |
-3.376917876618514, | |
51.75900740857115 | |
], | |
[ | |
-3.3769265408126103, | |
51.75905406471357 | |
], | |
[ | |
-3.376956658425232, | |
51.759091477660625 | |
], | |
[ | |
-3.3769658960760136, | |
51.759109353145156 | |
], | |
[ | |
-3.376937639562453, | |
51.75922837667378 | |
], | |
[ | |
-3.3769535734814036, | |
51.75927584682966 | |
], | |
[ | |
-3.376974700551565, | |
51.75935113089106 | |
], | |
[ | |
-3.3769669121747055, | |
51.75938089525845 | |
], | |
[ | |
-3.376930812392877, | |
51.75952788541764 | |
], | |
[ | |
-3.3769258131727273, | |
51.75964933401928 | |
], | |
[ | |
-3.3769251850572224, | |
51.75967631694063 | |
], | |
[ | |
-3.376921360014341, | |
51.75974110310236 | |
], | |
[ | |
-3.3767546236511503, | |
51.75992828854181 | |
], | |
[ | |
-3.376719614588827, | |
51.75996826278439 | |
], | |
[ | |
-3.376725818652787, | |
51.759981677892895 | |
], | |
[ | |
-3.3767505802616835, | |
51.76003354059297 | |
], | |
[ | |
-3.376589581426584, | |
51.760218860202414 | |
], | |
[ | |
-3.376576791984292, | |
51.76032241630748 | |
], | |
[ | |
-3.376430795196324, | |
51.76042933085553 | |
], | |
[ | |
-3.3763995298746385, | |
51.760497135896344 | |
], | |
[ | |
-3.3763228139391415, | |
51.760499832646396 | |
], | |
[ | |
-3.3762229219583815, | |
51.76050280072369 | |
], | |
[ | |
-3.376138635537907, | |
51.760542452592624 | |
], | |
[ | |
-3.376071867673676, | |
51.76058639522037 | |
], | |
[ | |
-3.375956123730818, | |
51.760639903034814 | |
], | |
[ | |
-3.3759081588258844, | |
51.76068272625443 | |
], | |
[ | |
-3.375824882799897, | |
51.76075563591755 | |
], | |
[ | |
-3.375745296293064, | |
51.76080692188943 | |
], | |
[ | |
-3.3755598867157497, | |
51.760809091998496 | |
], | |
[ | |
-3.375392542166265, | |
51.76083353004395 | |
], | |
[ | |
-3.3751513221895197, | |
51.76090648903573 | |
], | |
[ | |
-3.375121476882854, | |
51.760925721112685 | |
], | |
[ | |
-3.3750348378473545, | |
51.76098338340603 | |
], | |
[ | |
-3.374983728893455, | |
51.76101815035754 | |
], | |
[ | |
-3.3749997956317332, | |
51.761165428744505 | |
], | |
[ | |
-3.3750156986295603, | |
51.761307313931745 | |
], | |
[ | |
-3.3751346933938997, | |
51.76145608565735 | |
], | |
[ | |
-3.3754219903783067, | |
51.76175485011398 | |
], | |
[ | |
-3.375622788373076, | |
51.76202045726032 | |
], | |
[ | |
-3.3757315120603004, | |
51.76197422545542 | |
], | |
[ | |
-3.3757386455122087, | |
51.761970545218475 | |
], | |
[ | |
-3.375842229791777, | |
51.76208892431956 | |
], | |
[ | |
-3.375783549560034, | |
51.762112990018665 | |
], | |
[ | |
-3.3755616737757386, | |
51.76220280789145 | |
], | |
[ | |
-3.375585643002587, | |
51.76222860372845 | |
], | |
[ | |
-3.3758847006588026, | |
51.762484967716475 | |
], | |
[ | |
-3.375844578040472, | |
51.76249982435236 | |
], | |
[ | |
-3.3756010812444845, | |
51.7625934921162 | |
], | |
[ | |
-3.3756204864155097, | |
51.76261214788312 | |
], | |
[ | |
-3.3762602375612776, | |
51.76325476920033 | |
], | |
[ | |
-3.376614517842979, | |
51.76361119340476 | |
], | |
[ | |
-3.3765073217978228, | |
51.76366010566465 | |
], | |
[ | |
-3.3764954873608923, | |
51.76369980839324 | |
], | |
[ | |
-3.3766419902414495, | |
51.76389501403494 | |
], | |
[ | |
-3.3764688144357877, | |
51.764061593043145 | |
], | |
[ | |
-3.3762213206504246, | |
51.764309968614306 | |
], | |
[ | |
-3.376201887156796, | |
51.764290414094376 | |
], | |
[ | |
-3.3761525245167863, | |
51.76423973853081 | |
], | |
[ | |
-3.3760122268016906, | |
51.764296231362785 | |
], | |
[ | |
-3.3758468648427757, | |
51.764338630468174 | |
], | |
[ | |
-3.375479842317441, | |
51.76442115521482 | |
], | |
[ | |
-3.3753189337833382, | |
51.76451475497682 | |
], | |
[ | |
-3.375210639788753, | |
51.7646230250592 | |
], | |
[ | |
-3.3749598837015435, | |
51.764859746678084 | |
], | |
[ | |
-3.3748598690222003, | |
51.76500208858109 | |
], | |
[ | |
-3.3747849736638735, | |
51.76511266512967 | |
], | |
[ | |
-3.374529646683524, | |
51.765389902550965 | |
], | |
[ | |
-3.374214269863671, | |
51.76555094752808 | |
], | |
[ | |
-3.3742144336471385, | |
51.76555634071917 | |
], | |
[ | |
-3.3742150614842426, | |
51.76557701461826 | |
], | |
[ | |
-3.37366220183053, | |
51.765887401463345 | |
], | |
[ | |
-3.3731430362415638, | |
51.76620998060991 | |
], | |
[ | |
-3.372882726325248, | |
51.76637127779744 | |
], | |
[ | |
-3.372842926529993, | |
51.76639691981791 | |
], | |
[ | |
-3.3728184967442476, | |
51.76669033915902 | |
] | |
] | |
] | |
} |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
var fs = require('fs'), | |
mapshaper = require('mapshaper'), | |
argv = require('optimist') | |
.default('i', 500) | |
.argv; | |
if(argv._.length !== 2){ | |
console.log('Usage: node simplify.js <input.geojson> <output.geojson>'); | |
process.exit(); | |
} | |
var data = fs.readFileSync(argv._[0]), | |
geoJSON = JSON.parse(data); | |
fs.writeFileSync(argv._[1], JSON.stringify(simplfyGeometry(geoJSON, parseInt(argv.i)))); | |
function simplfyGeometry(origGeom, interval) { | |
if(origGeom.type == 'Point') return origGeom; | |
var mapGeom = mapshaper.createTopology(mapshaper.importGeoJSON(origGeom)); | |
mapshaper.simplifyPaths(mapGeom.arcs, 'vis'); | |
mapGeom.arcs.setRetainedInterval(interval); | |
mapshaper.findAndRepairIntersections(mapGeom.arcs); | |
return mapshaper.exportGeoJSONObject(mapGeom.layers[0], mapGeom.arcs).geometries[0]; | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment