You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@bigtop.apache.org by rn...@apache.org on 2015/09/15 16:47:06 UTC

[1/3] bigtop git commit: BIGTOP-1991. Add BigTop Weatherman

Repository: bigtop
Updated Branches:
  refs/heads/master be796c983 -> ad88e7414


http://git-wip-us.apache.org/repos/asf/bigtop/blob/ad88e741/bigtop-data-generators/build.gradle
----------------------------------------------------------------------
diff --git a/bigtop-data-generators/build.gradle b/bigtop-data-generators/build.gradle
new file mode 100644
index 0000000..17baffb
--- /dev/null
+++ b/bigtop-data-generators/build.gradle
@@ -0,0 +1,44 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+subprojects {
+  apply plugin: 'eclipse'
+  apply plugin: 'java'
+
+  Node xml = new XmlParser().parse("../pom.xml")
+  group = xml.groupId.first().value().first()
+  version = xml.version.first().value().first()
+
+  repositories {
+    mavenLocal()
+    mavenCentral()
+  }
+
+  test {
+    // show standard out and error on console
+    testLogging.showStandardStreams = true
+
+    // listen to events in the test execution lifecycle
+    beforeTest { descriptor ->
+      logger.lifecycle("Running test: " + descriptor)
+    }
+
+    // listen to standard out and standard error of the test JVM(s)
+    onOutput { descriptor, event ->
+      logger.lifecycle("Test: " + descriptor + " produced standard out/err: " + event.message )
+    }
+  }
+}

http://git-wip-us.apache.org/repos/asf/bigtop/blob/ad88e741/bigtop-data-generators/settings.gradle
----------------------------------------------------------------------
diff --git a/bigtop-data-generators/settings.gradle b/bigtop-data-generators/settings.gradle
index a0e23a3..69b9bec 100644
--- a/bigtop-data-generators/settings.gradle
+++ b/bigtop-data-generators/settings.gradle
@@ -13,4 +13,4 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-include ":bigpetstore-data-generator", ":bigtop-name-generator", ":bigtop-samplers", ":bigtop-location-data"
+include ":bigpetstore-data-generator", ":bigtop-name-generator", ":bigtop-samplers", ":bigtop-location-data", ":bigtop-weatherman"


[2/3] bigtop git commit: BIGTOP-1991. Add BigTop Weatherman

Posted by rn...@apache.org.
http://git-wip-us.apache.org/repos/asf/bigtop/blob/ad88e741/bigtop-data-generators/bigtop-weatherman/src/main/resources/input_data/weather_parameters.csv
----------------------------------------------------------------------
diff --git a/bigtop-data-generators/bigtop-weatherman/src/main/resources/input_data/weather_parameters.csv b/bigtop-data-generators/bigtop-weatherman/src/main/resources/input_data/weather_parameters.csv
new file mode 100644
index 0000000..5d51187
--- /dev/null
+++ b/bigtop-data-generators/bigtop-weatherman/src/main/resources/input_data/weather_parameters.csv
@@ -0,0 +1,897 @@
+WBAN,City,State,Latitude,Longitude,Temperature Average,Temperature Real Coeff,Temperature Imag Coeff,Temp Deriv Std,Precipitation Average,Wind Speed Coeff Real,Wind Speed Coeff Imag,Wind Speed k,Wind Speed Theta
+14853,DETROIT,MI,42.23333,-83.53333,53.0568654646,-22.5320710554,7.35343358484,8.17976262428,0.127760055479,1.55741549907,-1.24359704356,3.95457928154,2.13109915235
+14852,YOUNGSTOWN/WARREN,OH,41.25444,-80.67389,51.0220385675,-20.8281661634,5.54808686298,8.56935855617,0.205475206612,1.55442679407,-1.24373432187,3.20490893057,2.42805040934
+14918,INTERNATIONAL FALLS,MN,48.5614,-93.3981,38.2868965517,-28.5760826835,7.70285617519,9.29375512483,0.152151724138,0.533795038545,-0.625074679509,2.981466123,2.10246017714
+14850,TRAVERSE CITY,MI,44.74083,-85.5825,48.2665745856,-22.3066904451,7.86489085151,8.38991896448,0.137672651934,1.08454013627,-0.516888707072,3.25831148596,1.86340286602
+14913,DULUTH,MN,46.8369,-92.1833,42.0387275242,-26.7481553685,8.47833831452,8.69480811185,0.167219917012,0.800756565261,-0.57598980924,3.73409073211,2.44489521972
+14910,ALEXANDRIA,MN,45.8679,-95.3941,43.6593406593,-29.0895822608,9.01852044458,8.61452026449,0.0873626373626,0.783443932236,-0.571771559267,3.95954476322,2.48897799357
+14858,HANCOCK,MI,47.16861,-88.48889,42.030726257,-22.5737642486,7.94485420373,7.7862234154,0.10875,1.20508067683,-0.631962082081,4.41578143158,2.11329381221
+14916,GRAND FORKS,ND,47.9428,-97.1839,41.3591160221,-30.4481792864,8.64360258045,8.89834759886,0.0932113259669,1.05441288782,-0.855558379174,4.32401482837,2.29781207397
+14914,FARGO,ND,46.92528,-96.81111,43.9365517241,-30.2722956526,8.56341229561,9.32885849502,0.121696551724,0.816522163059,-0.91939627302,4.54165323919,2.29711277055
+94746,WORCESTER,MA,42.2706,-71.8731,50.1345353675,-21.2636635174,6.94977321269,7.56799787879,0.215721220527,1.19967060252,-0.948328513743,3.65085911248,2.61827301847
+13737,NORFOLK,VA,36.9033,-76.1922,62.0068493151,-17.4987475546,5.45685951845,7.44907752964,0.193623287671,0.222902754171,-0.601741745834,3.77218992031,2.29411450623
+13736,MORGANTOWN,WV,39.64278,-79.91639,54.9958847737,-19.790354287,4.69191417002,8.33743967831,0.157983539095,0.920319848974,-1.08384725396,2.21499452902,1.91796650813
+13735,MILLVILLE,NJ,39.3667,-75.0667,55.493543759,-19.6998939799,7.00925374252,8.05644379625,0.16824964132,0.829330069425,-1.17512479496,3.16444304537,1.8631976303
+13734,MARTINSBURG,WV,39.4019,-77.9844,55.3884297521,-20.2433483094,4.67046422727,7.53867357607,0.143347107438,1.2944308919,-1.16112415383,3.65552475552,1.45977014306
+13733,LYNCHBURG,VA,37.3208,-79.2067,57.4046639232,-18.8626001816,4.63678515944,7.40277711215,0.159176954733,0.685428734794,-0.972068894612,2.38874699621,1.88142096683
+13739,PHILADELPHIA,PA,39.8683,-75.2311,57.9532967033,-20.7161601004,6.46684758586,6.98863778957,0.193949175824,0.866874504361,-1.10888207451,3.59064851296,2.3666865553
+24048,GREYBULL,WY,44.51694,-108.08222,47.9310344828,-27.8891620752,7.05138789585,7.2503797651,0.0147931034483,-1.56961968371,-1.01962226248,4.13511689595,1.51426315869
+94194,REXBURG,ID,43.83389,-111.80444,45.2534435262,-23.9118374927,7.0278048938,7.06298611703,0.0378719008264,-0.757301426992,-0.98870480236,3.88228355903,1.71730884373
+04858,NEWARK,OH,40.02278,-82.4625,52.9626038781,-21.3648531989,5.13316722356,8.11423065012,0.157541551247,1.51825717083,-1.35677228856,3.37799289706,1.57734341368
+24164,BIG PINEY,WY,42.58444,-110.1075,39.0924137931,-24.7616420482,7.7977061382,7.211891784,0.0152896551724,-1.31480305071,-0.738607696553,3.0456221871,2.21731489772
+04857,ASHTABULA,OH,41.77806,-80.69583,50.3092926491,-20.5487266451,6.30403129926,8.66681534077,0.181747572816,2.01773331525,-1.03077474149,3.55378963976,1.90701077016
+04854,GAYLORD,MI,45.01333,-84.70139,44.3595041322,-23.2940128316,7.41309877405,8.96513029669,0.123842975207,1.02534976762,-0.279393000888,3.50894287327,1.99148768769
+04855,MARION,OH,40.61611,-83.06361,51.5319444444,-21.9852943043,5.82816148019,8.39672148559,0.147104166667,1.77621640741,-1.56546907199,3.88305703347,2.17222179288
+04852,NEW PHILADELPHIA,OH,40.47194,-81.42361,52.764868603,-20.8269157274,5.47846700577,8.58224881987,0.138257261411,1.11528924394,-1.25320804142,2.66091172513,1.69910252303
+04850,LIMA,OH,40.7075,-84.02722,53.1584022039,-22.3844652135,5.30628336532,8.29888750907,0.14173553719,2.21227910482,-1.65569191937,4.12606410292,2.13238255344
+04851,DEFIANCE,OH,41.3375,-84.42889,52.6461538462,-22.8512201834,5.2467139881,8.14918861649,0.110307692308,1.24629148365,-1.21190033056,3.10391185212,2.03203989925
+14950,OTTUMWA,IA,41.1077,-92.4466,52.0909090909,-24.2234115331,6.49035291077,9.02802052379,0.132789256198,1.61714326923,-1.51229605549,3.82515407608,2.52349438191
+93782,MAXTON,NC,34.79167,-79.36611,62.3462068966,-16.8509332226,4.52887299337,7.19434848504,0.163779310345,0.16099505573,-0.970834888088,2.931247129,2.02804110113
+93783,BURLINGTON,NC,36.04667,-79.47694,59.9807427785,-18.0290300345,4.4787188237,7.16883782585,0.177668500688,0.757494516501,-0.937045478983,2.66392496137,1.77902991621
+93780,MOUNT HOLLY,NJ,39.94917,-74.84167,55.6272855134,-20.2965633096,5.85483249095,7.75060809441,0.175886075949,1.30871131205,-1.31891044581,3.00247927474,1.62767500822
+93786,OCEAN CITY,MD,38.30833,-75.12389,56.7012448133,-17.8447766474,7.37608716619,7.7854082196,0.178900414938,0.480075614169,-0.813939526534,3.13716354651,2.26142736627
+93784,BALTIMORE,MD,39.2814,-76.6089,62.2954230236,-20.4391571204,6.73577767154,7.10516935705,0.16814147018,-0.0127250649067,0.00094431929641,0.17119410868,0.037267799625
+93785,CHAPEL HILL,NC,35.93333,-79.06417,60.8271092669,-17.6909470828,4.26467635524,7.22427137869,0.196721991701,0.296038053757,-0.708000527122,2.17952524323,1.64221686496
+12932,ALICE,TX,27.74111,-98.02472,74.639275766,-13.4831517494,3.35134970129,7.01610243733,0.0992966573816,-0.563238772202,-1.45993054093,3.40667928082,2.67383950709
+03049,ALPINE,TX,30.38333,-103.68333,63.4964336662,-16.8404609348,2.89102941761,8.44294533281,0.0510984308131,0.645008784852,-1.34465225017,3.20161467507,2.54463256193
+54734,DANBURY,CT,41.37139,-73.48278,51.401920439,-20.6253955448,6.25145189061,7.68663766912,0.170390946502,0.713676213223,-1.06388749721,2.6616102702,1.9796281549
+93107,MIRAMAR,CA,32.86667,-117.13333,63.6383866481,-7.14820432983,5.31134532472,3.988179936,0.0275799721836,0.325640925939,-0.32503801286,1.50881456814,3.40226016
+54733,BEVERLY,MA,42.58417,-70.9175,51.0694444444,-19.4796245327,7.60179375763,8.48563278132,0.161166666667,1.13809953184,-1.22667171032,3.28387756053,2.16846459436
+12935,PALACIOS,TX,28.72472,-96.25361,72.5110497238,-13.9648103588,4.59160976328,6.13057277494,0.136263812155,-0.100470415944,-1.67647774003,3.84281831501,2.59470879385
+64775,ROME,NY,43.23389,-75.41167,48.4299450549,-22.5553270009,7.41550594461,8.5326112012,0.166298076923,1.19712875504,-0.95272512034,3.32926749957,2.03844793559
+04787,DU BOIS,PA,41.17833,-78.89889,49.2977839335,-21.3676781583,6.01286850835,8.24944037663,0.149646814404,2.06540284046,-1.31434884581,3.50652400687,2.14293868038
+64776,PLATTSBURG,NY,44.65,-73.46667,46.6708333333,-23.3443171429,7.2138138717,8.5684252556,0.119479166667,0.169509468938,-1.01219495617,2.93026586246,1.91601878736
+24221,EUGENE,OR,44.1278,-123.2206,53.0303448276,-13.353746458,5.3294154773,5.29738984334,0.151220689655,-0.192989634397,-0.140365128772,2.98514308996,2.0360139934
+04780,FITCHBURG,MA,42.55194,-71.75583,51.4972451791,-22.5910937571,5.95190190779,7.96345808584,0.149338842975,0.622760611662,-1.14155871499,3.21838668997,1.76182928905
+04781,ISLIP,NY,40.79389,-73.10167,54.5082417582,-19.5994698862,7.4115261885,6.90679746051,0.183853021978,1.03943003459,-1.15925947149,3.7231160249,2.34999745597
+13886,GREENVILLE,SC,34.84611,-82.34611,62.9766803841,-16.8660119884,4.00445822615,6.24809941781,0.211378600823,0.325253868407,-0.726903838488,2.64887302584,2.21275871484
+24018,CHEYENNE,WY,41.15,-104.8167,47.9228650138,-21.1345131179,6.81379845297,9.24366061652,0.0846694214876,1.77333856351,-1.37579230124,4.27263550654,2.69070898165
+13880,CHARLESTON,SC,32.8986,-80.0402,67.3571428571,-14.6288392093,4.40622822838,6.75345042493,0.209402472527,0.179365505724,-0.937596032297,2.88319980965,2.51685415014
+21510,KAILUA/KONA,HI,19.73556,-156.04889,78.0475524476,-2.04064085147,2.1839069215,2.69340615228,0.0211678321678,-0.404359349991,-0.0761400215034,1.3926299515,5.22751933646
+24153,MISSOULA,MT,46.9208,-114.0925,47.1272475795,-21.2604508936,5.92597019228,6.39476755324,0.0675518672199,-1.03535571488,-0.5894614342,2.9686760197,1.53315897456
+24046,CRAIG,CO,40.49278,-107.52417,43.9307479224,-25.9113019147,6.90683450997,7.39876193864,0.04391966759,-1.27377299794,-0.788461469732,3.11931174122,1.65211528421
+24152,MEACHAM,OR,45.51139,-118.42472,43.5516759777,-15.8646645715,5.46538469452,6.83583066347,0.197849162011,-0.200200121719,-0.329192705211,1.02446086701,1.14817170779
+27406,DEADHORSE,AK,70.1917,-148.4772,13.406162465,-31.5556139815,20.0755360445,7.97779227922,0.0159453781513,1.4363698894,-0.495639690957,5.91946473183,2.00660224236
+93067,DENVER,CO,39.57028,-104.84889,51.2169680111,-21.5344292536,6.2086396277,9.20059036838,0.0593115438108,-0.653864714797,-1.05311936259,2.91115796445,2.62889525054
+24044,ALLIANCE,NE,42.0573,-102.8017,48.9830985915,-22.8909840736,10.3429517816,9.35169147462,0.0408169014085,-0.173059401841,-1.19876832919,4.07733387612,2.56574731639
+93027,ST JOHNS,AZ,34.51833,-109.37917,54.6151724138,-21.3909049508,5.56853875235,5.53371048785,0.0317172413793,-1.01997378791,-1.70165971704,3.56526544565,1.95174324737
+93026,DOUGLAS BISBEE,AZ,31.4583,-109.6061,63.7800829876,-17.8386291406,4.13738413889,4.59720359886,0.0527800829876,-0.652674760865,-1.366844525,3.2269160966,2.33693055922
+94989,AMES,IA,41.99056,-93.61889,50.2916666667,-25.4659702502,6.78942254552,8.8395514706,0.127354166667,1.32207234147,-1.7325917616,4.2285858386,2.12186776915
+94988,MARSHALLTOWN,IA,42.11056,-92.91611,49.7257617729,-25.5593902581,6.99445825056,9.51820830294,0.11033933518,1.59303154178,-2.09481085719,4.46686655156,2.28549535838
+03131,SAN DIEGO,CA,32.81583,-117.13944,64.1521438451,-7.28639534402,5.03647382884,3.71753544301,0.0271369294606,-0.744697755456,-0.492314567527,1.70513963409,2.69253491191
+24141,EPHRATA,WA,47.3078,-119.5154,52.0069541029,-21.9934464537,7.05422820491,5.87672770274,0.0301251738526,-1.1839003994,-0.66478131652,3.24981975153,2.24037246143
+94982,DAVENPORT,IA,41.61389,-90.59139,50.8248275862,-24.6182189052,6.6418893639,8.84132531904,0.141889655172,1.83020500187,-2.05878375076,4.39480319199,2.24271154623
+94985,MARSHFIELD,WI,44.63806,-90.1875,45.242090784,-26.0560010244,7.96070762118,8.35613701578,0.125632737276,1.00248151009,-0.865945749251,3.34180638715,2.47035056227
+26442,VALDEZ,AK,61.1303,-146.3517,39.6031746032,-16.3494292116,1.17398125513,4.81668062046,0.490670995671,1.38250333334,0.875299266619,4.34486693091,1.1304909195
+03031,ODESSA,TX,31.92056,-102.38667,66.2028169014,-19.3517331023,4.97210470545,8.43961375863,0.0402042253521,-1.14246945197,-1.07926634992,3.4552278168,2.96545946358
+03030,GUYMON,OK,36.68167,-101.50528,58.9752407153,-22.6215504608,5.6776890988,8.98912786036,0.061939477304,-0.486365523153,-1.15473016885,4.32717458279,2.51352897172
+03032,DRYDEN,TX,30.04806,-102.21306,70.8605299861,-17.1801802852,5.14408311324,6.82177395967,0.0553138075314,-0.828151991864,-0.729001388168,2.93521850379,2.93577967043
+14758,NEW HAVEN,CT,41.26389,-72.88722,54.1964038728,-20.1534861176,6.93892217903,6.85516977119,0.137219917012,0.969341873013,-0.652858646159,2.80233962349,2.23899063444
+94971,ESTHERVILLE,IA,43.40111,-94.74722,47.2884615385,-26.6177905278,7.32832979108,9.09209452954,0.0830563186813,1.72453447411,-2.03627876067,4.88165080303,2.34357647436
+94973,HAYWARD,WI,46.02611,-91.44417,41.9111111111,-25.9465583625,8.00817314235,9.4605088067,0.123416666667,-0.0141117837084,-0.531017928259,2.31549224162,1.75292700875
+14756,NANTUCKET,MA,41.25306,-70.06083,52.3986111111,-15.9607437884,7.78248095109,6.23740003447,0.158916666667,1.8294739432,-1.09794729735,4.55075064185,2.54933522004
+14757,POUGHKEEPSIE,NY,41.6266,-73.8842,52.3651452282,-21.5561225821,5.71624477116,7.66123311414,0.158008298755,0.960180991592,-1.16754372739,2.93404444696,1.45155304864
+94978,TEKAMAH,NE,41.76361,-96.17778,51.8980716253,-26.3960106962,5.57943130194,9.02793162059,0.0981611570248,1.01067554352,-2.12236846501,4.69178507389,2.14030973715
+14751,HARRISBURG,PA,40.21722,-76.85139,55.1282758621,-21.3956572239,5.57667945856,6.94102002569,0.174393103448,0.652481688938,-1.19645294021,3.08466214162,1.85004333009
+14752,HARTFORD,CT,41.73611,-72.65056,53.6721991701,-21.3640257569,6.51086184769,7.31839514842,0.150145228216,0.729045188694,-1.10346785053,2.81987047369,2.04044960569
+94871,BENTON HARBOR,MI,42.1256,-86.4284,50.875,-21.001608722,6.92548194709,8.55348369438,0.139708333333,2.09422640373,-1.11188090871,3.91414189457,1.87663525353
+94870,CHAMPAIGN/URBANA,IL,40.03972,-88.27778,53.7469050894,-23.0823310133,5.26108433342,8.45843045751,0.129140302613,2.44991276406,-2.24459738009,4.54978920013,2.19536449443
+13904,AUSTIN/BERGSTROM,TX,30.1831,-97.6799,69.0633608815,-16.9806925081,4.17458609925,7.57703716971,0.148388429752,0.0794309337882,-1.54893204132,3.61830508457,2.10157298892
+13869,ALBANY,GA,31.53556,-84.19444,68.1549100968,-14.6877940776,3.82797951356,6.10599341885,0.156908713693,0.28652048892,-0.812496663995,2.63971175391,1.9497916616
+94298,VANCOUVER,WA,45.62083,-122.65722,54.0873786408,-14.3511528228,4.77868247071,5.0052044191,0.148772538141,-0.320317091963,-0.300152392404,2.16648147442,1.80450716589
+13866,CHARLESTON,WV,38.3794,-81.59,56.8984700974,-19.5702529701,4.76003121078,7.69515799887,0.188783031989,1.15810573612,-1.34427670437,2.963569208,1.41270469105
+13865,MERIDIAN,MS,32.3347,-88.7442,64.7438016529,-16.2315685926,3.95987888696,6.95577887018,0.266384297521,0.934082428032,-1.09676036547,2.86196996409,1.7836738333
+12849,FORT LAUDERDALE,FL,26.0719,-80.1536,77.4256198347,-5.87860265064,2.9779281086,3.87993251716,0.282231404959,0.528848304116,-0.72375330252,3.53802179489,2.54644174442
+12842,TAMPA,FL,27.96194,-82.5403,74.9710743802,-9.20740745274,3.4448142814,4.7830066067,0.223326446281,0.155842423612,-0.688894958312,2.47231615227,2.47640326461
+12843,VERO BEACH,FL,27.651,-80.4199,73.9683631362,-7.76850433413,3.69472378149,4.93108378713,0.194381017882,0.419915122418,-0.733031644419,2.97258144268,2.59709706187
+12841,ORLANDO,FL,28.54528,-81.33306,74.3835616438,-9.11960485483,3.55120574639,4.83303056049,0.198226027397,0.128493853806,-0.724127917805,2.73016683032,2.53303804059
+93845,VALDOSTA,GA,30.7825,-83.27667,70.8107734807,-13.4549497603,3.97645928021,6.22052736714,0.183584254144,0.318856509646,-0.409523676544,2.10553510046,1.80332368961
+12844,WEST PALM BEACH,FL,26.6847,-80.0994,76.58033241,-6.27701775924,4.08488117752,4.22011348346,0.295512465374,0.584209773244,-0.813340787955,3.51159259377,2.56361019402
+93846,ANDERSON,SC,34.4977,-82.7097,62.4150684932,-16.8594921326,4.11720924259,6.17824599389,0.217664383562,0.546548251589,-1.13448821458,3.07977730696,1.67589060785
+03856,HUNTSVILLE,AL,34.64389,-86.78611,62.8720770289,-17.9768535481,4.03014375758,7.00819357677,0.22341127923,1.19958662917,-1.32803144584,3.12178377299,1.93092264214
+24230,REDMOND,OR,44.2558,-121.1392,47.7517531557,-16.2840181181,6.02262643794,7.12423458835,0.0373001402525,-0.662253798802,-0.734493186802,2.97632605506,2.04578394418
+03998,PARSONS,KS,37.32778,-95.50417,59.1553398058,-22.5039866027,5.44634850225,8.69488244787,0.129778085992,1.13538995527,-1.11806204968,3.41687663616,1.77888327123
+03999,BURNET,TX,30.7406,-98.2354,68.6427586207,-16.9820844036,4.41421069443,7.37724722074,0.0920896551724,-0.168040478508,-1.20444140471,2.88545163768,2.44819141613
+03996,TALLULAH/VICKSBURG,LA,32.35,-91.02778,65.7111111111,-16.3255442804,3.62687570697,7.58896690743,0.251166666667,1.47918445964,-1.21621570794,3.07355205295,1.78946050213
+03997,LAWRENCE,KS,39.00778,-95.21167,56.3457300275,-23.5296721226,5.91800129373,9.21615026373,0.101900826446,0.659605028804,-1.36061702535,3.81550675693,2.14493711057
+03994,SEDALIA,MO,38.70417,-93.18333,58.2134986226,-22.4600716943,5.72028308325,8.71210393955,0.140909090909,1.33620989517,-1.21343178602,3.52878427652,2.50333992227
+24259,MONTAGUE,CA,41.78139,-122.46806,52.1553398058,-18.512377948,6.45634492226,5.71855050713,0.0376144244105,-1.18832933576,-1.02618667413,4.02495302869,1.41657910401
+24135,BUTTE,MT,45.9647,-112.5006,41.2541436464,-21.4948698179,6.04470502181,7.89691439615,0.042203038674,-0.952451363343,-0.944631780059,2.66554579088,2.01626531129
+03859,BLUEFIELD,WV,37.2958,-81.2077,55.9889502762,-18.0773178091,4.90393525878,8.45617182757,0.191705801105,1.7487288194,-1.47111770502,3.12211581137,2.04856473623
+03991,DENTON,TX,33.20611,-97.19889,65.5151515152,-19.8830652865,5.46724645128,8.29374074546,0.117871900826,-0.00200758736177,-1.47367272386,4.03103917861,2.25635478656
+23064,GARDEN CITY,KS,37.92722,-100.72472,56.1017881706,-23.9123509324,6.28208564974,8.48145459117,0.0582255845942,-0.628333165915,-1.29132616318,4.42303185162,2.71465717035
+23065,GOODLAND,KS,39.36722,-101.69333,53.324137931,-23.2367979247,6.5344070259,9.67874528964,0.0688965517241,-0.00345553971809,-1.13782260699,4.27655096564,2.75991018149
+23066,GRAND JUNCTION,CO,39.1342,-108.54,52.9034482759,-27.1963995674,5.01089606323,6.27256498403,0.0444206896552,-2.23131153911,-0.62931512978,3.17048746313,2.21356149398
+23067,LA JUNTA,CO,38.0494,-103.5122,56.7489597781,-24.0761972914,6.1070748355,8.55164541752,0.0219902912621,-0.684146783859,-1.15546899425,3.59959241641,2.73439803955
+23061,ALAMOSA,CO,37.4389,-105.8613,41.7377279102,-25.6457728376,6.25130675948,5.91623566004,0.0410238429173,-1.60555432412,-1.56753171197,3.69346199515,1.78234660642
+94290,SEATTLE SAND POINT,WA,47.6872,-122.2553,53.8548850575,-13.0321343658,1.72875357567,4.11447978428,0.154051724138,-0.279567475308,-0.778812020838,2.63402878867,0.655544899646
+53922,FAYETTEVILLE/SPRINGDALE,AR,36.28333,-94.3,59.2013793103,-20.4159663508,5.74363357089,7.70508789631,0.15835862069,0.835413429716,-1.35000253943,3.5499163635,2.12403255709
+24133,BURLEY,ID,42.5416,-113.7661,49.1848275862,-21.1609185321,6.36009650115,6.47404579785,0.0311793103448,0.573890552202,-1.69337217486,4.09923858015,1.82459452643
+24283,ARCATA/EUREKA,CA,40.97806,-124.10861,50.818431912,-5.3750136394,3.22388347067,4.116583953,0.156458046768,-0.315842419156,-1.08591026349,2.8653876707,1.79800958544
+53921,MOUNT IDA,AR,34.5467,-93.57806,62.2732316227,-19.2727653799,4.28026258852,7.30977826709,0.206109570042,0.42482199537,-0.738883190926,1.70175305437,1.41071789183
+53925,DE QUEEN,AR,34.05,-94.40083,62.9719101124,-19.2934681957,4.0642991981,7.15017328412,0.12577247191,0.50424062478,-0.876322328444,2.23821818166,1.86846059342
+03071,MIDLAND,TX,32.03639,-102.10111,68.0997150997,-19.6335056348,2.61591434345,8.63357413727,0.026688034188,-0.413169816119,-1.57667996003,3.48188006552,2.59532480056
+93084,SAFFORD,AZ,32.85472,-109.63528,67.1744505495,-20.3817777512,5.52330528429,5.31542711394,0.0295879120879,-1.31513582829,-0.702914505579,3.19584894831,2.47475043388
+24160,WALLA WALLA,WA,46.09472,-118.28694,54.8404401651,-19.1734363917,5.9381084631,6.46163349235,0.0767125171939,-0.298623967423,-1.11618002938,4.03160764515,1.8654519365
+24130,BAKER CITY,OR,44.8428,-117.8086,45.3186206897,-19.6006192861,5.71845358657,6.20094099817,0.0357931034483,-0.168699473888,-1.15996896448,3.72112547382,1.70137624418
+26438,SEWARD,AK,60.12833,-149.41667,39.6260387812,-15.3500731917,4.82729140357,5.23543917817,0.295283933518,3.1608981922,0.192607586593,5.87660340046,1.47476695431
+14922,MINNEAPOLIS,MN,44.8831,-93.2289,48.4855967078,-28.0141463337,7.98421869534,8.3334669841,0.147839506173,0.272071326206,-0.772963695233,3.51745440448,2.45941827174
+24089,CASPER,WY,42.8977,-106.4739,47.3411927878,-23.1978375504,7.29469867144,9.27956569599,0.0794937586685,3.19871547712,-1.11745465046,5.26572962609,2.2038718068
+24162,ONTARIO,OR,44.02056,-117.01278,52.6107290234,-24.4967910617,5.70717252614,6.04625048975,0.0289064649243,-0.849089436699,-1.16281091933,3.86647466078,1.41632987587
+24126,OGDEN,UT,41.19611,-112.01139,52.6881868132,-24.7876591431,7.8712759173,6.56381651361,0.0493475274725,-1.08198181439,-0.42474604889,2.74239584063,2.38025809163
+03027,CLINES CORNERS,NM,35.00278,-105.66278,51.2831241283,-20.7478141153,5.10238876959,6.5807996856,0.0477824267782,2.1696192611,-1.79886237301,4.96563556601,2.78053288188
+23244,MOUNTAIN VIEW,CA,37.40583,-122.04806,60.1646090535,-8.3907176815,3.11376011879,3.96340269153,0.0336625514403,-2.15729853328,-0.608818206852,2.39798659276,2.22145667357
+24163,PASCO,WA,46.26667,-119.11667,53.7245179063,-20.0737328423,4.79941458169,6.25706117171,0.0310950413223,-0.239576540216,-1.40547448228,4.28771050643,1.45032996794
+04726,JOHNSTOWN,PA,40.31611,-78.83389,48.7602739726,-20.5466924419,5.75684188607,8.15058160226,0.168369863014,2.32949854466,-1.38286708632,3.93317378866,2.21651665396
+93210,OROVILLE,CA,39.49,-121.61833,62.762973352,-15.9416683579,5.00521056907,4.43230784578,0.0710238429173,-0.928072319586,-0.919372330855,3.57976796784,1.67972995241
+93740,FAYETTEVILLE,NC,34.99139,-78.88028,63.7107438017,-17.0471368878,4.76398090931,7.51334049372,0.172541322314,0.199628946964,-0.83104149077,2.86114112671,2.33040963683
+93741,NEWPORT NEWS,VA,37.13194,-76.49306,61.6408839779,-18.0612624249,5.43590942232,8.09197488529,0.224772099448,0.149667389,-1.13280833664,3.20668279251,2.25638072293
+53854,ORANGEBURG,SC,33.46167,-80.85806,65.5398351648,-15.4071145188,3.98836991779,6.75280865393,0.20095467033,0.63914100615,-0.820087272698,2.72133466513,1.8129032591
+53855,HAMILTON,OH,39.36444,-84.52472,54.540802213,-21.7130643486,4.52626427068,8.32876659245,0.166141078838,1.29836954017,-1.18105173758,2.91137908973,1.55468568398
+03927,DALLAS-FORT WORTH,TX,32.8978,-97.0189,68.1304945055,-19.1520311634,5.50146523494,7.31750135016,0.125254120879,0.183439111829,-1.49761443385,4.19598393357,2.47626892283
+53853,DESTIN,FL,30.4,-86.47167,70.2013986014,-12.7234239406,3.87140754914,6.47338254725,0.264146853147,1.19039765699,-0.787918913299,3.02203738907,2.15146847797
+53850,CLEMSON,SC,34.67194,-82.88639,64.3590096286,-16.6040846866,4.200572335,6.09464856285,0.244188445667,0.656730600275,-0.85249125147,2.71500167321,1.48808934512
+54813,MUNISING,MI,46.41667,-86.65,43.8864942529,-19.8071896237,10.4727687696,8.288843465,0.169439655172,1.06572437816,-0.485865297129,4.02166010241,2.24820665055
+53905,SHREVEPORT,LA,32.54278,-93.745,66.8418156809,-17.7525756913,4.72305486042,6.99403922843,0.186767537827,0.137623677655,-1.24990310263,3.07132913123,1.94723683833
+03928,WICHITA,KS,37.6475,-97.43,59.2878787879,-23.6054402557,5.9938264675,8.27099964915,0.140785123967,-0.0186468513097,-1.04639095856,4.44436120614,2.46952972195
+53858,PASCAGOULA,MS,30.46361,-88.53194,67.9931129477,-13.9284934084,3.85964414211,6.49436094916,0.275495867769,1.09672293431,-1.02916496936,2.88630041151,1.73900253991
+53859,DAYTON,OH,39.59361,-84.22639,54.2980769231,-21.672749653,5.69866468936,8.1003485239,0.161126373626,1.37930830184,-1.01404386531,3.11396182104,2.34547152822
+54778,PENN YAN,NY,42.6425,-77.05639,50.2876901798,-21.2338594831,6.70963106437,8.70788580399,0.115373443983,1.76948602875,-1.07291703397,3.54879181046,1.90503734058
+25309,JUNEAU,AK,58.3566,-134.564,41.5859697387,-14.4756733079,4.29368724636,4.47025836451,0.322902338377,0.571477623563,-0.629256784474,4.64758770562,1.55155848223
+25308,ANNETTE,AK,55.0389,-131.5787,46.6358543417,-11.0322867597,4.66144962742,4.38419405541,0.430840336134,1.19502594736,-0.530696422399,4.12007556199,1.58362383451
+14787,NEWPORT,RI,41.53333,-71.28333,52.1648351648,-18.4465750353,7.27206417697,6.67863881133,0.11657967033,1.43723342435,-0.984511257224,3.33953935089,2.188932875
+54773,FULTON,NY,43.34972,-76.38472,49.3282967033,-21.269563915,7.04497100978,8.3298545972,0.157252747253,1.75949580166,-1.26645295751,3.78224001848,1.71630660264
+54770,JAFFREY,NH,42.805,-72.00361,47.8033472803,-22.4620061819,7.13632110574,8.09001598552,0.172782426778,0.537985412716,-0.710979673396,2.47653914768,1.68544017619
+54771,MORRISVILLE,VT,44.53444,-72.61444,45.3370319001,-23.5272775808,8.28939119909,8.68771857239,0.135832177531,0.515084014127,-0.906631146976,2.36773592829,1.43286633359
+54777,TAUNTON,MA,41.87556,-71.02111,51.8418862691,-19.6108202328,6.29256029232,8.07295698915,0.174778085992,0.562107757279,-1.16334714165,2.7194743875,1.98124073187
+94732,PHILADELPHIA,PA,40.08194,-75.01111,56.2440392707,-19.9256589081,8.43709570624,7.44533636113,0.190224403927,0.942453849856,-1.4106579405,3.47599220793,2.06207077194
+22534,KAUNAKAKAI,HI,21.1545,-157.0961,74.576652602,-1.66481306773,2.48676921353,5.86038740592,0.0453797468354,-1.56142674662,-0.35297164293,3.89157780091,2.65592128969
+22536,LIHUE,HI,21.98389,-159.34056,75.8272980501,-2.42024517259,2.89105546368,1.98878842198,0.154199164345,-1.24665951371,-0.726960368834,4.2055631273,2.95784765684
+24155,PENDLETON,OR,45.6983,-118.8547,52.455801105,-18.4282802868,5.61392272528,6.19250005924,0.0519820441989,-0.544462585169,-1.13679307932,4.29962920495,1.92487368083
+13884,CRESTVIEW,FL,30.77972,-86.5225,68.1262002743,-14.0393152568,4.00836838175,6.53549370749,0.238641975309,0.712204631152,-0.895105914317,2.4001738606,1.78039228697
+24157,SPOKANE,WA,47.6216,-117.528,49.2458563536,-20.3274115022,6.58358918564,5.54397421253,0.0817541436464,-0.162950581731,-1.2486906455,4.36675466334,1.79254959641
+24156,POCATELLO,ID,42.9202,-112.5711,48.0013850416,-22.6530280326,6.40801093165,6.86216454961,0.0454778393352,-0.0297347663706,-1.43088704041,5.04608745613,1.80807096386
+13881,CHARLOTTE,NC,35.2236,-80.9552,61.6312154696,-17.6474542218,4.14593902684,6.86495524955,0.171774861878,0.273979386817,-0.85160929702,2.53651141211,2.28573387353
+13769,OCEANA,VA,36.81667,-76.03333,61.1326815642,-17.6815980931,5.72101876944,7.89461710386,0.221459497207,0.565397204156,-0.859916035592,3.80366219833,2.37752345446
+13883,COLUMBIA,SC,33.9419,-81.1181,65.8591352859,-16.1005417128,4.73154503059,6.93928642897,0.204665271967,0.190769604591,-1.0369127459,2.91196784502,1.77754388204
+13882,CHATTANOOGA,TN,35.0311,-85.2014,62.5631868132,-17.9708169444,4.35830956503,6.17609857446,0.244450549451,0.816168909031,-1.04968417885,2.84983166158,1.53845601424
+13764,GEORGETOWN,DE,38.68917,-75.35917,58.5260989011,-19.3170812241,6.22485859206,7.93391052467,0.183853021978,0.36771479216,-1.0290214753,3.052811579,2.07073570395
+24015,AKRON,CO,40.16667,-103.21667,51.6828254848,-23.259901981,7.29127274686,9.96586913633,0.0515650969529,-0.131893828264,-0.81624703477,3.71518085069,3.23524737259
+24017,CHADRON,NE,42.8374,-103.0981,49.6561210454,-25.0021063358,6.42459183843,9.30162600033,0.0557083906465,-0.523474897886,-1.04321916585,4.00026329288,2.17303440542
+13889,JACKSONVILLE,FL,30.495,-81.6936,69.5151098901,-12.2737004492,4.09224925914,6.34368878192,0.202005494505,-0.0138524725229,-0.921488163118,2.89524973001,2.19367476246
+24011,BISMARCK,ND,46.7825,-100.7572,43.9792243767,-27.3324622604,7.94232689009,9.25236282334,0.101862880886,-0.0223308163748,-0.978422203745,3.90267541271,2.2540116638
+24012,DICKINSON,ND,46.7994,-102.7972,44.1601123596,-25.4278594124,7.6081199741,10.2679938736,0.0654564606742,0.727830656124,-1.03304911309,4.17931376386,2.64794022631
+24013,MINOT,ND,48.2552,-101.2733,42.0746887967,-28.5902245719,8.30762947765,9.20683451828,0.0777800829876,1.01733905821,-0.626191192144,4.37744613537,2.2984975234
+25628,ST. GEORGE ISLAND,AK,56.6,-169.565,34.6977715877,-9.28458932729,9.33786653561,4.73719339036,0.0853830083565,4.45355587792,-1.45253829793,8.13365243525,1.97206747501
+94624,CHATHAM,MA,41.6875,-69.99333,52.4230769231,-17.7133504172,8.3582264471,6.39136944113,0.166195054945,0.545163945657,-0.886690465432,3.01460058529,2.18661081469
+14815,BATTLE CREEK,MI,42.3075,-85.25111,50.4485596708,-23.0630025689,6.37849463678,8.06513158651,0.121872427984,1.42762677553,-1.10852903098,3.79034120653,2.21033265754
+14813,AKRON,OH,41.0375,-81.46417,51.585399449,-21.6482564019,5.61350824021,8.45008777192,0.152272727273,1.55350495956,-1.15959198495,3.70269411231,1.91722509511
+94950,MITCHELL,SD,43.7743,-98.0384,48.8365384615,-27.6152257046,7.30020127816,9.23462330617,0.118557692308,0.727157441307,-1.12732883502,4.35575546199,2.35368135999
+93206,SAN LUIS OBISPO,CA,35.23722,-120.64139,60.3653846154,-6.0520970054,3.96088072422,4.51479542541,0.0397664835165,-1.87560264532,-0.941945350703,3.14854466631,2.01362000524
+93205,MARYSVILLE,CA,39.1019,-121.5677,62.7676348548,-15.7207512135,4.47007963628,4.88040719991,0.06622406639,-1.05436970407,-1.12110108004,4.03111789505,1.53034918384
+14819,CHICAGO,IL,41.78611,-87.75222,53.2693370166,-23.5995961758,7.51972125538,8.38756329804,0.127272099448,0.850972222352,-1.03934514547,3.47417118011,2.73780470703
+03178,SAN DIEGO,CA,32.57222,-116.97944,62.8317241379,-6.83128799641,5.26667884931,4.25418989221,0.0276620689655,0.310028682589,-0.592292235202,1.64889616953,2.71563072691
+03179,CHINO,CA,33.97528,-117.63611,65.3448753463,-11.8093764721,5.93756280445,4.06231999922,0.0121121883657,-1.58621579594,-0.627160469134,2.04156036111,2.44517225849
+93762,SITE R,PA,39.73333,-77.43333,56.406424581,-21.147081413,5.30459922314,7.67525406196,0.195104748603,1.07258481405,-0.806289849767,2.20120368117,1.28846467441
+54737,LANCASTER,PA,40.12028,-76.29444,53.9876373626,-21.1537192138,5.70925314302,7.09000393621,0.162135989011,1.07013071526,-1.35281101377,3.61122861431,1.78183551136
+03170,EUREKA,NV,39.6013,-116.0055,48.5105485232,-20.8500737664,9.5741591883,7.49559647226,0.032194092827,-1.33944400688,-0.393998106345,3.06365360341,2.39696155839
+03171,RIVERSIDE,CA,33.95194,-117.43861,67.7240896359,-10.9111933324,6.08517185811,4.6685828045,0.0171218487395,-0.324490478417,-0.424948781384,1.6333334114,2.58471947859
+23184,PRESCOTT,AZ,34.65167,-112.42083,57.4281767956,-19.1442239872,4.90472395066,5.02048849778,0.0453522099448,-0.737317902922,-1.28055467094,2.66982333508,2.42127055972
+03177,CARLSBAD,CA,33.12806,-117.27944,63.3434065934,-6.04392622883,5.09120735971,3.74397096491,0.0274244505495,-0.602358137926,-0.672069518133,1.52812115646,2.40617248272
+14710,MANCHESTER,NH,42.93333,-71.43833,51.4002770083,-22.0127910917,7.17020487291,7.76522852518,0.149750692521,0.408385176163,-1.16849607505,3.05497351546,1.95852467033
+14711,HARRISBURG,PA,40.1962,-76.7724,54.9449793673,-21.5743002168,6.29326853094,6.54483096541,0.185158184319,1.10233353352,-1.53087056262,3.91632261674,1.58230996781
+14712,READING,PA,40.36667,-75.96667,55.2912621359,-21.4681138364,5.3775651254,7.2747718874,0.163169209431,1.04883485507,-1.49384734086,3.44231840463,1.62693145446
+24231,ROSEBURG,OR,43.23889,-123.35472,55.9448275862,-14.2335984509,5.75064707197,5.2566942728,0.120103448276,-1.44580157133,-0.172103811256,1.94613431278,1.54931362856
+94273,MC MINNVILLE,OR,45.19472,-123.13389,53.6079779917,-13.2183015636,5.03125826557,5.08451186147,0.148143053645,0.165999536725,-0.687341448017,3.42629143392,1.51992408965
+14719,WESTHAMPTON BEACH,NY,40.84361,-72.63222,52.1244755245,-19.1860113624,7.52341278832,7.97564480467,0.152160839161,1.13935045336,-1.15661608063,3.59771398449,2.11408526599
+24232,SALEM,OR,44.905,-123.0011,53.7867036011,-13.7962639625,5.14061420783,5.05474537072,0.16163434903,0.282418961627,-0.58965857272,3.36787135643,1.68173003541
+24233,SEATTLE,WA,47.4444,-122.3138,53.3823933975,-12.5642628616,5.30007205025,4.2906764454,0.169250343879,0.630408529108,-0.926956729559,3.31721171486,2.16697296809
+12947,COTULLA,TX,28.45667,-99.21833,73.8824343015,-15.5560968701,4.15764046665,7.30376434869,0.083112033195,-1.39317915665,-0.918887980285,2.84612182245,2.57772329524
+24235,SEXTON SUMMIT,OR,42.6003,-123.3641,48.8294036061,-12.9519597958,7.60617132728,6.79546246142,0.169556171983,1.68394723561,-0.252371414701,3.51240548238,2.09868382464
+94274,TACOMA,WA,47.2675,-122.57611,52.2217630854,-11.7974549836,4.71958784093,4.14135849431,0.141136363636,0.627420801368,-0.906639755009,3.42515745439,1.57882187042
+94938,BRAINERD,MN,46.40472,-94.13083,43.5393103448,-27.8749677969,8.67368491967,9.02392910288,0.124572413793,0.79648223719,-0.497548120627,3.45944638681,2.11817826282
+94830,TOLEDO,OH,41.58861,-83.80139,51.5459533608,-22.4203285117,6.05334176926,8.05913380151,0.148683127572,1.73931027892,-1.57731257139,4.07408259549,1.88383444357
+24234,SEATTLE,WA,47.53028,-122.30083,53.9132231405,-12.8065210321,4.74613826341,4.99482014688,0.147665289256,0.405808948362,-0.803619389549,2.67989755225,1.80663540368
+04789,MONTGOMERY,NY,41.50917,-74.265,50.8918539326,-21.6109612429,4.89381161626,7.50577564358,0.150316011236,1.1249007523,-1.10973933928,3.1881254724,1.69145042329
+94789,NEW YORK,NY,40.63861,-73.76222,56.1304945055,-19.4778916055,8.01157320631,6.49860579627,0.157541208791,1.47379381872,-1.11017747262,4.33879421389,2.5361847034
+94276,FRIDAY HARBOR,WA,48.52222,-123.02306,49.8561549101,-9.41393629582,4.01977906483,4.24889856079,0.0377593360996,1.13092830613,-0.84719495985,3.22132238465,1.42339077116
+13810,LOUISVILLE,KY,38.22806,-85.66361,58.7020689655,-21.1860281959,3.96096732859,7.84040546732,0.214737931034,1.05916082277,-1.06801160748,2.89169094942,1.77402465347
+25713,ST PAUL ISLAND,AK,57.15528,-170.22222,33.4013986014,-10.482667559,10.2882913269,5.05002233659,0.13906993007,3.50391668427,0.269864483411,7.14416578873,1.99276497462
+26510,MC GRATH,AK,62.9574,-155.6103,26.8513323983,-34.2740061692,11.1629658855,8.94966520088,0.118758765778,-0.460630186533,0.462354829909,2.91236001682,1.2253717542
+03810,HICKORY,NC,35.7425,-81.3819,59.8547945205,-17.5370779455,4.43518474841,6.54073085298,0.225493150685,0.533423343323,-1.05223329622,2.39111943028,1.62794157851
+94182,MCCALL,ID,44.88889,-116.10167,41.7917241379,-21.5747866493,7.36843284312,6.37038750914,0.106427586207,-0.893716116587,-0.505207144312,2.53563807213,1.52480153618
+94185,BURNS,OR,43.595,-118.9564,45.6897506925,-20.6259368101,5.98629357015,6.84130526229,0.0356301939058,-1.2682785877,-1.09106189085,3.27052398647,1.95382382984
+12888,MIAMI,FL,25.6475,-80.43306,76.41184573,-6.21203382436,3.27964179719,3.73733135538,0.264628099174,0.694015681161,-0.802462234678,3.25307356662,2.24475144759
+53175,CORONA,CA,33.89765,-117.60243,65.3947368421,0.229454025621,-2.13364430535,4.57440174224,0.00332706766917,0.96023292903,-1.94744139557,2.90639661824,1.56706460832
+23054,LAS VEGAS,NM,35.65417,-105.14194,51.281512605,-18.6819203621,6.05138271885,7.61093322235,0.0491596638655,0.0448121869145,-1.43247799425,4.01660948693,2.7402321816
+12884,BOOTHVILLE,LA,29.333,-89.4075,71.1331444759,-11.5498381418,6.00517518473,5.29383931295,0.23802407932,0.613790622508,-0.462459355615,3.37454847381,2.13382865031
+12885,FORT LAUDERDALE,FL,26.19694,-80.17083,77.1648044693,-6.24676558806,3.36380273621,4.05463868553,0.268261173184,0.163059226502,-0.885298022134,3.36961677101,2.29296005247
+12882,MIAMI,FL,25.90694,-80.28028,77.3268965517,-6.51990335374,2.92815723186,4.40130654095,0.258889655172,0.568446359514,-0.911567655866,3.25618664503,2.43034445967
+23050,ALBUQUERQUE,NM,35.0419,-106.6155,59.0397805213,-21.9211557022,4.92422739252,5.46258299441,0.0331687242798,-0.877363984901,-1.26335820836,3.83160672644,2.02402849792
+23052,RATON,NM,36.74139,-104.50222,52.4299583911,-21.1953820718,5.35027592652,7.01049126144,0.0522191400832,-0.517386852635,-1.41855546505,3.46493251555,2.58720587441
+03104,PALM SPRINGS,CA,33.62667,-116.15944,73.4578146611,-18.909127504,5.76951499422,4.95912817039,0.00923236514523,-1.72180349241,-1.30510887559,2.85641806028,2.16086628514
+93967,COFFEYVILLE,KS,37.09111,-95.56639,60.7922437673,-21.9611054674,5.78751097153,8.36661161773,0.1391966759,0.882507542644,-1.04856860768,3.84275114801,2.20370308206
+03103,FLAGSTAFF,AZ,35.1441,-111.6663,47.1464088398,-18.5252424394,5.90744106828,4.8916334138,0.114074585635,0.204925010457,-1.71050374385,4.05400703779,1.6072359509
+03102,ONTARIO,CA,34.05611,-117.60028,67.3278008299,-11.2675397683,6.5871062284,4.60384144843,0.0246887966805,-1.40371384259,-0.534676160746,2.14150658162,2.47618489583
+14765,PROVIDENCE,RI,41.7219,-71.4325,53.2469135802,-20.1778628874,6.96662990988,7.13955439281,0.191687242798,0.588177848736,-1.06375816299,3.26464828501,2.46137636254
+14764,PORTLAND,ME,43.6497,-70.3002,48.4381868132,-20.9194568262,7.50935463823,7.42075326859,0.23470467033,0.964751574268,-1.53639028611,3.47964280227,2.08145496299
+14763,PITTSFIELD,MA,42.42722,-73.28917,47.5561643836,-21.505901865,6.7892682984,7.86095904542,0.155732876712,1.46524643372,-1.2386385698,3.63697769779,1.70188726512
+14762,PITTSBURGH,PA,40.35472,-79.92167,53.8628257888,-20.8260649063,5.75629081448,8.201575975,0.16316872428,1.43091373988,-1.14079698573,3.17869852235,2.27565075168
+03893,BLOOMINGTON,IN,39.13333,-86.61667,54.6712328767,-21.7511711655,4.69540000327,8.38790403049,0.162061643836,1.44616021032,-1.25892914516,3.2043841619,1.88359232842
+73805,PANAMA CITY,FL,30.349,-85.788,68.9542936288,-12.9288724244,4.14375466074,6.00126261304,0.216128808864,0.665286793759,-0.88546992997,2.73925891697,2.12939490779
+14768,ROCHESTER,NY,43.1167,-77.6767,50.8186813187,-21.270859766,6.82152107212,8.52308619591,0.180164835165,1.55742394967,-1.35848601871,3.85775025498,2.14877131204
+24243,YAKIMA,WA,46.5683,-120.5428,51.8043165468,-19.9089265561,6.92551737014,6.60040770289,0.0336258992806,-1.3839139804,-0.401850480708,2.69139456408,1.93780419752
+03894,CLARKSVILLE,TN,36.62389,-87.41944,59.4285714286,-19.3734067005,4.4931542949,7.85203750257,0.178701923077,1.68972579404,-1.1867016239,3.25918244938,1.8684740412
+94949,HASTINGS,NE,40.6005,-98.4258,52.6126373626,-24.8519116537,6.46707961156,8.79581096031,0.105267857143,0.301466486234,-1.30308572873,4.1243974724,2.36344878568
+94931,HIBBING,MN,47.38639,-92.83889,39.1616022099,-27.0865246715,8.19881165781,9.11201250217,0.103964088398,0.686315129712,-0.816581748716,3.40561004398,1.82806913514
+23023,MIDLAND,TX,31.9475,-102.2086,66.4375,-19.8905631048,3.62343591661,8.4868793441,0.0466458333333,-0.862868755156,-1.48848722203,3.73276068018,2.92563477279
+23051,CLAYTON,NM,36.4486,-103.1539,56.5799151344,-20.8383183113,6.18470518584,9.05146754618,0.0481824611033,-0.0555663621347,-1.30112997768,3.92634990539,3.18527555269
+94943,CHAMBERLAIN,SD,43.76667,-99.31833,49.70781893,-26.774381289,7.74090093507,9.37152503726,0.0831893004115,-0.0946003514917,-0.927044399726,4.06447615238,2.60516094658
+13971,HARRISON,AR,36.2668,-93.1566,59.7111416781,-19.7294747986,4.96979211102,8.01465088928,0.155880330124,1.06056470938,-1.41099212043,2.97788376219,2.28151460048
+13837,AUGUSTA,GA,33.46694,-82.03861,65.9848275862,-15.2963405352,4.136023736,6.38171504758,0.215337931034,0.364479659573,-0.787862548386,2.27748633366,2.32010173756
+13833,HATTIESBURG,MS,31.28194,-89.25306,67.5796703297,-15.0961466814,3.83371222643,6.68799657619,0.27426510989,0.719857931132,-1.11940530557,2.70503310944,1.62878102232
+93738,WASHINGTON,VA,38.9408,-77.4636,57.0467032967,-20.2856029279,5.22098952124,7.73834816054,0.171057692308,0.940972294388,-1.10071215171,3.40821319165,1.94101256095
+13838,MOBILE,AL,30.62639,-88.06806,68.7949790795,-14.6424339187,3.90083078901,6.08952436728,0.279246861925,0.89357588817,-0.651486997527,3.14525549547,2.10784374195
+13839,DOTHAN,AL,31.3167,-85.45,67.8349514563,-14.0503840736,3.68736954691,6.30818188047,0.214493758669,0.794512269628,-1.13992190202,2.81595962293,2.25522556554
+12833,CROSS CITY,FL,29.63333,-83.10528,70.1518987342,-12.2805264538,3.85652561192,5.88436646519,0.262067510549,0.525102003083,-0.776655072473,2.29979559998,1.90147149627
+12832,APALACHICOLA,FL,29.73333,-85.03333,70.0598052851,-12.2209252649,4.78740948895,5.78001560516,0.25297635605,0.183581250921,-0.788768289299,2.82933632225,2.50308114973
+93814,COVINGTON,KY,39.04306,-84.67167,55.8547945205,-21.5373957379,5.18689318379,7.92757652449,0.190191780822,1.43692790792,-1.18084731464,3.42712321101,2.24950041006
+93815,DAYTON,OH,39.90611,-84.21861,54.1342465753,-22.3065449571,5.52035157211,8.18931656739,0.153965753425,1.77765539294,-1.38232319494,3.95904023087,2.28441972338
+13939,GREENVILLE,MS,33.4825,-90.98528,64.6901798064,-18.1637729266,4.64004451482,7.33464120221,0.190124481328,1.51038447742,-1.23959535912,3.74427979786,1.93323939513
+12836,KEY WEST,FL,24.555,-81.75222,78.5520110957,-5.27957211578,2.37466323252,3.1780224022,0.194188626907,0.429659060907,-0.736797679847,3.41229318207,2.72698445332
+12835,FORT MYERS,FL,26.585,-81.8614,76.1595598349,-7.65331709987,2.98379516843,3.98565097596,0.213342503439,0.533924290068,-0.59250734616,2.56019486777,2.51345637115
+12834,DAYTONA BEACH,FL,29.1828,-81.0483,72.3141289438,-9.771532587,4.21443539056,5.48552558598,0.185884773663,0.409845612265,-0.337953024379,2.97303335527,2.05122283565
+13935,ALEXANDRIA,LA,31.3953,-92.2907,68.0421348315,-15.7109968802,4.10640191747,7.21728693585,0.230667134831,0.35334044841,-0.940354467749,2.14469321848,1.75138324816
+13975,GAGE,OK,36.2967,-99.7689,59.8058252427,-22.8766744088,5.99240676783,9.15399070296,0.0696324549237,-0.723709474848,-1.43890712517,5.31484420921,2.19146506737
+12839,MIAMI,FL,25.7905,-80.3163,77.8916323731,-5.91170010113,3.09891992879,3.71752150568,0.323580246914,0.115798798382,-0.908104038686,3.06332832439,2.41056829629
+12838,MELBOURNE,FL,28.1011,-80.6439,73.9396433471,-8.43945294107,4.13417244236,5.1369881705,0.167777777778,0.37252490672,-0.559742569728,3.0111676494,2.76410463009
+13932,WINFIELD/ARKANSAS CITY,KS,37.16806,-97.03694,59.7472375691,-22.59766701,6.4829308211,8.79434371609,0.12375,0.181325759794,-1.02290922696,4.3726293315,2.19455932521
+94053,TORRINGTON,WY,42.0613,-104.1584,50.866851595,-22.8322959137,7.18855934015,8.9670969126,0.0400485436893,0.0982743656004,-1.33833651554,3.88121846778,2.38854312752
+03966,ST LOUIS,MO,38.65722,-90.65583,56.8510344828,-22.2190326249,5.06844944638,8.92917878297,0.118013793103,1.11126239834,-1.24503645161,3.15740095709,1.79095360315
+03965,STILLWATER,OK,36.1624,-97.0894,61.8275862069,-21.5625410746,5.97439635661,8.81033919446,0.115882758621,0.00154459384478,-1.1596537014,3.85043259302,2.3830730307
+03195,GRAND CANYON,AZ,35.94611,-112.15472,46.5842541436,-19.3285416018,6.0957607331,5.69416305189,0.0436947513812,-0.230776265326,-1.15398047682,3.34359871811,1.67529653205
+03192,SCOTTSDALE,AZ,33.62278,-111.91056,73.8438356164,-19.6879493672,6.05177738136,4.40445183953,0.0302465753425,-1.2383639549,-0.265528496222,1.78929491161,1.78382043184
+03962,HOT SPRINGS,AR,34.29,-93.06,64.0892857143,-19.7103132369,5.24041994968,6.9884656192,0.165700549451,-0.0797704301496,-0.868520484815,2.22819137562,2.11827297873
+94055,BAKER,MT,46.3583,-104.25,45.3944444444,-24.5899157117,8.42825642206,9.3304108768,0.0676041666667,-0.423359891829,-1.19764976937,4.66555520618,2.27688157083
+03960,CAHOKIA/ST.LOUIS,IL,38.57139,-90.15722,57.4724517906,-22.1628357339,4.81190835086,8.58511729688,0.151095041322,1.48284039284,-1.42204402674,3.31739791099,1.92656556268
+25335,SKAGWAY,AK,59.4556,-135.3239,41.6132596685,-16.1490824995,4.12765850985,5.04367993096,0.0935428176796,2.90675003314,-0.566804103984,7.35488118118,1.44016809143
+53819,ATLANTA,GA,33.35528,-84.56694,62.564738292,-16.2877506378,3.70360504001,6.08043929119,0.185929752066,0.819431462436,-0.921403856423,2.6003805077,1.49591372957
+94129,PULLMAN/MOSCOW,WA,46.74389,-117.10861,48.0517241379,-17.3886457082,4.70893854627,6.35239831804,0.0765086206897,1.79817224302,-1.56333890013,4.29098058108,1.62352703697
+13978,GREENWOOD,MS,33.4963,-90.0866,64.1086657497,-17.5015887863,4.24780560786,7.60210891742,0.210041265475,1.23869142924,-1.18613327216,3.27701272533,1.74602103486
+03804,PARKERSBURG,WV,39.2,-81.27,55.2147937411,-19.5647514722,6.12200138888,8.11307279218,0.178335704125,0.84985680076,-0.625971925717,11.9971399817,0.437361232262
+53959,WEST MEMPHIS,AR,35.135,-90.23444,61.7496423462,-18.1033070683,7.0500328787,8.37637853458,0.182811158798,1.04198806523,-1.14175904864,3.59065324459,1.85981994684
+94128,LOGAN,UT,41.78722,-111.85333,47.3627586207,-24.1372135285,8.55141328065,6.85944285701,0.0445448275862,-0.889416593594,-0.588107556446,2.68639054217,1.53093513047
+23293,SAN JOSE,CA,37.3591,-121.924,60.3252496434,-9.50463646735,2.69941518171,4.62064570262,0.0315620542083,-1.79232763812,-0.838784335627,2.73006881154,2.26431668856
+23119,RIVERSIDE,CA,33.9,-117.25,63.7782485876,-12.7590170941,7.28932320938,4.46899320473,0.0211440677966,-0.960846546011,-0.369624214558,1.88178043492,2.72633679064
+03802,CLARKSBURG,WV,39.29556,-80.22889,54.1638888889,-19.7251353432,4.70638000492,8.33776458979,0.1678125,1.3535484912,-1.33275016933,3.05009638269,1.6029092738
+25339,YAKUTAT,AK,59.512,-139.6712,39.8954607978,-12.8533149821,5.57930895141,4.78128741725,0.587331499312,0.561920207708,-0.339657683303,2.99986576911,1.46581524202
+14848,SOUTH BEND,IN,41.7072,-86.3163,51.698630137,-22.7058304553,6.15708813467,8.3582629502,0.17897260274,1.67606049014,-1.27314727315,3.8607097691,2.21163818608
+41415,AGANA,GU,13.48333,144.8,82.7506887052,-1.28606034607,-0.249025327079,1.81169900092,0.412520661157,2.93880512741,-1.9998624884,3.74390295809,2.47333263149
+14845,SAGINAW,MI,43.53306,-84.07972,49.8691460055,-23.0479450975,6.38419037987,8.22372224786,0.154359504132,1.32263191946,-0.982181099686,3.83250613459,2.36817182781
+14847,SAULT STE MARIE,MI,46.4794,-84.3572,43.6972222222,-23.498009968,8.70789100243,7.89496444049,0.214479166667,0.784698139178,-0.623472011622,2.90114153778,2.50705911401
+14840,MUSKEGON,MI,43.17111,-86.23667,50.8255494505,-21.5732418592,6.90685955606,7.47076969528,0.195865384615,1.59897047932,-0.641684866814,3.99997078911,2.24029795368
+14841,PELLSTON,MI,45.5644,-84.7927,44.2205270458,-22.1425554029,7.90450007815,9.3520705642,0.120104022191,1.23247310071,-0.854185493527,3.91311204574,1.77517616779
+14842,PEORIA,IL,40.6675,-89.6839,53.7624309392,-24.1188674657,5.83973509441,8.42106054979,0.149171270718,1.17127613918,-1.40536841195,3.50150373014,2.17380953915
+23275,UKIAH,CA,39.12583,-123.20083,59.6308539945,-13.6617543155,4.97233762687,5.046977292,0.0956611570248,-1.41549135241,-0.688138714592,2.38211185515,1.42487636283
+13721,PATUXENT RIVER,MD,38.3,-76.41667,58.964137931,-19.5455490392,6.17588613767,7.83314707036,0.176420689655,0.921678513483,-0.932498208914,3.52013245886,2.28819759336
+13722,RALEIGH/DURHAM,NC,35.8923,-78.7819,61.4828532236,-17.7322433617,4.69657682542,7.46326032176,0.188765432099,-0.0867324243159,-0.92234004414,2.80347081197,1.93866096293
+13723,GREENSBORO,NC,36.0969,-79.9432,60.0633608815,-18.135293596,4.47977123116,7.06113822328,0.179194214876,0.420255259723,-1.27589074128,3.0495285972,2.20568796965
+23273,SANTA MARIA,CA,34.8994,-120.4486,58.9529085873,-5.43978540602,3.85048081169,4.48162241085,0.02891966759,-1.04861456664,-1.29293320008,2.94371352764,2.04619340356
+24057,RAWLINS,WY,41.8,-107.2,45.0879888268,-23.0817888878,7.46892917781,8.18385456697,0.0252444134078,2.29449582097,-1.60529282272,5.69671703947,2.14945420624
+13728,DANVILLE,VA,36.5728,-79.3361,59.2339832869,-18.681676718,4.32891822126,7.48326405322,0.167820334262,0.860723772338,-0.947756612529,2.67371598119,1.85015786725
+13729,ELKINS,WV,38.8853,-79.8528,51.9541029207,-19.4174012858,4.93087894194,8.28073492597,0.205910987483,1.22946452261,-1.35801227124,2.85676487948,1.37550185688
+14992,REDWOOD FALLS,MN,44.54833,-95.08028,46.907967033,-28.3786274525,8.10320484,9.02339195962,0.0961195054945,1.16659446684,-1.14517956414,4.22921237366,2.26677569655
+14990,CEDAR RAPIDS,IA,41.8833,-91.7166,49.8555708391,-25.6615334081,5.78775247568,8.96584911963,0.126396148556,1.68499889941,-1.79412362439,4.23959717849,2.24743004421
+14991,EAU CLAIRE,WI,44.8665,-91.4879,46.0482093664,-27.1440153378,7.32168253098,8.67966961842,0.147314049587,0.221642332953,-0.631217448455,3.11852906898,2.27198834811
+93225,SACRAMENTO,CA,38.69556,-121.58972,62.2272727273,-14.8776140971,4.59274846812,4.43365547064,0.0529132231405,-1.66743819771,-0.709871236922,4.11287578887,1.75636022843
+93227,NAPA,CA,38.2102,-122.2847,57.4177040111,-9.80285320941,3.44863542685,4.44333878433,0.0545643153527,-2.52297903803,-0.264097708678,3.26856375887,2.15807434595
+24110,MOSES LAKE,WA,47.20778,-119.31917,51.8459422283,-21.4296345899,5.51648475907,5.92473063065,0.0319601100413,-0.814499147225,-1.00465767027,3.35063158868,1.95549163676
+03947,KANSAS CITY,MO,39.2972,-94.7306,56.329218107,-23.1878080177,5.98115867068,8.84829921067,0.126131687243,0.642997759038,-1.09876546976,3.7738998439,2.65704847956
+94239,WENATCHEE,WA,47.3977,-120.2013,52.1726519337,-22.0458961767,6.96263369607,5.40181650143,0.0341229281768,-3.30716352037,-0.605549239986,3.95723471468,1.64151404249
+54704,NORWOOD,MA,42.19083,-71.17361,51.5969738652,-20.5020655321,6.10099650037,8.24216261459,0.154745529574,0.780308882371,-1.19191978062,3.105532401,1.82715139355
+12907,LAREDO,TX,27.53333,-99.46667,76.6795422031,-14.7677050851,3.76326675765,6.95067885756,0.0607510729614,-1.5709080451,-1.02705721005,4.04750808398,2.39095168672
+94236,KLAMATH FALLS,OR,42.14694,-121.72417,46.8298755187,-17.9042737679,6.07851062685,5.94311776335,0.0307053941909,-0.463124824139,-1.43876561073,3.87111918733,1.48291109368
+12904,HARLINGEN,TX,26.22806,-97.65417,75.9434482759,-11.9480915279,2.61808157315,6.66306828344,0.091924137931,0.139691614694,-1.78272268824,4.10331962939,2.66519279968
+53870,GASTONIA,NC,35.19667,-81.15583,61.3632596685,-16.7240042807,5.06065013882,6.58209802807,0.178798342541,0.418854802564,-0.607046556674,2.17302936436,1.65915233335
+22010,DEL RIO,TX,29.3784,-100.927,72.635862069,-17.3768630291,3.85001323082,6.47704528915,0.0607448275862,-1.43328745708,-0.900732028036,3.11307633252,2.75779982959
+14610,MILLINOCKET,ME,45.6477,-68.6925,44.9627071823,-24.6052733775,8.70751985155,8.25402052153,0.15203038674,1.22534216236,-0.900167105991,3.24381951785,1.50737143576
+24025,PIERRE,SD,44.3813,-100.2855,48.051175657,-27.0051729117,7.51962845855,9.46048285255,0.0923443983402,0.182881342278,-0.700757683863,4.84285448827,2.21832294165
+21504,HILO,HI,19.7191,-155.053,74.1696551724,-1.66980702064,2.15921424029,2.89371851794,0.38104137931,0.107238514711,-0.285247073251,1.28634130757,4.7877034294
+24027,ROCK SPRINGS,WY,41.5944,-109.0529,46.0957004161,-23.7036272123,6.88633080047,7.59415543899,0.0139805825243,1.59208244546,-2.12023943879,5.59026624541,2.04496523722
+93037,COLORADO SPRINGS,CO,38.81,-104.6884,51.4993084371,-21.0660862522,6.19275121294,8.74565679353,0.0650829875519,-0.384222573107,-1.32052892744,3.48214106847,2.63259914638
+24021,LANDER,WY,42.8154,-108.7261,47.2605042017,-25.0012417393,6.09679276282,7.96366524536,0.0861134453782,-1.37926276223,-0.801638137219,2.91199361337,2.06299318158
+13750,NORFOLK,VA,36.93746,-76.28926,62.9567642957,-17.2382982653,5.83547487958,7.47360445828,0.150794979079,0.936496342355,-0.477727314579,3.88360281127,2.08432750022
+24023,NORTH PLATTE,NE,41.1213,-100.6694,50.7341597796,-25.1915280868,5.9254228718,8.91590117139,0.0752892561983,-0.451077778205,-1.21178754846,3.79376936415,2.25300541485
+23160,TUCSON,AZ,32.1313,-110.9552,71.5076071923,-17.8615391627,5.79160207717,4.83428021291,0.0342946058091,-0.504716858322,-0.333516415658,2.41193251795,2.88927708533
+94741,TETERBORO,NJ,40.85,-74.06139,56.3324022346,-20.4659293351,7.6724921988,7.2835373869,0.159909217877,0.765362976171,-1.10189393649,3.14451886185,2.16591297084
+94740,SARANAC LAKE,NY,44.38528,-74.20667,41.1978021978,-23.1800277244,7.0951129981,10.0265807034,0.153090659341,0.620539672401,-0.579019247568,2.91203088984,1.80819578405
+24029,SHERIDAN,WY,44.7694,-106.9688,46.9223300971,-23.0641320719,7.33060845527,8.76619130672,0.0568169209431,-0.189168948884,-0.972781765994,4.12440253498,1.57517876463
+24028,SCOTTSBLUFF,NE,41.8705,-103.593,51.6244841816,-24.0552484145,6.24663302168,8.87936243118,0.056492434663,-0.0370945442829,-1.59302697961,3.75626330661,2.44656936545
+94745,WHITE PLAINS,NY,41.06694,-73.7075,53.5345303867,-20.276745544,6.75638577108,7.14123577087,0.161540055249,1.53306867568,-1.25995619425,3.82520140138,1.84260691186
+14927,ST PAUL,MN,44.93194,-93.05556,47.9152777778,-27.6772226848,7.42402664401,8.18441598074,0.102625,0.647366095525,-0.734963851967,3.6722703156,2.17860233019
+14926,ST CLOUD,MN,45.5433,-94.0513,44.4718019257,-28.1986597424,7.86642684321,8.81138749482,0.136258596974,0.752012391504,-0.668250542655,3.70691902196,2.08895953906
+14925,ROCHESTER,MN,43.9041,-92.4916,47.2702331962,-26.3735291735,7.54396551765,8.65453276945,0.157160493827,1.71307593079,-1.55246826791,4.43691989925,2.49032729167
+14923,MOLINE,IL,41.46528,-90.52333,51.728021978,-24.7544718155,6.06030082036,8.56789752836,0.149876373626,1.40167631278,-1.61883460246,3.92191089884,2.03267698518
+93138,PALM SPRINGS,CA,33.82806,-116.50528,75.724137931,-17.1734108408,5.92522245896,4.58125033457,0.0087724137931,-1.41418043575,-0.844842938589,2.28656848027,2.61370426675
+14921,LONE ROCK,WI,43.21194,-90.18139,48.5862068966,-25.9427931527,6.61585672967,8.76443032614,0.115634482759,0.957146079809,-1.48047361666,3.45298920357,1.86800667951
+14920,LA CROSSE,WI,43.8788,-91.2527,49.1291208791,-26.5164423141,7.85737957885,8.57368578933,0.147197802198,0.66963352208,-0.547592260932,3.52640656233,2.21651871833
+26492,PORTAGE GLACIER,AK,60.785,-148.83889,34.900990099,-17.6207591075,4.34354357893,7.1580846698,0.600169731259,0.364094517016,0.0954512679279,4.90486478356,1.63365793773
+93134,LOS ANGELES,CA,34.0236,-118.2911,65.727647868,-6.77135381833,5.0085287274,4.75916869501,0.0242434662999,-0.234860903777,-0.330229340125,0.801170082902,1.69593767222
+26491,ANCHORAGE,AK,61.17806,-149.96639,37.7275242047,-23.5169876626,6.29012014851,5.68868724165,0.0503734439834,0.0145655523089,0.196221665309,2.64836059667,1.79343184025
+13942,MONROE,LA,32.5155,-92.0405,66.7323162275,-17.0238617565,4.19333662299,7.53657811245,0.220755894591,0.760853126706,-1.20320188082,3.09448973139,1.74163094805
+14929,ABERDEEN,SD,45.4433,-98.413,44.041322314,-28.6802102795,7.48791930458,9.54613056683,0.0946074380165,0.437788376289,-1.06135146418,4.3557582752,2.24670138607
+03145,YUMA,AZ,32.65,-114.61667,76.5405777166,-18.0044013231,6.08359070139,4.67430488118,0.0131843191197,-0.961408285165,-0.35110095207,2.99374512471,2.2011964641
+03144,IMPERIAL,CA,32.83417,-115.57861,74.6277777778,-18.2400409525,6.75793635846,4.31628639631,0.00910416666667,-1.14377283821,-1.052939544,3.59776239777,1.76301711047
+94992,GRAND MARAIS,MN,47.74722,-90.34444,40.986013986,-20.3063440699,9.40613524332,7.47778830321,0.136426573427,1.61065489781,-0.902531862135,3.33755224755,1.71806325379
+94993,SISSETON,SD,45.66889,-96.99139,44.3722222222,-27.6223770889,9.50985301529,9.4453003736,0.112291666667,1.56404127379,-1.77592048092,5.04807566127,2.02081955274
+94990,WINNER,SD,43.39056,-99.84222,51.0388349515,-25.3578103828,7.5359979158,10.5556239433,0.0609778085992,0.628460572673,-0.677588588176,4.54336751336,2.53622968965
+94991,LAMONI,IA,40.6306,-93.9008,52.8257261411,-23.8836059928,6.12650831375,10.0971155879,0.14601659751,1.24628280074,-1.08365341669,4.93807890145,1.87511674013
+94994,BOSCOBEL,WI,43.15611,-90.6775,49.0594744122,-25.6776291567,6.99236416004,8.86883731377,0.131597510373,0.546374163438,-0.684813959593,2.57466273523,1.79926613083
+93719,NEW BERN,NC,35.0677,-77.048,64.1404958678,-16.2643213907,4.97186587193,7.67664819223,0.192789256198,0.143854178438,-0.928101595915,2.99531836576,2.02432525768
+03028,SPRINGFIELD,CO,37.28333,-102.61389,55.3093922652,-22.420211732,6.4330186277,9.27030018316,0.0467403314917,-0.534171881854,-1.40865803783,4.35073831354,2.63840403573
+03029,WINDOW ROCK,AZ,35.6575,-109.06139,48.0169731259,-20.3785900893,7.50075891525,5.54425413806,0.0413932107496,-0.813966094013,-1.51022382551,3.27348062679,1.58951702352
+04724,NIAGARA FALLS,NY,43.10833,-78.93806,49.8292011019,-21.8249481674,6.86001428072,8.27805287094,0.153780991736,1.8015856845,-1.11994285129,4.53660031066,2.03204920205
+04725,BINGHAMTON,NY,42.2068,-75.98,48.3779310345,-21.5227802197,6.49363074175,7.9650014529,0.197213793103,1.24566048456,-1.07823849882,2.92153284739,2.62446074591
+03024,BORGER,TX,35.695,-101.395,62.2965517241,-21.7890557451,5.92098441562,9.00380612263,0.0724137931034,-0.624774156035,-0.85539253153,3.6360734437,2.77047626468
+54791,ROCHESTER,NH,43.27806,-70.92222,49.4341192788,-21.6841327083,5.86701430282,7.86837656867,0.14527739251,1.00581621901,-1.04575225616,3.01921329163,1.59454972182
+27502,BARROW,AK,71.2834,-156.7815,14.126227209,-25.7334043118,18.645973242,6.71031250605,0.0556872370266,0.901669301751,0.23357616935,5.32298485254,2.24167429507
+94908,DUBUQUE,IA,42.39778,-90.70361,48.1813186813,-25.3437819505,6.55680595992,8.97199501781,0.149423076923,1.64362539662,-1.60568050651,4.25971831897,2.27043852368
+53910,HOUSTON,TX,30.0675,-95.55611,70.0892857143,-15.011594995,3.94101128668,6.96074459134,0.167657967033,0.517771397601,-1.1721495416,2.592740823,2.10414186297
+94860,GRAND RAPIDS,MI,42.8825,-85.52389,51.1289437586,-22.754947006,6.71169565483,7.90330392256,0.193868312757,1.24338313929,-1.00802280839,3.7096136864,2.35361471836
+13878,BRUNSWICK,GA,31.1522,-81.3908,69.5179558011,-13.1215375904,4.31445891826,6.08618503282,0.191167127072,-0.632863751937,-0.548431760723,2.8605572041,2.64683007525
+12876,WINTER HAVEN,FL,28.06222,-81.75417,74.3489655172,-9.35988338854,3.30994014658,4.89883364594,0.18064137931,0.112944337827,-0.402701170022,2.72255634926,2.63889918241
+13973,JUNCTION,TX,30.51083,-99.76639,68.2223756906,-17.9286263914,4.15210547459,7.84091402315,0.0818162983425,-0.76416458661,-1.39520118576,2.92310287947,2.20197593973
+13972,TYLER,TX,32.35417,-95.4025,67.8589211618,-17.5108462817,5.17653731436,7.32155287814,0.147738589212,0.393057927476,-1.35249182786,3.27688155785,2.35523993999
+12873,ST PETERSBURG/CLEARWATER,FL,27.91056,-82.6875,74.7862068966,-9.0921475899,3.66463785421,4.49110923433,0.233772413793,0.445161902756,-0.81715161563,3.18471027994,2.42027104239
+12871,SARASOTA/BRADENTON,FL,27.40139,-82.55861,74.5841313269,-8.87862555492,3.98589424223,4.26211976323,0.202038303694,0.0766577627918,-0.882192494066,2.90290343735,2.66787945599
+13976,LAFAYETTE,LA,30.205,-91.9875,69.8553719008,-14.2007278088,4.11883420828,6.65767015841,0.254566115702,1.23661219439,-1.20591271745,3.33033671055,1.64470170568
+13870,ALMA,GA,31.5358,-82.5067,68.0865384615,-13.7382475983,3.91845874685,6.30596512724,0.184326923077,0.347114468747,-1.05226185726,2.37706687706,1.87927835467
+13871,ANNISTON,AL,33.5872,-85.8556,63.5759668508,-16.3850633829,3.78658777826,6.45475274355,0.249696132597,0.753927813193,-0.903829458748,2.31336925268,1.87595603275
+13873,ATHENS,GA,33.948,-83.3275,63.0864197531,-16.4492924925,3.91754090149,6.20794783001,0.200102880658,0.990024805112,-1.01514493077,2.74258120941,1.6744511442
+13874,ATLANTA,GA,33.6301,-84.4418,64.2197802198,-16.3630859453,3.92523487652,6.08353458536,0.211050824176,0.943005664743,-1.04198603861,3.27233595259,2.30486961045
+13876,BIRMINGHAM,AL,33.56556,-86.745,64.3681318681,-16.7335729966,3.92740182566,6.80885279879,0.24084478022,0.76918338143,-1.26041575839,2.88850808774,1.85549606295
+13877,BRISTOL/JHNSN CTY/KNGSPRT,TN,36.4731,-82.4044,57.3131868132,-18.3487590718,4.53918509889,6.64579999704,0.216366758242,0.75895691404,-1.3065974043,2.93073119119,1.2644052376
+94017,WOLF POINT,MT,48.09444,-105.57444,43.0373443983,-27.8016320558,7.32794686069,9.18141542954,0.0495850622407,-0.614646234966,-0.90449121312,3.81361093729,2.0366012965
+94014,WILLISTON,ND,48.1738,-103.6366,42.4275862069,-27.3954931141,8.23526531593,9.46028558723,0.084124137931,-0.350526178482,-0.854511186982,4.02826405727,2.00503926043
+94012,HAVRE,MT,48.5428,-109.7633,45.1234396671,-24.2564539992,7.19834540117,9.43510807289,0.0843828016644,0.270147857127,-0.9937621187,4.30601904454,2.25137233475
+93915,ALEXANDRIA,LA,31.33472,-92.55861,67.8060522696,-15.9769095791,4.2528006397,6.84365978807,0.223782668501,1.0137866413,-1.2383818206,2.84146504919,1.89219861516
+93919,MCCOMB,MS,31.1827,-90.4708,67.0137362637,-14.9183401572,3.85706044565,6.88436906916,0.261407967033,1.10115054925,-1.19945263095,2.89858961772,1.63441556922
+23081,GALLUP,NM,35.5144,-108.794,50.2451523546,-20.5369330004,5.69134016697,6.07290614835,0.0331163434903,-1.11367955746,-1.57901452761,3.93590753958,1.67370156941
+54768,NORTH ADAMS,MA,42.7,-73.16667,48.679558011,-21.2313087817,6.40295542185,8.22072365083,0.153625690608,2.43971729474,-1.40871085604,3.62011062066,1.40547733442
+53917,NEW ORLEANS,LA,30.0494,-90.0288,72.5145228216,-13.6711360617,3.87520199335,5.85096788196,0.278257261411,1.72045497949,-0.941037659425,4.07856591593,2.48989152838
+53916,CHILLICOTHE,MO,39.82333,-93.57917,55.3898071625,-23.6737636747,6.09509429487,8.74592889834,0.141404958678,0.789827945635,-1.17329668362,2.69537400702,2.10415607947
+53915,NEW IBERIA,LA,30.0375,-91.8839,70.932320442,-13.9507854323,4.02391921975,6.83416751826,0.249281767956,1.7622014339,-1.51584199751,3.75340075289,1.86655773997
+53914,MC KINNEY,TX,33.19028,-96.59139,66.0781893004,-19.6062959859,5.34011543766,7.53308447535,0.125390946502,0.27382208395,-1.25655531138,4.0745327505,2.03472041755
+53913,GUTHRIE,OK,35.8517,-97.4142,63.1560773481,-21.4559463592,5.94032059972,8.78549393318,0.132223756906,-0.122450243255,-1.0529239536,3.9332495938,2.12861540844
+53912,CORSICANA,TX,32.03111,-96.39889,68.2168508287,-17.9307717339,4.98993294096,8.04227109245,0.151616022099,0.526083389007,-1.19867686244,3.40753073926,2.52086269629
+53911,TERRELL,TX,32.71,-96.26722,66.9298486933,-18.7732829632,5.4587596096,8.11151955093,0.135639614856,0.29907659084,-1.28067623854,3.38114524603,2.25243752568
+03847,CROSSVILLE,TN,35.9509,-85.0813,57.0801104972,-17.8412581477,4.64017790627,7.22716724791,0.219737569061,1.49709926782,-1.22935384993,2.70472069276,1.67274550913
+03849,LONDON,KY,37.08722,-84.07694,57.1141678129,-18.9818917473,4.31089437692,7.27298325004,0.211114167813,1.14855136509,-1.08220380405,2.71253069796,1.609474746
+92809,HOLLYWOOD,FL,25.99889,-80.24111,77.1177285319,-6.22541029778,3.29697703409,3.87085025906,0.246627423823,0.599195378235,-0.848893987467,3.29106813377,2.36277052468
+53919,MONTICELLO,AR,33.6361,-91.7556,65.1395027624,-18.1478420982,4.79258907634,7.48334086479,0.199640883978,0.560903824183,-0.938230205185,2.45280797843,1.99849875929
+53918,MOUNTAIN HOME,AR,36.36889,-92.47028,60.0538674033,-20.550770827,4.21110041398,7.66049203092,0.154185082873,0.753094341856,-1.19590253222,2.4037047812,1.9457188496
+23158,BLYTHE,CA,33.6186,-114.7142,74.8644536653,-19.4958838638,5.85337864703,5.21190325983,0.0150414937759,-1.40612303295,-1.11752832386,3.702347666,1.94396485623
+23159,BRYCE CANYON,UT,37.70639,-112.14556,41.5988857939,-21.7166445684,6.12116867175,6.2404030959,0.0539206128134,-0.298622484199,-1.16941261209,2.88543104644,2.79494599789
+11624,CHRISTIANSTED,VI,17.6997,-64.8125,80.487534626,-2.45215326888,2.71307912717,5.56627704384,0.151641274238,-0.873958147883,-0.95600534147,2.92529838586,3.25861116198
+23152,BURBANK,CA,34.20056,-118.3575,67.0151515152,-9.53927796027,6.07847147269,4.57503305642,0.0232644628099,-1.25327230469,-0.678759894415,1.96338529578,2.42125514514
+23153,TONOPAH,NV,38.0511,-117.0902,54.0247933884,-21.0501392769,5.97727361647,5.32600858239,0.0217561983471,-0.439424374309,-1.66545734896,3.74837468288,2.57356722073
+23154,ELY,NV,39.2952,-114.8466,46.7333333333,-21.4254163556,5.6193351086,7.3762682205,0.0698958333333,-0.338041506636,-0.533982086871,3.44365687401,2.68145988861
+23155,BAKERSFIELD,CA,35.4344,-119.0542,67.1556473829,-16.9698445592,5.60782528219,4.93753971672,0.0161983471074,-1.43931181845,-0.592825144282,2.07880272341,2.47632740004
+23157,BISHOP,CA,37.3711,-118.358,57.544077135,-19.4944245705,4.44290003161,5.21374977176,0.011632231405,-0.91018687826,-1.37853984802,3.5869708475,2.2480734992
+24090,RAPID CITY,SD,44.0433,-103.0536,48.53259362,-23.9503705185,7.1650967896,9.53053829437,0.09326629681,-0.258179639685,-1.16018963688,5.29933402703,1.9120242038
+24091,IMPERIAL,NE,40.51,-101.62,52.8407202216,-24.4205726585,6.00243730727,8.89649889089,0.0495498614958,0.0522663835376,-1.3824967767,4.03317488378,2.48245827522
+26523,KENAI,AK,60.5797,-151.2391,33.4930555556,-21.438831479,7.39317962143,7.21434302662,0.0895625,-0.015870418729,-0.230101649816,4.37106168418,1.69625710643
+93197,SANTA MONICA,CA,34.01583,-118.45139,63.3305898491,-5.21056645365,4.57438561499,3.82786959293,0.0240946502058,-0.536230475925,-0.508737113814,1.19262070871,3.43884232257
+13809,LAWRENCEVILLE,IL,38.76417,-87.60556,56.6349862259,-22.6579852605,4.67622098078,8.14625596982,0.172045454545,1.88061747091,-1.42802033824,3.95010530371,2.02996994379
+53842,INDIANAPOLIS,IN,39.825,-86.29583,53.8914835165,-22.7854990726,5.1575295197,8.20370833619,0.159230769231,1.44416089429,-1.11927707561,3.27480181144,1.94018116425
+04826,WISCONSIN RAPIDS,WI,44.35917,-89.83694,46.4125,-25.6732073434,8.26908021071,8.80616637842,0.139895833333,0.423436909513,-0.799930660082,2.94155014983,2.36194435719
+23233,SALINAS,CA,36.6636,-121.6081,58.6151724138,-5.30207223128,3.50484486408,4.54933619079,0.0351931034483,-1.11114890828,-0.622232348596,2.42211536363,3.06975896214
+23232,SACRAMENTO,CA,38.5069,-121.495,62.1101928375,-14.1821708261,4.47262034701,4.46441339039,0.0557024793388,-1.67705227741,-0.777780576687,3.36691390902,1.5715644822
+23234,SAN FRANCISCO,CA,37.6197,-122.3647,58.0691562932,-5.74171434005,3.38661373143,3.77444669238,0.0515352697095,-3.77955976021,-1.01146205556,4.83471166544,2.14307178591
+23237,STOCKTON,CA,37.8891,-121.2258,62.1786703601,-14.7721968861,4.51954182346,4.29797574059,0.0378324099723,-2.13352702538,-1.03181879122,3.57173393795,1.94277017614
+93167,KINGMAN,AZ,35.2577,-113.933,62.8383977901,-20.6308656786,5.51254529768,5.25334858045,0.03,-1.63856437104,-1.51267906134,3.77733622787,2.36025311898
+93778,YORK,PA,39.91806,-76.87417,53.6310013717,-20.6440267965,6.15507090616,7.67520400781,0.173065843621,1.00890417879,-1.24857396475,2.93538180218,1.54535740066
+14898,GREEN BAY,WI,44.4794,-88.1366,47.0785123967,-24.9432520835,7.29474716466,7.98524873652,0.164297520661,1.13844059279,-1.34339884648,3.64170933196,2.31640533666
+14897,WAUSAU,WI,44.9288,-89.6277,45.4820936639,-26.4430793174,6.9974520702,8.23359103934,0.167830578512,0.516225165509,-0.525421571566,3.11875031781,2.33842868567
+14895,AKRON,OH,40.91667,-81.43333,52.4640883978,-21.7863528434,5.53864761856,8.29734492685,0.183066298343,1.58729968713,-1.2921201028,3.56440289627,2.38658990113
+14894,WHEELING,WV,40.17639,-80.64722,53.0997229917,-20.4473273695,5.3356105107,8.51355353691,0.138490304709,2.00136766935,-1.44840056349,3.50165432535,2.09089932013
+14891,MANSFIELD,OH,40.82028,-82.51778,51.7213793103,-21.7265371666,5.88799359969,8.41946621025,0.187075862069,1.90265160398,-1.26592527228,3.84241267349,2.21523891166
+53863,ATLANTA,GA,33.875,-84.30222,62.5975274725,-16.9075509713,4.09268719454,6.09165480397,0.203777472527,0.914646968674,-1.26023106613,3.09480137587,1.6046050983
+53862,PERRY-FOLEY,FL,30.07194,-83.57361,69.7974683544,-12.5553477283,4.22660945013,5.85850420445,0.251202531646,0.417326853089,-0.992153066939,2.48570156279,2.02989383069
+53860,JACKSONVILLE,FL,30.3361,-81.5147,71.2167352538,-11.8716287751,4.43298155179,6.11478014324,0.244074074074,0.228722788194,-0.843258353491,2.91216660918,2.19409656707
+53867,COLUMBIA,SC,33.97056,-80.99583,66.0578512397,-15.9975372914,4.90936943963,6.40765510895,0.195929752066,0.27641824641,-0.844306805406,2.25769070413,1.36173664518
+53866,SHELBYVILLE,IN,39.57806,-85.80333,55.3375174338,-21.8675947918,5.18450680693,9.13517311526,0.129539748954,1.92220604721,-1.66213711079,3.83630261554,2.12696806892
+53865,SLIDELL,LA,30.34333,-89.82222,68.5947441217,-13.8987755655,4.29012835944,6.76890969663,0.280145228216,0.877556768953,-1.02837210441,2.69953347267,1.68114699536
+53864,ALABASTER,AL,33.17833,-86.78167,64.9006896552,-15.9268483622,4.32832243034,6.64833682068,0.248089655172,0.919598690056,-1.00748955445,2.33145123391,1.52067487356
+03935,CAPE GIRARDEAU,MO,37.2252,-89.5705,58.4393939394,-20.9258026395,4.91671755702,7.7375775935,0.139421487603,1.37693263558,-1.48238499003,3.7524300095,1.81311343583
+03936,MANHATTAN,KS,39.1346,-96.6788,56.2503457815,-24.1034997155,5.21039562676,9.04120418385,0.104460580913,-0.258668457375,-1.27392362734,3.66137329457,1.88272553527
+53868,OAK RIDGE,TN,36.0236,-84.2375,60.4683195592,-18.6231975791,4.159065542,6.3088145874,0.239173553719,0.467228820455,-0.620034449882,1.57157654874,1.48944151129
+03930,JACKSONVILLE,AR,34.91667,-92.15,62.808297568,-20.0431727844,5.25211652433,7.28250162142,0.148669527897,0.219630675976,-0.994207040881,2.6511077673,2.0141120274
+03932,CLINTON,OK,35.3568,-99.2042,61.9432132964,-22.599350291,6.60511657923,8.43562892802,0.0636772853186,0.279263910959,-0.825792816582,4.64522038993,2.81977502783
+14792,TRENTON,NJ,40.27694,-74.81583,55.7441540578,-20.2032395363,5.58171077235,7.38643688117,0.162792297111,0.94186505276,-0.996722677823,2.8798264531,2.24647688123
+26415,DELTA JUNCTION/FT GREELY,AK,63.9944,-145.7214,28.123783032,-34.3409272455,6.86799785153,8.86982652898,0.0337969401947,1.63092660579,0.388867499722,7.0920614071,1.31173719307
+14794,WESTERLY,RI,41.34972,-71.79889,52.2949245542,-18.9093972147,7.28817586959,6.95653612762,0.11462962963,0.690340585451,-0.970033959245,2.72949323443,2.32324790463
+14972,SPENCER,IA,43.16444,-95.20167,48.0732044199,-26.9117397143,7.38003505078,9.49630393509,0.106761049724,1.16457699476,-1.61300761615,4.6371535154,2.33541893678
+94705,BARRE/MONTPELIER,VT,44.2035,-72.5623,44.7729805014,-22.8553880818,7.60008144839,8.56611254932,0.152632311978,0.663266792998,-0.992656237084,3.05477421274,1.68305889223
+24242,PORTLAND,OR,45.55111,-122.40889,54.3475274725,-13.5526380889,5.58970847162,5.00021225915,0.159869505495,2.88125944482,-0.543408672757,5.12242613288,1.06630877057
+94702,BRIDGEPORT,CT,41.15833,-73.12889,54.6611796982,-20.1849187793,7.4380934901,6.80354396396,0.173683127572,0.874778572555,-0.640508446685,3.38632400983,2.40643576036
+22521,HONOLULU,HI,21.32389,-157.92944,77.1383125864,-3.17144046866,2.50673590655,3.60703951628,0.0506846473029,-1.69530162295,-0.373200217525,3.79917126248,2.63943418827
+13896,MUSCLE SHOALS,AL,34.7441,-87.5997,63.1801925722,-17.9110675293,4.15684569117,6.96490603148,0.202324621733,1.2805885262,-1.34553062334,3.0742837009,1.66648452641
+13897,NASHVILLE,TN,36.11889,-86.68917,61.2297111417,-19.257326964,4.39466733035,7.54785609036,0.204986244842,1.16484315543,-1.02880490677,3.07457165895,2.00839866397
+24144,HELENA,MT,46.6056,-111.9636,47.0567081604,-21.9942778402,6.43480889907,7.81050021021,0.0521991701245,-0.672313303735,-1.18553927393,3.48129493426,1.84574646786
+13895,MONTGOMERY,AL,32.2997,-86.4075,67.1291208791,-15.5927839565,4.15641400851,6.44381907959,0.204581043956,0.848334081408,-0.963241287756,2.79713287953,1.87623439755
+13893,MEMPHIS,TN,35.0564,-89.9865,64.4380165289,-19.2768504972,4.79150944896,7.35162911564,0.188533057851,0.655464914123,-0.895473447614,3.26796031736,2.32649476237
+13891,KNOXVILLE,TN,35.8181,-83.9858,60.4869684499,-18.3073083229,4.42753053307,6.57364810057,0.253991769547,0.680732864539,-1.22432087325,3.12330324401,1.70381673998
+24061,RIVERTON,WY,43.06417,-108.45889,47.2817679558,-25.7946141155,6.27907762191,7.73556535057,0.0428867403315,-0.978153712891,-1.16255416138,3.80071243998,2.16163311118
+93073,ASPEN,CO,39.23,-106.87056,42.3333333333,-22.223774671,6.58161811694,6.70397574137,0.060987654321,-0.940527926129,-0.363953044465,1.75220963797,3.27370302473
+93075,MOAB,UT,38.75,-109.76278,54.150997151,-28.3482373807,5.64601862791,6.32740839894,0.0219230769231,-2.08382905476,-1.2223084778,3.67387580554,1.59596856936
+13899,PENSACOLA,FL,30.47806,-87.18694,70.0864197531,-13.2648279577,3.99797504356,6.0556400862,0.263600823045,-0.0481832939692,-1.43902266069,12.1259735639,0.634593312268
+93773,WAKEFIELD,VA,36.98389,-77.00722,60.0,-18.1332567014,6.06117749116,7.99916676914,0.200283149171,0.435689915646,-0.608751782345,2.11855817093,1.54208130562
+23277,WATSONVILLE,CA,36.93583,-121.78861,57.4727272727,-5.96053126439,2.28947481273,4.74000831864,0.0553006993007,-0.751346586672,-0.425954759364,1.28230787345,2.92272413312
+54743,CALDWELL,NJ,40.87639,-74.28306,54.4596100279,-21.2750303278,5.69475899919,7.46383116238,0.148015320334,0.849857137525,-1.31550834325,2.75782255227,1.53384907306
+14820,CLEVELAND,OH,41.405,-81.85278,53.0082987552,-21.3998810916,6.60889336189,8.40800026703,0.199004149378,1.50408215068,-1.08098432548,3.86875367061,2.39912003096
+94266,PORT ANGELES,WA,48.12028,-123.49833,49.2122052705,-10.353211611,3.94919785388,3.81625458654,0.0707558945908,-0.838511621152,-0.408246623827,2.67997403815,2.02783134843
+12957,PORT ISABEL,TX,26.16583,-97.34583,76.1167582418,-10.6975490801,2.92504285608,6.22581332347,0.0691071428571,-0.437678292741,-1.7875456804,3.82042465542,2.98496821228
+94261,PORTLAND,OR,45.54056,-122.94861,52.1811894882,-13.5815288668,4.99052680835,5.10917850404,0.139170124481,-0.310170676253,-0.538827153092,2.85137073319,1.53855777708
+14750,GLENS FALLS,NY,43.35,-73.6167,47.7032967033,-22.8463501709,6.80078250947,7.8856764263,0.143489010989,0.272709783858,-0.868698818967,2.66896225107,1.7690128699
+23213,SANTA ROSA,CA,38.5038,-122.8102,58.391966759,-9.86718911909,3.77588606926,4.70755361375,0.103317174515,-1.1769946858,-0.671710807908,2.45616122361,1.81645072888
+12959,MC ALLEN,TX,26.18389,-98.25389,77.2027586207,-12.4613650584,2.89233549878,6.42713444651,0.0708413793103,-1.23705920017,-1.45395244707,4.00487349724,2.56707923316
+25367,KLAWOCK,AK,55.58,-133.075,45.3614627286,-10.2911528398,5.47997836131,4.02292546288,0.3355907173,1.00052123109,-0.199520951473,2.3804966932,1.60386814393
+94790,WATERTOWN,NY,43.9922,-76.0217,48.102351314,-22.3814916787,7.10403430013,9.83282949129,0.142531120332,1.25300088509,-0.698360044261,3.63180511041,1.98507492465
+94823,PITTSBURGH,PA,40.4846,-80.2144,53.2696011004,-21.1009617548,5.35403125654,8.38698068835,0.183425034388,1.17295895537,-1.37248435938,3.33560669885,2.00879504428
+94946,BROKEN BOW,NE,41.43333,-99.63333,49.9930747922,-24.332919395,6.48265553984,9.3671076872,0.0670013850416,0.366779142415,-1.5429507248,4.67211306083,2.06716599433
+93009,LEADVILLE,CO,39.22917,-106.31694,35.2948539638,-19.6347523391,7.61364198312,6.73711090926,0.060083449235,0.891700582896,-0.809271031025,2.54825000426,2.78497050948
+54740,SPRINGFIELD,VT,43.34361,-72.51778,47.9107142857,-22.8162608485,7.03514101192,7.603572333,0.147960164835,0.428341791985,-0.839007137707,2.45890238176,1.38557980983
+93005,DURANGO,CO,37.14306,-107.76028,47.2880886427,-22.6265645844,6.96194598802,5.29573538064,0.0491135734072,-1.02131082441,-0.843810865003,2.52806182676,2.23222914751
+93953,MUSKOGEE,OK,35.65667,-95.36139,61.8425414365,-20.7813390217,5.30014216889,7.5382140049,0.155117403315,1.01860782827,-1.07109794016,3.37409773118,2.45033790267
+94197,OMAK,WA,48.464444,-119.516944,49.4701803051,-22.9145047148,6.1112252394,5.75297426054,0.0577531206657,-1.51268739543,0.0423054570206,3.16491723536,1.88864101836
+23048,TUCUMCARI,NM,35.18222,-103.60306,61.687150838,-21.785257027,5.30765157919,8.61012832345,0.0332053072626,-0.262843063141,-1.45973990563,4.37894062723,2.45914175845
+23049,SANTA FE,NM,35.61694,-106.08889,52.9930747922,-21.7810720274,5.13464981079,5.62495077266,0.0389750692521,-0.154066619981,-0.959497270081,2.64035587301,3.3436376672
+23047,AMARILLO,TX,35.2295,-101.7042,60.1829436039,-20.9703431026,5.36594914388,8.90058012178,0.0614649243466,-0.292280612205,-1.31982468496,4.28088761387,3.04089836694
+23044,EL PASO,TX,31.81111,-106.37583,66.6313617607,-19.9378314424,3.92972721607,5.92235772261,0.032764786795,-0.558459346502,-1.56104312729,3.84259727653,2.14088202934
+23042,LUBBOCK,TX,33.6656,-101.8231,62.6533149171,-20.5318618178,4.4280150803,8.70443563012,0.0507596685083,-0.092146549183,-1.88212829652,3.99258780243,2.93081077137
+40308,YAP ISLAND,FM,9.48333,138.08333,83.5333333333,0.253838249605,-0.105207381487,2.38825778917,1.2195,-1.19473344902,0.473413680538,2.67678081948,3.13311669212
+23040,WINK,TX,31.7801,-103.2018,66.5048543689,-20.0314102091,4.49480064049,7.90171265981,0.0319140083218,-1.1489794338,-1.1588247724,3.27748555824,2.79251487819
+24227,OLYMPIA,WA,46.9733,-122.9033,50.7531380753,-11.8421469053,5.78452822918,4.91859234515,0.213661087866,0.457708766271,-0.873372437077,3.02972990846,1.69201875663
+03887,DECATUR,IL,39.83444,-88.86556,54.467032967,-22.6637520963,5.73839744893,9.07704897451,0.123214285714,1.94550315217,-1.58446440839,4.0508363307,2.26649031685
+23230,OAKLAND,CA,37.72139,-122.22083,57.9696132597,-6.76233638145,2.77742545904,3.83913050528,0.0561464088398,-2.29646634726,-0.636489820066,3.50435647888,2.2330531759
+25501,KODIAK,AK,57.75111,-152.48556,40.8781163435,-12.597196346,6.12789841411,5.53574767827,0.283462603878,2.25134109934,-0.430370230883,4.96321454414,1.93470471309
+25503,KING SALMON,AK,58.6829,-156.6563,33.9818688982,-20.5711648496,8.51040222248,9.14393695223,0.132259414226,0.789593757184,0.219732931303,4.65277908179,2.00342165796
+03888,ATLANTA,GA,33.77917,-84.52139,62.9010989011,-16.6394069539,3.9886906099,6.11929483646,0.206909340659,0.453425040154,-1.05549242771,2.60781585806,1.67043286635
+03889,JACKSON,KY,37.59139,-83.31444,57.4450549451,-18.6951788964,4.2813293703,7.8240684605,0.231325549451,1.65134248229,-0.912619216285,2.11731968276,1.27305623941
+25507,HOMER,AK,59.642,-151.4908,38.1329639889,-15.3170035242,6.83322834882,5.46658967094,0.103234072022,0.256958294692,-0.482659799937,3.05245405721,1.84420888091
+25506,ILIAMNA,AK,59.7494,-154.9089,35.1420612813,-20.5269813475,6.54703708614,7.91780240891,0.111831476323,1.6824930052,0.65674203354,4.64793315793,2.01958757991
+94299,ALTURAS,CA,41.49139,-120.56444,47.125,-18.4950152101,6.18867010775,6.25417082829,0.034375,-0.9483970375,-0.930880040397,3.31123694473,1.50032049943
+14777,WILKES-BARRE/SCRANTON,PA,41.3336,-75.7269,52.060857538,-21.3592954225,6.36767120482,7.86265262237,0.142053941909,1.1231074882,-1.2380205207,3.02561904746,1.96359116762
+14775,WESTFIELD/SPRINGFIELD,MA,42.15778,-72.71611,51.5130674003,-22.2318935441,5.96460195318,7.69495142157,0.17356258597,0.956352698998,-1.2938910365,3.37353271627,1.83987472514
+14770,SELINSGROVE,PA,40.82056,-76.86417,52.9156293223,-21.6637977196,5.7333835513,7.10412088771,0.160165975104,0.905610960834,-1.33369933635,2.71484136019,1.40419678421
+14771,SYRACUSE,NY,43.1111,-76.1038,51.0563186813,-22.1074902488,7.55698163666,8.25559266995,0.196236263736,1.53917033003,-1.04854449551,3.84521980171,2.01852591644
+24257,REDDING,CA,40.5175,-122.2986,63.3282548476,-17.2514355288,5.85061375709,5.49436936993,0.103358725762,-0.56205417627,-1.08135597924,4.13148523197,1.29151437718
+24255,WHIDBEY ISLAND,WA,48.35,-122.66667,49.3221757322,-8.30717267045,4.2711446792,4.22270818436,0.0862761506276,2.09467573041,-1.5892107081,5.12991051219,1.56282547087
+14778,WILLIAMSPORT,PA,41.2433,-76.9217,52.6246575342,-21.822871683,6.0013026868,7.01239973207,0.153924657534,0.983749912626,-1.23124987924,3.1929733471,1.68095993625
+94895,MUNCIE,IN,40.23417,-85.39361,53.5006915629,-22.3397319117,4.72147550961,8.76478339463,0.148381742739,2.01228342648,-1.57108139984,3.84044257298,2.0669946557
+94893,IRON MOUNTAIN/KINGSFORD,MI,45.81833,-88.11444,43.4148351648,-25.0098945081,7.65800425851,8.65039488923,0.0563736263736,0.791583000006,-0.792993015084,3.2641665458,2.03878845076
+94892,CHICAGO/WEST CHICAGO,IL,41.91444,-88.24639,50.2780082988,-23.9729651121,6.10913272425,8.60482998015,0.107738589212,1.46060343111,-1.49727774158,3.81589910675,2.25717175815
+94958,ORD,NE,41.62333,-98.94833,50.5607734807,-24.9590372379,6.7565228029,9.20978792577,0.0714571823204,0.270459777497,-1.30284046734,4.44764324131,2.01192902756
+94957,FALLS CITY,NE,40.08028,-95.59194,54.6916666667,-23.6586941144,5.03454842445,8.88530379572,0.129854166667,0.792641062628,-1.69501770687,3.72277114526,2.24250511449
+24220,ELLENSBURG,WA,47.03389,-120.53028,51.4416666667,-20.1017833959,6.53405452372,5.87688199363,0.0390416666667,-3.86477261828,-1.27038140987,6.29116056187,1.3491813765
+94899,COPPER HARBOR,MI,47.46667,-87.88333,43.4893009986,-20.7957431716,8.67893812429,7.24169893353,0.12532810271,2.85172118485,-0.342160113517,5.26061570798,1.79909295552
+94898,HARBOR BEACH,MI,44.02194,-82.79306,48.4909090909,-20.3956869705,8.57171653702,9.61274435832,0.116874125874,1.62349281048,-0.884259242092,3.57100643623,1.91746300365
+13841,WILMINGTON,OH,39.42028,-83.82167,53.8299039781,-21.4562280357,4.96394736096,8.11808247786,0.157304526749,1.98924645079,-1.41388946957,3.913905081,2.0265405212
+25331,PALMER,AK,61.5961,-149.0916,35.8587257618,-23.1352304958,5.65832685838,6.73238180355,0.0669182825485,0.504893996717,-0.379015533062,5.75511938717,1.11455627601
+40710,MAJURO,MH,7.06497,171.27203,82.7333333333,0.108309059384,0.361472393262,2.13959890448,0.485,-0.50045991648,0.448565209259,1.72271104174,3.22747104145
+93822,SPRINGFIELD,IL,39.8447,-89.6839,55.0220689655,-22.8976055052,5.46630175992,8.7230304584,0.149606896552,1.96937887162,-1.69993540012,4.04702018005,2.12594050812
+93821,LOUISVILLE,KY,38.1811,-85.7391,59.4869684499,-21.0995936177,4.95417746561,7.8893515074,0.206563786008,1.05551175193,-1.05251917985,3.32582912861,2.1523764262
+93820,LEXINGTON,KY,38.0408,-84.6058,56.8741355463,-20.3388529822,5.19628585677,8.07720713053,0.212178423237,1.63651945253,-1.0298006303,3.35686210511,2.24588982982
+93817,EVANSVILLE,IN,38.0441,-87.5205,58.1862068966,-21.7827695622,4.9197197597,8.03279723237,0.176648275862,1.04715193739,-1.03986402699,3.16141000166,1.94020804016
+93739,WALLOPS ISLAND,VA,37.9372,-75.4708,59.6873278237,-18.4176739729,6.74508016585,7.49825584159,0.18708677686,-0.0491442181004,-0.915826423384,3.3419827108,2.68361503258
+93824,ZANESVILLE,OH,39.94444,-81.89222,53.1980609418,-21.0904774944,4.92510252309,8.20731391284,0.154736842105,1.46919028165,-1.29024007036,3.12580203564,1.70704110988
+93736,CHARLOTTESVILLE,VA,38.13861,-78.45306,58.1109570042,-19.4192415628,4.34339891527,7.77656841261,0.168890429958,0.714756798044,-0.8157954643,2.41714118683,1.85011259616
+13920,TOPEKA,KS,38.95028,-95.66389,56.7367688022,-23.3694857125,5.78640180314,9.10671776292,0.101866295265,0.780369007728,-1.1845215858,4.05869344368,2.21276116185
+93730,ATLANTIC CITY,NJ,39.4494,-74.5672,55.8786610879,-19.6595483245,5.52939299142,7.92634218885,0.196129707113,0.805940024745,-1.30316186442,3.56573483147,2.26180392196
+03971,DALLAS,TX,32.68083,-96.86806,68.367768595,-18.8070433055,5.45746515656,7.67803939439,0.136859504132,0.606613336412,-1.38136332296,3.05608464407,2.55773892973
+03974,WICHITA,KS,37.74611,-97.22111,58.4979367263,-22.6573054967,6.24081817439,8.62576447925,0.130295735901,0.594286396576,-1.14443401034,4.35600611062,2.43872675932
+03975,POPLAR BLUFF,MO,36.7725,-90.32472,60.5524861878,-20.5548331678,5.03744213747,7.28641958958,0.196408839779,0.909236727545,-1.61636921436,3.29321240021,1.85032349778
+53820,EVERGREEN,AL,31.41556,-87.04417,67.2606896552,-14.797102343,3.48416289725,6.66598272087,0.236731034483,0.887075231374,-0.900104509035,2.37592445141,1.66544248277
+94040,MC COOK,NE,40.20639,-100.59139,53.8514442916,-25.1312418408,7.02685009023,8.93172246806,0.0454951856946,-0.470227937354,-1.25005345944,4.05394059701,2.47196097323
+94041,GARRISON,ND,47.64583,-101.43944,41.9019337017,-27.5016966458,8.99359582028,9.51017596028,0.0958011049724,0.57001143841,-0.895608848275,4.47584677179,2.12333660341
+23161,DAGGETT,CA,34.8536,-116.7858,69.305785124,-20.5609985118,5.79646810492,5.15639012259,0.0105371900826,-2.66334432027,-2.19040776317,5.57686527396,1.89562143337
+03878,TROY,AL,31.86056,-86.01222,65.6685159501,-15.1891575807,3.96775060118,6.72915502092,0.226310679612,0.89542704661,-0.866531412945,2.52413591105,1.72410383308
+23169,LAS VEGAS,NV,36.0719,-115.1634,70.8982118294,-22.0060699663,5.39195234774,5.13358642137,0.0166093535076,-1.59895198937,-1.09577188257,3.86005196507,2.23643032648
+93812,CINCINNATI,OH,39.10333,-84.41889,55.18395574,-21.0116489641,4.23174908649,7.51422479026,0.130809128631,1.40849673,-1.12062276268,3.37146572618,1.55794518155
+03872,BECKLEY,WV,37.7836,-81.123,53.520718232,-18.4504940794,4.60005438364,8.15723946383,0.198397790055,1.47057258439,-1.47203900182,3.05724032919,2.14769576233
+23285,LIVERMORE,CA,37.6927,-121.8144,61.2258953168,-11.883398031,5.23654044102,4.87030056426,0.0410123966942,-2.36642340424,-0.232593985801,2.95719674013,1.9834881659
+14839,MILWAUKEE,WI,42.955,-87.9044,49.8082758621,-23.1240922862,8.07358358187,8.53361415626,0.160117241379,0.922403546578,-0.964518872556,3.48248874612,2.64269982898
+93193,FRESNO,CA,36.78,-119.7194,67.1914600551,-17.2970760426,6.02533715554,4.66207151602,0.0268181818182,-2.65107039236,-0.719660236795,3.22279127691,1.66030809523
+93810,CARBONDALE/MURPHYBORO,IL,37.77972,-89.24972,57.6620879121,-20.9888665182,4.528916135,8.1396598924,0.156222527473,1.51723554528,-1.31844073358,3.82283993409,1.76947588535
+12919,BROWNSVILLE,TX,25.9141,-97.423,76.2786206897,-11.0831065354,3.31743281151,6.07230964236,0.0981310344828,-0.322282945523,-1.9367051235,4.11132550208,2.4188859727
+92806,ST PETERSBURG,FL,27.76472,-82.6275,76.0137362637,-8.98683894504,3.86602704697,3.97209890099,0.174519230769,-0.188645134025,-0.105311660629,3.44309651074,2.58081322532
+14833,JACKSON,MI,42.2667,-84.4667,49.9067215364,-22.5047120446,6.2038986625,8.30738789642,0.119609053498,1.80107409258,-1.2635580432,3.39465648882,2.02238280874
+14835,LAFAYETTE,IN,40.41222,-86.93694,52.9361111111,-22.4436328747,5.69304746461,8.69859530967,0.139,1.35885251241,-1.69097670275,3.41203741268,1.99025758278
+14837,MADISON,WI,43.1405,-89.3452,49.044077135,-25.0466049215,7.43162008022,8.70761588015,0.17347107438,0.65997348276,-1.09613291889,3.14643731387,2.17054271316
+14836,LANSING,MI,42.78028,-84.57889,50.0164835165,-22.9076873615,6.5454097328,8.18424651465,0.157932692308,1.48448877938,-1.18815038,3.86530423739,2.09549488922
+26412,NORTHWAY,AK,62.9617,-141.9378,23.4937586685,-39.3063710516,5.39748161402,7.54354562101,0.0384049930652,-1.2394970083,-0.284043604968,2.54480493023,1.16006918915
+26410,CORDOVA,AK,60.4888,-145.4511,38.5941828255,-14.3246316357,4.97943021393,6.00956245363,0.469716066482,0.371635849774,-0.431819816323,3.24622015943,1.19256533746
+26411,FAIRBANKS,AK,64.8039,-147.8761,26.8597222222,-39.0387692972,7.40066547623,8.85812145101,0.0718541666667,-1.19151682876,-0.550072072681,2.70741342996,1.38688131985
+93775,RICHMOND/ASHLAND,VA,37.70806,-77.43444,58.6413793103,-18.9198377792,5.0653792776,8.09477776416,0.196944827586,0.557168054184,-1.06998172319,2.70251936891,1.58574894621
+03967,OLATHE,KS,38.85,-94.73917,56.6068965517,-22.7890221577,6.12639073008,8.47854446377,0.126103448276,0.757466047483,-0.971282356723,3.28840162338,2.55019609098
+25325,KETCHIKAN,AK,55.35667,-131.71167,45.9337016575,-11.2035375896,5.21222223717,3.95311702737,0.607976519337,-0.0613660301003,0.00641707005456,4.03055578421,1.90523194754
+13993,ST JOSEPH,MO,39.7736,-94.9233,54.8606896552,-23.8579292274,5.53055711711,8.9711566256,0.109448275862,0.715973386803,-1.84549472526,4.14324406954,1.98864661062
+93230,SOUTH LAKE TAHOE,CA,38.8983,-119.9947,45.7261410788,-15.3039922706,5.76544295952,5.65903787399,0.0619294605809,-0.135884999159,-0.620091028195,3.29992573564,1.47641530381
+13997,ROLLA/VICHY,MO,38.13111,-91.76833,56.4102209945,-21.5735079299,4.91536014102,8.96663414035,0.154288674033,1.8076109227,-1.21024889469,3.68991117877,2.31009168953
+13996,TOPEKA,KS,39.0725,-95.6261,57.643741403,-23.3366091903,5.59557655506,8.78693841339,0.124436038514,0.353880190248,-1.40254014527,3.65726854645,2.08734336671
+13995,SPRINGFIELD,MO,37.2397,-93.3897,57.8707015131,-21.2345739004,5.57945329733,8.23490845187,0.175646492435,1.02064232565,-1.04509355364,3.8762234134,2.42816358486
+13994,ST LOUIS,MO,38.7525,-90.3736,59.1991758242,-22.7218519498,5.45525320058,8.69799755936,0.16157967033,1.10262457217,-1.26372223259,3.43659095905,2.40235357998
+03026,BURLINGTON,CO,39.24472,-102.28417,52.608815427,-22.9932988871,6.86576203234,9.31901639592,0.0579752066116,-0.20830741822,-1.14763214386,4.06061787464,2.93862781392
+03904,COLLEGE STATION,TX,30.58917,-96.36472,70.7231404959,-16.5038980288,4.411315002,6.87790712506,0.165785123967,0.245570035029,-1.41016304692,3.44171241765,2.26787452106
+03901,LONGVIEW,TX,32.38472,-94.71167,67.5546334716,-17.7838931142,4.55501088973,7.68777525153,0.157676348548,0.24695090078,-1.31054777986,3.17842712467,2.10883118877
+94052,MOBRIDGE,SD,45.54639,-100.40778,45.8436213992,-27.4313060231,8.06257379261,9.38476313575,0.0907407407407,-0.448846703482,-0.521800642699,4.44961254331,2.26594535525
+93819,INDIANAPOLIS,IN,39.7318,-86.2788,55.0315934066,-23.0350631964,5.47075687954,8.00291812267,0.181504120879,1.3662785975,-1.373800722,3.78642710876,2.40288572499
+12918,HOUSTON,TX,29.63806,-95.28194,7

<TRUNCATED>

[3/3] bigtop git commit: BIGTOP-1991. Add BigTop Weatherman

Posted by rn...@apache.org.
BIGTOP-1991. Add BigTop Weatherman


Project: http://git-wip-us.apache.org/repos/asf/bigtop/repo
Commit: http://git-wip-us.apache.org/repos/asf/bigtop/commit/ad88e741
Tree: http://git-wip-us.apache.org/repos/asf/bigtop/tree/ad88e741
Diff: http://git-wip-us.apache.org/repos/asf/bigtop/diff/ad88e741

Branch: refs/heads/master
Commit: ad88e7414540d6631854f1a731a3c1c029a3c965
Parents: be796c9
Author: RJ Nowling <rn...@gmail.com>
Authored: Tue Sep 15 09:46:46 2015 -0500
Committer: RJ Nowling <rn...@gmail.com>
Committed: Tue Sep 15 09:46:46 2015 -0500

----------------------------------------------------------------------
 bigtop-data-generators/README.md                |   5 +
 .../bigpetstore-data-generator/README.md        |  34 +-
 .../bigpetstore-data-generator/build.gradle     |  60 +-
 .../bigtop-location-data/README.md              |  26 +-
 .../bigtop-location-data/build.gradle           |  49 +-
 .../datagenerators/locations/Location.java      | 136 +--
 .../locations/LocationConstants.java            |  10 +-
 .../locations/LocationReader.java               | 282 +++---
 .../bigtop-name-generator/README.md             |  26 +-
 .../bigtop-name-generator/build.gradle          |  50 +-
 .../bigtop-samplers/README.md                   |  26 +-
 .../bigtop-samplers/build.gradle                |  51 +-
 .../samplers/samplers/GammaSampler.java         |  34 +
 .../bigtop-weatherman/README.md                 |  36 +
 .../bigtop-weatherman/build.gradle              |  37 +
 .../bigtop-weatherman/settings.gradle           |  16 +
 .../weatherman/WeatherGenerator.java            |  67 ++
 .../weatherman/WeatherRecord.java               |  77 ++
 .../weatherman/internal/Driver.java             | 194 ++++
 .../internal/PrecipitationSampler.java          |  51 ++
 .../weatherman/internal/TemperatureSampler.java |  71 ++
 .../weatherman/internal/WeatherConstants.java   |  53 ++
 .../internal/WeatherParametersReader.java       |  80 ++
 .../internal/WeatherRecordBuilder.java          | 163 ++++
 .../weatherman/internal/WeatherSampler.java     |  50 ++
 .../internal/WeatherSamplerBuilder.java         |  80 ++
 .../internal/WeatherStationParameters.java      | 110 +++
 .../weatherman/internal/WindSpeedSampler.java   |  74 ++
 .../resources/input_data/weather_parameters.csv | 897 +++++++++++++++++++
 bigtop-data-generators/build.gradle             |  44 +
 bigtop-data-generators/settings.gradle          |   2 +-
 31 files changed, 2405 insertions(+), 486 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/bigtop/blob/ad88e741/bigtop-data-generators/README.md
----------------------------------------------------------------------
diff --git a/bigtop-data-generators/README.md b/bigtop-data-generators/README.md
index 4765662..e6fd5c7 100644
--- a/bigtop-data-generators/README.md
+++ b/bigtop-data-generators/README.md
@@ -24,6 +24,7 @@ The following data generators are included so far:
 
 * BigPetStore -- generates customers, stores, products, and transactions for a fictional chain of pet stores
 * BigTop Name Generator -- generates names by sampling from U.S. Census data
+* BigTop Weatherman -- weather simulator
 
 We have the following libraries:
 
@@ -45,3 +46,7 @@ Jar files can be installed to a local Maven cache to simplify integration by ext
     $ gradle install
 
 You can then define the dependencies via Maven.
+
+Running
+-------
+Please see READMEs in individual project directories.

http://git-wip-us.apache.org/repos/asf/bigtop/blob/ad88e741/bigtop-data-generators/bigpetstore-data-generator/README.md
----------------------------------------------------------------------
diff --git a/bigtop-data-generators/bigpetstore-data-generator/README.md b/bigtop-data-generators/bigpetstore-data-generator/README.md
index 1acfe90..9e65db6 100644
--- a/bigtop-data-generators/bigpetstore-data-generator/README.md
+++ b/bigtop-data-generators/bigpetstore-data-generator/README.md
@@ -17,35 +17,11 @@
 BigPetStore Data Generator
 ==========================
 
-BigPetStore ...
+Library for simulating customer purchasing behavior at a fictional chain of petstores for the purpose of generating synthetic transaction data.
 
-Data Generator ...
-
-=======
 Building and Testing
 --------------------
-We use the Gradle build system for the BPS data generator so you'll need
-to install Gradle on your system.
-Once that's done, you can use gradle to run the included unit tests
-and build the data generator jar.
-
-To build:
-    
-    $ gradle build
-
-This will create several directories and a jar located at:
-    
-    build/libs/bigpetstore-data-generator-0.9.0-SNAPSHOT.jar
-
-Building automatically runs the included unit tests.  If you would prefer
-to just run the unit tests, you can do so by:
-
-    $ gradle test
-
-
-To clean up the build files, run:
-
-    $ gradle clean
+The data generator is part of a Gradle multiproject build.  Please see the README in the parent directory for build and test instructions.
 
 
 Running the Data Generator
@@ -55,12 +31,12 @@ Hadoop or Spark applications) or using a command-line interface.
 The data generator CLI requires several parameters.  To get 
 descriptions:
 
-    $ java -jar build/libs/bigpetstore-data-generator-0.9.0-SNAPSHOT.jar
+    $ java -jar build/libs/bigpetstore-data-generator-1.1.0-SNAPSHOT.jar
 
 Here is an example for generating 10 stores, 1000 customers, 100 purchasing models,
 and a year of transactions:
 
-    $ java -jar build/libs/bigpetstore-data-generator-0.9.0-SNAPSHOT.jar generatedData/ 10 1000 100 365.0
+    $ java -jar build/libs/bigpetstore-data-generator-1.1.0-SNAPSHOT.jar generatedData/ 10 1000 100 365.0
 
 
 Groovy Drivers for Scripting
@@ -75,5 +51,5 @@ To use Groovy scripts, you will need to have Groovy installed on your system.  B
 data generator as instructed above.  Then run the scripts in the `groovy_example_drivers`
 directory as so:
 
-    $ groovy -classpath ../build/libs/bigpetstore-data-generator-0.9.0-SNAPSHOT.jar MonteCarloExponentialSamplingExample.groovy
+    $ groovy -classpath ../build/libs/bigpetstore-data-generator-1.1.0-SNAPSHOT.jar MonteCarloExponentialSamplingExample.groovy
 

http://git-wip-us.apache.org/repos/asf/bigtop/blob/ad88e741/bigtop-data-generators/bigpetstore-data-generator/build.gradle
----------------------------------------------------------------------
diff --git a/bigtop-data-generators/bigpetstore-data-generator/build.gradle b/bigtop-data-generators/bigpetstore-data-generator/build.gradle
index 9787512..2d5b4cd 100644
--- a/bigtop-data-generators/bigpetstore-data-generator/build.gradle
+++ b/bigtop-data-generators/bigpetstore-data-generator/build.gradle
@@ -13,55 +13,27 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-apply plugin: 'eclipse'
-apply plugin: 'groovy'
-apply plugin: 'java' 
-apply plugin: 'maven'
-group = 'org.apache.bigtop'
-version = '1.1.0-SNAPSHOT'
 
 jar {
-    
-    from {
-        configurations.runtime.collect { 
-            it.isDirectory() ? it : zipTree(it)
-        }
-    } 
-
-    manifest {
-	attributes 'Title': 'BigPetStore Data Generator', 'Version': version
-	attributes 'Main-Class': 'org.apache.bigtop.datagenerators.bigpetstore.cli.Driver'
+  from {
+    configurations.runtime.collect {
+      it.isDirectory() ? it : zipTree(it)
     }
-}
-
-repositories {
-	mavenLocal()
-	mavenCentral()
-}
-
-test {
-     // show standard out and error on console
-     testLogging.showStandardStreams = true
-
-     // listen to events in the test execution lifecycle
-     beforeTest { descriptor ->
-       logger.lifecycle("Running test: " + descriptor)
-     }
-
-     // listen to standard out and standard error of the test JVM(s)
-     onOutput { descriptor, event ->
-       logger.lifecycle("Test: " + descriptor + " produced standard out/err: " + event.message )
-     }
+  }
 
+  manifest {
+    attributes 'Title': 'BigPetStore Data Generator', 'Version': version
+    attributes 'Main-Class': 'org.apache.bigtop.datagenerators.bigpetstore.cli.Driver'
+  }
 }
 
 dependencies {
-    compile 'com.google.guava:guava:18.0'
-    compile 'com.google.code.gson:gson:2.3'
-    compile 'org.apache.commons:commons-lang3:3.4'
-    compile project(":bigtop-samplers")
-    compile project(":bigtop-name-generator")
-    compile project(":bigtop-location-data")
-
-    testCompile 'junit:junit:4.+'
+  compile 'com.google.guava:guava:18.0'
+  compile 'com.google.code.gson:gson:2.3'
+  compile 'org.apache.commons:commons-lang3:3.4'
+  compile project(":bigtop-samplers")
+  compile project(":bigtop-name-generator")
+  compile project(":bigtop-location-data")
+
+  testCompile 'junit:junit:4.+'
 }

http://git-wip-us.apache.org/repos/asf/bigtop/blob/ad88e741/bigtop-data-generators/bigtop-location-data/README.md
----------------------------------------------------------------------
diff --git a/bigtop-data-generators/bigtop-location-data/README.md b/bigtop-data-generators/bigtop-location-data/README.md
index 9aff06f..b61eeb0 100644
--- a/bigtop-data-generators/bigtop-location-data/README.md
+++ b/bigtop-data-generators/bigtop-location-data/README.md
@@ -23,28 +23,4 @@ data model.
 
 Building and Testing
 --------------------
-We use the Gradle build system for the BPS data generator so you'll need
-to install Gradle on your system.
-Once that's done, you can use gradle to run the included unit tests
-and build the data generator jar.
-
-To build:
-
-    $ gradle build
-
-This will create several directories and a jar located at:
-
-    build/libs/bigtop-location-data-1.1.0-SNAPSHOT.jar
-
-Building automatically runs the included unit tests.  If you would prefer
-to just run the unit tests, you can do so by:
-
-    $ gradle test
-
-To clean up the build files, run:
-
-    $ gradle clean
-
-To install a jar into your local maven repository:
-
-    $ gradle install
+This project is part of a Gradle multi-project build -- please see the parent directory for build instructions.

http://git-wip-us.apache.org/repos/asf/bigtop/blob/ad88e741/bigtop-data-generators/bigtop-location-data/build.gradle
----------------------------------------------------------------------
diff --git a/bigtop-data-generators/bigtop-location-data/build.gradle b/bigtop-data-generators/bigtop-location-data/build.gradle
index 9eb91e3..bbced98 100644
--- a/bigtop-data-generators/bigtop-location-data/build.gradle
+++ b/bigtop-data-generators/bigtop-location-data/build.gradle
@@ -13,51 +13,22 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-apply plugin: 'eclipse'
-apply plugin: 'groovy'
-apply plugin: 'java'
-apply plugin: 'maven'
-group = 'org.apache.bigtop'
-version = '1.1.0-SNAPSHOT'
 
 jar {
-
-    from {
-        configurations.runtime.collect {
-            it.isDirectory() ? it : zipTree(it)
-        }
-    }
-
-    manifest {
-	attributes 'Title': 'BigTop Samplers', 'Version': version
+  from {
+    configurations.runtime.collect {
+      it.isDirectory() ? it : zipTree(it)
     }
-}
-
-repositories {
-	mavenLocal()
-	mavenCentral()
-}
-
-test {
-     // show standard out and error on console
-     testLogging.showStandardStreams = true
-
-     // listen to events in the test execution lifecycle
-     beforeTest { descriptor ->
-       logger.lifecycle("Running test: " + descriptor)
-     }
-
-     // listen to standard out and standard error of the test JVM(s)
-     onOutput { descriptor, event ->
-       logger.lifecycle("Test: " + descriptor + " produced standard out/err: " + event.message )
-     }
+  }
 
+  manifest {
+    attributes 'Title': 'BigTop Samplers', 'Version': version
+  }
 }
 
 dependencies {
-    compile 'com.google.guava:guava:18.0'
-
-    compile 'org.apache.commons:commons-lang3:3.4'
+  compile 'com.google.guava:guava:18.0'
+  compile 'org.apache.commons:commons-lang3:3.4'
 
-    testCompile 'junit:junit:4.+'
+  testCompile 'junit:junit:4.+'
 }

http://git-wip-us.apache.org/repos/asf/bigtop/blob/ad88e741/bigtop-data-generators/bigtop-location-data/src/main/java/org/apache/bigtop/datagenerators/locations/Location.java
----------------------------------------------------------------------
diff --git a/bigtop-data-generators/bigtop-location-data/src/main/java/org/apache/bigtop/datagenerators/locations/Location.java b/bigtop-data-generators/bigtop-location-data/src/main/java/org/apache/bigtop/datagenerators/locations/Location.java
index 62afc0a..58f6cdf 100644
--- a/bigtop-data-generators/bigtop-location-data/src/main/java/org/apache/bigtop/datagenerators/locations/Location.java
+++ b/bigtop-data-generators/bigtop-location-data/src/main/java/org/apache/bigtop/datagenerators/locations/Location.java
@@ -19,72 +19,72 @@ import java.io.Serializable;
 
 import org.apache.commons.lang3.tuple.Pair;
 
-public class Location implements Serializable
-{
-	private static final long serialVersionUID = 1769986686070108470L;
-
-	final String zipcode;
-	final Pair<Double, Double> coordinates;
-	final String city;
-	final String state;
-	final double medianHouseholdIncome;
-	final long population;
-
-	public Location(String zipcode, Pair<Double, Double> coordinates,
-			String city, String state, double medianHouseholdIncome, long population)
-	{
-		this.city = city;
-		this.state = state;
-		this.zipcode = zipcode;
-		this.coordinates = coordinates;
-		this.medianHouseholdIncome = medianHouseholdIncome;
-		this.population = population;
-	}
-
-	public String getZipcode()
-	{
-		return zipcode;
-	}
-
-	public Pair<Double, Double> getCoordinates()
-	{
-		return coordinates;
-	}
-
-	public double getMedianHouseholdIncome()
-	{
-		return medianHouseholdIncome;
-	}
-
-	public long getPopulation()
-	{
-		return population;
-	}
-
-	public double distance(Location other)
-	{
-		if(other.getZipcode().equals(zipcode))
-			return 0.0;
-
-		Pair<Double, Double> otherCoords = other.getCoordinates();
-
-		double dist = Math.sin(Math.toRadians(coordinates.getLeft())) *
-				Math.sin(Math.toRadians(otherCoords.getLeft())) +
-				Math.cos(Math.toRadians(coordinates.getLeft())) *
-				Math.cos(Math.toRadians(otherCoords.getLeft())) *
-				Math.cos(Math.toRadians(coordinates.getRight() - otherCoords.getRight()));
-		dist = Math.toDegrees(Math.acos(dist)) * 69.09;
-
-		return dist;
-	}
-
-	public String getCity()
-	{
-		return city;
-	}
-
-	public String getState()
-	{
-		return state;
-	}
+public class Location implements Serializable {
+  private static final long serialVersionUID = 1769986686070108470L;
+
+  final String zipcode;
+  final Pair<Double, Double> coordinates;
+  final String city;
+  final String state;
+  final double medianHouseholdIncome;
+  final long population;
+
+  public Location(String zipcode, Pair<Double, Double> coordinates, String city,
+          String state, double medianHouseholdIncome, long population) {
+    this.city = city;
+    this.state = state;
+    this.zipcode = zipcode;
+    this.coordinates = coordinates;
+    this.medianHouseholdIncome = medianHouseholdIncome;
+    this.population = population;
+  }
+
+  public String getZipcode() {
+    return zipcode;
+  }
+
+  public Pair<Double, Double> getCoordinates() {
+    return coordinates;
+  }
+
+  public double getMedianHouseholdIncome() {
+    return medianHouseholdIncome;
+  }
+
+  public long getPopulation() {
+    return population;
+  }
+
+  public double distance(Pair<Double, Double> otherCoords) {
+    if (Math.abs(coordinates.getLeft() - otherCoords.getLeft()) < 1e-5
+            || Math.abs(coordinates.getRight() - otherCoords.getRight()) < 1e-5)
+      return 0.0;
+
+    double dist = Math.sin(Math.toRadians(coordinates.getLeft()))
+            * Math.sin(Math.toRadians(otherCoords.getLeft()))
+            + Math.cos(Math.toRadians(coordinates.getLeft()))
+                    * Math.cos(Math.toRadians(otherCoords.getLeft()))
+                    * Math.cos(Math.toRadians(
+                            coordinates.getRight() - otherCoords.getRight()));
+    dist = Math.toDegrees(Math.acos(dist)) * 69.09;
+
+    return dist;
+  }
+
+  public double distance(Location other) {
+    if (other.getZipcode().equals(zipcode))
+      return 0.0;
+
+    Pair<Double, Double> otherCoords = other.getCoordinates();
+
+    return distance(otherCoords);
+  }
+
+  public String getCity() {
+    return city;
+  }
+
+  public String getState() {
+    return state;
+  }
 }

http://git-wip-us.apache.org/repos/asf/bigtop/blob/ad88e741/bigtop-data-generators/bigtop-location-data/src/main/java/org/apache/bigtop/datagenerators/locations/LocationConstants.java
----------------------------------------------------------------------
diff --git a/bigtop-data-generators/bigtop-location-data/src/main/java/org/apache/bigtop/datagenerators/locations/LocationConstants.java b/bigtop-data-generators/bigtop-location-data/src/main/java/org/apache/bigtop/datagenerators/locations/LocationConstants.java
index 4140bfd..e6ea242 100644
--- a/bigtop-data-generators/bigtop-location-data/src/main/java/org/apache/bigtop/datagenerators/locations/LocationConstants.java
+++ b/bigtop-data-generators/bigtop-location-data/src/main/java/org/apache/bigtop/datagenerators/locations/LocationConstants.java
@@ -17,9 +17,9 @@ package org.apache.bigtop.datagenerators.locations;
 
 import java.io.File;
 
-public class LocationConstants
-{
-	public static final File COORDINATES_FILE = new File("zips.csv");
-	public static final File INCOMES_FILE = new File("ACS_12_5YR_S1903/ACS_12_5YR_S1903_with_ann.csv");
-	public static final File POPULATION_FILE = new File("population_data.csv");
+public class LocationConstants {
+  public static final File COORDINATES_FILE = new File("zips.csv");
+  public static final File INCOMES_FILE = new File(
+          "ACS_12_5YR_S1903/ACS_12_5YR_S1903_with_ann.csv");
+  public static final File POPULATION_FILE = new File("population_data.csv");
 }

http://git-wip-us.apache.org/repos/asf/bigtop/blob/ad88e741/bigtop-data-generators/bigtop-location-data/src/main/java/org/apache/bigtop/datagenerators/locations/LocationReader.java
----------------------------------------------------------------------
diff --git a/bigtop-data-generators/bigtop-location-data/src/main/java/org/apache/bigtop/datagenerators/locations/LocationReader.java b/bigtop-data-generators/bigtop-location-data/src/main/java/org/apache/bigtop/datagenerators/locations/LocationReader.java
index 5be4d59..6d5b29e 100644
--- a/bigtop-data-generators/bigtop-location-data/src/main/java/org/apache/bigtop/datagenerators/locations/LocationReader.java
+++ b/bigtop-data-generators/bigtop-location-data/src/main/java/org/apache/bigtop/datagenerators/locations/LocationReader.java
@@ -32,151 +32,141 @@ import com.google.common.collect.ImmutableList;
 import com.google.common.collect.ImmutableMap;
 import com.google.common.collect.Maps;
 
-public class LocationReader
-{
-	private static class ZipcodeLocationRecord
-	{
-		public final Pair<Double, Double> coordinates;
-		public final String state;
-		public final String city;
-
-		public ZipcodeLocationRecord(Pair<Double, Double> coordinates,
-				String city, String state)
-		{
-			this.coordinates = coordinates;
-			this.city = city;
-			this.state = state;
-		}
-	}
-	
-	private InputStream getResource(File filename)
-	{
-		InputStream stream = getClass().getResourceAsStream("/input_data/" + filename);
-		return new BufferedInputStream(stream);
-	}
-
-	private ImmutableMap<String, Double> readIncomeData(InputStream path) throws FileNotFoundException
-	{
-		Scanner scanner = new Scanner(path);
-
-		// skip headers
-		scanner.nextLine();
-		scanner.nextLine();
-
-		Map<String, Double> entries = Maps.newHashMap();
-		while(scanner.hasNextLine())
-		{
-			String line = scanner.nextLine().trim();
-			String[] cols = line.split(",");
-			// zipcodes are in the form "ZCTA5 XXXXX"
-			String zipcode = cols[2].split(" ")[1].trim();
-			try
-			{
-				double medianHouseholdIncome = Integer.parseInt(cols[5].trim());
-				entries.put(zipcode, medianHouseholdIncome);
-			}
-			catch(NumberFormatException e)
-			{
-
-			}
-		}
-
-		scanner.close();
-
-		return ImmutableMap.copyOf(entries);
-	}
-
-	private ImmutableMap<String, Long> readPopulationData(InputStream path) throws FileNotFoundException
-	{
-		Scanner scanner = new Scanner(path);
-
-		// skip header
-		scanner.nextLine();
-
-		Map<String, Long> entries = Maps.newHashMap();
-		while(scanner.hasNextLine())
-		{
-			String line = scanner.nextLine().trim();
-
-			if(line.length() == 0)
-				continue;
-
-			String[] cols = line.split(",");
-
-			String zipcode = cols[0].trim();
-			Long population = Long.parseLong(cols[1].trim());
-
-			if(entries.containsKey(zipcode))
-			{
-				entries.put(zipcode, Math.max(entries.get(zipcode), population));
-			}
-			else
-			{
-				entries.put(zipcode, population);
-			}
-		}
-
-		scanner.close();
-
-		return ImmutableMap.copyOf(entries);
-	}
-
-	private ImmutableMap<String, ZipcodeLocationRecord> readCoordinates(InputStream path) throws FileNotFoundException
-	{
-		Scanner scanner = new Scanner(path);
-
-		// skip header
-		scanner.nextLine();
-
-		Map<String, ZipcodeLocationRecord> entries = Maps.newHashMap();
-		while(scanner.hasNextLine())
-		{
-			String line = scanner.nextLine().trim();
-
-			String[] cols = line.split(", ");
-
-			// remove quote marks
-			String zipcode = cols[0].substring(1, cols[0].length() - 1);
-			String state = cols[1].substring(1, cols[1].length() - 1);
-			Double latitude = Double.parseDouble(cols[2].substring(1, cols[2].length() - 1));
-			Double longitude = Double.parseDouble(cols[3].substring(1, cols[3].length() - 1));
-			String city = cols[4].substring(1, cols[4].length() - 1);
-
-			Pair<Double, Double> coords = Pair.of(latitude, longitude);
-
-			ZipcodeLocationRecord record = new ZipcodeLocationRecord(coords, city, state);
-
-			entries.put(zipcode, record);
-		}
-
-		scanner.close();
-
-		return ImmutableMap.copyOf(entries);
-	}
-
-	public ImmutableList<Location> readData() throws FileNotFoundException
-	{
-		
-		ImmutableMap<String, Double> incomes = readIncomeData(getResource(LocationConstants.INCOMES_FILE));
-		ImmutableMap<String, Long> populations = readPopulationData(getResource(LocationConstants.POPULATION_FILE));
-		ImmutableMap<String, ZipcodeLocationRecord> coordinates = readCoordinates(getResource(LocationConstants.COORDINATES_FILE));
-
-		Set<String> zipcodeSubset = new HashSet<String>(incomes.keySet());
-		zipcodeSubset.retainAll(populations.keySet());
-		zipcodeSubset.retainAll(coordinates.keySet());
-
-		List<Location> table = new Vector<Location>();
-		for(String zipcode : zipcodeSubset)
-		{
-			Location record = new Location(zipcode,
-					coordinates.get(zipcode).coordinates,
-					coordinates.get(zipcode).city,
-					coordinates.get(zipcode).state,
-					incomes.get(zipcode),
-					populations.get(zipcode));
-			table.add(record);
-		}
+public class LocationReader {
+  private static class ZipcodeLocationRecord {
+    public final Pair<Double, Double> coordinates;
+    public final String state;
+    public final String city;
+
+    public ZipcodeLocationRecord(Pair<Double, Double> coordinates, String city,
+            String state) {
+      this.coordinates = coordinates;
+      this.city = city;
+      this.state = state;
+    }
+  }
 
-		return ImmutableList.copyOf(table);
-	}
+  private InputStream getResource(File filename) {
+    InputStream stream = getClass()
+            .getResourceAsStream("/input_data/" + filename);
+    return new BufferedInputStream(stream);
+  }
+
+  private ImmutableMap<String, Double> readIncomeData(InputStream path)
+          throws FileNotFoundException {
+    Scanner scanner = new Scanner(path);
+
+    // skip headers
+    scanner.nextLine();
+    scanner.nextLine();
+
+    Map<String, Double> entries = Maps.newHashMap();
+    while (scanner.hasNextLine()) {
+      String line = scanner.nextLine().trim();
+      String[] cols = line.split(",");
+      // zipcodes are in the form "ZCTA5 XXXXX"
+      String zipcode = cols[2].split(" ")[1].trim();
+      try {
+        double medianHouseholdIncome = Integer.parseInt(cols[5].trim());
+        entries.put(zipcode, medianHouseholdIncome);
+      } catch (NumberFormatException e) {
+
+      }
+    }
+
+    scanner.close();
+
+    return ImmutableMap.copyOf(entries);
+  }
+
+  private ImmutableMap<String, Long> readPopulationData(InputStream path)
+          throws FileNotFoundException {
+    Scanner scanner = new Scanner(path);
+
+    // skip header
+    scanner.nextLine();
+
+    Map<String, Long> entries = Maps.newHashMap();
+    while (scanner.hasNextLine()) {
+      String line = scanner.nextLine().trim();
+
+      if (line.length() == 0)
+        continue;
+
+      String[] cols = line.split(",");
+
+      String zipcode = cols[0].trim();
+      Long population = Long.parseLong(cols[1].trim());
+
+      if (entries.containsKey(zipcode)) {
+        entries.put(zipcode, Math.max(entries.get(zipcode), population));
+      } else {
+        entries.put(zipcode, population);
+      }
+    }
+
+    scanner.close();
+
+    return ImmutableMap.copyOf(entries);
+  }
+
+  private ImmutableMap<String, ZipcodeLocationRecord> readCoordinates(
+          InputStream path) throws FileNotFoundException {
+    Scanner scanner = new Scanner(path);
+
+    // skip header
+    scanner.nextLine();
+
+    Map<String, ZipcodeLocationRecord> entries = Maps.newHashMap();
+    while (scanner.hasNextLine()) {
+      String line = scanner.nextLine().trim();
+
+      String[] cols = line.split(", ");
+
+      // remove quote marks
+      String zipcode = cols[0].substring(1, cols[0].length() - 1);
+      String state = cols[1].substring(1, cols[1].length() - 1);
+      Double latitude = Double
+              .parseDouble(cols[2].substring(1, cols[2].length() - 1));
+      Double longitude = Double
+              .parseDouble(cols[3].substring(1, cols[3].length() - 1));
+      String city = cols[4].substring(1, cols[4].length() - 1);
+
+      Pair<Double, Double> coords = Pair.of(latitude, longitude);
+
+      ZipcodeLocationRecord record = new ZipcodeLocationRecord(coords, city,
+              state);
+
+      entries.put(zipcode, record);
+    }
+
+    scanner.close();
+
+    return ImmutableMap.copyOf(entries);
+  }
+
+  public ImmutableList<Location> readData() throws FileNotFoundException {
+
+    ImmutableMap<String, Double> incomes = readIncomeData(
+            getResource(LocationConstants.INCOMES_FILE));
+    ImmutableMap<String, Long> populations = readPopulationData(
+            getResource(LocationConstants.POPULATION_FILE));
+    ImmutableMap<String, ZipcodeLocationRecord> coordinates = readCoordinates(
+            getResource(LocationConstants.COORDINATES_FILE));
+
+    Set<String> zipcodeSubset = new HashSet<String>(incomes.keySet());
+    zipcodeSubset.retainAll(populations.keySet());
+    zipcodeSubset.retainAll(coordinates.keySet());
+
+    List<Location> table = new Vector<Location>();
+    for (String zipcode : zipcodeSubset) {
+      Location record = new Location(zipcode,
+              coordinates.get(zipcode).coordinates,
+              coordinates.get(zipcode).city, coordinates.get(zipcode).state,
+              incomes.get(zipcode), populations.get(zipcode));
+      table.add(record);
+    }
+
+    return ImmutableList.copyOf(table);
+  }
 }

http://git-wip-us.apache.org/repos/asf/bigtop/blob/ad88e741/bigtop-data-generators/bigtop-name-generator/README.md
----------------------------------------------------------------------
diff --git a/bigtop-data-generators/bigtop-name-generator/README.md b/bigtop-data-generators/bigtop-name-generator/README.md
index aa204b2..93e23a5 100644
--- a/bigtop-data-generators/bigtop-name-generator/README.md
+++ b/bigtop-data-generators/bigtop-name-generator/README.md
@@ -24,28 +24,4 @@ their frequencies according to the U.S. Census.
 
 Building and Testing
 --------------------
-We use the Gradle build system for the BPS data generator so you'll need
-to install Gradle on your system.
-Once that's done, you can use gradle to run the included unit tests
-and build the data generator jar.
-
-To build:
-
-    $ gradle build
-
-This will create several directories and a jar located at:
-
-    build/libs/bigtop-name-generator-1.1.0-SNAPSHOT.jar
-
-Building automatically runs the included unit tests.  If you would prefer
-to just run the unit tests, you can do so by:
-
-    $ gradle test
-
-To clean up the build files, run:
-
-    $ gradle clean
-
-To install a jar into your local maven repository:
-
-    $ gradle install
+This project is part of a Gradle multiproject build.  Please see the README in the parent directory for build instructions.

http://git-wip-us.apache.org/repos/asf/bigtop/blob/ad88e741/bigtop-data-generators/bigtop-name-generator/build.gradle
----------------------------------------------------------------------
diff --git a/bigtop-data-generators/bigtop-name-generator/build.gradle b/bigtop-data-generators/bigtop-name-generator/build.gradle
index 0bff824..133dc93 100644
--- a/bigtop-data-generators/bigtop-name-generator/build.gradle
+++ b/bigtop-data-generators/bigtop-name-generator/build.gradle
@@ -13,51 +13,23 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-apply plugin: 'eclipse'
-apply plugin: 'groovy'
-apply plugin: 'java'
-apply plugin: 'maven'
-group = 'org.apache.bigtop'
-version = '1.1.0-SNAPSHOT'
 
 jar {
-
-    from {
-        configurations.runtime.collect {
-            it.isDirectory() ? it : zipTree(it)
-        }
-    }
-
-    manifest {
-	attributes 'Title': 'BigTop Name Generator', 'Version': version
+  from {
+    configurations.runtime.collect {
+      it.isDirectory() ? it : zipTree(it)
     }
-}
-
-repositories {
-	mavenLocal()
-	mavenCentral()
-}
-
-test {
-     // show standard out and error on console
-     testLogging.showStandardStreams = true
-
-     // listen to events in the test execution lifecycle
-     beforeTest { descriptor ->
-       logger.lifecycle("Running test: " + descriptor)
-     }
-
-     // listen to standard out and standard error of the test JVM(s)
-     onOutput { descriptor, event ->
-       logger.lifecycle("Test: " + descriptor + " produced standard out/err: " + event.message )
-     }
+  }
 
+  manifest {
+    attributes 'Title': 'BigTop Name Generator', 'Version': version
+  }
 }
 
 dependencies {
-    compile 'com.google.guava:guava:18.0'
-    compile 'org.apache.commons:commons-lang3:3.4'
-    compile project(":bigtop-samplers")
+  compile 'com.google.guava:guava:18.0'
+  compile 'org.apache.commons:commons-lang3:3.4'
+  compile project(":bigtop-samplers")
 
-    testCompile 'junit:junit:4.+'
+  testCompile 'junit:junit:4.+'
 }

http://git-wip-us.apache.org/repos/asf/bigtop/blob/ad88e741/bigtop-data-generators/bigtop-samplers/README.md
----------------------------------------------------------------------
diff --git a/bigtop-data-generators/bigtop-samplers/README.md b/bigtop-data-generators/bigtop-samplers/README.md
index 3a91c1b..5fb4a55 100644
--- a/bigtop-data-generators/bigtop-samplers/README.md
+++ b/bigtop-data-generators/bigtop-samplers/README.md
@@ -22,28 +22,4 @@ functions, probability mass functions, weight functions and samplers.
 
 Building and Testing
 --------------------
-We use the Gradle build system for the BPS data generator so you'll need
-to install Gradle on your system.
-Once that's done, you can use gradle to run the included unit tests
-and build the data generator jar.
-
-To build:
-
-    $ gradle build
-
-This will create several directories and a jar located at:
-
-    build/libs/bigtop-samplers-0.9.0-SNAPSHOT.jar
-
-Building automatically runs the included unit tests.  If you would prefer
-to just run the unit tests, you can do so by:
-
-    $ gradle test
-
-To clean up the build files, run:
-
-    $ gradle clean
-
-To install a jar into your local maven repository:
-
-    $ gradle install
+This project is part of a multiproject Gradle build.  Please see the README in the parent directory for instructions on building.

http://git-wip-us.apache.org/repos/asf/bigtop/blob/ad88e741/bigtop-data-generators/bigtop-samplers/build.gradle
----------------------------------------------------------------------
diff --git a/bigtop-data-generators/bigtop-samplers/build.gradle b/bigtop-data-generators/bigtop-samplers/build.gradle
index 84b5fe0..1d9ced0 100644
--- a/bigtop-data-generators/bigtop-samplers/build.gradle
+++ b/bigtop-data-generators/bigtop-samplers/build.gradle
@@ -13,52 +13,23 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-apply plugin: 'eclipse'
-apply plugin: 'groovy'
-apply plugin: 'java'
-apply plugin: 'maven'
-group = 'org.apache.bigtop'
-version = '1.1.0-SNAPSHOT'
 
 jar {
-
-    from {
-        configurations.runtime.collect {
-            it.isDirectory() ? it : zipTree(it)
-        }
-    }
-
-    manifest {
-	attributes 'Title': 'BigTop Samplers', 'Version': version
+  from {
+    configurations.runtime.collect {
+      it.isDirectory() ? it : zipTree(it)
     }
-}
-
-repositories {
-	mavenLocal()
-	mavenCentral()
-}
-
-test {
-     // show standard out and error on console
-     testLogging.showStandardStreams = true
-
-     // listen to events in the test execution lifecycle
-     beforeTest { descriptor ->
-       logger.lifecycle("Running test: " + descriptor)
-     }
-
-     // listen to standard out and standard error of the test JVM(s)
-     onOutput { descriptor, event ->
-       logger.lifecycle("Test: " + descriptor + " produced standard out/err: " + event.message )
-     }
+  }
 
+  manifest {
+    attributes 'Title': 'BigTop Samplers', 'Version': version
+  }
 }
 
 dependencies {
-    compile 'com.google.guava:guava:18.0'
-
-    compile 'org.apache.commons:commons-lang3:3.4'
-    compile 'org.apache.commons:commons-math3:3.5'
+  compile 'com.google.guava:guava:18.0'
+  compile 'org.apache.commons:commons-lang3:3.4'
+  compile 'org.apache.commons:commons-math3:3.5'
 
-    testCompile 'junit:junit:4.+'
+  testCompile 'junit:junit:4.+'
 }

http://git-wip-us.apache.org/repos/asf/bigtop/blob/ad88e741/bigtop-data-generators/bigtop-samplers/src/main/java/org/apache/bigtop/datagenerators/samplers/samplers/GammaSampler.java
----------------------------------------------------------------------
diff --git a/bigtop-data-generators/bigtop-samplers/src/main/java/org/apache/bigtop/datagenerators/samplers/samplers/GammaSampler.java b/bigtop-data-generators/bigtop-samplers/src/main/java/org/apache/bigtop/datagenerators/samplers/samplers/GammaSampler.java
new file mode 100644
index 0000000..fb08b48
--- /dev/null
+++ b/bigtop-data-generators/bigtop-samplers/src/main/java/org/apache/bigtop/datagenerators/samplers/samplers/GammaSampler.java
@@ -0,0 +1,34 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.bigtop.datagenerators.samplers.samplers;
+
+import org.apache.bigtop.datagenerators.samplers.SeedFactory;
+import org.apache.commons.math3.distribution.GammaDistribution;
+
+public class GammaSampler implements Sampler<Double> {
+  private final GammaDistribution gamma;
+
+  public GammaSampler(double k, double theta, SeedFactory seedFactory) {
+    gamma = new GammaDistribution(k, theta);
+    gamma.reseedRandomGenerator(seedFactory.getNextSeed());
+  }
+
+  @Override
+  public Double sample() throws Exception {
+    return gamma.sample();
+  }
+
+}

http://git-wip-us.apache.org/repos/asf/bigtop/blob/ad88e741/bigtop-data-generators/bigtop-weatherman/README.md
----------------------------------------------------------------------
diff --git a/bigtop-data-generators/bigtop-weatherman/README.md b/bigtop-data-generators/bigtop-weatherman/README.md
new file mode 100644
index 0000000..608496c
--- /dev/null
+++ b/bigtop-data-generators/bigtop-weatherman/README.md
@@ -0,0 +1,36 @@
+<!--
+Licensed to the Apache Software Foundation (ASF) under one or more
+contributor license agreements.  See the NOTICE file distributed with
+this work for additional information regarding copyright ownership.
+The ASF licenses this file to You under the Apache License, Version 2.0
+(the "License"); you may not use this file except in compliance with
+the License.  You may obtain a copy of the License at
+
+http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+-->
+BigTop Weatherman
+=================
+
+Library for generating weather on a zipcode-by-zipcode basis.
+
+Building and Testing
+--------------------
+This project is part of a multiproject Gradle build.  Please see directions in the parent directory for build instructions.
+
+Running
+-------
+BigTop Weatherman is primarily designed for consumption as a library but it also provides a CLI interface in the jar.  The jar can be executed as follows:
+
+    $ java -jar build/libs/bigtop-weatherman-1.1.0-SNAPSHOT.jar outputDir zipcode simulationLength startDate seed
+
+For example, simulating the weather in South Bend, IN 46617:
+
+    $ java -jar build/libs/bigtop-weatherman-1.1.0-SNAPSHOT.jar output/ 46617 365 2014-04-05 1234
+
+will produce a file `output/46617.txt` containing simulated daily temperature, wind chill, wind speed, total precipitation, rainfall, and snowfall readings.

http://git-wip-us.apache.org/repos/asf/bigtop/blob/ad88e741/bigtop-data-generators/bigtop-weatherman/build.gradle
----------------------------------------------------------------------
diff --git a/bigtop-data-generators/bigtop-weatherman/build.gradle b/bigtop-data-generators/bigtop-weatherman/build.gradle
new file mode 100644
index 0000000..a2835f7
--- /dev/null
+++ b/bigtop-data-generators/bigtop-weatherman/build.gradle
@@ -0,0 +1,37 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+jar {
+  from {
+    configurations.runtime.collect {
+      it.isDirectory() ? it : zipTree(it)
+    }
+  }
+
+  manifest {
+    attributes 'Title': 'BigTop Weatherman', 'Version': version
+    attributes 'Main-Class': 'org.apache.bigtop.datagenerators.weatherman.internal.Driver'
+  }
+}
+
+dependencies {
+  compile 'com.google.guava:guava:18.0'
+  compile 'org.apache.commons:commons-lang3:3.4'
+  compile 'joda-time:joda-time:2.8.2'
+  compile project(':bigtop-samplers')
+  compile project(':bigtop-location-data')
+
+  testCompile 'junit:junit:4.+'
+}

http://git-wip-us.apache.org/repos/asf/bigtop/blob/ad88e741/bigtop-data-generators/bigtop-weatherman/settings.gradle
----------------------------------------------------------------------
diff --git a/bigtop-data-generators/bigtop-weatherman/settings.gradle b/bigtop-data-generators/bigtop-weatherman/settings.gradle
new file mode 100644
index 0000000..dbc292c
--- /dev/null
+++ b/bigtop-data-generators/bigtop-weatherman/settings.gradle
@@ -0,0 +1,16 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+rootProject.name = "bigtop-weatherman"

http://git-wip-us.apache.org/repos/asf/bigtop/blob/ad88e741/bigtop-data-generators/bigtop-weatherman/src/main/java/org/apache/bigtop/datagenerators/weatherman/WeatherGenerator.java
----------------------------------------------------------------------
diff --git a/bigtop-data-generators/bigtop-weatherman/src/main/java/org/apache/bigtop/datagenerators/weatherman/WeatherGenerator.java b/bigtop-data-generators/bigtop-weatherman/src/main/java/org/apache/bigtop/datagenerators/weatherman/WeatherGenerator.java
new file mode 100644
index 0000000..0601c14
--- /dev/null
+++ b/bigtop-data-generators/bigtop-weatherman/src/main/java/org/apache/bigtop/datagenerators/weatherman/WeatherGenerator.java
@@ -0,0 +1,67 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.bigtop.datagenerators.weatherman;
+
+import java.util.List;
+
+import org.apache.bigtop.datagenerators.locations.Location;
+import org.apache.bigtop.datagenerators.samplers.SeedFactory;
+import org.apache.bigtop.datagenerators.samplers.samplers.Sampler;
+import org.apache.bigtop.datagenerators.weatherman.internal.WeatherParametersReader;
+import org.apache.bigtop.datagenerators.weatherman.internal.WeatherSamplerBuilder;
+import org.apache.bigtop.datagenerators.weatherman.internal.WeatherStationParameters;
+import org.joda.time.LocalDate;
+
+/**
+ * Generates daily weather records for a given location.
+ *
+ * @author rnowling
+ *
+ */
+public class WeatherGenerator implements Sampler<WeatherRecord> {
+  private final Sampler<WeatherRecord> weatherSampler;
+
+  /**
+   * Initializes the generator.
+   *
+   * @param startDate
+   *          - first day of simulation
+   * @param location
+   *          - location to simulate weather for
+   * @param seedFactory
+   *          - for initializing seeds
+   * @throws Exception
+   *           - if weather parameter data cannot be read
+   */
+  public WeatherGenerator(LocalDate startDate, Location location,
+          SeedFactory seedFactory) throws Exception {
+    List<WeatherStationParameters> parameters = new WeatherParametersReader()
+            .readParameters();
+    WeatherSamplerBuilder builder = new WeatherSamplerBuilder(parameters,
+            location, startDate, seedFactory);
+    weatherSampler = builder.build();
+  }
+
+  /**
+   * Generates a daily WeatherRecord for consecutive days, one day per call.
+   *
+   * @return Weather data for a single day
+   * @throws Exception
+   */
+  public WeatherRecord sample() throws Exception {
+    return weatherSampler.sample();
+  }
+}

http://git-wip-us.apache.org/repos/asf/bigtop/blob/ad88e741/bigtop-data-generators/bigtop-weatherman/src/main/java/org/apache/bigtop/datagenerators/weatherman/WeatherRecord.java
----------------------------------------------------------------------
diff --git a/bigtop-data-generators/bigtop-weatherman/src/main/java/org/apache/bigtop/datagenerators/weatherman/WeatherRecord.java b/bigtop-data-generators/bigtop-weatherman/src/main/java/org/apache/bigtop/datagenerators/weatherman/WeatherRecord.java
new file mode 100644
index 0000000..04d2eaa
--- /dev/null
+++ b/bigtop-data-generators/bigtop-weatherman/src/main/java/org/apache/bigtop/datagenerators/weatherman/WeatherRecord.java
@@ -0,0 +1,77 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.bigtop.datagenerators.weatherman;
+
+import org.joda.time.LocalDate;
+
+/**
+ * Weather data for a single day and location
+ *
+ * @author rnowling
+ *
+ */
+public interface WeatherRecord {
+
+  /**
+   * Day
+   *
+   * @return date
+   */
+  public abstract LocalDate getDate();
+
+  /**
+   * Average daily temperature in units of Fahrenheit
+   *
+   * @return temperature
+   */
+  public abstract double getTemperature();
+
+  /**
+   * Daily total precipitation measured in millimeters
+   *
+   * @return total precipitation
+   */
+  public abstract double getPrecipitation();
+
+  /**
+   * Daily average wind speed in meters per second.
+   *
+   * @return average wind speed
+   */
+  public abstract double getWindSpeed();
+
+  /**
+   * Daily average wind chill in Fahrenheit
+   *
+   * @return average wind chill
+   */
+  public abstract double getWindChill();
+
+  /**
+   * Daily total rainfall in millimeters
+   *
+   * @return total rainfall
+   */
+  public abstract double getRainFall();
+
+  /**
+   * Daily total snowfall in centimeters
+   *
+   * @return total snowfall
+   */
+  public abstract double getSnowFall();
+
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/bigtop/blob/ad88e741/bigtop-data-generators/bigtop-weatherman/src/main/java/org/apache/bigtop/datagenerators/weatherman/internal/Driver.java
----------------------------------------------------------------------
diff --git a/bigtop-data-generators/bigtop-weatherman/src/main/java/org/apache/bigtop/datagenerators/weatherman/internal/Driver.java b/bigtop-data-generators/bigtop-weatherman/src/main/java/org/apache/bigtop/datagenerators/weatherman/internal/Driver.java
new file mode 100644
index 0000000..0bd8c41
--- /dev/null
+++ b/bigtop-data-generators/bigtop-weatherman/src/main/java/org/apache/bigtop/datagenerators/weatherman/internal/Driver.java
@@ -0,0 +1,194 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.bigtop.datagenerators.weatherman.internal;
+
+import java.io.BufferedWriter;
+import java.io.File;
+import java.io.FileWriter;
+import java.io.Writer;
+import java.util.List;
+import java.util.Random;
+
+import org.apache.bigtop.datagenerators.locations.Location;
+import org.apache.bigtop.datagenerators.locations.LocationReader;
+import org.apache.bigtop.datagenerators.samplers.SeedFactory;
+import org.apache.bigtop.datagenerators.weatherman.WeatherGenerator;
+import org.apache.bigtop.datagenerators.weatherman.WeatherRecord;
+import org.joda.time.DateTime;
+import org.joda.time.LocalDate;
+import org.joda.time.format.DateTimeFormat;
+import org.joda.time.format.DateTimeFormatter;
+
+import com.google.common.collect.Lists;
+
+public class Driver {
+  List<Location> locations;
+  Location location;
+  int simulationLength;
+  LocalDate startDate;
+  SeedFactory seedFactory;
+  File outputDir;
+
+  static final int NPARAMS = 5;
+
+  private void printUsage() {
+    String usage = "BigPetStore Data Generator\n" + "\n"
+            + "Usage: java -jar bigpetstore-weather-generator.java outputDir zipcode simulationLength startDate [seed]\n"
+            + "\n" + "outputDir - (string) directory to write files\n"
+            + "zipcode - (string) location zipcode\n"
+            + "simulationLength - (int) number of days to simulate\n"
+            + "startDate - (string) simulation start date in YYYY-MM-DD format\n"
+            + "seed - (long) seed for RNG. If not given, one is randomly generated.\n";
+
+    System.out.println(usage);
+  }
+
+  private Location findLocation(String zipcode) {
+    for (Location location : locations) {
+      if (location.getZipcode().equals(zipcode))
+        return location;
+    }
+
+    return null;
+  }
+
+  /**
+   * Returns local date from string in YYYY-MM-DD format
+   *
+   * @param text
+   * @return
+   */
+  private LocalDate parseDate(String text) {
+    DateTimeFormatter dtFormatter = DateTimeFormat.forPattern("yyyy-MM-dd");
+    DateTime dt = dtFormatter.parseDateTime(text);
+
+    return dt.toLocalDate();
+  }
+
+  public void parseArgs(String[] args) {
+    if (args.length != NPARAMS && args.length != (NPARAMS - 1)) {
+      printUsage();
+      System.exit(1);
+    }
+
+    int i = -1;
+
+    outputDir = new File(args[++i]);
+    if (!outputDir.exists()) {
+      System.err.println("Given path (" + args[i] + ") does not exist.\n");
+      printUsage();
+      System.exit(1);
+    }
+
+    if (!outputDir.isDirectory()) {
+      System.err.println("Given path (" + args[i] + ") is not a directory.\n");
+      printUsage();
+      System.exit(1);
+    }
+
+    location = findLocation(args[++i]);
+    if (location == null) {
+      System.err.println(
+              "No location found for given zipcode \"" + args[i] + "\"");
+      printUsage();
+      System.exit(1);
+    }
+
+    try {
+      simulationLength = Integer.parseInt(args[++i]);
+    } catch (Exception e) {
+      System.err.println("Unable to parse '" + args[i]
+              + "' as an int for simulationLength.\n");
+      printUsage();
+      System.exit(1);
+    }
+
+    try {
+      startDate = parseDate(args[++i]);
+    } catch (Exception e) {
+      System.err.println("Unable to parse '" + args[i]
+              + "'. Expected string in 'YYYY-MM-DD' format.\n");
+      printUsage();
+      System.exit(1);
+    }
+
+    long seed = (new Random()).nextLong();
+    if (args.length == NPARAMS) {
+      try {
+        seed = Long.parseLong(args[++i]);
+      } catch (Exception e) {
+        System.err.println(
+                "Unable to parse '" + args[i] + "' as a long for the seed.\n");
+        printUsage();
+        System.exit(1);
+      }
+    }
+
+    seedFactory = new SeedFactory(seed);
+  }
+
+  private void writeWeather(Location location, List<WeatherRecord> trajectory)
+          throws Exception {
+    File outputFile = new File(outputDir.toString() + File.separator
+            + location.getZipcode() + ".txt");
+    Writer output = new BufferedWriter(new FileWriter(outputFile));
+
+    output.write(
+            "date,city,state,zipcode,temperature,windchill,windspeed,precipitation,rainfall,snowfall\n");
+    for (WeatherRecord weather : trajectory) {
+      String record = weather.getDate() + ",";
+      record += location.getCity() + ",";
+      record += location.getState() + ",";
+      record += location.getZipcode() + ",";
+      record += weather.getTemperature() + ",";
+      record += weather.getWindChill() + ",";
+      record += weather.getWindSpeed() + ",";
+      record += weather.getPrecipitation() + ",";
+      record += weather.getRainFall() + ",";
+      record += weather.getSnowFall() + "\n";
+
+      output.write(record);
+    }
+
+    output.close();
+  }
+
+  public void run(String[] args) throws Exception {
+    locations = new LocationReader().readData();
+
+    parseArgs(args);
+
+    WeatherGenerator generator = new WeatherGenerator(startDate, location,
+            seedFactory);
+
+    LocalDate date = startDate;
+    LocalDate endDate = startDate.plusDays(simulationLength);
+    List<WeatherRecord> trajectory = Lists.newArrayList();
+
+    while (date.isBefore(endDate)) {
+      WeatherRecord weather = generator.sample();
+      trajectory.add(weather);
+      date = weather.getDate();
+    }
+
+    writeWeather(location, trajectory);
+  }
+
+  public static void main(String[] args) throws Exception {
+    Driver driver = new Driver();
+    driver.run(args);
+  }
+}

http://git-wip-us.apache.org/repos/asf/bigtop/blob/ad88e741/bigtop-data-generators/bigtop-weatherman/src/main/java/org/apache/bigtop/datagenerators/weatherman/internal/PrecipitationSampler.java
----------------------------------------------------------------------
diff --git a/bigtop-data-generators/bigtop-weatherman/src/main/java/org/apache/bigtop/datagenerators/weatherman/internal/PrecipitationSampler.java b/bigtop-data-generators/bigtop-weatherman/src/main/java/org/apache/bigtop/datagenerators/weatherman/internal/PrecipitationSampler.java
new file mode 100644
index 0000000..118e245
--- /dev/null
+++ b/bigtop-data-generators/bigtop-weatherman/src/main/java/org/apache/bigtop/datagenerators/weatherman/internal/PrecipitationSampler.java
@@ -0,0 +1,51 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.bigtop.datagenerators.weatherman.internal;
+
+import org.apache.bigtop.datagenerators.samplers.SeedFactory;
+import org.apache.bigtop.datagenerators.samplers.samplers.ConditionalSampler;
+import org.apache.bigtop.datagenerators.samplers.samplers.ExponentialSampler;
+import org.apache.bigtop.datagenerators.samplers.samplers.Sampler;
+
+public class PrecipitationSampler implements
+        ConditionalSampler<WeatherRecordBuilder, WeatherRecordBuilder> {
+  private final Sampler<Double> precipitationSampler;
+
+  public PrecipitationSampler(double averagePrecipitation,
+          SeedFactory seedFactory) {
+    precipitationSampler = new ExponentialSampler(1.0 / averagePrecipitation,
+            seedFactory);
+  }
+
+  public WeatherRecordBuilder sample(WeatherRecordBuilder record)
+          throws Exception {
+    double temp = record.getTemperature();
+    double precipitation = precipitationSampler.sample();
+    record.setPrecipitation(precipitation);
+
+    double fractionRain = 1.0
+            / (1.0 + Math.exp(-WeatherConstants.PRECIPITATION_A
+                    * (temp - WeatherConstants.PRECIPITATION_B)));
+
+    double rainfall = fractionRain * precipitation;
+    double snowfall = WeatherConstants.PRECIPITATION_TO_SNOWFALL
+            * (1.0 - fractionRain) * precipitation;
+    record.setRainFall(rainfall);
+    record.setSnowFall(snowfall);
+
+    return record;
+  }
+}

http://git-wip-us.apache.org/repos/asf/bigtop/blob/ad88e741/bigtop-data-generators/bigtop-weatherman/src/main/java/org/apache/bigtop/datagenerators/weatherman/internal/TemperatureSampler.java
----------------------------------------------------------------------
diff --git a/bigtop-data-generators/bigtop-weatherman/src/main/java/org/apache/bigtop/datagenerators/weatherman/internal/TemperatureSampler.java b/bigtop-data-generators/bigtop-weatherman/src/main/java/org/apache/bigtop/datagenerators/weatherman/internal/TemperatureSampler.java
new file mode 100644
index 0000000..b64b6e0
--- /dev/null
+++ b/bigtop-data-generators/bigtop-weatherman/src/main/java/org/apache/bigtop/datagenerators/weatherman/internal/TemperatureSampler.java
@@ -0,0 +1,71 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.bigtop.datagenerators.weatherman.internal;
+
+import org.apache.bigtop.datagenerators.samplers.SeedFactory;
+import org.apache.bigtop.datagenerators.samplers.samplers.ConditionalSampler;
+import org.apache.bigtop.datagenerators.samplers.samplers.GaussianSampler;
+import org.apache.bigtop.datagenerators.samplers.samplers.Sampler;
+import org.joda.time.LocalDate;
+
+public class TemperatureSampler implements
+        ConditionalSampler<WeatherRecordBuilder, WeatherRecordBuilder> {
+  final private Sampler<Double> R;
+  final private double average;
+  final private double coeffReal;
+  final private double coeffImag;
+
+  private LocalDate date;
+  private double noise;
+
+  public TemperatureSampler(LocalDate startDate, double tempAverage,
+          double tempRealCoeff, double tempImagCoeff, double tempSigma,
+          SeedFactory seedFactory) {
+    R = new GaussianSampler(0.0, tempSigma, seedFactory);
+
+    this.average = tempAverage;
+    this.coeffReal = tempRealCoeff;
+    this.coeffImag = tempImagCoeff;
+
+    date = startDate;
+    noise = 0.0;
+  }
+
+  public WeatherRecordBuilder sample(WeatherRecordBuilder weatherRecord)
+          throws Exception {
+    double temp = 0.0;
+    while (date.isEqual(weatherRecord.getDate())
+            || date.isBefore(weatherRecord.getDate())) {
+      double dayOfYear = date.getDayOfYear();
+      temp = average
+              + coeffReal * Math.cos(-2.0 * Math.PI * dayOfYear
+                      / WeatherConstants.TEMPERATURE_PERIOD)
+              + coeffImag * Math.sin(-2.0 * Math.PI * dayOfYear
+                      / WeatherConstants.TEMPERATURE_PERIOD)
+              + noise;
+
+      noise += -1.0 * noise * WeatherConstants.TEMPERATURE_GAMMA
+              * WeatherConstants.WEATHER_TIMESTEP
+              + Math.sqrt(WeatherConstants.WEATHER_TIMESTEP) * R.sample();
+
+      date = date.plusDays(WeatherConstants.WEATHER_TIMESTEP);
+    }
+
+    weatherRecord.setTemperature(temp);
+
+    return weatherRecord;
+  }
+}

http://git-wip-us.apache.org/repos/asf/bigtop/blob/ad88e741/bigtop-data-generators/bigtop-weatherman/src/main/java/org/apache/bigtop/datagenerators/weatherman/internal/WeatherConstants.java
----------------------------------------------------------------------
diff --git a/bigtop-data-generators/bigtop-weatherman/src/main/java/org/apache/bigtop/datagenerators/weatherman/internal/WeatherConstants.java b/bigtop-data-generators/bigtop-weatherman/src/main/java/org/apache/bigtop/datagenerators/weatherman/internal/WeatherConstants.java
new file mode 100644
index 0000000..8346160
--- /dev/null
+++ b/bigtop-data-generators/bigtop-weatherman/src/main/java/org/apache/bigtop/datagenerators/weatherman/internal/WeatherConstants.java
@@ -0,0 +1,53 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.bigtop.datagenerators.weatherman.internal;
+
+import java.io.File;
+
+public class WeatherConstants {
+  public static final File WEATHER_PARAMETERS_FILE = new File(
+          "weather_parameters.csv");
+
+  public static final double TEMPERATURE_GAMMA = 0.5; // 2 / day
+  public static final int WEATHER_TIMESTEP = 1; // days
+  public static final double TEMPERATURE_PERIOD = 365.0; // days
+
+  public static final double PRECIPITATION_A = 0.2;
+  public static final double PRECIPITATION_B = 27.0;
+  public static final double PRECIPITATION_TO_SNOWFALL = 10.0;
+
+  public static final double WIND_CHILL_PROBABILITY_A = 0.8;
+  public static final double WIND_CHILL_PROBABILITY_B = 0.5;
+  public static final double WIND_CHILL_PROBABILITY_C = 10.0; // F
+  public static final double WIND_CHILL_PROBABILITY_D = 0.2;
+
+  public static final double WIND_SPEED_PROBABILITY_A = -0.5;
+  public static final double WIND_SPEED_PROBABILITY_B = 0.8;
+  public static final double WIND_SPEED_PROBABILITY_C = 17.5; // mph
+  public static final double WIND_SPEED_PROBABILITY_D = 1.0;
+
+  public static final double SNOWFALL_PROBABILITY_A = -0.8;
+  public static final double SNOWFALL_PROBABILITY_B = 10.0;
+  public static final double SNOWFALL_PROBABILITY_C = 0.75; // in
+  public static final double SNOWFALL_PROBABILITY_D = 1.0;
+
+  public static final double RAINFALL_PROBABILITY_A = -0.6;
+  public static final double RAINFALL_PROBABILITY_B = 7.5;
+  public static final double RAINFALL_PROBABILITY_C = 0.75; // in
+  public static final double RAINFALL_PROBABILITY_D = 1.0;
+
+  public static final double M_PER_S_TO_MPH = 2.23694;
+}

http://git-wip-us.apache.org/repos/asf/bigtop/blob/ad88e741/bigtop-data-generators/bigtop-weatherman/src/main/java/org/apache/bigtop/datagenerators/weatherman/internal/WeatherParametersReader.java
----------------------------------------------------------------------
diff --git a/bigtop-data-generators/bigtop-weatherman/src/main/java/org/apache/bigtop/datagenerators/weatherman/internal/WeatherParametersReader.java b/bigtop-data-generators/bigtop-weatherman/src/main/java/org/apache/bigtop/datagenerators/weatherman/internal/WeatherParametersReader.java
new file mode 100644
index 0000000..e8097d6
--- /dev/null
+++ b/bigtop-data-generators/bigtop-weatherman/src/main/java/org/apache/bigtop/datagenerators/weatherman/internal/WeatherParametersReader.java
@@ -0,0 +1,80 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.bigtop.datagenerators.weatherman.internal;
+
+import java.io.BufferedInputStream;
+import java.io.File;
+import java.io.InputStream;
+import java.util.List;
+import java.util.Scanner;
+
+import org.apache.commons.lang3.tuple.Pair;
+
+import com.google.common.collect.Lists;
+
+public class WeatherParametersReader {
+  private InputStream getResource(File filename) throws Exception {
+    InputStream stream = getClass()
+            .getResourceAsStream("/input_data/" + filename);
+    return new BufferedInputStream(stream);
+  }
+
+  private WeatherStationParameters parseLine(String line) {
+    line = line.trim();
+    String[] cols = line.split(",");
+
+    String WBAN = cols[0];
+    String city = cols[1];
+    String state = cols[2];
+    double latitude = Double.parseDouble(cols[3]);
+    double longitude = Double.parseDouble(cols[4]);
+    Pair<Double, Double> coordinates = Pair.of(latitude, longitude);
+    double temperatureAverage = Double.parseDouble(cols[5]);
+    double temperatureRealCoeff = Double.parseDouble(cols[6]);
+    double temperatureImagCoeff = Double.parseDouble(cols[7]);
+    double temperatureDerivStd = Double.parseDouble(cols[8]);
+    double precipitationAverage = Double.parseDouble(cols[9]);
+    double windSpeedRealCoeff = Double.parseDouble(cols[10]);
+    double windSpeedImagCoeff = Double.parseDouble(cols[11]);
+    double windSpeedK = Double.parseDouble(cols[12]);
+    double windSpeedTheta = Double.parseDouble(cols[13]);
+
+    return new WeatherStationParameters(WBAN, city, state, coordinates,
+            temperatureAverage, temperatureRealCoeff, temperatureImagCoeff,
+            temperatureDerivStd, precipitationAverage, windSpeedRealCoeff,
+            windSpeedImagCoeff, windSpeedK, windSpeedTheta);
+  }
+
+  public List<WeatherStationParameters> readParameters() throws Exception {
+    InputStream inputStream = getResource(
+            WeatherConstants.WEATHER_PARAMETERS_FILE);
+    Scanner scanner = new Scanner(inputStream);
+
+    // skip header
+    scanner.nextLine();
+
+    List<WeatherStationParameters> parameterList = Lists.newArrayList();
+    while (scanner.hasNextLine()) {
+      String line = scanner.nextLine();
+      WeatherStationParameters parameters = parseLine(line);
+      parameterList.add(parameters);
+    }
+
+    scanner.close();
+
+    return parameterList;
+  }
+}

http://git-wip-us.apache.org/repos/asf/bigtop/blob/ad88e741/bigtop-data-generators/bigtop-weatherman/src/main/java/org/apache/bigtop/datagenerators/weatherman/internal/WeatherRecordBuilder.java
----------------------------------------------------------------------
diff --git a/bigtop-data-generators/bigtop-weatherman/src/main/java/org/apache/bigtop/datagenerators/weatherman/internal/WeatherRecordBuilder.java b/bigtop-data-generators/bigtop-weatherman/src/main/java/org/apache/bigtop/datagenerators/weatherman/internal/WeatherRecordBuilder.java
new file mode 100644
index 0000000..393414e
--- /dev/null
+++ b/bigtop-data-generators/bigtop-weatherman/src/main/java/org/apache/bigtop/datagenerators/weatherman/internal/WeatherRecordBuilder.java
@@ -0,0 +1,163 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.bigtop.datagenerators.weatherman.internal;
+
+import java.io.Serializable;
+
+import org.apache.bigtop.datagenerators.weatherman.WeatherRecord;
+import org.joda.time.LocalDate;
+
+public class WeatherRecordBuilder implements Serializable, WeatherRecord {
+  private static final long serialVersionUID = -6397575341624071821L;
+
+  private LocalDate date;
+  private Double temperature;
+  private Double precipitation;
+  private Double windSpeed;
+  private Double windChill;
+  private Double rainFall;
+  private Double snowFall;
+
+  public WeatherRecordBuilder(LocalDate date) {
+    this.date = date;
+  }
+
+  public WeatherRecordBuilder(LocalDate date, double temperature,
+          double precipitation, double windSpeed, double windChill,
+          double rainFall, double snowFall) {
+    this.date = date;
+    this.temperature = temperature;
+    this.precipitation = precipitation;
+    this.windSpeed = windSpeed;
+    this.windChill = windChill;
+    this.rainFall = rainFall;
+    this.snowFall = snowFall;
+  }
+
+  /*
+   * (non-Javadoc)
+   *
+   * @see org.apache.bigtop.bigpetstore.datagenerator.generators.weather.
+   * WeatherRecord#getDate()
+   */
+  @Override
+  public LocalDate getDate() {
+    return date;
+  }
+
+  /*
+   * (non-Javadoc)
+   *
+   * @see org.apache.bigtop.bigpetstore.datagenerator.generators.weather.
+   * WeatherRecord#getTemperature()
+   */
+  @Override
+  public double getTemperature() {
+    return temperature;
+  }
+
+  /*
+   * (non-Javadoc)
+   *
+   * @see org.apache.bigtop.bigpetstore.datagenerator.generators.weather.
+   * WeatherRecord#getPrecipitation()
+   */
+  @Override
+  public double getPrecipitation() {
+    return precipitation;
+  }
+
+  /*
+   * (non-Javadoc)
+   *
+   * @see org.apache.bigtop.bigpetstore.datagenerator.generators.weather.
+   * WeatherRecord#getWindSpeed()
+   */
+  @Override
+  public double getWindSpeed() {
+    return windSpeed;
+  }
+
+  /*
+   * (non-Javadoc)
+   *
+   * @see org.apache.bigtop.bigpetstore.datagenerator.generators.weather.
+   * WeatherRecord#getWindChill()
+   */
+  @Override
+  public double getWindChill() {
+    return windChill;
+  }
+
+  /*
+   * (non-Javadoc)
+   *
+   * @see org.apache.bigtop.bigpetstore.datagenerator.generators.weather.
+   * WeatherRecord#getRainFall()
+   */
+  @Override
+  public double getRainFall() {
+    return rainFall;
+  }
+
+  /*
+   * (non-Javadoc)
+   *
+   * @see org.apache.bigtop.bigpetstore.datagenerator.generators.weather.
+   * WeatherRecord#getSnowFall()
+   */
+  @Override
+  public double getSnowFall() {
+    return snowFall;
+  }
+
+  public WeatherRecord build() {
+    if (temperature == null || precipitation == null || windSpeed == null
+            || windChill == null || rainFall == null || snowFall == null) {
+      throw new IllegalStateException("Not all fields have been initialized.");
+    }
+
+    return this;
+  }
+
+  public void setDate(LocalDate date) {
+    this.date = date;
+  }
+
+  public void setTemperature(Double temperature) {
+    this.temperature = temperature;
+  }
+
+  public void setPrecipitation(Double precipitation) {
+    this.precipitation = precipitation;
+  }
+
+  public void setWindSpeed(Double windSpeed) {
+    this.windSpeed = windSpeed;
+  }
+
+  public void setWindChill(Double windChill) {
+    this.windChill = windChill;
+  }
+
+  public void setRainFall(Double rainFall) {
+    this.rainFall = rainFall;
+  }
+
+  public void setSnowFall(Double snowFall) {
+    this.snowFall = snowFall;
+  }
+}

http://git-wip-us.apache.org/repos/asf/bigtop/blob/ad88e741/bigtop-data-generators/bigtop-weatherman/src/main/java/org/apache/bigtop/datagenerators/weatherman/internal/WeatherSampler.java
----------------------------------------------------------------------
diff --git a/bigtop-data-generators/bigtop-weatherman/src/main/java/org/apache/bigtop/datagenerators/weatherman/internal/WeatherSampler.java b/bigtop-data-generators/bigtop-weatherman/src/main/java/org/apache/bigtop/datagenerators/weatherman/internal/WeatherSampler.java
new file mode 100644
index 0000000..3885caa
--- /dev/null
+++ b/bigtop-data-generators/bigtop-weatherman/src/main/java/org/apache/bigtop/datagenerators/weatherman/internal/WeatherSampler.java
@@ -0,0 +1,50 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.bigtop.datagenerators.weatherman.internal;
+
+import org.apache.bigtop.datagenerators.samplers.samplers.ConditionalSampler;
+import org.apache.bigtop.datagenerators.samplers.samplers.Sampler;
+import org.apache.bigtop.datagenerators.weatherman.WeatherRecord;
+import org.joda.time.LocalDate;
+
+public class WeatherSampler implements Sampler<WeatherRecord> {
+  private final ConditionalSampler<WeatherRecordBuilder, WeatherRecordBuilder> tempSampler;
+  private final ConditionalSampler<WeatherRecordBuilder, WeatherRecordBuilder> windSpeedSampler;
+  private final ConditionalSampler<WeatherRecordBuilder, WeatherRecordBuilder> precipitationSampler;
+  private LocalDate date;
+
+  public WeatherSampler(LocalDate startDate,
+          ConditionalSampler<WeatherRecordBuilder, WeatherRecordBuilder> tempSampler,
+          ConditionalSampler<WeatherRecordBuilder, WeatherRecordBuilder> windSpeedSampler,
+          ConditionalSampler<WeatherRecordBuilder, WeatherRecordBuilder> precipitationSampler) {
+    this.tempSampler = tempSampler;
+    this.windSpeedSampler = windSpeedSampler;
+    this.precipitationSampler = precipitationSampler;
+    date = startDate;
+  }
+
+  public WeatherRecord sample() throws Exception {
+    WeatherRecordBuilder weatherRecord = new WeatherRecordBuilder(date);
+
+    weatherRecord = tempSampler.sample(weatherRecord);
+    weatherRecord = windSpeedSampler.sample(weatherRecord);
+    weatherRecord = precipitationSampler.sample(weatherRecord);
+
+    date = date.plusDays(WeatherConstants.WEATHER_TIMESTEP);
+
+    return weatherRecord.build();
+  }
+}

http://git-wip-us.apache.org/repos/asf/bigtop/blob/ad88e741/bigtop-data-generators/bigtop-weatherman/src/main/java/org/apache/bigtop/datagenerators/weatherman/internal/WeatherSamplerBuilder.java
----------------------------------------------------------------------
diff --git a/bigtop-data-generators/bigtop-weatherman/src/main/java/org/apache/bigtop/datagenerators/weatherman/internal/WeatherSamplerBuilder.java b/bigtop-data-generators/bigtop-weatherman/src/main/java/org/apache/bigtop/datagenerators/weatherman/internal/WeatherSamplerBuilder.java
new file mode 100644
index 0000000..40128ae
--- /dev/null
+++ b/bigtop-data-generators/bigtop-weatherman/src/main/java/org/apache/bigtop/datagenerators/weatherman/internal/WeatherSamplerBuilder.java
@@ -0,0 +1,80 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.bigtop.datagenerators.weatherman.internal;
+
+import java.util.Collection;
+
+import org.apache.bigtop.datagenerators.locations.Location;
+import org.apache.bigtop.datagenerators.samplers.SeedFactory;
+import org.apache.bigtop.datagenerators.samplers.samplers.ConditionalSampler;
+import org.apache.bigtop.datagenerators.samplers.samplers.Sampler;
+import org.apache.bigtop.datagenerators.weatherman.WeatherRecord;
+import org.joda.time.LocalDate;
+
+public class WeatherSamplerBuilder {
+
+  private final WeatherStationParameters parameters;
+  private final SeedFactory seedFactory;
+  private final LocalDate startDate;
+
+  public WeatherSamplerBuilder(
+          Collection<WeatherStationParameters> weatherParameters,
+          Location location, LocalDate startDate, SeedFactory seedFactory) {
+    parameters = findClosest(weatherParameters, location);
+    this.seedFactory = seedFactory;
+    this.startDate = startDate;
+  }
+
+  private WeatherStationParameters findClosest(
+          Collection<WeatherStationParameters> weatherParameters,
+          Location location) {
+    WeatherStationParameters closestStation = null;
+    double minDist = Double.MAX_VALUE;
+
+    for (WeatherStationParameters parameters : weatherParameters) {
+      double dist = location.distance(parameters.getCoordinates());
+      if (dist < minDist) {
+        minDist = dist;
+        closestStation = parameters;
+      }
+    }
+
+    return closestStation;
+  }
+
+  private ConditionalSampler<WeatherRecordBuilder, WeatherRecordBuilder> buildTempSampler() {
+    return new TemperatureSampler(startDate, parameters.getTemperatureAverage(),
+            parameters.getTemperatureRealCoeff(),
+            parameters.getTemperatureImagCoeff(),
+            parameters.getTemperatureDerivStd(), seedFactory);
+  }
+
+  private ConditionalSampler<WeatherRecordBuilder, WeatherRecordBuilder> buildWindSpeedSampler() {
+    return new WindSpeedSampler(parameters.getWindSpeedRealCoeff(),
+            parameters.getWindSpeedImagCoeff(), parameters.getWindSpeedK(),
+            parameters.getWindSpeedTheta(), seedFactory);
+  }
+
+  private ConditionalSampler<WeatherRecordBuilder, WeatherRecordBuilder> buildPrecipitationSampler() {
+    return new PrecipitationSampler(parameters.getPrecipitationAverage(),
+            seedFactory);
+  }
+
+  public Sampler<WeatherRecord> build() {
+    return new WeatherSampler(startDate, buildTempSampler(),
+            buildWindSpeedSampler(), buildPrecipitationSampler());
+  }
+}

http://git-wip-us.apache.org/repos/asf/bigtop/blob/ad88e741/bigtop-data-generators/bigtop-weatherman/src/main/java/org/apache/bigtop/datagenerators/weatherman/internal/WeatherStationParameters.java
----------------------------------------------------------------------
diff --git a/bigtop-data-generators/bigtop-weatherman/src/main/java/org/apache/bigtop/datagenerators/weatherman/internal/WeatherStationParameters.java b/bigtop-data-generators/bigtop-weatherman/src/main/java/org/apache/bigtop/datagenerators/weatherman/internal/WeatherStationParameters.java
new file mode 100644
index 0000000..7edba34
--- /dev/null
+++ b/bigtop-data-generators/bigtop-weatherman/src/main/java/org/apache/bigtop/datagenerators/weatherman/internal/WeatherStationParameters.java
@@ -0,0 +1,110 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.bigtop.datagenerators.weatherman.internal;
+
+import java.io.Serializable;
+
+import org.apache.commons.lang3.tuple.Pair;
+
+public class WeatherStationParameters implements Serializable {
+  private static final long serialVersionUID = -7268791467819627718L;
+
+  private String WBAN;
+  private String city;
+  private String state;
+  private Pair<Double, Double> coordinates;
+  private double temperatureAverage;
+  private double temperatureRealCoeff;
+  private double temperatureImagCoeff;
+  private double temperatureDerivStd;
+  private double precipitationAverage;
+  private double windSpeedRealCoeff;
+  private double windSpeedImagCoeff;
+  private double windSpeedK;
+  private double windSpeedTheta;
+
+  public WeatherStationParameters(String WBAN, String city, String state,
+          Pair<Double, Double> coordinates, double temperatureAverage,
+          double temperatureRealCoeff, double temperatureImagCoeff,
+          double temperatureDerivStd, double precipitationAverage,
+          double windSpeedRealCoeff, double windSpeedImagCoeff,
+          double windSpeedK, double windSpeedTheta) {
+    this.city = city;
+    this.state = state;
+    this.coordinates = coordinates;
+    this.temperatureAverage = temperatureAverage;
+    this.temperatureRealCoeff = temperatureRealCoeff;
+    this.temperatureImagCoeff = temperatureImagCoeff;
+    this.temperatureDerivStd = temperatureDerivStd;
+    this.precipitationAverage = precipitationAverage;
+    this.windSpeedRealCoeff = windSpeedRealCoeff;
+    this.windSpeedImagCoeff = windSpeedImagCoeff;
+    this.windSpeedK = windSpeedK;
+    this.windSpeedTheta = windSpeedTheta;
+  }
+
+  public String getWBAN() {
+    return WBAN;
+  }
+
+  public String getCity() {
+    return city;
+  }
+
+  public String getState() {
+    return state;
+  }
+
+  public Pair<Double, Double> getCoordinates() {
+    return coordinates;
+  }
+
+  public double getTemperatureAverage() {
+    return temperatureAverage;
+  }
+
+  public double getTemperatureRealCoeff() {
+    return temperatureRealCoeff;
+  }
+
+  public double getTemperatureImagCoeff() {
+    return temperatureImagCoeff;
+  }
+
+  public double getTemperatureDerivStd() {
+    return temperatureDerivStd;
+  }
+
+  public double getPrecipitationAverage() {
+    return precipitationAverage;
+  }
+
+  public double getWindSpeedRealCoeff() {
+    return windSpeedRealCoeff;
+  }
+
+  public double getWindSpeedImagCoeff() {
+    return windSpeedImagCoeff;
+  }
+
+  public double getWindSpeedK() {
+    return windSpeedK;
+  }
+
+  public double getWindSpeedTheta() {
+    return windSpeedTheta;
+  }
+}

http://git-wip-us.apache.org/repos/asf/bigtop/blob/ad88e741/bigtop-data-generators/bigtop-weatherman/src/main/java/org/apache/bigtop/datagenerators/weatherman/internal/WindSpeedSampler.java
----------------------------------------------------------------------
diff --git a/bigtop-data-generators/bigtop-weatherman/src/main/java/org/apache/bigtop/datagenerators/weatherman/internal/WindSpeedSampler.java b/bigtop-data-generators/bigtop-weatherman/src/main/java/org/apache/bigtop/datagenerators/weatherman/internal/WindSpeedSampler.java
new file mode 100644
index 0000000..c445432
--- /dev/null
+++ b/bigtop-data-generators/bigtop-weatherman/src/main/java/org/apache/bigtop/datagenerators/weatherman/internal/WindSpeedSampler.java
@@ -0,0 +1,74 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.bigtop.datagenerators.weatherman.internal;
+
+import org.apache.bigtop.datagenerators.samplers.SeedFactory;
+import org.apache.bigtop.datagenerators.samplers.samplers.ConditionalSampler;
+import org.apache.bigtop.datagenerators.samplers.samplers.GammaSampler;
+import org.apache.bigtop.datagenerators.samplers.samplers.Sampler;
+
+public class WindSpeedSampler implements
+        ConditionalSampler<WeatherRecordBuilder, WeatherRecordBuilder> {
+  private final double coeffReal;
+  private final double coeffImag;
+  private final Sampler<Double> gamma;
+
+  public WindSpeedSampler(double windSpeedRealCoeff, double windSpeedImagCoeff,
+          double windSpeedK, double windSpeedTheta, SeedFactory seedFactory) {
+    coeffReal = windSpeedRealCoeff;
+    coeffImag = windSpeedImagCoeff;
+
+    gamma = new GammaSampler(windSpeedK, windSpeedTheta, seedFactory);
+
+  }
+
+  /**
+   *
+   * @param temp
+   *          - given in Fahrenheit
+   * @param windSpeed
+   *          - given in MPH
+   * @return
+   */
+  private Double windChill(double temp, double windSpeed) {
+    double v_16 = Math.pow(windSpeed, 0.16);
+    double windChill = 35.74 + 0.6215 * temp - 35.74 * v_16
+            + 0.4275 * temp * v_16;
+
+    return windChill;
+  }
+
+  public WeatherRecordBuilder sample(WeatherRecordBuilder weatherRecord)
+          throws Exception {
+
+    double dayOfYear = weatherRecord.getDate().getDayOfYear();
+    // meters/second
+    double windSpeed = Math.max(0.0,
+            coeffReal
+                    * Math.cos(-2.0 * Math.PI * dayOfYear
+                            / WeatherConstants.TEMPERATURE_PERIOD)
+            + coeffImag * Math.sin(-2.0 * Math.PI * dayOfYear
+                    / WeatherConstants.TEMPERATURE_PERIOD) + gamma.sample());
+
+    double windChill = windChill(weatherRecord.getTemperature(),
+            windSpeed * WeatherConstants.M_PER_S_TO_MPH);
+
+    weatherRecord.setWindSpeed(windSpeed);
+    weatherRecord.setWindChill(windChill);
+
+    return weatherRecord;
+  }
+}