Skip to content

Instantly share code, notes, and snippets.

@basilesimon
Last active August 29, 2015 14:06
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save basilesimon/35ba4e560f5f6371b014 to your computer and use it in GitHub Desktop.
Save basilesimon/35ba4e560f5f6371b014 to your computer and use it in GitHub Desktop.
Datastringer example: Greater London crime stats
[
"51.517146,0.122688:51.523335,0.15648:51.514469,0.164677:51.530696,0.186926:51.554952,0.182242:51.565324,0.157149:51.561978,0.151963:51.563818,0.146276:51.575528,0.148618:51.582889,0.147614:51.596606,0.141591:51.597777,0.135904:51.598948,0.128543:51.588576,0.130383:51.579376,0.117335:51.561142,0.122354:51.555621,0.096592:51.543075,0.091908:51.54709,0.067484:51.540566,0.078023:51.528688,0.089231:51.524841,0.097763",
"51.677572,-0.190803:51.672052,-0.197495:51.672052,-0.196658:51.675063,-0.203517:51.676568,-0.212885:51.67339,-0.210878:51.668037,-0.220246:51.663855,-0.23045:51.659673,-0.249019:51.657498,-0.260561:51.638093,-0.271936:51.641606,-0.278461:51.633576,-0.302383:51.632907,-0.2982:51.623372,-0.271435:51.599785,-0.251026:51.585063,-0.257717:51.580379,-0.254037:51.573521,-0.250022:51.567164,-0.246844:51.57235,-0.240654:51.574692,-0.215729:51.553112,-0.200339:51.553112,-0.172904:51.574357,-0.169224:51.579041,-0.169726:51.586736,-0.160859:51.587405,-0.159019:51.590249,-0.163034:51.591755,-0.164038:51.602294,-0.15835:51.604134,-0.152663:51.596941,-0.144298:51.601457,-0.141956:51.608316,-0.147477:51.615175,-0.142123:51.61668,-0.133425:51.6309,-0.147811:51.637758,-0.155339:51.658,-0.187458:51.665862,-0.180766",
"51.484692,0.19161:51.481849,0.177223:51.483856,0.170867:51.491217,0.167855:51.504265,0.16267:51.507109,0.123525:51.514469,0.116833:51.512964,0.118339:51.476997,0.114659:51.478168,0.109975:51.472313,0.095254:51.475157,0.09425:51.472815,0.083042:51.471644,0.079194:51.468466,0.077689:51.458931,0.082874:51.451068,0.083878:51.4417,0.075012:51.434172,0.095755:51.418448,0.119343:51.413262,0.131722:51.414266,0.145774:51.408745,0.159324:51.392184,0.162168:51.406236,0.158989:51.412425,0.154807:51.417109,0.174379:51.443039,0.190606:51.443206,0.200811:51.458261,0.198301:51.459767,0.199305:51.468131,0.218041",
"51.580379,-0.251026:51.585063,-0.271435:51.599785,-0.291007:51.594933,-0.285487:51.588576,-0.313758:51.586067,-0.320449:51.582387,-0.327643:51.57603,-0.323126:51.571513,-0.322959:51.564655,-0.336509:51.562982,-0.337512:51.557796,-0.324799:51.553948,-0.31794:51.545082,-0.312587:51.545082,-0.312085:51.535882,-0.305728:51.530528,-0.283981:51.538726,-0.279465:51.535547,-0.292345:51.530361,-0.247848:51.533372,-0.230115:51.530361,-0.215896:51.529358,-0.204354:51.529692,-0.198331:51.526681,-0.190134:51.532201,-0.210376:51.545751,-0.215729:51.553112,-0.240654:51.574692,-0.246844:51.57235,-0.250022:51.567164,-0.254037",
"51.423968,0.057113:51.421626,0.034195:51.443373,0.028674:51.445046,0.027671:51.442035,0.023823:51.436514,0.03202:51.432332,0.035366:51.433671,0.035031:51.423299,0.023656:51.429321,-0.005117:51.416273,-0.016325:51.417444,-0.033723:51.427648,-0.05363:51.425808,-0.073035:51.428317,-0.081065:51.423132,-0.081232:51.418615,-0.071529:51.406571,-0.051622:51.398373,-0.034727:51.382147,-0.026864:51.370437,-0.009467:51.35605,-0.00679:51.332463,0.005756:51.316069,0.006425:51.308876,0.016128:51.292649,0.030849:51.306701,0.041221:51.300512,0.048414:51.299508,0.054102:51.2883,0.069157:51.292148,0.081202:51.299508,0.083042:51.301181,0.076685:51.302854,0.078023:51.309211,0.091406:51.322092,0.118172:51.330288,0.111815:51.339991,0.121852:51.34434,0.135068:51.344173,0.151963:51.368597,0.148785:51.392017,0.161164:51.388336,0.159324:51.392184,0.145774:51.408745,0.131722:51.414266,0.119343:51.413262,0.095755:51.418448,0.075012",
"51.531198,-0.127403:51.533038,-0.12757:51.544915,-0.139614:51.558465,-0.140785:51.56867,-0.172904:51.574357,-0.200339:51.553112,-0.215729:51.553112,-0.210376:51.545751,-0.190134:51.532201,-0.179428:51.537889,-0.172067:51.536049,-0.155841:51.535213,-0.150655:51.526012,-0.135097:51.517648,-0.131585:51.512295,-0.12389:51.516979,-0.114856:51.516979,-0.108834:51.521161",
"51.423466,-0.13744:51.411756,-0.12757:51.397537,-0.138276:51.389006,-0.129744:51.386831,-0.120377:51.344675,-0.145469:51.341831,-0.151157:51.332798,-0.147644:51.329954,-0.148648:51.324935,-0.168889:51.323263,-0.169056:51.319248,-0.164372:51.315902,-0.165878:51.307538,-0.163369:51.299675,-0.143295:51.296664,-0.13928:51.288635,-0.131417:51.282445,-0.120209:51.283783,-0.116864:51.290475,-0.093611:51.306701,-0.085247:51.308876,-0.081232:51.319248,-0.052626:51.322259,-0.052459:51.326776,-0.046938:51.327445,-0.049113:51.331125,-0.041585:51.331961,-0.038072:51.335976,-0.018835:51.335642,-0.014485:51.32895,-0.00679:51.332463,-0.009467:51.35605,-0.026864:51.370437,-0.034727:51.382147,-0.051622:51.398373,-0.071529:51.406571,-0.081232",
"51.557796,-0.34872:51.559971,-0.362605:51.558298,-0.377828:51.551941,-0.392382:51.547592,-0.401248:51.538893,-0.421824:51.533707,-0.384352:51.526012,-0.394724:51.517313,-0.399575:51.508782,-0.40911:51.502592,-0.394389:51.496737,-0.381676:51.498075,-0.373311:51.494897,-0.34872:51.499748,-0.336174:51.49657,-0.317438:51.497239,-0.313423:51.493726,-0.300375:51.495231,-0.301379:51.499916,-0.298702:51.503261,-0.282308:51.502592,-0.271769:51.494562,-0.258554:51.493726,-0.255208:51.496402,-0.260227:51.503261,-0.252197:51.505269,-0.253201:51.51564,-0.247848:51.521495,-0.251695:51.52735,-0.247848:51.533372,-0.292345:51.530361,-0.279465:51.535547,-0.283981:51.538726,-0.305728:51.530528,-0.312085:51.535882,-0.312587:51.545082,-0.31794:51.545082,-0.324799",
"51.689115,-0.134763:51.691624,-0.145469:51.689784,-0.161529:51.695639,-0.170227:51.693464,-0.174911:51.680583,-0.180766:51.678408,-0.187458:51.665862,-0.155339:51.658,-0.147811:51.637758,-0.133425:51.6309,-0.142123:51.61668,-0.147477:51.615175,-0.141956:51.608316,-0.136938:51.610156,-0.087254:51.605138,-0.06718:51.605974,-0.055972:51.609654,-0.048778:51.604134,-0.04192:51.608483,-0.045433:51.61484,-0.033221:51.61919,-0.029875:51.624041,-0.031214:51.629896,-0.014485:51.640769,-0.014318:51.648632,-0.014485:51.679078,-0.011809:51.683594,-0.064671:51.684765,-0.08441:51.692293,-0.104986:51.692795",
"51.510287,0.089399:51.510454,0.081202:51.50025,0.065142:51.49657,0.023656:51.494395,0.000236:51.506941,-0.003277:51.504767,-0.001102:51.49473,-0.004114:51.487704,-0.017496:51.484692,-0.024857:51.487369,-0.027701:51.482016,-0.019336:51.481347,-0.023184:51.473819,-0.013314:51.469135,-0.008965:51.472815,0.01847:51.469469,0.011946:51.465789,0.012448:51.462778,0.014622:51.45776,0.021314:51.453243,0.020645:51.442537,0.027671:51.442035,0.028674:51.445046,0.034195:51.443373,0.057113:51.421626,0.066146:51.423968,0.075012:51.434172,0.083878:51.4417,0.082874:51.451068,0.077689:51.458931,0.079194:51.468466,0.083042:51.471644,0.09425:51.472815,0.095254:51.475157,0.109975:51.472313,0.114659:51.478168,0.118339:51.476997,0.116833",
"51.574023,-0.103983:51.567164,-0.11151:51.563818,-0.10231:51.558967,-0.095786:51.558967,-0.089094:51.551105,-0.079057:51.545919,-0.087421:51.542908,-0.087923:51.534878,-0.095786:51.530361,-0.089763:51.526179,-0.093611:51.521495,-0.080897:51.523001,-0.078555:51.527183,-0.056976:51.535882,-0.046938:51.535213,-0.020675:51.541904,-0.021846:51.546253,-0.02218:51.551941,-0.027533:51.557127,-0.044429:51.563651,-0.062663",
"51.488875,-0.218071:51.471142,-0.208703:51.468131,-0.187792:51.469135,-0.178257:51.479674,-0.191305:51.481514,-0.213554:51.497239,-0.219409:51.508614,-0.226101:51.510622,-0.231286:51.517146,-0.230115:51.530361,-0.247848:51.533372,-0.251695:51.52735,-0.247848:51.521495,-0.253201:51.51564,-0.252197:51.505269,-0.260227:51.503261,-0.255208:51.496402,-0.247179:51.495733,-0.245171",
"51.605974,-0.087254:51.605138,-0.136938:51.610156,-0.141956:51.608316,-0.144298:51.601457,-0.152663:51.596941,-0.15835:51.604134,-0.164038:51.602294,-0.163034:51.591755,-0.159019:51.590249,-0.160859:51.587405,-0.169726:51.586736,-0.169224:51.579041,-0.172904:51.574357,-0.140785:51.56867,-0.121547:51.574524,-0.121547:51.568837,-0.11151:51.563818,-0.103983:51.567164,-0.10415:51.574023,-0.062663:51.575695,-0.064503:51.581383,-0.048778:51.604134,-0.055972",
"51.564655,-0.323126:51.571513,-0.327643:51.57603,-0.320449:51.582387,-0.313758:51.586067,-0.285487:51.588576,-0.291007:51.594933,-0.271435:51.599785,-0.2982:51.623372,-0.302383:51.632907,-0.318944:51.642275,-0.337011:51.638595,-0.365282:51.627387,-0.402754:51.618019,-0.403255:51.610658,-0.394891:51.58774,-0.377828:51.551941,-0.362605:51.558298,-0.34872:51.559971,-0.337512:51.557796,-0.336509",
"51.633074,0.198636:51.625546,0.180569:51.626216,0.167521:51.621866,0.1349:51.624041,0.142428:51.611327,0.141591:51.597777,0.147614:51.596606,0.148618:51.582889,0.146276:51.575528,0.151963:51.563818,0.157149:51.561978,0.182242:51.565324,0.186926:51.554952,0.164677:51.530696,0.15648:51.514469,0.174714:51.51012,0.182075:51.489711,0.209509:51.491886,0.218375:51.497573,0.238282:51.501755,0.238617:51.508112,0.21687:51.507611,0.242297:51.511625,0.244472:51.514804,0.234602:51.517815,0.24213:51.526681,0.246647:51.517146,0.261033:51.519153,0.259025:51.529525,0.292315:51.532536,0.293821:51.536049,0.330623:51.538056,0.326943:51.551105,0.311553:51.564655,0.290475:51.561978,0.275587:51.586569,0.27726:51.596104,0.257353:51.596773,0.259025:51.604134,0.252:51.617517,0.229584",
"51.623204,-0.456285:51.619859,-0.489407:51.630063,-0.498273:51.623539,-0.500448:51.602963,-0.50463:51.59945,-0.486061:51.572015,-0.495262:51.543911,-0.501452:51.535213,-0.498106:51.516979,-0.492251:51.506272,-0.496098:51.496904,-0.50647:51.480845,-0.508812:51.469971,-0.498608:51.46512,-0.470838:51.460436,-0.463478:51.455752,-0.435207:51.458261,-0.430857:51.465622,-0.413962:51.469302,-0.421155:51.48051,-0.40911:51.502592,-0.399575:51.508782,-0.394724:51.517313,-0.384352:51.526012,-0.421824:51.533707,-0.401248:51.538893,-0.392382:51.547592,-0.377828:51.551941,-0.394891:51.58774,-0.403255:51.610658,-0.402754",
"51.499916,-0.300375:51.495231,-0.313423:51.493726,-0.317438:51.497239,-0.336174:51.49657,-0.34872:51.499748,-0.373311:51.494897,-0.381676:51.498075,-0.394389:51.496737,-0.40911:51.502592,-0.421155:51.48051,-0.413962:51.469302,-0.430857:51.465622,-0.435207:51.458261,-0.463478:51.455752,-0.461136:51.433336,-0.448924:51.433001,-0.448757:51.429488,-0.44056:51.429656,-0.436043:51.424972,-0.422995:51.427983,-0.416304:51.421793,-0.396229:51.421291,-0.392214:51.425975,-0.391713:51.432834,-0.373311:51.435009,-0.364947:51.441198,-0.385189:51.445715,-0.375319:51.459265,-0.342029:51.457592,-0.334501:51.454581,-0.319613:51.462276,-0.320951:51.47131,-0.306063:51.481849,-0.293015:51.485696,-0.280468:51.485529,-0.258888:51.475157,-0.245171:51.489711,-0.247179:51.495733,-0.255208:51.496402,-0.258554:51.493726,-0.271769:51.494562,-0.282308:51.502592,-0.298702",
"51.568837,-0.121547:51.574524,-0.140785:51.56867,-0.139614:51.558465,-0.12757:51.544915,-0.127403:51.533038,-0.120544:51.531198,-0.108834:51.521161,-0.093611:51.521495,-0.089763:51.526179,-0.095786:51.530361,-0.087923:51.534878,-0.087421:51.542908,-0.079057:51.545919,-0.089094:51.551105,-0.095786:51.558967,-0.10231:51.558967,-0.11151",
"51.484358,-0.151659:51.486198,-0.153331:51.489544,-0.16019:51.490046,-0.162867:51.50025,-0.185952:51.501755,-0.188796:51.509953,-0.192811:51.509785,-0.203517:51.522833,-0.215896:51.529358,-0.230115:51.530361,-0.231286:51.517146,-0.226101:51.510622,-0.219409:51.508614,-0.213554:51.497239,-0.191305:51.481514,-0.178257",
"51.394359,-0.250357:51.403057,-0.251695:51.433001,-0.251361:51.435845,-0.279632:51.423968,-0.286992:51.428987,-0.299371:51.427481,-0.302884:51.433336,-0.311918:51.433503,-0.313758:51.426812,-0.30991:51.405734,-0.316267:51.395362,-0.306564:51.380139,-0.311416:51.37211,-0.320617:51.367091,-0.342029:51.345679,-0.338516:51.327612,-0.323962:51.327445,-0.307903:51.333969,-0.302884:51.345846,-0.292513:51.35053,-0.28649:51.361905,-0.277457:51.369935,-0.261732:51.378299,-0.255877:51.377797,-0.239316",
"51.424135,-0.090265:51.428987,-0.098128:51.448392,-0.095618:51.462276,-0.097458:51.467797,-0.101473:51.468633,-0.110339:51.480176,-0.105655:51.489878,-0.109503:51.494228,-0.106659:51.50025,-0.109168:51.504098,-0.102644:51.511625,-0.116864:51.50828,-0.124224:51.491384,-0.131417:51.485864,-0.136436:51.474823,-0.151826:51.460938,-0.14915:51.454079,-0.142625:51.448726,-0.148146:51.445882,-0.143127:51.419451,-0.149317:51.416106,-0.13744:51.411756,-0.11954:51.423466,-0.081232:51.418615,-0.081065",
"51.487369,-0.031214:51.495399,-0.053462:51.489544,-0.055805:51.485362,-0.054968:51.472481,-0.048611:51.464116,-0.048611:51.448559,-0.064002:51.446886,-0.066678:51.437853,-0.076046:51.432834,-0.073035:51.428317,-0.05363:51.425808,-0.033723:51.427648,-0.016325:51.417444,-0.005117:51.416273,0.023656:51.429321,0.035031:51.423299,0.035366:51.433671,0.03202:51.432332,0.023823:51.436514,0.027671:51.442035,0.020645:51.442537,0.021314:51.453243,0.014622:51.45776,0.012448:51.462778,0.011946:51.465789,0.01847:51.469469,-0.008965:51.472815,-0.013314:51.469135,-0.023184:51.473819,-0.019336:51.481347,-0.027701",
"51.423299,-0.188963:51.425808,-0.187792:51.428485,-0.192309:51.432834,-0.190803:51.441868,-0.233127:51.437853,-0.251695:51.433001,-0.250357:51.403057,-0.240487:51.394359,-0.239316:51.38566,-0.224595:51.378968,-0.213721:51.386998,-0.190469:51.384656,-0.17006:51.391682,-0.157514:51.38566,-0.145135:51.385827,-0.142625:51.389675,-0.138276:51.389006,-0.12757:51.397537,-0.13744:51.411756,-0.149317",
"51.553948,0.052596:51.557461,0.04992:51.564153,0.041221:51.562145,0.04557:51.555621,0.022652:51.553112,-0.002441:51.552108,-0.021846:51.546253,-0.020675:51.541904,-0.019336:51.536216,-0.01666:51.531031,-0.009467:51.530863,-0.008797:51.519153,-0.000601:51.516644,0.000236:51.510454,0.004585:51.510287,0.019808:51.500584,0.069157:51.500752,0.085049:51.516142,0.097763:51.517815,0.089231:51.524841,0.078023:51.528688,0.067484",
"51.618019,0.02583:51.624208,0.023656:51.629059,0.014121:51.63023,0.005756:51.620863,0.013786:51.61484,0.010106:51.596606,0.011444:51.582554,0.015124:51.577201,0.015292:51.56616,0.012113:51.558131,0.022652:51.553112,0.04557:51.555621,0.041221:51.562145,0.04992:51.564153,0.052596:51.557461,0.062466:51.553948,0.067484:51.540566,0.091908:51.54709,0.096592:51.543075,0.122354:51.555621,0.117335:51.561142,0.130383:51.579376,0.128543:51.588576,0.135904:51.598948,0.141591:51.597777,0.142428:51.611327,0.1349:51.624041,0.11767:51.615844,0.091406:51.613836,0.093915:51.610491,0.086388:51.604469,0.078023:51.607647,0.071332:51.60497,0.062299",
"51.486533,-0.238312:51.489376,-0.248684:51.485696,-0.252531:51.47683,-0.258219:51.473819,-0.265078:51.474655,-0.281137:51.484191,-0.304725:51.480678,-0.318776:51.47064,-0.319446:51.465622,-0.308907:51.449395,-0.329148:51.442871,-0.329315:51.436347,-0.320282:51.429656,-0.33149:51.435678,-0.331992:51.439024,-0.331156:51.44354,-0.311416:51.450065,-0.319613:51.462276,-0.334501:51.454581,-0.342029:51.457592,-0.375319:51.459265,-0.385189:51.445715,-0.364947:51.441198,-0.373311:51.435009,-0.391713:51.432834,-0.392214:51.425975,-0.396229:51.421291,-0.393553:51.407742,-0.370468:51.409247,-0.346211:51.400883,-0.332494:51.392518,-0.316267:51.395362,-0.30991:51.405734,-0.313758:51.426812,-0.311918:51.433503,-0.302884:51.433336,-0.299371:51.427481,-0.286992:51.428987,-0.279632:51.423968,-0.251361:51.435845,-0.244502:51.444879,-0.25939:51.458094,-0.254539:51.46512,-0.23781:51.464786,-0.233461:51.473317,-0.229781:51.471812,-0.224595",
"51.503596,-0.034225:51.507611,-0.062496:51.502592,-0.102644:51.511625,-0.109168:51.504098,-0.106659:51.50025,-0.109503:51.494228,-0.105655:51.489878,-0.110339:51.480176,-0.101473:51.468633,-0.097458:51.467797,-0.095618:51.462276,-0.098128:51.448392,-0.090265:51.428987,-0.08692:51.424135,-0.081065:51.423132,-0.073035:51.428317,-0.076046:51.432834,-0.066678:51.437853,-0.064002:51.446886,-0.048611:51.448559,-0.048611:51.464116,-0.054968:51.472481,-0.055805:51.485362,-0.053462:51.489544,-0.031214",
"51.391682,-0.190469:51.384656,-0.213721:51.386998,-0.224595:51.378968,-0.239316:51.38566,-0.255877:51.377797,-0.254706:51.366255,-0.240989:51.36592,-0.229948:51.357891,-0.228108:51.343169,-0.234967:51.335642,-0.230115:51.327445,-0.2169:51.32527,-0.212551:51.328616,-0.212718:51.335809,-0.205859:51.342166,-0.186287:51.337147,-0.181101:51.330456,-0.168889:51.323263,-0.148648:51.324935,-0.147644:51.329954,-0.151157:51.332798,-0.145469:51.341831,-0.120377:51.344675,-0.129744:51.386831,-0.138276:51.389006,-0.142625:51.389675,-0.145135:51.385827,-0.157514",
"51.541904,-0.046938:51.535213,-0.056976:51.535882,-0.078555:51.527183,-0.080897:51.523001,-0.080061:51.514971,-0.073035:51.512964,-0.076213:51.508447,-0.057812:51.504599,-0.0456:51.508614,-0.03021:51.509283,-0.02586:51.504265,-0.023351:51.491217,-0.015154:51.487202,-0.007125:51.488875,-0.006623:51.504265,-0.005452:51.507945,0.000236:51.510454,-0.000601:51.516644,-0.008797:51.519153,-0.009467:51.530863,-0.01666:51.531031,-0.019336",
"51.640769,-0.008463:51.645119,-0.007125:51.647628,-0.014318:51.648632,-0.014485:51.640769,-0.031214:51.629896,-0.029875:51.624041,-0.033221:51.61919,-0.045433:51.61484,-0.04192:51.608483,-0.048778:51.604134,-0.064503:51.581383,-0.062663:51.575695,-0.044429:51.563651,-0.027533:51.557127,-0.02218:51.551941,-0.021846:51.546253,-0.002441:51.552108,0.022652:51.553112,0.012113:51.558131,0.015292:51.56616,0.015124:51.577201,0.011444:51.582554,0.010106:51.596606,0.013786:51.61484,0.005756:51.620863,0.014121:51.63023,0.023656:51.629059,0.025161",
"51.481012,-0.181268:51.469804,-0.196156:51.465455,-0.214056:51.467462,-0.224595:51.475157,-0.229781:51.471812,-0.233461:51.473317,-0.23781:51.464786,-0.254539:51.46512,-0.25939:51.458094,-0.244502:51.444879,-0.251361:51.435845,-0.251695:51.433001,-0.233127:51.437853,-0.190803:51.441868,-0.192309:51.432834,-0.187792:51.428485,-0.188963:51.425808,-0.166547:51.423299,-0.149317:51.416106,-0.143127:51.419451,-0.148146:51.445882,-0.142625:51.448726,-0.14915:51.454079,-0.151826:51.460938,-0.136436:51.474823,-0.131417",
"51.537889,-0.190134:51.532201,-0.198331:51.526681,-0.204354:51.529692,-0.215896:51.529358,-0.203517:51.522833,-0.192811:51.509785,-0.188796:51.509953,-0.185952:51.501755,-0.162867:51.50025,-0.16019:51.490046,-0.153331:51.489544,-0.151659:51.486198,-0.135934:51.4867,-0.129577:51.489376,-0.120042:51.508782,-0.113183:51.512295,-0.114856:51.516979,-0.12389:51.516979,-0.131585:51.512295,-0.135097:51.517648,-0.150655:51.526012,-0.155841:51.535213,-0.172067"
]
var sync = require('synchronize');
var utils = require('./utils.js');
var listOfPolys = require('./listofpolys.json');
function stringer(numberOfMonths, threshold, callback) {
sync.fiber(function() {
// get last update date, so that we know where to start from.
var dateJson = sync.await(utils.getTheJSON(
"http://data.police.uk/api/crime-last-updated", sync.defer()));
var currentDate = new Date(JSON.parse(dateJson).date);
var lastUpdateTimeRef = new Date(0);
try {
var refJSON = sync.await(utils.readAsset(
'london-stringer-reference/lastUpdate-' + numberOfMonths + '-' + threshold + '.json',
sync.defer()));
lastUpdateTimeRef = new Date(JSON.parse(refJSON));
} catch (except) {}
if (currentDate < lastUpdateTimeRef) {
//return;
console.log("ERROR");
console.log("current date:", currentDate);
console.log("lastUpdateTimeRef:", lastUpdateTimeRef);
}
utils.writeAsset(
'london-stringer-reference/lastUpdate-' + numberOfMonths + '-' + threshold + '.json',
JSON.stringify(currentDate),
function(err) {
console.log(err);
});
// query crime stats for each month
var crimeArray = [];
while (numberOfMonths) {
var crime = {};
// build query for current month
var currMonth = currentDate.getMonth() + 1; // months start at 0 ¬_¬
currMonth = currMonth > 9 ? String(currMonth) : '0' + String(currMonth);
var timeQuery = "&date=" + currentDate.getFullYear() + "-" + currMonth;
console.log('police-uk: fetching data for ' + timeQuery);
for (var i = 0; i < listOfPolys.length; i++) {
var baseQuery =
"http://data.police.uk/api/crimes-street/all-crime?poly=" +
listOfPolys[i];
try {
var data = sync.await(crimeQuery(baseQuery + timeQuery, sync.defer()));
mergeCrime(crime, data);
} catch (e) {
console.log('somethin bad happened to that poly for that month, skipping.', e);
}
}
crimeArray.push(crime);
currentDate.setMonth(currentDate.getMonth() - 1);
numberOfMonths--;
} //while
console.log("Crime Array: ", crimeArray);
// compute average for each category, over the time range
var categories = Object.keys(crimeArray[0]);
numberOfMonths = crimeArray.length;
var categoryAverages = {};
for (var c = 0; c < categories.length; c++) {
var cat = categories[c];
categoryAverages[cat] = 0;
for (var i = 0; i < crimeArray.length; i++) {
if (cat in crimeArray[i]) {
categoryAverages[cat] += crimeArray[i][cat];
}
}
categoryAverages[cat] /= numberOfMonths;
}
// for each category, compute the diff btw crime amount for last month and
// average.
// callback if > threshold
for (var c = 0; c < categories.length; c++) {
var cat = categories[c];
var categoryDiff = (crimeArray[0][cat] - categoryAverages[cat]) / categoryAverages[cat] * 100;
console.log("Crime statistics updated for the last time on: " + currentDate);
console.log("category: " + cat + ", " + "diff: " + Math.round(
categoryDiff) + "%");
/*if (Math.abs(categoryDiff) > Math.abs(threshold)) {
callback('crime-stringer', cat + ', diff: ' + categoryDiff);
}*/
}
});
} //stringer
function crimeQuery(path_json, callback) {
utils.getTheJSON(path_json, process);
function process(err, json) {
if (err) {
callback(err);
return;
}
if (!json) {
callback('No JSON could be fetched for ' + path_json);
return;
}
var data = JSON.parse(json);
var monthCrimeStat = {};
for (var i = 0; i < data.length; i++) {
if (!(data[i].category in monthCrimeStat)) {
monthCrimeStat[data[i].category] = 0; // 1st crime seen for this category
}
monthCrimeStat[data[i].category] += 1;
}
callback(undefined, monthCrimeStat);
}
}
function mergeCrime(receiver, toMerge) {
var p;
for (p in toMerge) {
if (receiver[p]) {
receiver[p] += toMerge[p];
}
else {
receiver[p] = toMerge[p];
}
}
}
module.exports = stringer;
var nm = require("nodemailer");
var utils = require('./utils.js');
var t = nm.createTransport();
function sendAlert(stringerName, alertContent) {
utils.readAsset('user-email.json', function(err, data) {
t.sendMail({
from: "bot@data.string.er",
to: data,
subject: "ALERT for " + stringerName,
text: "This is a Datastringer automatically-generated alert.\n On today's run, " + stringerName + "generated an alert, with the " +
"following content:\n" + alertContent // TODO pretty print the object
},
function(err, info) {
if(err) {
console.log(err);
}
});
});
}
module.exports = {
sendAlert: sendAlert,
};
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment