Skip to content

Instantly share code, notes, and snippets.

@burritojustice
Last active May 28, 2019 07:13
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save burritojustice/5938a5bee73792f7db101d4be87f056c to your computer and use it in GitHub Desktop.
Save burritojustice/5938a5bee73792f7db101d4be87f056c to your computer and use it in GitHub Desktop.
SF strip map
Display the source blob
Display the rendered blob
Raw
{ "type": "Polygon", "coordinates": [ [ [ -122.513140540999927, 37.771331115000066 ], [ -122.513161261730602, 37.77500552862233 ], [ -122.513165623999896, 37.775005364000037 ], [ -122.513132737999911, 37.776041666000083 ], [ -122.513350988999946, 37.777344713000048 ], [ -122.513516275999905, 37.777593565000075 ], [ -122.5139595699999, 37.777750550000064 ], [ -122.514194374410579, 37.777997321380703 ], [ -122.514171209999915, 37.777876950000064 ], [ -122.514629910999929, 37.778506286000038 ], [ -122.514493940999898, 37.779242982000085 ], [ -122.514854405999927, 37.779524894000076 ], [ -122.514897231999896, 37.779848400000049 ], [ -122.514724198999943, 37.781133816000079 ], [ -122.513444467999932, 37.782780631000037 ], [ -122.512680509999939, 37.784120416000064 ], [ -122.510746880999932, 37.784671595000077 ], [ -122.506896968999911, 37.78749541600007 ], [ -122.505852579999896, 37.788229022000053 ], [ -122.499577923999937, 37.788703871000052 ], [ -122.496197673999916, 37.787367063000033 ], [ -122.494641765999916, 37.788135581000063 ], [ -122.493586390999894, 37.787618750000036 ], [ -122.493586465109814, 37.787536543040048 ], [ -122.492830073999926, 37.787882585000034 ], [ -122.4927566799999, 37.787739177000049 ], [ -122.489829063999935, 37.789482184000065 ], [ -122.488991056999907, 37.78928318700008 ], [ -122.487864020999893, 37.789588179000077 ], [ -122.487369048999938, 37.789429841000072 ], [ -122.485980328999915, 37.790803706000077 ], [ -122.483293863999904, 37.794671237000045 ], [ -122.483517863999907, 37.794730018000052 ], [ -122.481957800999908, 37.79853524300006 ], [ -122.479927317999909, 37.802749533000053 ], [ -122.478405129999942, 37.808093307000036 ], [ -122.477896202999943, 37.808449042000063 ], [ -122.4779827939999, 37.810544992000075 ], [ -122.477580170999943, 37.810993113000052 ], [ -122.477123322999944, 37.811003225000036 ], [ -122.476466456999901, 37.810836476000077 ], [ -122.47596765399993, 37.809574583000085 ], [ -122.474949322999919, 37.809259973000053 ], [ -122.473009389999902, 37.80907264800004 ], [ -122.470601083999895, 37.80859892400008 ], [ -122.469304467999905, 37.80772703100007 ], [ -122.468790057999911, 37.807002813000054 ], [ -122.46830302099994, 37.806817901000045 ], [ -122.467203536999932, 37.806012229000089 ], [ -122.463579308999897, 37.804879815000049 ], [ -122.462213161999898, 37.805018622000034 ], [ -122.454353735999916, 37.806478398000081 ], [ -122.4491711739999, 37.80683674900007 ], [ -122.448728413981328, 37.806701616450205 ], [ -122.448286732999918, 37.806821423000088 ], [ -122.447180771999911, 37.807477161000065 ], [ -122.443684993999909, 37.807721709000077 ], [ -122.442626086999894, 37.808003755000072 ], [ -122.440527976999931, 37.808360694000044 ], [ -122.440032182999914, 37.80883285200008 ], [ -122.43992811499993, 37.80877905300008 ], [ -122.440286113999946, 37.808215570000073 ], [ -122.443705034072991, 37.807582272648965 ], [ -122.443710522718931, 37.807523728536076 ], [ -122.447570977961504, 37.806439926553821 ], [ -122.44743674872835, 37.805909266925582 ], [ -122.447257654143527, 37.805347639088197 ], [ -122.442458593980888, 37.806018057175898 ], [ -122.442582505098443, 37.806677053443401 ], [ -122.442612289283005, 37.806667262905741 ], [ -122.437514863999922, 37.80737229500005 ], [ -122.435752942999898, 37.807560090000038 ], [ -122.435555309999927, 37.806907427000056 ], [ -122.43415867199991, 37.806967317000044 ], [ -122.433834718999947, 37.805777758000033 ], [ -122.43234005599993, 37.805978057000061 ], [ -122.432219215999908, 37.805371597000089 ], [ -122.432090715999891, 37.805199544000061 ], [ -122.432219214999918, 37.805371597000089 ], [ -122.432340054999941, 37.805978057000061 ], [ -122.432213338999929, 37.806033642000045 ], [ -122.432165156999929, 37.806099206000056 ], [ -122.432209843999942, 37.806153412000072 ], [ -122.432227006999938, 37.80621424900005 ], [ -122.432202177999898, 37.806257920000064 ], [ -122.432241315999931, 37.806446597000047 ], [ -122.432320675999904, 37.806860176000043 ], [ -122.432383451999897, 37.807103744000074 ], [ -122.432564682999896, 37.808479722000072 ], [ -122.432614988999944, 37.808483704000082 ], [ -122.432603483999912, 37.808507242000076 ], [ -122.432342319999918, 37.808516328000053 ], [ -122.432078431999912, 37.807223424000085 ], [ -122.431999351999934, 37.807178023000063 ], [ -122.431443836999904, 37.807250987000089 ], [ -122.431386630999896, 37.807314416000054 ], [ -122.431727120999938, 37.809023596000088 ], [ -122.431341937999946, 37.809056687000066 ], [ -122.430994998999893, 37.807365467000068 ], [ -122.430915918999915, 37.807320064000066 ], [ -122.430360402999895, 37.807393023000088 ], [ -122.430303194999908, 37.807456451000064 ], [ -122.430621182999914, 37.809166689000051 ], [ -122.430108306999898, 37.809215601000062 ], [ -122.429835, 37.80782533200005 ], [ -122.429264029999899, 37.807903346000046 ], [ -122.429270969999948, 37.80797053200007 ], [ -122.428220301999943, 37.808404090000067 ], [ -122.426992175999942, 37.80811579300007 ], [ -122.426990506999914, 37.80814597300008 ], [ -122.427533437999898, 37.808639037000034 ], [ -122.428010229999927, 37.808566356000085 ], [ -122.428032393999899, 37.808685979000074 ], [ -122.427533241999924, 37.808782499000074 ], [ -122.427523467999947, 37.808739395000089 ], [ -122.427301030999899, 37.808773246000044 ], [ -122.42728724299991, 37.808708919000082 ], [ -122.427490715999909, 37.808678125000085 ], [ -122.426932030999922, 37.808171950000087 ], [ -122.426909232999947, 37.808151294000083 ], [ -122.426839001999895, 37.80811329800008 ], [ -122.42671753399992, 37.808168847000047 ], [ -122.426815900999941, 37.808623913000076 ], [ -122.426810992999947, 37.80870159300008 ], [ -122.426826660999893, 37.808775995000076 ], [ -122.426826276999918, 37.80882358100007 ], [ -122.426830071999916, 37.808969791000038 ], [ -122.426848657999926, 37.809018932000072 ], [ -122.426823913999897, 37.809066033000079 ], [ -122.4268171499999, 37.809138936000068 ], [ -122.426794966999921, 37.809305775000041 ], [ -122.426694681999948, 37.809609005000084 ], [ -122.426562715999921, 37.809860768000078 ], [ -122.426374276999923, 37.810119433000068 ], [ -122.426123484999891, 37.810359668000046 ], [ -122.425903487999904, 37.810509004000039 ], [ -122.425680232999923, 37.810622377000072 ], [ -122.42536057399991, 37.810732660000042 ], [ -122.424978185999919, 37.810797668000077 ], [ -122.424665086999937, 37.810792659000072 ], [ -122.424444286999915, 37.810743475000038 ], [ -122.424311631999899, 37.810654459000034 ], [ -122.424286701999904, 37.810493507000047 ], [ -122.424365683999895, 37.810421181000038 ], [ -122.424555344999931, 37.810411900000076 ], [ -122.424625926999909, 37.810454629000048 ], [ -122.424672589999943, 37.810548632000064 ], [ -122.424687883999923, 37.810594042000048 ], [ -122.424748619999946, 37.810630609000043 ], [ -122.424903113999903, 37.810634920000041 ], [ -122.425090453999928, 37.810618635000083 ], [ -122.425282917999937, 37.810579358000041 ], [ -122.425460861999909, 37.810525545000075 ], [ -122.425631162999935, 37.810454715000049 ], [ -122.425805864999916, 37.810361107000062 ], [ -122.426000279999926, 37.810224237000057 ], [ -122.426179881999929, 37.81005282700005 ], [ -122.426365155999918, 37.809805800000049 ], [ -122.426499698999919, 37.809552096000061 ], [ -122.426576837999903, 37.809330982000063 ], [ -122.426618554999948, 37.809123828000054 ], [ -122.426632099999892, 37.808894652000049 ], [ -122.426629777999892, 37.808829093000043 ], [ -122.426569192999921, 37.80845626100006 ], [ -122.426521448999893, 37.808150762000082 ], [ -122.426487161999944, 37.808163683000089 ], [ -122.42642142099993, 37.807831695000061 ], [ -122.426356154999894, 37.807651465000049 ], [ -122.426289370999939, 37.807546113000058 ], [ -122.426116989999912, 37.807640950000064 ], [ -122.426043901999947, 37.807692961000043 ], [ -122.425788908999891, 37.807405953000057 ], [ -122.425933953999902, 37.807458523000037 ], [ -122.42612151599991, 37.807348331000071 ], [ -122.425865288999944, 37.807147184000087 ], [ -122.425575132999938, 37.806972686000051 ], [ -122.425259770999901, 37.806827442000042 ], [ -122.42492444699991, 37.806713425000055 ], [ -122.424602196999899, 37.806636277000052 ], [ -122.424428485999897, 37.806613016000085 ], [ -122.424135772999932, 37.806606805000058 ], [ -122.423932018999892, 37.80662661000008 ], [ -122.423706445999926, 37.806672867000088 ], [ -122.423399843999903, 37.806798731000072 ], [ -122.423155390999909, 37.806918088000089 ], [ -122.422867174999908, 37.807085541000049 ], [ -122.42266961699994, 37.807210999000063 ], [ -122.422410921999926, 37.80738209000009 ], [ -122.4221593599999, 37.807561305000036 ], [ -122.421916608999936, 37.807746557000087 ], [ -122.421799628999906, 37.807841858000074 ], [ -122.421618659999922, 37.807993085000078 ], [ -122.421537, 37.808061769000062 ], [ -122.421789174999901, 37.808374240000035 ], [ -122.421758560999933, 37.80839534100005 ], [ -122.421493253999927, 37.808110552000073 ], [ -122.421324496999944, 37.808278802000075 ], [ -122.421594066999944, 37.80853273300005 ], [ -122.421564936999914, 37.808536478000065 ], [ -122.421300875999918, 37.808302536000042 ], [ -122.421061607999945, 37.808555715000068 ], [ -122.42110217499993, 37.808803534000049 ], [ -122.421494931999916, 37.809133418000044 ], [ -122.421448314999907, 37.809163213000033 ], [ -122.422886142999914, 37.810219171000085 ], [ -122.422843778999948, 37.810255665000057 ], [ -122.42136641299993, 37.809161131000053 ], [ -122.421210309999935, 37.809190082000043 ], [ -122.421035963999941, 37.80895711800008 ], [ -122.420944183999893, 37.808967370000062 ], [ -122.420910920999916, 37.808797310000045 ], [ -122.420858050999925, 37.808795641000074 ], [ -122.420716761999927, 37.808900447000042 ], [ -122.420759920999899, 37.809084919000043 ], [ -122.420693589999928, 37.809080166000058 ], [ -122.420677375999901, 37.809022096000035 ], [ -122.420360581999944, 37.809003919000077 ], [ -122.420384506999937, 37.808933529000058 ], [ -122.420668362999947, 37.808958073000042 ], [ -122.420635260999916, 37.808756239000047 ], [ -122.42054087799994, 37.808768503000067 ], [ -122.420461952999915, 37.808303051000053 ], [ -122.419103988999893, 37.808467510000071 ], [ -122.419121897999901, 37.808545041000059 ], [ -122.41898090299992, 37.808562116000076 ], [ -122.418965918999902, 37.808484230000033 ], [ -122.417885700999932, 37.808615038000084 ], [ -122.417922540999939, 37.808821920000071 ], [ -122.417844004999893, 37.808830106000073 ], [ -122.417811359999916, 37.808646780000061 ], [ -122.417726043999892, 37.808645567000042 ], [ -122.417731315999902, 37.808592876000034 ], [ -122.417556461999936, 37.808576551000044 ], [ -122.417488943999899, 37.808583665000072 ], [ -122.417484733999913, 37.808420660000081 ], [ -122.417669315999945, 37.808375574000081 ], [ -122.417621738999912, 37.808295529000077 ], [ -122.417385245999924, 37.808317705000036 ], [ -122.417346671999894, 37.808121127000049 ], [ -122.416346218999934, 37.808260309000048 ], [ -122.416354615999921, 37.808328558000085 ], [ -122.416305018999935, 37.808334625000043 ], [ -122.416338522999922, 37.808476112000051 ], [ -122.417184856999938, 37.808496551000076 ], [ -122.417182491999938, 37.808533413000077 ], [ -122.416150148999918, 37.808502845000078 ], [ -122.416144468999903, 37.808539761000077 ], [ -122.416206638999938, 37.808543932000077 ], [ -122.416186922999941, 37.808853983000063 ], [ -122.417428241999914, 37.80892715300007 ], [ -122.417413148999913, 37.809166197000081 ], [ -122.419290994999926, 37.810403372000053 ], [ -122.419314560999908, 37.810380611000085 ], [ -122.420595036999941, 37.811266988000057 ], [ -122.420353469999895, 37.811509563000072 ], [ -122.420001824999929, 37.811280746000079 ], [ -122.419845713999905, 37.811320054000078 ], [ -122.419951520999916, 37.811563027000034 ], [ -122.419915732999925, 37.811574293000035 ], [ -122.419724411999937, 37.811134944000059 ], [ -122.419215222999924, 37.810893741000086 ], [ -122.419186230999912, 37.810925335000036 ], [ -122.41909787499992, 37.810915130000069 ], [ -122.418988144999901, 37.810835418000067 ], [ -122.418935536999925, 37.810882845000037 ], [ -122.419125143999906, 37.811023348000049 ], [ -122.419048674999942, 37.811094447000073 ], [ -122.419466196999906, 37.811381744000073 ], [ -122.419351090999896, 37.811486556000034 ], [ -122.418846138999925, 37.811473362000072 ], [ -122.41535230799991, 37.809160849000079 ], [ -122.415202809999926, 37.809168129000057 ], [ -122.41518765099994, 37.809204150000085 ], [ -122.415412882999931, 37.809363422000047 ], [ -122.415370185999905, 37.809406658000057 ], [ -122.415040183999906, 37.809186118000071 ], [ -122.414889241999902, 37.809241452000037 ], [ -122.415222474999894, 37.809437895000087 ], [ -122.41517988399994, 37.809481198000071 ], [ -122.414846386999898, 37.809257163000041 ], [ -122.41478040599992, 37.809281351000038 ], [ -122.414775221999946, 37.809371859000066 ], [ -122.415340856999933, 37.809754810000072 ], [ -122.41528872899994, 37.809837994000077 ], [ -122.414563096999927, 37.809564305000038 ], [ -122.414024095999935, 37.809471418000044 ], [ -122.413420423999924, 37.809235887000057 ], [ -122.413373917999934, 37.809317950000036 ], [ -122.414281503999916, 37.809946038000078 ], [ -122.414026901999932, 37.810139169000081 ], [ -122.4137802219999, 37.809907392000071 ], [ -122.413856537999948, 37.809846081000046 ], [ -122.412616708999906, 37.809078574000068 ], [ -122.4124983829999, 37.809065522000083 ], [ -122.412397838999937, 37.809119408000072 ], [ -122.412629168999899, 37.809393415000045 ], [ -122.412574736999943, 37.80942735800005 ], [ -122.41232733399994, 37.809179474000075 ], [ -122.41209723399993, 37.809280510000065 ], [ -122.412315224999929, 37.809561837000047 ], [ -122.412253446999898, 37.809596809000084 ], [ -122.412043084999937, 37.809343108000064 ], [ -122.412000285999909, 37.809332467000047 ], [ -122.411894891999907, 37.809388950000084 ], [ -122.41286197699992, 37.810522253000045 ], [ -122.412705376999895, 37.810584420000055 ], [ -122.411509640999896, 37.811237596000069 ], [ -122.411488911999925, 37.811219194000046 ], [ -122.411323035999942, 37.810939707000045 ], [ -122.411245264999934, 37.811116760000061 ], [ -122.410949813999935, 37.811220594000076 ], [ -122.410929363999912, 37.811279243000058 ], [ -122.410681956999895, 37.811367009000037 ], [ -122.410614374999909, 37.811352876000058 ], [ -122.410415237999928, 37.811414426000056 ], [ -122.410148914999922, 37.811506055000052 ], [ -122.408512489999907, 37.811284005000061 ], [ -122.407578152999918, 37.808803477000083 ], [ -122.407706066999936, 37.808375634000072 ], [ -122.407614258999899, 37.808397455000033 ], [ -122.407507093999925, 37.808114745000069 ], [ -122.407548292999934, 37.808106151000061 ], [ -122.407536833999927, 37.808071802000086 ], [ -122.407446361999916, 37.808007364000048 ], [ -122.407486853999899, 37.807930495000051 ], [ -122.407431520999921, 37.807903585000076 ], [ -122.4073546649999, 37.808048586000041 ], [ -122.406644355999902, 37.807817972000066 ], [ -122.406816128999935, 37.809995141000059 ], [ -122.40678691699992, 37.810017009000035 ], [ -122.406128348999914, 37.810038425000073 ], [ -122.405903885999919, 37.807159701000046 ], [ -122.405321883999932, 37.806866941000067 ], [ -122.404388309999945, 37.808864982000046 ], [ -122.403911258999926, 37.808743614000036 ], [ -122.404717414999936, 37.806971339000086 ], [ -122.403956445999938, 37.806579080000063 ], [ -122.402733965999914, 37.808023652000088 ], [ -122.402341579999927, 37.807817259000046 ], [ -122.403422190999947, 37.806471487000067 ], [ -122.402804234999905, 37.806022773000052 ], [ -122.400934972999892, 37.807640521000053 ], [ -122.400399067999899, 37.807261742000037 ], [ -122.400963671999932, 37.80356356100009 ], [ -122.400842857999919, 37.803429111000071 ], [ -122.400479675999918, 37.803466324000055 ], [ -122.398527828999931, 37.804605577000075 ], [ -122.398223039999891, 37.804260986000088 ], [ -122.399972323999918, 37.803225006000048 ], [ -122.399602127999913, 37.802807940000037 ], [ -122.397811065999917, 37.803814220000049 ], [ -122.397511230999896, 37.803478374000065 ], [ -122.399723663999907, 37.802176287000066 ], [ -122.399409101999936, 37.801824511000063 ], [ -122.397097143999929, 37.803024728000082 ], [ -122.396142803999908, 37.801946055000087 ], [ -122.398383441999897, 37.800672821000035 ], [ -122.397989012999915, 37.800230426000041 ], [ -122.395745829999896, 37.801476130000083 ], [ -122.395440351999923, 37.801160663000076 ], [ -122.397632493999936, 37.799858370000038 ], [ -122.396741187999908, 37.798834498000076 ], [ -122.396588103999932, 37.798842932000071 ], [ -122.395581486999902, 37.799459439000088 ], [ -122.394436858999939, 37.800181518000045 ], [ -122.394338331999904, 37.800157742000067 ], [ -122.394252250999898, 37.800073542000064 ], [ -122.394244236999896, 37.799994427000058 ], [ -122.395460759999935, 37.799348853000083 ], [ -122.396512746999917, 37.798764128000073 ], [ -122.39651899799992, 37.79873281600004 ], [ -122.396529431999909, 37.798675234000086 ], [ -122.395861034999939, 37.797871101000055 ], [ -122.39382566799992, 37.798942350000061 ], [ -122.393554264999921, 37.798641781000072 ], [ -122.395455150999908, 37.79754869900006 ], [ -122.395493442999907, 37.797469730000046 ], [ -122.39542279099993, 37.79739253300005 ], [ -122.395304461999899, 37.797394435000058 ], [ -122.395131680999896, 37.797494934000042 ], [ -122.39499621199991, 37.79734122900004 ], [ -122.395176716999913, 37.79723623700005 ], [ -122.395203960999936, 37.797153427000069 ], [ -122.395174586999929, 37.797121331000085 ], [ -122.394876734999912, 37.79725845300004 ], [ -122.393210063999902, 37.798248977000071 ], [ -122.392918702999907, 37.797966527000085 ], [ -122.393418076999922, 37.797664270000041 ], [ -122.393858093999938, 37.797293567000054 ], [ -122.394797109999899, 37.796708874000046 ], [ -122.394681223999896, 37.796581600000081 ], [ -122.393168693999939, 37.797508014000073 ], [ -122.393091584999922, 37.797425958000076 ], [ -122.393468602999917, 37.797207703000083 ], [ -122.394126963999895, 37.796863386000041 ], [ -122.393931951999946, 37.796648932000039 ], [ -122.393850429999929, 37.796687923000036 ], [ -122.393742517999897, 37.796574631000055 ], [ -122.393877871999905, 37.796503745000052 ], [ -122.393597888999921, 37.796198163000042 ], [ -122.393523866999942, 37.796237032000079 ], [ -122.393397275999916, 37.79609838600004 ], [ -122.393481853999901, 37.796057216000065 ], [ -122.393263494999928, 37.795831219000036 ], [ -122.393199338999921, 37.79586269400005 ], [ -122.393013925999924, 37.795654902000081 ], [ -122.393055460999904, 37.795628267000041 ], [ -122.392997764999905, 37.795560789000035 ], [ -122.39158993399991, 37.796205182000051 ], [ -122.391196084999933, 37.795779029000073 ], [ -122.392411431999903, 37.794819640000071 ], [ -122.392266965999909, 37.794667562000086 ], [ -122.391940572999943, 37.794853727000088 ], [ -122.391649487999928, 37.794547304000048 ], [ -122.391945619999944, 37.794335482000065 ], [ -122.391789622999909, 37.794171265000045 ], [ -122.391734031999931, 37.794202972000051 ], [ -122.391666883999903, 37.794132285000046 ], [ -122.391672500999903, 37.794047969000076 ], [ -122.391981772999941, 37.793871569000089 ], [ -122.391589118999946, 37.793527710000035 ], [ -122.391723724999906, 37.793428875000075 ], [ -122.389309700999945, 37.791399633000083 ], [ -122.389296282999908, 37.791388354000048 ], [ -122.388807908999922, 37.790977804000079 ], [ -122.388218983999934, 37.789995923000049 ], [ -122.385730499999909, 37.790973574000077 ], [ -122.385506815999918, 37.790545799000085 ], [ -122.387607364999894, 37.78978746100006 ], [ -122.387329055999942, 37.789318672000036 ], [ -122.3853237699999, 37.789787775000036 ], [ -122.385106378999922, 37.78932037900006 ], [ -122.387188305999928, 37.788773734000074 ], [ -122.387049043999923, 37.788228824000043 ], [ -122.385242452999933, 37.788516100000038 ], [ -122.385131779999938, 37.788125751000052 ], [ -122.387381414999936, 37.787720436000086 ], [ -122.387407003999897, 37.787241108000046 ], [ -122.384520066999926, 37.787390096000081 ], [ -122.384350714999925, 37.785719141000072 ], [ -122.387093545999903, 37.785533015000055 ], [ -122.387565091999932, 37.785457786000052 ], [ -122.387631041999896, 37.784864685000059 ], [ -122.385458616999927, 37.784993510000049 ], [ -122.385414713999921, 37.78460685500005 ], [ -122.3872216769999, 37.784501641000077 ], [ -122.387674072999914, 37.78439645900005 ], [ -122.387709833999907, 37.783875838000085 ], [ -122.386287604999893, 37.783959288000062 ], [ -122.386236618999931, 37.783405827000081 ], [ -122.387376949999918, 37.783339653000041 ], [ -122.387751624999908, 37.783246355000074 ], [ -122.387776749999944, 37.782867881000072 ], [ -122.387483635999899, 37.782792486000062 ], [ -122.38474905399994, 37.78293890100008 ], [ -122.384688672999914, 37.782533698000066 ], [ -122.387528253999903, 37.782344794000039 ], [ -122.38778795199994, 37.782274870000037 ], [ -122.387754942999948, 37.781795800000054 ], [ -122.385546308999892, 37.78193291000008 ], [ -122.385553838965521, 37.781579471431073 ], [ -122.3877117314168, 37.781408853176714 ], [ -122.387461309662427, 37.7784142007838 ], [ -122.390324338363385, 37.777174493774375 ], [ -122.398637626051041, 37.770654609996207 ], [ -122.398328803329122, 37.770072928295072 ], [ -122.390147319439819, 37.776153182513347 ], [ -122.389716644317986, 37.776595937939021 ], [ -122.387515383999926, 37.776736553000035 ], [ -122.387316677999934, 37.776582863000044 ], [ -122.3873108169999, 37.77631910100007 ], [ -122.387103227999944, 37.776325544000088 ], [ -122.387081735999914, 37.776103536000051 ], [ -122.385004041999935, 37.776330137000059 ], [ -122.384827647999941, 37.775394303000041 ], [ -122.386996243999931, 37.775081941000053 ], [ -122.386922538999897, 37.774328036000043 ], [ -122.38181437399993, 37.774615224000058 ], [ -122.381455825999922, 37.771917492000057 ], [ -122.384787734999918, 37.773372731000052 ], [ -122.386759878999897, 37.773272555000062 ], [ -122.386722426822146, 37.772747943150236 ], [ -122.385888009010188, 37.770838362792105 ], [ -122.385703992298133, 37.772283348367559 ], [ -122.385606620062916, 37.772294343798201 ], [ -122.385689788259995, 37.771425486225567 ], [ -122.385573843510755, 37.771386768234258 ], [ -122.38528638899993, 37.771733360557576 ], [ -122.385767183789611, 37.770692220344799 ], [ -122.383155400999897, 37.769708890000061 ], [ -122.383375609999916, 37.769332662000068 ], [ -122.385569481999937, 37.770179724000059 ], [ -122.384787695999933, 37.768656613000076 ], [ -122.385145654999917, 37.768147831000078 ], [ -122.385373065795392, 37.767875256369777 ], [ -122.385429976349869, 37.767234650750396 ], [ -122.385860620999892, 37.766599476000067 ], [ -122.385914727999932, 37.766284539000083 ], [ -122.386470432999943, 37.765278015000035 ], [ -122.386482359999945, 37.764399193000088 ], [ -122.3866005779999, 37.764258736000045 ], [ -122.386573006999924, 37.764251468000055 ], [ -122.386603130999902, 37.763937863000081 ], [ -122.386904508999919, 37.763549707000038 ], [ -122.385181910999904, 37.763373226000056 ], [ -122.385103675999915, 37.762319648000073 ], [ -122.384681418999946, 37.762111279000067 ], [ -122.384291597999947, 37.762134585000069 ], [ -122.3844619649999, 37.764046764000057 ], [ -122.384304160999932, 37.764057028000082 ], [ -122.384131749999938, 37.762256680000064 ], [ -122.383717489999924, 37.762282542000037 ], [ -122.383905119999895, 37.764143982000064 ], [ -122.383581544999913, 37.764253643000075 ], [ -122.383299360999899, 37.764139986000089 ], [ -122.383108774999926, 37.762320542000055 ], [ -122.382290088999923, 37.762371645000087 ], [ -122.382513815999914, 37.764606203000085 ], [ -122.382344279999927, 37.764612194000051 ], [ -122.382122187999926, 37.762382124000055 ], [ -122.381748036999909, 37.762405475000037 ], [ -122.381694928999934, 37.764738095000041 ], [ -122.381450224999924, 37.764935155000046 ], [ -122.381172874999947, 37.764933013000075 ], [ -122.380983526999898, 37.764798933000066 ], [ -122.381023922554377, 37.762258183435513 ], [ -122.383233578114698, 37.762033768894753 ], [ -122.381861021527683, 37.759946795278026 ], [ -122.379576058596484, 37.760107145020946 ], [ -122.379778737999914, 37.763485187000072 ], [ -122.379533439999932, 37.763466187000063 ], [ -122.379201853999916, 37.759938161000036 ], [ -122.381256267999902, 37.759667560000082 ], [ -122.381207113999892, 37.758173957000054 ], [ -122.381428218999929, 37.757519144000071 ], [ -122.381228836999924, 37.75586118700005 ], [ -122.380751652999948, 37.75553910800005 ], [ -122.380795987999932, 37.75520367200005 ], [ -122.381380081999907, 37.755069131000084 ], [ -122.384072351999919, 37.754951185000039 ], [ -122.384076635999918, 37.75465861400005 ], [ -122.3834742169999, 37.754740037000033 ], [ -122.382993376999934, 37.754566389000047 ], [ -122.382781778999913, 37.754236836000075 ], [ -122.382897059999891, 37.754066500000079 ], [ -122.382827085999907, 37.753539752000052 ], [ -122.38178998099994, 37.753236118000075 ], [ -122.381551374999901, 37.753041275000044 ], [ -122.381259144999945, 37.752919483000085 ], [ -122.3808779229999, 37.752954744000078 ], [ -122.38043360599994, 37.752901438000038 ], [ -122.379927898999938, 37.752907483000058 ], [ -122.379850694999902, 37.752835341000036 ], [ -122.380024445999936, 37.752712689000077 ], [ -122.379959906999943, 37.752029886000059 ], [ -122.376086611999938, 37.752248899000051 ], [ -122.375770628999931, 37.748706539000068 ], [ -122.386108265999894, 37.748083794000081 ], [ -122.390353701600418, 37.74780790052175 ], [ -122.392205388556476, 37.748605287591751 ], [ -122.393051537388246, 37.748551108189773 ], [ -122.393134268749634, 37.747439692499277 ], [ -122.390603928912057, 37.746689606323471 ], [ -122.387018700999931, 37.747054546000072 ], [ -122.387005611999939, 37.746912007000049 ], [ -122.382642340999894, 37.747159934000081 ], [ -122.382018697999911, 37.747061692000045 ], [ -122.379658976999906, 37.747207558000071 ], [ -122.379558761999931, 37.746990004000054 ], [ -122.378126696999914, 37.747123786000088 ], [ -122.376181511999903, 37.747151795000036 ], [ -122.375465809999923, 37.747016932000065 ], [ -122.375010834999898, 37.746737660000065 ], [ -122.37478574599993, 37.746459820000041 ], [ -122.3749527499999, 37.745800667000083 ], [ -122.374098560999926, 37.744964378000077 ], [ -122.37321126799992, 37.745411391000061 ], [ -122.372761772999922, 37.745505326000057 ], [ -122.367631023999934, 37.740133520000086 ], [ -122.367867739999895, 37.739994476000049 ], [ -122.36828569599993, 37.739975550000054 ], [ -122.368274237999913, 37.739828141000089 ], [ -122.371253363999926, 37.739664023000046 ], [ -122.37126436099993, 37.739792991000058 ], [ -122.373407416999896, 37.739660546000039 ], [ -122.373461896999913, 37.739617271000043 ], [ -122.373966035999899, 37.739562567000064 ], [ -122.373968529676247, 37.739562432205538 ], [ -122.374011710999923, 37.739498453000067 ], [ -122.37399864899993, 37.739460547000078 ], [ -122.373887019999927, 37.739338670000052 ], [ -122.373777362999931, 37.739163243000064 ], [ -122.373581971999897, 37.738783825000041 ], [ -122.373356732999923, 37.738565638000068 ], [ -122.373068058999934, 37.738401180000039 ], [ -122.372665844999915, 37.738290228000039 ], [ -122.372341936999931, 37.738275355000042 ], [ -122.371879686999932, 37.738238329000069 ], [ -122.371611077999944, 37.738214748000075 ], [ -122.371020906999945, 37.738171375000036 ], [ -122.370542513999908, 37.738205540000081 ], [ -122.370138221999923, 37.738206285000047 ], [ -122.369352577999905, 37.738274948000083 ], [ -122.368551242999899, 37.738248358000078 ], [ -122.367509300999927, 37.738339085000064 ], [ -122.367436971999894, 37.738312563000079 ], [ -122.367397173999905, 37.738210563000052 ], [ -122.367576473999918, 37.738092533000042 ], [ -122.368197355999939, 37.737985425000034 ], [ -122.368694139999945, 37.737924853000038 ], [ -122.369017454999891, 37.737768306000078 ], [ -122.369518070999902, 37.737717786000076 ], [ -122.369946478999907, 37.737565587000063 ], [ -122.370578479999892, 37.737365062000038 ], [ -122.370751887999916, 37.737373727000033 ], [ -122.371013525999899, 37.737179486000059 ], [ -122.371254713999917, 37.73707083100004 ], [ -122.371988073999944, 37.737041687000044 ], [ -122.372123707999947, 37.737154460000056 ], [ -122.372299008999903, 37.737089173000072 ], [ -122.372828082999945, 37.737043628000038 ], [ -122.373193102999892, 37.737069661000078 ], [ -122.373537447999922, 37.737175697000055 ], [ -122.374388309999915, 37.737814421000053 ], [ -122.374587725999902, 37.737850326000057 ], [ -122.374827316999927, 37.737961975000076 ], [ -122.375516011999935, 37.738340917000073 ], [ -122.375753797999892, 37.738421415000062 ], [ -122.376033673999927, 37.738478077000082 ], [ -122.376299917999916, 37.738405852000085 ], [ -122.376446950999934, 37.738269942000045 ], [ -122.375986880999903, 37.737994680000043 ], [ -122.375774389999947, 37.738003900000081 ], [ -122.375486495999894, 37.73797208700006 ], [ -122.375255968999909, 37.737883391000082 ], [ -122.375108024999918, 37.73777758600005 ], [ -122.374942959999942, 37.73754157500008 ], [ -122.374882821999904, 37.737282949000075 ], [ -122.374921802999893, 37.737045752000085 ], [ -122.375049771999898, 37.736839758000087 ], [ -122.375028304999944, 37.73674292700008 ], [ -122.375132325999914, 37.73661594400005 ], [ -122.375163873999895, 37.736426935000054 ], [ -122.375236616999928, 37.736225597000043 ], [ -122.37573677599994, 37.735828605000052 ], [ -122.375948138999945, 37.735843438000074 ], [ -122.375880454999901, 37.73562854000005 ], [ -122.375828602999945, 37.735492707000049 ], [ -122.376000720999912, 37.735186089000081 ], [ -122.37592572099993, 37.735092010000074 ], [ -122.375360337999894, 37.735416734000069 ], [ -122.3750790199999, 37.735257016000048 ], [ -122.374885992999907, 37.734999478000077 ], [ -122.374871743999904, 37.73492456200006 ], [ -122.374988964999943, 37.73470397400007 ], [ -122.375146199999904, 37.734561380000059 ], [ -122.374893060999909, 37.734398533000046 ], [ -122.374891976999947, 37.734130772000071 ], [ -122.374983289999932, 37.733862137000074 ], [ -122.375159044999918, 37.733754140000087 ], [ -122.375361353999892, 37.733424512000056 ], [ -122.375382713999898, 37.733311548000074 ], [ -122.375509608999891, 37.733200339000064 ], [ -122.3755072269999, 37.733105952000074 ], [ -122.375669473999892, 37.732887289000075 ], [ -122.375550383999894, 37.732828857000072 ], [ -122.375617693999914, 37.732754993000071 ], [ -122.375573481999936, 37.732716210000035 ], [ -122.375197426999932, 37.732959116000075 ], [ -122.374833347999925, 37.732785675000059 ], [ -122.374609189999944, 37.73288023300006 ], [ -122.374563724999916, 37.732815687000084 ], [ -122.374904879999917, 37.732604957000035 ], [ -122.374812552999913, 37.732539990000078 ], [ -122.374675740999919, 37.732639163000044 ], [ -122.374310275999903, 37.732547805000081 ], [ -122.374114164999924, 37.732657368000048 ], [ -122.37388362799993, 37.732773315000088 ], [ -122.373743318999914, 37.732878178000078 ], [ -122.373517311999933, 37.732949293000047 ], [ -122.373492453999916, 37.733102727000073 ], [ -122.373184748999904, 37.733313208000084 ], [ -122.372848050999892, 37.733614168000088 ], [ -122.372515464999935, 37.733998556000074 ], [ -122.372182788999908, 37.73422030100005 ], [ -122.371912019999911, 37.734208669000054 ], [ -122.371590467999908, 37.734007072000054 ], [ -122.371068652999895, 37.733544266000081 ], [ -122.3705120899999, 37.733006125000088 ], [ -122.370077726999909, 37.732788118000087 ], [ -122.369631196999933, 37.732501354000078 ], [ -122.369752066999922, 37.732367448000048 ], [ -122.369625859999928, 37.732507266000084 ], [ -122.369568357999924, 37.732443702000069 ], [ -122.369524130999935, 37.732298683000067 ], [ -122.369514764999906, 37.732201317000033 ], [ -122.369193106999944, 37.731994908000047 ], [ -122.36888713299993, 37.731930746000046 ], [ -122.368682340999896, 37.731970391000061 ], [ -122.368624867999927, 37.732091823000076 ], [ -122.368641510999907, 37.732203496000068 ], [ -122.368586044999915, 37.732267211000078 ], [ -122.368243955999901, 37.73227984600004 ], [ -122.367620228999897, 37.731958047000035 ], [ -122.36731644799994, 37.731981060000066 ], [ -122.367151865999915, 37.732106936000037 ], [ -122.36697390799992, 37.732182205000072 ], [ -122.366889751999906, 37.732274187000087 ], [ -122.366786688999923, 37.73230191600004 ], [ -122.366677289999927, 37.732215061000034 ], [ -122.36533, 37.733793894000087 ], [ -122.365201345999935, 37.733766745000082 ], [ -122.366403673999912, 37.73234304500005 ], [ -122.366229985999894, 37.732238629000051 ], [ -122.365446338999902, 37.733054851000077 ], [ -122.365330791999895, 37.732998653000038 ], [ -122.365348829999903, 37.732890551000082 ], [ -122.366190759999938, 37.731916145000071 ], [ -122.366000047999933, 37.731827832000079 ], [ -122.36515728899991, 37.732769286000064 ], [ -122.365013537999914, 37.732829590000051 ], [ -122.364937336999901, 37.73275628600004 ], [ -122.364966161999916, 37.732664496000041 ], [ -122.36580872299993, 37.731715148000035 ], [ -122.365650854999899, 37.731626313000049 ], [ -122.364828208999938, 37.732542382000076 ], [ -122.364733415999922, 37.732486197000071 ], [ -122.365108505999899, 37.732065821000049 ], [ -122.363700263999931, 37.731284293000044 ], [ -122.362876151999899, 37.732142686000088 ], [ -122.362621964999903, 37.732005582000056 ], [ -122.363403772999902, 37.731115241000055 ], [ -122.362852892999911, 37.730800848000058 ], [ -122.362060296999914, 37.731674875000067 ], [ -122.361775005999903, 37.731538605000082 ], [ -122.362567070999944, 37.730643300000054 ], [ -122.36197642299993, 37.730328845000088 ], [ -122.362085848999925, 37.730210029000034 ], [ -122.361876895999899, 37.730083540000066 ], [ -122.361354776999917, 37.730088357000056 ], [ -122.361115337999934, 37.730056429000058 ], [ -122.360878119999938, 37.729906007000068 ], [ -122.360777989999917, 37.72998175500004 ], [ -122.360813778999898, 37.730167979000043 ], [ -122.360627639999905, 37.730261910000081 ], [ -122.360234894999905, 37.730323049000049 ], [ -122.359915207999904, 37.730332217000068 ], [ -122.358789556999909, 37.729783434000069 ], [ -122.35884352699992, 37.72965965800006 ], [ -122.358967947999929, 37.729517946000044 ], [ -122.362026046999915, 37.728789452000058 ], [ -122.362220358999934, 37.728676848000077 ], [ -122.362292545999935, 37.72859020900006 ], [ -122.3621825799999, 37.728480354000055 ], [ -122.361939550999921, 37.728442992000055 ], [ -122.357731384999909, 37.729443027000059 ], [ -122.357479163999926, 37.729245450000064 ], [ -122.357874686999935, 37.728949759000045 ], [ -122.360140578999903, 37.728420249000067 ], [ -122.360365318999925, 37.728279698000051 ], [ -122.36035525199992, 37.728153843000086 ], [ -122.360200938999924, 37.72813739500009 ], [ -122.359962709999934, 37.728153517000067 ], [ -122.357157402999917, 37.728825440000037 ], [ -122.357120442999928, 37.728661208000062 ], [ -122.356981987999916, 37.728688071000079 ], [ -122.357700794999914, 37.726282169000058 ], [ -122.358012892999909, 37.726039297000057 ], [ -122.361640903999898, 37.725218726000037 ], [ -122.361254855999903, 37.724165207000055 ], [ -122.357961297999907, 37.724943753000048 ], [ -122.357837450999909, 37.724623976000089 ], [ -122.36152347399991, 37.723775023000087 ], [ -122.362006155999893, 37.72406131300005 ], [ -122.362085552999929, 37.723986579000041 ], [ -122.364966508999942, 37.725718254000071 ], [ -122.36518887099993, 37.72569035500004 ], [ -122.36530863899992, 37.725570685000037 ], [ -122.365290219999906, 37.725387964000049 ], [ -122.362366608999935, 37.723678946000064 ], [ -122.362750318999929, 37.723258783000063 ], [ -122.359975807999945, 37.721629070000063 ], [ -122.360235314999898, 37.721358523000049 ], [ -122.362997489999941, 37.722979154000086 ], [ -122.363810654999895, 37.722102046000089 ], [ -122.359155093999902, 37.71937170800004 ], [ -122.35912931699994, 37.719308936000061 ], [ -122.359848983999939, 37.718495479000069 ], [ -122.360027026999944, 37.718493698000088 ], [ -122.362713653999947, 37.720070891000034 ], [ -122.363656437999907, 37.719054731000085 ], [ -122.362495012999943, 37.718383626000048 ], [ -122.362457290999942, 37.718258208000066 ], [ -122.362508477999938, 37.718161944000087 ], [ -122.358583730999896, 37.715882883000063 ], [ -122.358723442999917, 37.715731315000085 ], [ -122.362644995999915, 37.718021066000063 ], [ -122.363866061999943, 37.716726842000071 ], [ -122.359920052999939, 37.714425844000061 ], [ -122.360036147999892, 37.714297996000084 ], [ -122.363974785999915, 37.716580909000072 ], [ -122.364276820999919, 37.716283927000063 ], [ -122.364423010999928, 37.716322130000037 ], [ -122.364710639999942, 37.716484795000042 ], [ -122.364893170999892, 37.716386450000073 ], [ -122.3649858039999, 37.716219482000042 ], [ -122.365198750999923, 37.716024170000082 ], [ -122.365392734999944, 37.715968907000047 ], [ -122.365559508999922, 37.716000602000065 ], [ -122.365654384999914, 37.716060905000063 ], [ -122.366175965999901, 37.716658337000069 ], [ -122.367855302999942, 37.717710912000086 ], [ -122.368254622999928, 37.717776686000036 ], [ -122.368609804999892, 37.717806075000055 ], [ -122.369269687999918, 37.717782558000067 ], [ -122.369602364999935, 37.71787960100005 ], [ -122.369850303999897, 37.718044600000042 ], [ -122.369979593999915, 37.718235519000075 ], [ -122.370118069999933, 37.718516596000086 ], [ -122.370402564999893, 37.718691315000058 ], [ -122.370860646999915, 37.718755803000079 ], [ -122.371013940999944, 37.718732423000063 ], [ -122.371518618999914, 37.718862095000077 ], [ -122.371745124999904, 37.718999619000044 ], [ -122.372594191999895, 37.719004323000036 ], [ -122.373376280999935, 37.718821236000053 ], [ -122.373777164999922, 37.718811426000059 ], [ -122.374045111999919, 37.718946569000082 ], [ -122.374153682999918, 37.719138156000042 ], [ -122.374169282999901, 37.719413973000087 ], [ -122.374419443999898, 37.719666486000051 ], [ -122.374635036999905, 37.719850875000077 ], [ -122.374879175999922, 37.720070176000036 ], [ -122.375440843999911, 37.720333524000068 ], [ -122.375549104999948, 37.72044408000005 ], [ -122.375871508999921, 37.721229371000049 ], [ -122.375923694999926, 37.722200948000079 ], [ -122.375925889999905, 37.722630462000041 ], [ -122.376093176999916, 37.722955711000054 ], [ -122.376350356999922, 37.723211542000058 ], [ -122.376569710999945, 37.723338869000088 ], [ -122.376721865999912, 37.723475508000035 ], [ -122.376674158999947, 37.723572067000077 ], [ -122.377080106999927, 37.724240996000049 ], [ -122.377233863999948, 37.724167127000044 ], [ -122.377629737999939, 37.724163221000083 ], [ -122.37786137799992, 37.724092230000053 ], [ -122.3783759799999, 37.723996811000063 ], [ -122.378854795999928, 37.723853890000044 ], [ -122.379110183999899, 37.723628003000044 ], [ -122.379233916999908, 37.72332421200008 ], [ -122.379267621999929, 37.723084349000089 ], [ -122.379381090999914, 37.722990174000074 ], [ -122.379717204999906, 37.722879741000042 ], [ -122.37981467599991, 37.722699980000073 ], [ -122.379965034999941, 37.722286916000087 ], [ -122.380241450999904, 37.722072366000077 ], [ -122.380498330999899, 37.72183752400008 ], [ -122.380798931999891, 37.721758902000033 ], [ -122.380969303999905, 37.721795325000073 ], [ -122.381738284999926, 37.722186841000052 ], [ -122.382072456999936, 37.72221307600006 ], [ -122.382374224999921, 37.722308876000056 ], [ -122.382549107999921, 37.722386773000039 ], [ -122.383560340999907, 37.723002609000048 ], [ -122.383802223999908, 37.723194981000063 ], [ -122.383956010999896, 37.723455151000053 ], [ -122.384336928999915, 37.723498496000047 ], [ -122.384892747999913, 37.723914697000055 ], [ -122.385041204999936, 37.724109413000065 ], [ -122.385196615999917, 37.724101089000044 ], [ -122.385609238999905, 37.724143930000082 ], [ -122.386208866999937, 37.724469454000086 ], [ -122.3864458299999, 37.724472184000035 ], [ -122.386692948999894, 37.724398180000037 ], [ -122.386804682999923, 37.724304026000084 ], [ -122.386922083999934, 37.724160679000079 ], [ -122.385963509999897, 37.723626787000057 ], [ -122.385459753999896, 37.723363450000079 ], [ -122.385151929999893, 37.723225537000076 ], [ -122.384714728999938, 37.723038863000056 ], [ -122.384239081999908, 37.722684920000063 ], [ -122.383684162999941, 37.722348713000088 ], [ -122.382952195999906, 37.721985461000088 ], [ -122.382801518999941, 37.721839192000061 ], [ -122.382726143999946, 37.721730520000051 ], [ -122.382782164999924, 37.721416476000059 ], [ -122.382877185999916, 37.721208595000064 ], [ -122.383039863999898, 37.721009590000051 ], [ -122.383332581999923, 37.720688328000051 ], [ -122.383400667999922, 37.720509376000052 ], [ -122.383360728970857, 37.720351736684911 ], [ -122.383329658999912, 37.720368160000078 ], [ -122.38327802099991, 37.72033884700005 ], [ -122.38324029599994, 37.720253387000071 ], [ -122.383230016999903, 37.720120669000039 ], [ -122.382849809999925, 37.719923131000087 ], [ -122.38277495199992, 37.719903039000087 ], [ -122.382224662999931, 37.719599970000047 ], [ -122.381730017999928, 37.719333268000071 ], [ -122.381385971999919, 37.718856336000044 ], [ -122.381238499999938, 37.718768043000068 ], [ -122.380792706999898, 37.718779625000082 ], [ -122.380556830999922, 37.718750771000089 ], [ -122.380331888999933, 37.718675732000065 ], [ -122.380196491999925, 37.71851788500004 ], [ -122.379996458999926, 37.718470603000071 ], [ -122.379713460999938, 37.71835597200004 ], [ -122.379439307999917, 37.718112437000059 ], [ -122.379057438999894, 37.717779971000084 ], [ -122.378594931999942, 37.717540469000085 ], [ -122.377882351999915, 37.71718889400006 ], [ -122.377192593999894, 37.71685068700009 ], [ -122.37651296699994, 37.716365697000072 ], [ -122.376232372999937, 37.716208785000049 ], [ -122.376143889999923, 37.716128130000072 ], [ -122.376120958999934, 37.71600552700005 ], [ -122.376677511999901, 37.715235821000078 ], [ -122.377143039999908, 37.714698712000086 ], [ -122.3773211199999, 37.714369339000086 ], [ -122.377701778999892, 37.714078828000083 ], [ -122.378399036999895, 37.713551633000066 ], [ -122.378446830999906, 37.713458849000062 ], [ -122.378660976999925, 37.713244264000082 ], [ -122.378828040999906, 37.713150608000035 ], [ -122.378933827999901, 37.713026682000077 ], [ -122.379337877999944, 37.71242996400008 ], [ -122.379428888999939, 37.712213083000051 ], [ -122.379850171999919, 37.711644817000035 ], [ -122.380045196999902, 37.711510846000067 ], [ -122.380119033999904, 37.711080805000051 ], [ -122.380112455999893, 37.710825105000083 ], [ -122.38002709299991, 37.710589886000037 ], [ -122.37987421899993, 37.710492407000061 ], [ -122.379723597999941, 37.710492736000049 ], [ -122.379390903999933, 37.710303836000037 ], [ -122.379215489999922, 37.710148566000044 ], [ -122.378943884999899, 37.70993623600009 ], [ -122.378898593999907, 37.709785877000058 ], [ -122.378818146999947, 37.709749391000059 ], [ -122.378671334999922, 37.709481161000042 ], [ -122.378588075999915, 37.709401798000044 ], [ -122.378460729999915, 37.709288115000049 ], [ -122.378371055999935, 37.708886434000078 ], [ -122.378285505999941, 37.708784789000049 ], [ -122.378108766999901, 37.708700393000072 ], [ -122.377964921999933, 37.708617875000073 ], [ -122.377780626999936, 37.708576519000076 ], [ -122.3775374499999, 37.708667954000077 ], [ -122.376990878999948, 37.708862427000042 ], [ -122.37680649899994, 37.708971402000088 ], [ -122.376726093999935, 37.709060775000069 ], [ -122.376677951999909, 37.709114287000034 ], [ -122.376386513999933, 37.709543100000076 ], [ -122.376430951999907, 37.70956833300005 ], [ -122.376368269999944, 37.709667770000067 ], [ -122.37602301499993, 37.709690465000051 ], [ -122.375819884999942, 37.709660195000083 ], [ -122.375557101999902, 37.709585564000065 ], [ -122.375316005999935, 37.709381248000057 ], [ -122.374933246999944, 37.70919015000004 ], [ -122.374570810999899, 37.709028798000077 ], [ -122.374439414999927, 37.70893870000009 ], [ -122.374371908999933, 37.708730735000074 ], [ -122.374387172999946, 37.708677829000067 ], [ -122.374596718999896, 37.708526759000051 ], [ -122.375613633999933, 37.708406403000083 ], [ -122.376098868999918, 37.708384596000087 ], [ -122.379431900999919, 37.708436733000042 ], [ -122.379764203999912, 37.708517552000046 ], [ -122.380173044999935, 37.708704885000088 ], [ -122.380571406999934, 37.708802564000052 ], [ -122.381342428999915, 37.708870255000079 ], [ -122.381586019999929, 37.708863617000077 ], [ -122.381842167999935, 37.708874976000061 ], [ -122.382218546999923, 37.709060217000058 ], [ -122.382842867999898, 37.709137453000039 ], [ -122.383373151999933, 37.709187690000078 ], [ -122.383786652999902, 37.709200306000071 ], [ -122.384075195999912, 37.709261960000049 ], [ -122.384445886999913, 37.709290709000072 ], [ -122.385021197999947, 37.709480312000039 ], [ -122.385565696999947, 37.709750066000083 ], [ -122.385852419999935, 37.709944284000073 ], [ -122.386085397999921, 37.709996179000086 ], [ -122.386797008999906, 37.709777129000088 ], [ -122.386813477999908, 37.709617703000049 ], [ -122.387202382999931, 37.709500938000076 ], [ -122.388098677999892, 37.708671836000065 ], [ -122.388659015999906, 37.708884324000053 ], [ -122.389695772999914, 37.709612112000059 ], [ -122.389970907999896, 37.709554132000051 ], [ -122.39038927699994, 37.709251054000049 ], [ -122.390559670999892, 37.709212764000085 ], [ -122.39146818599994, 37.709695256000089 ], [ -122.391716621999933, 37.709607141000049 ], [ -122.392064215999937, 37.709256726000035 ], [ -122.392281982999918, 37.708997512000053 ], [ -122.392524067999943, 37.708863830000041 ], [ -122.393132978999915, 37.708402430000035 ], [ -122.394853823999938, 37.708396969000034 ], [ -122.401311721999946, 37.708378384000071 ], [ -122.405442617999938, 37.708355272000063 ], [ -122.41622224799994, 37.708328257000062 ], [ -122.423764620999918, 37.708341715000074 ], [ -122.454276089999894, 37.708221974000082 ], [ -122.454281125999898, 37.708255960000088 ], [ -122.454276776999905, 37.708222916000068 ], [ -122.468971905999922, 37.708200417000057 ], [ -122.468969786999935, 37.708202480000068 ], [ -122.46950512199993, 37.708202823000079 ], [ -122.471332509999911, 37.70820776100004 ], [ -122.50277445699993, 37.708089209000036 ], [ -122.502970693999941, 37.709110265000049 ], [ -122.50318216799991, 37.70964323700008 ], [ -122.503252453999892, 37.71018153600005 ], [ -122.5034554369999, 37.710901765000074 ], [ -122.503388381999912, 37.711025869000082 ], [ -122.503539051999894, 37.711392198000055 ], [ -122.5036067879999, 37.711815828000056 ], [ -122.503924913999924, 37.711977177000051 ], [ -122.50398845199993, 37.71213735300006 ], [ -122.504155741999909, 37.713007979000054 ], [ -122.504154528999948, 37.713276759000053 ], [ -122.504261615999894, 37.713483229000076 ], [ -122.504415568999946, 37.71417266800006 ], [ -122.504983909999908, 37.715738108000039 ], [ -122.505064927999911, 37.716122477000056 ], [ -122.505533934999903, 37.717303295000079 ], [ -122.505611521999924, 37.717754759000059 ], [ -122.505795052999929, 37.718330038000033 ], [ -122.505758347999915, 37.718518672000073 ], [ -122.505948020999938, 37.71883616000008 ], [ -122.506038427999897, 37.719088985000042 ], [ -122.506098835999921, 37.719752898000081 ], [ -122.506119659999911, 37.720657649000088 ], [ -122.506521512999939, 37.721658696000077 ], [ -122.508029506999947, 37.729655183000034 ], [ -122.508176613999922, 37.730952915000046 ], [ -122.508010728999921, 37.731192984000074 ], [ -122.508402184999909, 37.732815036000034 ], [ -122.508287969999913, 37.733266369000035 ], [ -122.508315240999934, 37.734912871000063 ], [ -122.508538177999924, 37.735401792000062 ], [ -122.508448571999907, 37.736218477000079 ], [ -122.508679116999929, 37.737056346000088 ], [ -122.508763606999935, 37.737874695000073 ], [ -122.508897943999898, 37.739126851000037 ], [ -122.508724375999918, 37.740254573000072 ], [ -122.50924675199991, 37.741344878000064 ], [ -122.509053832999939, 37.742456698000069 ], [ -122.509268536999912, 37.743235530000049 ], [ -122.509682520999945, 37.744439470000088 ], [ -122.509335879999924, 37.745938386000034 ], [ -122.509834496999929, 37.747807790000081 ], [ -122.5097288259999, 37.749110585000039 ], [ -122.510506489999898, 37.750579271000049 ], [ -122.511031911999908, 37.752625175000048 ], [ -122.511293063999915, 37.754124381000054 ], [ -122.511953502999916, 37.759948225000073 ], [ -122.511855744999934, 37.760839412000053 ], [ -122.512472272999901, 37.762517503000083 ], [ -122.512548216999903, 37.763933086000065 ], [ -122.512733557999923, 37.764183467000066 ], [ -122.513107776999902, 37.767242009000086 ], [ -122.513125755999909, 37.769292446000065 ], [ -122.513140540999927, 37.771331115000066 ] ], [ [ -122.485980328999915, 37.790803706000077 ], [ -122.485815373999912, 37.790703846000042 ], [ -122.485577507999892, 37.790559847000054 ], [ -122.485053126999901, 37.790368133000072 ], [ -122.485980328999915, 37.790803706000077 ] ] ] }
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8" />
<style>
path {
fill: none;
stroke-width: 2px;
stroke-linejoin: round;
}
text {
font: 14px Helvetica, Arial, sans-serif;
text-anchor: end;
}
.state {
stroke: #999;
stroke-width: 1px;
fill: papayawhip;
}
.simplified {
stroke: #de1e3d;
stroke-width: 2px;
stroke-dasharray: 8,8;
}
.zone {
stroke: #0eb8ba;
}
.hidden {
display: none;
}
</style>
</head>
<body>
<script src="https://cdnjs.cloudflare.com/ajax/libs/d3/3.5.17/d3.min.js"></script>
<script src="warper.js"></script>
<script src="simplify.js"></script>
<script>
var stripWidth = 100;
var points = [
{ name: "Ft. Funston", coordinates: [-122.501464,37.709899] },
{ name: "SF Zoo", coordinates: [-122.506528,37.732643] },
{ name: "The Sunset", coordinates: [-122.509789,37.753140] },
{ name: "Golden Gate Park", coordinates: [-122.510648,37.765897] },
{ name: "The Richmond", coordinates: [-122.511506,37.774989] },
{ name: "Lands End", coordinates: [-122.506356,37.787471] },
{ name: "Sea Cliff", coordinates: [-122.487216,37.789574] },
{ name: "GGB", coordinates: [-122.477174,37.810733] },
{ name: "Crissy Field", coordinates: [-122.453570,37.806258] },
{ name: "Fort Mason", coordinates: [-122.430997,37.807207] },
{ name: "Fisherman's Wharf", coordinates: [-122.416406,37.809445] },
{ name: "Exploratorium", coordinates: [-122.398859,37.801036] },
{ name: "Ferry Building", coordinates: [-122.393135,37.795508] },
{ name: "Bay Bridge", coordinates: [-122.387545,37.789302] },
{ name: "AT&T Park", coordinates: [-122.387846,37.778449] },
{ name: "The Ramp", coordinates: [-122.386783,37.764557] },
{ name: "Pier 70", coordinates: [-122.381607,37.756457] },
{ name: "Islais Creek", coordinates: [-122.394562,37.748254] },
{ name: "Heron's Head Park", coordinates: [-122.374885,37.738515] },
{ name: "Hunters Point", coordinates: [-122.365497,37.727467] },
{ name: "Burrito Railgun", coordinates: [-122.361013,37.719982] },
{ name: "Candlestick Point", coordinates: [-122.380357,37.709356] }
];
var projection = d3.geo.conicConformal()
.parallels([37 + 4 / 60, 38 + 26 / 60])
.rotate([120 + 30 / 60, -36 - 30 / 60])
.scale(150000)
.translate([5300, 4400]);
var line = d3.svg.line();
// Top point
var origin = [50, 100];
d3.json("ca.geojson",function(err,ca){
// Preproject to screen coords
ca.coordinates[0] = ca.coordinates[0].map(projection);
points.forEach(function(point){
point.coordinates = projection(point.coordinates);
});
// Move the starting point 54 points earlier (Ft. Funston-ish)
windBackwards(ca.coordinates[0], 54);
// Get coastline (54 points longer than before)
var ls = ca.coordinates[0].slice(0, 1034);
// Get simplified vertices
var simplified = simplify(ls, 1500);
var zones = d3.select("body").append("svg")
.attr("width", 960)
.attr("height", 720)
.selectAll("g")
.data(getZones(simplified))
.enter()
.append("g");
zones.append("defs")
.append("clipPath")
.attr("id",function(d, i){
return "clip" + i;
})
.append("path");
var inner = zones.append("g")
.attr("class",function(d, i) {
return i ? "hidden" : null;
});
inner.append("path")
.attr("class", "state");
inner.append("line")
.attr("class", "simplified fade hidden");
// Put boundary outside so it isn't clipped
zones.append("path")
.attr("class", "zone fade hidden");
// Only put cities in zones they actually fall in
var cities = zones.selectAll(".city")
.data(function(d, i){
return points.filter(function(point){
if (pip(point.coordinates, d.boundary)) {
return point.zone = d;
}
});
})
.enter()
.append("g")
.attr("class", "city");
cities.append("circle")
.attr("r", 3);
cities.append("text")
.text(function(d){
return d.name;
})
.attr("dx", "-0.5em")
.attr("dy", "0.35em")
.attr("transform", function(d) {
return "rotate(-23)"
});
zones.call(update);
// Step-by-step for demo purposes
d3.select("body")
.transition()
.duration(2000)
.each("end", clipState)
.transition()
.each("end", showLine)
.transition()
.each("end", showZones)
.transition()
.each("end", move);
// 1. Clip out the rest of CA
function clipState() {
inner.classed("hidden", false)
.attr("clip-path",function(d, i){
return "url(#clip" + i + ")";
});
}
// 2. Show the simplified line
function showLine() {
inner.select(".simplified")
.classed("hidden", false);
}
// 3. Show the zone boundaries
function showZones() {
zones.select(".zone")
.classed("hidden", false);
}
// 4. Rotate/translate all the zones
function move() {
warpZones(zones.data());
// Flip text orientation
zones.transition()
.duration(2000)
.each("end",align)
.call(update);
}
// 5. Warp the zones to rectangles
function align(z) {
z.project = function(d){
return z.warp(z.translate(d));
};
z.boundary = z.corners;
d3.select(this)
.transition()
.duration(750)
.call(update)
.each("end",fade);
d3.selectAll("text").transition()
.duration(1000)
.each("end",function(){
d3.select(this).transition().duration(500).style("text-anchor", "left")
.attr("transform","rotate(-90)")
.attr("dx", "-1.0em")
.attr("dy", "0.28em");
});
}
// 6. Fade out
function fade() {
d3.select(this).selectAll(".fade")
.transition()
.duration(500)
.style("opacity", 0);
}
// Redraw
function update(sel) {
sel.select(".zone")
.attr("d",function(d){
return line(d.boundary.slice(0,4)) + "Z";
});
sel.select(".state")
.attr("d",function(d){
return d.path(ca);
});
sel.select(".simplified")
.attr("x1",function(d){
return d.ends[0][0];
})
.attr("x2",function(d){
return d.ends[1][0];
})
.attr("y1",function(d){
return d.ends[0][1];
})
.attr("y2",function(d){
return d.ends[1][1];
});
sel.select("clipPath path")
.attr("d",function(d){
return line(d.boundary.slice(0,4)) + "Z";
});
sel.selectAll(".city")
.attr("transform",function(d){
return "translate(" + d.zone.project(d.coordinates) + ")";
});
}
});
// Turn a simplified LineString into one group per segment
function getZones(simp) {
return simp.slice(1).map(function(p, i){
return {
boundary: getBoundary(simp[i - 1], simp[i], p, simp[i + 2]),
ends: [simp[i], p],
project: id,
path: d3.geo.path().projection(null)
};
});
}
function warpZones(zones) {
zones.forEach(function(z,i){
var angle = getAngle(z.ends[0], z.ends[1]),
anchor = i ? zones[i - 1].ends[1] : origin;
// Anchor points to end of prev segment
var translate = [
anchor[0] - z.ends[0][0],
anchor[1] - z.ends[0][1]
];
// Get translation/rotation function
z.translate = translateAndRotate(translate, z.ends[0], angle);
// Warp the boundary line and the simplified segment
z.ends = z.ends.map(z.translate);
z.boundary = z.boundary.map(z.translate);
var top = bisect(null, z.ends[0], z.ends[1]),
bottom = bisect(z.ends[0], z.ends[1], null);
z.corners = [top[0], top[1], bottom[1], bottom[0], top[0]];
z.corners.push(z.corners[0]);
// See: http://bl.ocks.org/veltman/8f5a157276b1dc18ce2fba1bc06dfb48
z.warp = warper(z.boundary, z.corners);
z.project = function(d){
return z.translate(d);
};
z.path.projection(d3.geo.transform({
point: function(x, y) {
var p = z.project([x, y]);
this.stream.point(p[0], p[1]);
}
}));
});
}
function getBoundary(prev, first, second, next) {
// if prev is undefined, top is perpendicular through first
// otherwise top bisects the prev-first-second angle
// if next is undefined, bottom is perpendicular through second
// otherwise bottom bisects the first-second-next angle
var top = bisect(prev, first, second),
bottom = bisect(first, second, next);
return [top[0], top[1], bottom[1], bottom[0], top[0]];
}
function getAngle(a, b) {
return Math.atan2(b[1] - a[1], b[0] - a[0]);
}
// Given an anchor point, initial translate, and angle rotation
// Return a function to translate+rotate a point
function translateAndRotate(translate, anchor, angle) {
var cos = Math.cos(angle),
sin = Math.sin(angle);
return function(point) {
return [
translate[0] + anchor[0] + ( cos * (point[0] - anchor[0]) + sin * (point[1] - anchor[1])),
translate[1] + anchor[1] + ( -sin * (point[0] - anchor[0]) + cos * (point[1] - anchor[1]))
];
};
}
// Hacky angle bisector
function bisect(start, vertex, end) {
var at,
bt,
adjusted,
right,
left;
if (start) {
at = getAngle(start, vertex);
}
if (end) {
bt = getAngle(vertex, end);
}
if (!start) {
at = bt;
}
if (!end) {
bt = at;
}
adjusted = bt - at;
if (adjusted <= -Math.PI) {
adjusted = 2 * Math.PI + adjusted;
} else if (adjusted > Math.PI) {
adjusted = adjusted - 2 * Math.PI;
}
right = (adjusted - Math.PI) / 2;
left = Math.PI + right;
left += at;
right += at;
return [
[vertex[0] + stripWidth * Math.cos(left) / 2, vertex[1] + stripWidth * Math.sin(left) / 2],
[vertex[0] + stripWidth * Math.cos(right) / 2, vertex[1] + stripWidth * Math.sin(right) / 2]
];
}
// https://github.com/substack/point-in-polygon
// based on http://www.ecse.rpi.edu/Homepages/wrf/Research/Short_Notes/pnpoly.html
function pip(point, vs) {
var x = point[0],
y = point[1],
inside = false;
for (var i = 0, j = vs.length - 1; i < vs.length; j = i++) {
var xi = vs[i][0], yi = vs[i][1];
var xj = vs[j][0], yj = vs[j][1];
var intersect = ((yi > y) != (yj > y)) && (x < (xj - xi) * (y - yi) / (yj - yi) + xi);
if (intersect) {
inside = !inside;
}
}
return inside;
}
function id(d) {
return d;
}
function windBackwards(arr, num) {
arr.pop();
for (var i = 0; i < num; i++) {
arr.unshift(arr.pop());
}
arr.push(arr[0]);
}
d3.select(self.frameElement).style("height", "720px");
</script>
</body>
</html>
// Rough Visvalingam simplification
// Better: https://bost.ocks.org/mike/simplify/
function simplify(points, threshold) {
var heap = binaryHeap(function(a, b){
return a.area < b.area;
}),
last = 0,
check;
points.forEach(function(point, i){
point[2] = i;
point.prev = points[i - 1];
point.next = points[i + 1];
point.area = getArea(point.prev, point, point.next);
heap.insert(point);
});
while (check = heap.pop()) {
check.area = last = Math.max(check.area, last);
if (check.prev) {
check.prev.next = check.next;
recalc(check.prev);
}
if (check.next) {
check.next.prev = check.prev;
recalc(check.next);
}
}
return points.filter(function(p){
return p.area > threshold;
});
function recalc(point) {
point.area = getArea(point.prev, point, point.next);
heap.update(point);
}
function getArea(a,b,c) {
if (!a || !c) {
return Infinity;
}
return Math.abs(a[0] * b[1] - a[0] * c[1] + b[0] * c[1] - b[0] * a[1] + c[0] * a[1] - c[0] * b[1]) / 2;
}
}
function binaryHeap(comparator) {
var heap = {},
nodes = [];
heap.remove = function(val) {
var len = nodes.length,
end;
for (var i = 0; i < len; i++) {
if (nodes[i] === val) {
end = nodes.pop();
if (i < len - 1) {
nodes[i] = end;
this.sink(i);
}
break;
}
}
return this;
};
heap.pop = function() {
var top = nodes.shift();
if (nodes.length) {
nodes.unshift(nodes.pop());
this.sink(0);
}
return top;
};
heap.bubble = function(i) {
var pi = Math.floor((i + 1) / 2) - 1;
if (i > 0 && this.compare(i, pi)) {
this.swap(i, pi);
this.bubble(pi);
}
return this;
};
heap.sink = function(i) {
var len = nodes.length,
ci = 2 * i + 1;
if (ci < len - 1 && this.compare(ci + 1, ci)) {
ci++;
}
if (ci < len && this.compare(ci, i)) {
this.swap(i, ci);
this.sink(ci);
}
return this;
};
heap.compare = function(i, j) {
return comparator(nodes[i], nodes[j]);
};
heap.insert = function(d) {
this.bubble(nodes.push(d) - 1);
};
heap.size = function() {
return nodes.length;
}
heap.swap = function(i, j) {
var swap = nodes[i];
nodes[i] = nodes[j];
nodes[j] = swap;
};
heap.update = function(d) {
this.remove(d);
this.insert(d);
// bubble / sink instead?
}
heap.nodes = nodes;
return heap;
}
function warper(start,end) {
var u0 = start[0][0],
v0 = start[0][1],
u1 = start[1][0],
v1 = start[1][1],
u2 = start[2][0],
v2 = start[2][1],
u3 = start[3][0],
v3 = start[3][1],
x0 = end[0][0],
y0 = end[0][1],
x1 = end[1][0],
y1 = end[1][1],
x2 = end[2][0],
y2 = end[2][1],
x3 = end[3][0],
y3 = end[3][1];
var square = [
[1,u0,v0,u0 * v0,0,0,0,0],
[1,u1,v1,u1 * v1,0,0,0,0],
[1,u2,v2,u2 * v2,0,0,0,0],
[1,u3,v3,u3 * v3,0,0,0,0],
[0,0,0,0,1,u0,v0,u0 * v0],
[0,0,0,0,1,u1,v1,u1 * v1],
[0,0,0,0,1,u2,v2,u2 * v2],
[0,0,0,0,1,u3,v3,u3 * v3]
];
// Prevent float precision problems in FF/Safari
square.forEach(function(row){
row.forEach(function(cell, i){
row[i] = cell.toFixed(6);
});
});
var inverted = invert(square);
var s = multiply(inverted,[x0,x1,x2,x3,y0,y1,y2,y3]);
return function(p) {
return [
s[0] + s[1] * p[0] + s[2] * p[1] + s[3] * p[0] * p[1],
s[4] + s[5] * p[0] + s[6] * p[1] + s[7] * p[0] * p[1],
];
};
}
function multiply(matrix,vector) {
return matrix.map(function(row){
var sum = 0;
row.forEach(function(c,i){
sum += c * vector[i];
});
return sum;
});
}
function invert(matrix) {
var size = matrix.length,
base,
swap,
augmented;
// Augment w/ identity matrix
augmented = matrix.map(function(row,i){
return row.slice(0).concat(row.slice(0).map(function(d,j){
return j === i ? 1 : 0;
}));
});
// Process each row
for (var r = 0; r < size; r++) {
base = augmented[r][r];
// Zero on diagonal, swap with a lower row
if (!base) {
for (var rr = r + 1; rr < size; rr++) {
if (augmented[rr][r]) {
// swap
swap = augmented[rr];
augmented[rr] = augmented[r];
augmented[r] = swap;
base = augmented[r][r];
break;
}
}
if (!base) {
throw new Error("Not invertable :(");
}
}
// 1 on the diagonal
for (var c = 0; c < size * 2; c++) {
augmented[r][c] = augmented[r][c] / base;
}
// Zeroes elsewhere
for (var q = 0; q < size; q++) {
if (q !== r) {
base = augmented[q][r];
for (var p = 0; p < size * 2; p++) {
augmented[q][p] -= base * augmented[r][p];
}
}
}
}
return augmented.map(function(row){
return row.slice(size);
});
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment