-
Notifications
You must be signed in to change notification settings - Fork 0
/
mbsinarea.pl
1158 lines (1111 loc) · 28.3 KB
/
mbsinarea.pl
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
#!/usr/bin/env perl
# show the number of mbcs based on zip, distance, and badge
use Getopt::Std;
use Data::Dumper qw(Dumper);
getopts('D');
Usage() unless ($#ARGV >= 1);
$zip = shift;
$distance = shift;
# load the zipcode data
while (<DATA>)
{
chomp;
s/\r|\n//g;
@z = split(/\t/);
$zips{$z[0]} = $_;
}
die "Target zip $zip unknown\n" if (!exists($zips{$zip}));
warn "Target: $zips{$zip} radius $distance\n";
# load the json data
open(IN, "<live-mbc.json") || die "Can't open live-mbc.json: $!\n";
while (<IN>)
{
$name = $1 if (/name: "(.+)"/); # just for diagnostics
$z = $1 if (/zip:\s*"(.*)"/);
if (/meritbadges: \[(.*)\]/)
{
$mbs = $1;
next if ($z !~ /^(\d{5})/); # skip unrecognizable zipcodes
$z = $1; # get the clean zipcode
if (!exists($zips{$z}))
{
warn "Zip $z not found\n" if ($opt_D);
next;
}
# remove leading and trailing quotes
$mbs =~ s/^"//;
$mbs =~ s/"$//;
if ($mbs eq "")
{
warn "Skip blank badge list $mbs for $name\n" if ($opt_D);
next;
}
# split into array of badges
@mbs = split(/","/, $mbs);
for $mb (@mbs)
{
# increment count for each badge / zip combination
$badges{lc($mb)}{$z}++;
}
}
}
close(IN);
# for each badge ...
@z = split(/\t/, $zips{$zip});
$targetLat = $z[1];
$targetLon = $z[2];
while (<>)
{
chomp;
s/\s+$//;
s/^\s+//;
$mb = lc($_); # name of the badge
if (!exists($badges{$mb}))
{
# try and guess what they meant instead
$cost = 999;
$newmb = "";
for $m (keys %badges)
{
$l = levenshtein($m, $mb);
($newmb, $cost) = ($m, $l) if ($l < $cost);
}
if ($cost <= 3)
{
$mb = $newmb;
}
else
{
print "Badge $mb not found\n";
# warn Dumper(\%badges) . "\n" if ($opt_D);
next;
}
}
$total = 0;
# step through all the zips for this badge
for $z (keys %{$badges{$mb}})
{
$cnt = $badges{$mb}{$z};
@z = split(/\t/, $zips{$z});
$lat = $z[1];
$lon = $z[2];
$total += $cnt if (distance($targetLat, $targetLon, $lat, $lon) <= $distance)
}
printf "%2d %s\n", $total, $mb;
}
sub Usage
{
die <<EOS;
Usage: $0 zip distance
zip = the target zipcode we are interested in
distance = the range to include (as the crow flies)
options:
-D : turn on debug messages
EOS
}
# default units is M = miles
# other choices are K = kilometers, N = nautical miles, F = feet
sub distance {
my ($lat1, $lon1, $lat2, $lon2, $unit) = @_;
my $theta = $lon1 - $lon2;
my $dist = sin(deg2rad($lat1)) * sin(deg2rad($lat2)) + cos(deg2rad($lat1)) * cos(deg2rad($lat2)) * cos(deg2rad($theta));
$dist = acos($dist);
$dist = rad2deg($dist);
$dist = $dist * 60 * 1.1515;
if ($unit eq "K") {
$dist = $dist * 1.609344;
} elsif ($unit eq "N") {
$dist = $dist * 0.8684;
} elsif ($unit eq 'F') {
$dist = $dist * 5280;
}
return ($dist);
}
#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
#::: This function get the arccos function using arctan function :::
#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
sub acos {
my ($rad) = @_;
my $ret = atan2(sqrt(1 - $rad**2), $rad);
return $ret;
}
#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
#::: This function converts decimal degrees to radians :::
#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
sub deg2rad {
my ($deg) = @_;
my $pi = atan2(1,1) * 4;
return ($deg * $pi / 180);
}
#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
#::: This function converts radians to decimal degrees :::
#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
sub rad2deg {
my ($rad) = @_;
my $pi = atan2(1,1) * 4;
return ($rad * 180 / $pi);
}
# Return the Levenshtein distance (also called Edit distance)
# between two strings
#
# The Levenshtein distance (LD) is a measure of similarity between two
# strings, denoted here by s1 and s2. The distance is the number of
# deletions, insertions or substitutions required to transform s1 into
# s2. The greater the distance, the more different the strings are.
#
# The algorithm employs a promimity matrix, which denotes the
# distances between substrings of the two given strings. Read the
# embedded comments for more info. If you want a deep understanding
# of the algorithm, printthe matrix for some test strings
# and study it
#
# The beauty of this system is that nothing is magical - the distance
# is intuitively understandable by humans
#
# The distance is named after the Russian scientist Vladimir
# Levenshtein, who devised the algorithm in 1965
#
sub levenshtein
{
# $s1 and $s2 are the two strings
# $len1 and $len2 are their respective lengths
#
my ($s1, $s2) = @_;
my ($len1, $len2) = (length $s1, length $s2);
# If one of the strings is empty, the distance is the length
# of the other string
#
return $len2 if ($len1 == 0);
return $len1 if ($len2 == 0);
my %mat;
# Init the distance matrix
#
# The first row to 0..$len1
# The first column to 0..$len2
# The rest to 0
#
# The first row and column are initialized so to denote distance
# from the empty string
#
for (my $i = 0; $i <= $len1; ++$i)
{
for (my $j = 0; $j <= $len2; ++$j)
{
$mat{$i}{$j} = 0;
$mat{0}{$j} = $j;
}
$mat{$i}{0} = $i;
}
# Some char-by-char processing is ahead, so prepare
# array of chars from the strings
#
my @ar1 = split(//, $s1);
my @ar2 = split(//, $s2);
for (my $i = 1; $i <= $len1; ++$i)
{
for (my $j = 1; $j <= $len2; ++$j)
{
# Set the cost to 1 iff the ith char of $s1
# equals the jth of $s2
#
# Denotes a substitution cost. When the char are equal
# there is no need to substitute, so the cost is 0
#
my $cost = ($ar1[$i-1] eq $ar2[$j-1]) ? 0 : 1;
# Cell $mat{$i}{$j} equals the minimum of:
#
# - The cell immediately above plus 1
# - The cell immediately to the left plus 1
# - The cell diagonally above and to the left + the cost
#
# We can either insert a new char, delete a char of
# substitute an existing char (with an associated cost)
#
$mat{$i}{$j} = min([$mat{$i-1}{$j} + 1,
$mat{$i}{$j-1} + 1,
$mat{$i-1}{$j-1} + $cost]);
}
}
# Finally, the distance equals the rightmost bottom cell
# of the matrix
#
# Note that $mat{$x}{$y} denotes the distance between the
# substrings 1..$x and 1..$y
#
return $mat{$len1}{$len2};
}
# minimal element of a list
#
sub min
{
my @list = @{$_[0]};
my $min = $list[0];
foreach my $i (@list)
{
$min = $i if ($i < $min);
}
return $min;
}
# zip code data from GeoNames
__DATA__
82001 41.1437 -104.7962
82002 41.14 -104.8202
82003 41.2191 -104.6612
82005 41.1391 -104.8629
82006 41.14 -104.8202
82007 41.1084 -104.8107
82008 41.14 -104.8202
82009 41.1836 -104.8023
82010 41.14 -104.8202
82050 41.4342 -104.1505
82051 41.5735 -105.6112
82052 41.1219 -105.3047
82053 41.2003 -104.3155
82054 41.0428 -104.2765
82055 41.3391 -105.9945
82058 42.2035 -105.678
82059 41.0473 -105.1517
82060 41.2136 -104.4933
82061 41.4353 -105.1417
82063 41.0578 -106.0133
82070 41.439 -105.801
82071 41.3114 -105.5911
82072 41.4247 -105.4781
82073 41.3071 -105.6247
82081 41.5424 -104.2866
82082 41.1788 -104.0666
82083 41.7461 -105.9746
82084 41.0528 -105.4462
82190 44.7957 -110.6137
82201 42.0495 -104.9679
82210 41.7487 -104.8179
82212 42.2133 -104.5226
82213 42.5004 -105
82214 42.2655 -104.7512
82215 42.3334 -104.7296
82217 41.7861 -104.2647
82218 41.9327 -104.1461
82219 42.4987 -104.5134
82221 41.6423 -104.1974
82222 43.0325 -104.6419
82223 42.1346 -104.332
82224 43.0421 -104.7973
82225 42.766 -104.4651
82227 42.73 -104.7024
82229 42.7477 -105.0097
82240 42.0624 -104.1917
82242 42.7033 -104.1408
82243 41.9821 -104.3709
82244 41.912 -104.3535
82301 41.7951 -107.2349
82310 42.5402 -107.8724
82321 41.0312 -107.6687
82322 42.2327 -107.5633
82323 41.0445 -107.499
82324 41.6874 -106.4146
82325 41.2054 -106.7803
82327 41.8726 -106.5283
82329 41.903 -106.2012
82331 41.498 -106.754
82332 41.0395 -107.4234
82334 41.7802 -107.1172
82335 41.7611 -106.845
82336 41.6583 -108.1517
82401 44.0138 -107.9563
82410 44.3788 -108.0438
82411 44.4442 -108.4327
82412 44.7844 -108.544
82414 44.5231 -109.0756
82420 44.8841 -108.4638
82421 44.9257 -108.5979
82422 44.5058 -108.3918
82423 44.9718 -108.6221
82426 44.4919 -108.0795
82428 44.2507 -107.6053
82430 43.8042 -108.1805
82431 44.8336 -108.4141
82432 44.2694 -107.964
82433 44.1962 -108.95
82434 44.4056 -108.3047
82435 44.7561 -108.7773
82440 44.7161 -108.8646
82441 44.6011 -107.7889
82442 43.9978 -107.4153
82443 43.7758 -108.3839
82450 44.4686 -109.4377
82501 43.0351 -108.2024
82510 42.9679 -108.4941
82512 43.3716 -109.296
82513 43.5451 -109.6492
82514 43.0048 -108.8964
82515 42.9061 -108.5834
82516 43.2678 -108.9334
82520 42.9208 -108.5913
82523 43.3623 -108.6998
82524 42.9838 -108.4165
82601 42.8458 -106.3166
82602 42.8896 -106.357
82604 42.8261 -106.3896
82605 42.8666 -106.3131
82609 42.8406 -106.2806
82615 41.7169 -106.9992
82620 42.5302 -106.76
82630 43.1789 -107.2576
82633 42.7626 -105.3855
82635 43.4074 -106.2638
82636 42.8992 -106.1754
82637 42.7803 -105.8719
82638 43.1153 -107.3436
82639 43.7236 -106.5632
82640 43.5651 -106.1728
82642 43.3284 -107.6488
82643 43.4114 -106.28
82644 42.8405 -106.3659
82646 43.0297 -106.8092
82648 43.0322 -106.9873
82649 43.2457 -108.1007
82701 43.8511 -104.2262
82710 44.7473 -104.1931
82711 44.6873 -104.4414
82712 44.5436 -104.0745
82714 44.5248 -104.6867
82715 44.0775 -104.1383
82716 44.282 -105.4974
82717 44.3047 -105.4959
82718 43.9282 -105.5492
82720 44.7352 -104.6174
82721 44.4154 -104.8389
82723 43.999 -104.4226
82725 44.7861 -105.776
82727 44.3058 -105.2459
82729 44.4058 -104.3837
82730 44.0893 -104.6352
82731 44.7705 -105.3581
82732 43.7512 -105.492
82801 44.7849 -106.9648
82831 44.6899 -106.1092
82832 44.6003 -106.7954
82833 44.6531 -107.0247
82834 44.3485 -106.7073
82835 44.661 -106.4581
82836 44.878 -107.3026
82837 44.718 -106.2692
82838 44.965 -107.3254
82839 44.9171 -107.174
82840 44.4976 -106.871
82842 44.58 -106.8978
82844 44.7864 -107.2202
82845 44.7534 -106.6949
82901 41.606 -109.23
82902 41.5875 -109.2029
82922 43.2238 -110.3353
82923 42.6881 -109.5401
82925 43.1399 -109.9154
82929 41.5436 -109.859
82930 41.2609 -110.9631
82931 41.2619 -110.92
82932 42.0834 -109.4184
82933 41.3166 -110.3843
82934 41.5936 -109.9688
82935 41.5196 -109.4714
82936 41.0552 -110.1603
82937 41.3291 -110.2926
82938 41.0409 -109.8745
82939 41.2335 -110.3372
82941 42.8543 -109.8561
82942 41.6802 -108.7857
82943 41.6698 -109.1919
82944 41.0993 -110.5007
82945 41.7643 -108.9681
83001 43.4528 -110.7393
83002 43.4799 -110.7624
83011 43.6094 -110.5442
83012 43.715 -110.742
83013 43.9509 -110.5532
83014 43.4992 -110.8742
83025 43.5924 -110.8314
83101 41.7887 -110.5283
83110 42.7128 -110.942
83111 42.8051 -110.9944
83112 42.8701 -110.9401
83113 42.6483 -110.1246
83114 42.058 -110.9164
83115 42.9176 -110.1336
83116 41.7839 -110.54
83118 43.0443 -111.0085
83119 42.6885 -110.9824
83120 43.0172 -111.0292
83121 41.8141 -110.5371
83122 42.7965 -110.9244
83123 42.2473 -110.2109
83124 41.7795 -110.276
83126 42.6192 -110.9224
83127 42.933 -111.0114
83128 43.1635 -111.018
83201 42.8876 -112.4381
83202 42.9357 -112.4679
83203 43.0331 -112.4285
83204 42.8465 -112.4434
83205 42.8062 -112.4103
83206 42.8713 -112.4455
83209 42.6395 -112.3138
83210 43.0049 -112.84
83211 42.6352 -112.9458
83212 42.5026 -112.5585
83213 43.6355 -113.3176
83214 42.56 -112.1746
83215 43.4449 -112.8128
83217 42.7205 -111.8429
83218 43.3155 -112.1644
83220 42.3191 -111.3926
83221 43.1943 -112.3615
83223 42.184 -111.4086
83226 44.4969 -114.1946
83227 44.2733 -114.4102
83228 42.216 -111.9957
83229 45.093 -114.2317
83230 42.7191 -111.5967
83232 42.1184 -111.9858
83233 42.1774 -111.2174
83234 42.4181 -112.109
83235 44.6919 -114.0484
83236 43.3021 -112.1588
83237 42.0288 -111.7871
83238 42.3136 -111.0722
83239 42.4821 -111.3708
83241 42.55 -111.74
83243 42.1619 -112.6539
83244 43.9087 -113.0878
83245 42.7964 -112.2465
83246 42.6185 -112.0176
83250 42.6336 -112.1758
83251 43.9111 -113.612
83252 42.1808 -112.262
83253 44.6044 -113.912
83254 42.352 -111.3195
83255 43.7296 -113.4544
83256 43.2226 -112.4423
83261 42.2242 -111.4208
83262 43.1336 -112.6295
83263 42.1109 -111.8565
83271 42.5556 -112.854
83272 42.1128 -111.3897
83274 43.3769 -112.1075
83276 42.6718 -111.5699
83277 43.0803 -112.673
83278 44.3714 -114.8561
83281 42.3195 -111.9781
83283 42.3794 -111.6841
83285 43.0269 -111.2541
83286 42.0446 -111.9715
83287 42.0459 -111.4633
83301 42.5565 -114.4693
83302 42.218 -114.5942
83303 42.563 -114.4609
83311 42.3896 -113.5567
83312 42.0846 -113.6283
83313 43.4397 -114.2498
83314 42.9449 -114.9104
83316 42.6008 -114.7825
83318 42.5244 -113.7931
83320 43.2744 -113.8926
83321 42.521 -114.8734
83322 43.5282 -114.7307
83323 42.5245 -113.4338
83324 42.9125 -114.2664
83325 42.5868 -114.2467
83327 43.3675 -114.7908
83328 42.5653 -114.614
83330 42.9373 -114.712
83332 42.8142 -114.887
83333 43.5239 -114.3064
83334 42.5249 -114.2994
83335 42.5955 -114.135
83336 42.5599 -113.7709
83337 43.3005 -115.0512
83338 42.7178 -114.5012
83340 43.6692 -114.4858
83341 42.5287 -114.3657
83342 42.2741 -113.3927
83343 42.773 -113.5098
83344 42.4776 -114.1606
83346 42.194 -113.872
83347 42.624 -113.7971
83348 43.3101 -114.0861
83349 43.0588 -114.1508
83350 42.6888 -113.6481
83352 42.9474 -114.3822
83353 43.6853 -114.3313
83354 43.5946 -114.3226
83355 42.7579 -114.7154
83401 43.5518 -111.8919
83402 43.4934 -112.0578
83403 43.4666 -112.0341
83404 43.475 -112.0124
83405 43.4666 -112.0341
83406 43.4732 -111.9661
83414 43.8886 -110.9492
83415 43.4666 -112.0341
83420 44.0153 -111.4253
83421 44.0011 -111.5351
83422 43.7263 -111.1199
83423 44.1858 -112.3259
83424 43.8724 -111.1895
83425 43.9308 -112.1872
83427 43.5263 -111.933
83428 43.3861 -111.2527
83429 44.4466 -111.3679
83431 43.6725 -112.0189
83433 44.3192 -111.6017
83434 43.7266 -111.9837
83435 43.9862 -112.5783
83436 43.8881 -111.6042
83438 43.9594 -111.7577
83440 43.81 -111.789
83441 43.7761 -111.691
83442 43.6715 -111.9005
83443 43.5197 -111.5266
83444 43.7116 -112.1196
83445 43.963 -111.7036
83446 44.3605 -112.1869
83448 43.8477 -111.6932
83449 43.456 -111.3416
83450 43.8586 -112.42
83451 43.8907 -111.6504
83452 43.7814 -111.2118
83454 43.5936 -111.9573
83455 43.6148 -111.1259
83460 43.826 -111.7897
83462 45.255 -113.8573
83463 45.5704 -113.9913
83464 44.7389 -113.4926
83465 44.8516 -113.6198
83466 45.4242 -114.0419
83467 45.1571 -113.8784
83468 44.9681 -113.8167
83469 45.3769 -114.277
83501 46.3646 -116.8609
83520 46.5394 -116.3233
83522 46.0448 -116.3733
83523 46.2453 -116.4677
83524 46.378 -116.6536
83525 45.7896 -115.5024
83526 46.1349 -116.3982
83530 45.9272 -116.1076
83531 45.9632 -116.2563
83533 46.1155 -116.2724
83535 46.5754 -116.7188
83536 46.2186 -116.0347
83537 46.6286 -116.6049
83539 46.116 -115.9459
83540 46.4124 -116.7902
83541 46.5354 -116.513
83542 45.557 -116.2669
83543 46.2475 -116.2393
83544 46.4952 -116.2404
83545 46.4807 -116.4114
83546 46.4924 -115.8071
83547 45.3068 -116.3517
83548 46.3361 -116.5333
83549 45.397 -116.3006
83552 46.002 -115.9269
83553 46.3807 -115.9386
83554 45.7521 -116.2889
83555 46.2383 -116.6204
83601 43.8479 -115.2538
83602 44.0804 -116.124
83604 42.614 -115.8419
83605 43.6627 -116.7
83606 43.7249 -116.7989
83607 43.6186 -116.7501
83610 44.5922 -116.6757
83611 44.6927 -115.6417
83612 44.7628 -116.4518
83615 44.6659 -116.0369
83616 43.7069 -116.362
83617 43.9089 -116.4927
83619 44.0027 -116.9143
83622 44.0909 -115.8243
83623 42.9622 -115.316
83624 42.9896 -116.0934
83626 43.669 -116.8315
83627 42.9457 -115.4662
83628 43.6138 -116.9472
83629 43.9229 -116.1809
83630 43.6027 -116.7903
83631 43.8834 -115.708
83632 44.5491 -116.443
83633 42.9799 -115.1899
83634 43.487 -116.3819
83635 44.8327 -116.0848
83636 43.8963 -116.6462
83637 44.1106 -115.5285
83638 44.8918 -116.0789
83639 43.5399 -116.824
83641 43.3784 -116.5489
83642 43.615 -116.3975
83643 44.6255 -116.4493
83644 43.7191 -116.6112
83645 44.442 -116.7038
83646 43.6498 -116.4306
83647 43.1392 -115.6963
83648 43.7914 -116.4012
83650 42.8481 -116.6371
83651 43.5834 -116.5848
83652 43.7071 -116.6208
83653 43.5851 -116.753
83654 44.994 -116.2874
83655 43.959 -116.8048
83656 43.7259 -116.7997
83657 44.2418 -116.2732
83660 43.7896 -116.9401
83661 44.0782 -116.9203
83666 43.9633 -115.9759
83669 43.7013 -116.4967
83670 43.9948 -116.3232
83671 45.2641 -115.6765
83672 44.2522 -116.9651
83676 43.6579 -116.9122
83677 44.9698 -115.4963
83680 43.6121 -116.3915
83686 43.5441 -116.566
83687 43.5937 -116.536
83701 43.6038 -116.2729
83702 43.6322 -116.2052
83703 43.6601 -116.2524
83704 43.633 -116.2951
83705 43.5851 -116.2191
83706 43.5885 -116.191
83707 43.6135 -116.2035
83708 43.4599 -116.244
83709 43.5741 -116.2941
83711 43.4599 -116.244
83712 43.6023 -116.1649
83713 43.634 -116.3419
83714 43.7318 -116.2797
83715 43.4599 -116.244
83716 43.5345 -115.9711
83717 43.4599 -116.244
83719 43.4599 -116.244
83720 43.4599 -116.244
83722 43.4599 -116.244
83724 43.6195 -116.1952
83725 43.4599 -116.244
83726 43.4599 -116.244
83728 43.6135 -116.2035
83729 43.4599 -116.244
83731 43.4599 -116.244
83732 43.4599 -116.244
83735 43.6135 -116.2035
83756 43.4599 -116.244
83799 43.6135 -116.2035
83801 47.9267 -116.7318
83802 47.2714 -115.866
83803 47.9822 -116.5494
83804 48.0223 -116.9909
83805 48.7306 -116.3322
83806 46.8588 -116.3935
83808 47.3219 -116.0703
83809 48.0482 -116.5939
83810 47.5522 -116.4431
83811 48.1405 -116.1699
83812 47.0107 -116.2529
83813 48.1248 -116.6571
83814 47.6928 -116.785
83815 47.7248 -116.789
83816 47.6777 -116.7805
83821 48.5228 -116.8408
83822 48.1552 -116.9781
83823 46.8061 -116.5238
83824 47.126 -116.8937
83825 48.2516 -116.611
83826 48.9994 -116.1813
83827 46.7835 -116.1799
83830 47.116 -116.3831
83832 46.5714 -116.929
83833 47.5017 -116.7446
83834 46.9376 -116.7025
83835 47.7989 -116.7423
83836 48.2444 -116.2795
83837 47.5431 -116.1253
83839 47.5509 -116.2887
83840 48.3102 -116.5135
83841 48.1702 -116.756
83842 47.4625 -116.5683
83843 46.7309 -116.9897
83844 46.7324 -117.0002
83845 48.7464 -116.1796
83846 47.4709 -115.7926
83847 48.6049 -116.3196
83848 48.6339 -116.9473
83849 47.5211 -116.021
83850 47.5018 -116.2647
83851 47.3278 -116.8662
83852 48.3055 -116.5338
83853 48.992 -116.4775
83854 47.7205 -116.9353
83855 46.9448 -116.9141
83856 48.1664 -116.9066
83857 46.8996 -116.8287
83858 47.8241 -116.8873
83860 48.2035 -116.5455
83861 47.2977 -116.5681
83864 48.312 -116.5332
83865 48.3633 -116.6256
83866 47.1544 -116.431
83867 47.4981 -115.9657
83868 47.5362 -116.2062
83869 47.9657 -116.868
83870 47.1707 -116.9027
83871 46.7426 -116.7681
83872 46.8583 -116.9732
83873 47.4908 -115.962
83874 47.6271 -115.8585
83876 47.4292 -116.9056
83877 47.718 -116.9516
84001 40.3514 -110.2754
84002 40.4013 -110.2938
84003 40.3928 -111.7941
84004 40.4616 -111.7689
84005 40.3802 -111.991
84006 40.5646 -112.0977
84007 40.3594 -110.2174
84008 40.0211 -109.1773
84009 40.5622 -111.9297
84010 40.8775 -111.8727
84011 40.8894 -111.8808
84013 40.2959 -112.0923
84014 40.9268 -111.877
84015 41.1294 -112.0482
84016 41.1108 -112.0261
84017 40.8405 -111.3228
84018 41.0689 -111.5231
84020 40.5046 -111.881
84021 40.1633 -110.4029
84022 40.2708 -112.6898
84023 40.9291 -109.391
84024 40.9892 -111.451
84025 40.9889 -111.8938
84026 40.3014 -109.8637
84027 40.1575 -110.8226
84028 41.9376 -111.407
84029 40.6005 -112.4618
84031 40.4501 -110.8097
84032 40.4947 -111.4051
84033 41.0186 -111.5011
84034 40.0366 -113.9853
84035 40.3787 -109.351
84036 40.6414 -111.2619
84037 41.0375 -111.9326
84038 41.8107 -111.2689
84039 40.4003 -109.8041
84040 41.0846 -111.9274
84041 41.0879 -111.9704
84042 40.3412 -111.7144
84043 40.3958 -111.8506
84044 40.7009 -112.0809
84045 40.3495 -111.9043
84046 40.9685 -109.7235
84047 40.6152 -111.8851
84049 40.5093 -111.4776
84050 41.0678 -111.7163
84051 40.3922 -110.4291
84052 40.194 -110.0481
84053 40.45 -110.0181
84054 40.8446 -111.9191
84055 40.7243 -111.2456
84056 41.1202 -111.9898
84057 40.3134 -111.6953
84058 40.2818 -111.7209
84059 40.177 -111.536
84060 40.6524 -111.5018
84061 40.7247 -111.3419
84062 40.372 -111.7333
84063 40.2186 -109.7301
84064 41.6563 -111.1856
84065 40.4954 -111.9444
84066 40.3102 -110.0108
84067 41.1724 -112.0382
84068 40.668 -111.5054
84069 40.3566 -112.4659
84070 40.5794 -111.8816
84071 40.4415 -112.3559
84072 40.3827 -110.7021
84073 40.3207 -110.436
84074 40.5454 -112.3002
84075 41.0864 -112.0451
84076 40.4436 -109.8359
84078 40.4406 -109.5469
84079 40.4555 -109.5287
84080 40.0826 -112.426
84081 40.6037 -112.0411
84082 40.3657 -111.4649
84083 40.7372 -114.0375
84084 40.6254 -111.9677
84085 40.468 -109.9307
84086 41.4888 -111.1868
84087 40.8874 -111.9027
84088 40.5959 -111.9644
84089 40.9635 -112.116
84090 40.6681 -111.9083
84091 40.6681 -111.9083
84092 40.5834 -111.7467
84093 40.5927 -111.831
84094 40.5688 -111.8617
84095 40.5541 -111.9539
84096 40.5144 -112.0325
84097 40.2972 -111.6705
84098 40.7029 -111.5481
84101 40.7559 -111.8967
84102 40.76 -111.8627
84103 40.7776 -111.8749
84104 40.7499 -111.926
84105 40.7372 -111.8581
84106 40.7056 -111.8548
84107 40.6568 -111.8904
84108 40.7371 -111.8258
84109 40.7043 -111.8142
84110 40.6681 -111.9083
84111 40.7548 -111.881
84112 40.7659 -111.8403
84113 40.7658 -111.8364
84114 40.6681 -111.9083
84115 40.7145 -111.8931
84116 40.7857 -111.9291
84117 40.6551 -111.834
84118 40.6504 -112.0054
84119 40.6916 -112.0011
84120 40.6916 -112.0011
84121 40.6226 -111.7777
84122 40.6681 -111.9083
84123 40.6596 -111.9193
84124 40.6772 -111.8133
84125 40.6681 -111.9083
84126 40.6681 -111.9083
84127 40.6681 -111.9083
84128 40.6916 -112.0011
84129 40.6531 -111.9674
84130 40.6681 -111.9083
84131 40.6681 -111.9083
84132 40.7727 -111.8385
84133 40.769 -111.8893
84134 40.6681 -111.9083
84136 40.7685 -111.8879
84138 40.7608 -111.891
84139 40.7608 -111.891
84141 40.6681 -111.9083
84143 40.7869 -111.9008
84145 40.6681 -111.9083
84147 40.7608 -111.891
84148 40.7568 -111.8376
84150 40.6681 -111.9083
84151 40.6681 -111.9083
84152 40.7608 -111.891
84157 40.6681 -111.9083
84158 40.769 -111.7621
84165 40.6681 -111.9083
84170 40.6681 -111.9083
84171 40.6681 -111.9083
84180 40.769 -111.9008
84184 40.6768 -111.9568
84189 40.7608 -111.891
84190 40.6681 -111.9083
84199 40.7259 -111.9394
84201 41.2443 -112.0079
84244 41.2553 -111.9567
84301 41.6093 -112.1241
84302 41.5079 -112.0152
84304 41.8169 -111.9982
84305 41.9188 -112.0486
84306 41.7813 -112.0666
84307 41.545 -112.1514
84308 41.9443 -111.9733
84309 41.6972 -112.0947
84310 41.3303 -111.8558
84311 41.8118 -112.119
84312 41.7413 -112.1516
84313 41.7094 -113.8833
84314 41.652 -112.105
84315 41.1668 -112.1364
84316 41.7733 -112.3968
84317 41.2721 -111.7618
84318 41.8 -111.8123
84319 41.6311 -111.849
84320 41.9701 -111.8768
84321 41.747 -111.8226
84322 41.6412 -111.8966
84323 41.7355 -111.8344
84324 41.4975 -111.9416
84325 41.71 -111.9817
84326 41.6759 -111.8185
84327 41.8627 -111.9908
84328 41.56 -111.8297
84329 41.8551 -113.3478
84330 41.8831 -112.1388
84331 41.9757 -112.2384
84332 41.7 -111.8123
84333 41.9282 -111.8069
84334 41.7868 -112.1467
84335 41.8403 -111.8528
84336 41.966 -112.7269
84337 41.7016 -112.1813
84338 41.9105 -111.934
84339 41.6343 -111.9317