Last active
November 30, 2015 03:44
-
-
Save c-johnson/7a1a292d224983783518 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| <!doctype html> | |
| <html> | |
| <head> | |
| <meta charset="utf-8"> | |
| <title>California Rainfall</title> | |
| <style> | |
| .subunit-California { | |
| fill: #ddc; | |
| stroke: red; } | |
| .subunit { | |
| fill: none; | |
| stroke: #999; | |
| stroke-size: 1px; } | |
| .voronoi { | |
| fill: none; | |
| fill-opacity: 0.5; | |
| stroke: white; | |
| stroke-width: .5px; } | |
| </style> | |
| </head> | |
| <body> | |
| <script src="//code.jquery.com/jquery-1.11.3.min.js"></script> | |
| <script src="//d3js.org/d3.v3.min.js"></script> | |
| <script src="script.js"></script> | |
| </body> | |
| </html> |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| var GeoFeature, RainThing, thing; | |
| window.noop = function() {}; | |
| window.polygon = function(d) { | |
| return "M" + d.border.join("L") + "Z"; | |
| }; | |
| RainThing = (function() { | |
| function RainThing() { | |
| this.width = 960; | |
| this.height = 1160; | |
| this.californication(); | |
| } | |
| RainThing.prototype.makeDisplay = function(type) { | |
| var display; | |
| display = d3.select("body").append(type).attr("width", this.width).attr("height", this.height); | |
| return display; | |
| }; | |
| RainThing.prototype.makePoint = function(id, coord) { | |
| return { | |
| "type": "Feature", | |
| "properties": { | |
| "GEO_ID": "0400000US06", | |
| "STATE": "06", | |
| "NAME": id, | |
| "LSAD": "", | |
| "CENSUSAREA": 155779.220000 | |
| }, | |
| "geometry": { | |
| "type": "Point", | |
| "coordinates": coord | |
| } | |
| }; | |
| }; | |
| RainThing.prototype.projectLineString = function(feature, projection) { | |
| var line; | |
| line = []; | |
| d3.geo.stream(feature, projection.stream({ | |
| polygonStart: noop, | |
| polygonEnd: noop, | |
| lineStart: noop, | |
| lineEnd: noop, | |
| point: function(x, y) { | |
| return line.push([x, y]); | |
| }, | |
| sphere: noop | |
| })); | |
| return line; | |
| }; | |
| RainThing.prototype.processPrecip = function(precipData) { | |
| var precipModel; | |
| precipModel = []; | |
| precipData.forEach(function(item) { | |
| var stationData; | |
| stationData = { | |
| id: item.id.trim(), | |
| name: item.name.trim(), | |
| precipBuckets: { | |
| oneHour: parseFloat(item.precipValues.oneHour.trim()), | |
| twoHour: parseFloat(item.precipValues.twoHour.trim()), | |
| threeHour: parseFloat(item.precipValues.threeHour.trim()), | |
| sixHour: parseFloat(item.precipValues.sixHour.trim()), | |
| twelveHour: parseFloat(item.precipValues.twelveHour.trim()), | |
| daily: parseFloat(item.precipValues.daily.trim()) | |
| } | |
| }; | |
| return precipModel.push(stationData); | |
| }); | |
| return precipModel; | |
| }; | |
| RainThing.prototype.californication = function() { | |
| var svg; | |
| svg = this.makeDisplay("svg"); | |
| return d3.json('USA-cali.json', (function(_this) { | |
| return function(geoCali) { | |
| return d3.csv('station-coords.csv', function(stationCoords) { | |
| return $.ajax({ | |
| url: "http://cjohnson.io/rain.js", | |
| jsonp: "callback", | |
| dataType: "jsonp" | |
| }).then(function(precipData) { | |
| var caliLineString, commonSet, fillBlue, finalCoords, geoStations, projection, projectionResult, self, stationData, usaPath, voronoi, voronoiData, voronoiResult; | |
| stationData = _this.processPrecip(precipData); | |
| commonSet = []; | |
| stationData.forEach(function(item) { | |
| return stationCoords.forEach(function(sCoord) { | |
| if (item.id === sCoord.id) { | |
| return commonSet.push($.extend(sCoord, item)); | |
| } | |
| }); | |
| }); | |
| finalCoords = stationCoords; | |
| fillBlue = d3.scale.linear().domain([0, 10]).range(["#fff", "#00f"]); | |
| projection = d3.geo.albersUsa().scale(3500).translate([1600, 400]); | |
| caliLineString = _this.projectLineString(geoCali, projection); | |
| voronoi = d3.geom.voronoi(); | |
| geoStations = new GeoFeature; | |
| finalCoords.forEach(function(station) { | |
| var coords, stationId; | |
| stationId = "station-" + station.id; | |
| coords = [parseFloat(parseFloat(station.long).toFixed(2)), parseFloat(parseFloat(station.lat).toFixed(2))]; | |
| return geoStations.features.push(_this.makePoint(stationId, coords)); | |
| }); | |
| usaPath = d3.geo.path(geoCali).projection(projection); | |
| svg.append("path").datum(geoCali).attr("d", usaPath); | |
| svg.selectAll(".subunit").data(geoCali.features).enter().append("path").attr("class", function(d) { | |
| return "subunit-" + d.properties.NAME; | |
| }).attr("d", usaPath); | |
| self = _this; | |
| projectionResult = finalCoords.map(function(coord) { | |
| return projection([+coord.long, +coord.lat]); | |
| }); | |
| voronoiResult = voronoi(projectionResult); | |
| voronoiData = voronoiResult.map(function(vertices, index) { | |
| var voronoiBorder; | |
| voronoiBorder = d3.geom.polygon(vertices).clip(caliLineString.slice()); | |
| return { | |
| id: finalCoords[index].id, | |
| name: finalCoords[index].name, | |
| precip: finalCoords[index].precipBuckets, | |
| border: voronoiBorder | |
| }; | |
| }); | |
| return svg.append("g").attr("class", "land").selectAll(".voronoi").data(voronoiData).enter().append("path").attr("class", "voronoi").style("fill", function(d) { | |
| var precipFactor; | |
| precipFactor = 5; | |
| d.initialColor = d.precip != null ? fillBlue(.2 + (d.precip.daily * precipFactor)) : fillBlue(.2); | |
| return d.initialColor; | |
| }).attr("d", polygon).on('mouseenter', function(d) { | |
| var precipFactor; | |
| precipFactor = 15; | |
| return this.style.fill = d.precip != null ? fillBlue(.2 + (d.precip.daily * precipFactor)) : fillBlue(.2); | |
| }).on('mouseleave', function(d) { | |
| return this.style.fill = d.initialColor; | |
| }); | |
| }); | |
| }); | |
| }; | |
| })(this)); | |
| }; | |
| return RainThing; | |
| })(); | |
| GeoFeature = (function() { | |
| function GeoFeature() { | |
| this.type = "FeatureCollection"; | |
| this.features = []; | |
| } | |
| return GeoFeature; | |
| })(); | |
| thing = new RainThing; | |
| //# sourceMappingURL=script.js.map |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| id | lat | long | |
|---|---|---|---|
| USC00040134 | 32.83583 | -116.7775 | |
| USW00094299 | 41.49139 | -120.56444 | |
| AMYC1 | 34.55917 | -115.74417 | |
| ANGC1 | 38.57306 | -122.44056 | |
| APLC1 | 34.53639 | -117.27889 | |
| ACV | 40.97806 | -124.10861 | |
| ARVC1 | 35.2 | -118.83333 | |
| ASHC1 | 36.49139 | -118.82528 | |
| USC00040372 | 38.42694 | -122.24833 | |
| AUBC1 | 38.90722 | -121.08389 | |
| AIDC1 | 33.33806 | -118.33056 | |
| AVX | 33.405 | -118.41583 | |
| ATEC1 | 35.99833 | -120.11806 | |
| BAFC1 | 35.41861 | -119.05083 | |
| BFL | 35.43444 | -119.05417 | |
| DNPC1 | 36.90917 | -119.08833 | |
| BARC1 | 34.89278 | -117.02194 | |
| DAG | 34.85361 | -116.78583 | |
| BUO | 33.92861 | -116.98139 | |
| BBLC1 | 34.24417 | -116.90389 | |
| BIH | 37.37111 | -118.35806 | |
| BLU | 39.2775 | -120.71028 | |
| BLH | 33.61861 | -114.71417 | |
| BOCC1 | 39.38861 | -120.09361 | |
| BDEC1 | 38.21194 | -119.01417 | |
| BORC1 | 35.00417 | -117.65028 | |
| BROC1 | 33.23139 | -116.41444 | |
| BRDC1 | 35.93028 | -120.86778 | |
| BPTC1 | 38.2575 | -119.22861 | |
| BRRC1 | 39.695 | -121.34528 | |
| BUR | 34.20056 | -118.3575 | |
| BTWC1 | 35.40472 | -119.47306 | |
| CCAC1 | 34.58222 | -119.98167 | |
| CLTC1 | 38.59611 | -122.60139 | |
| USW00023136 | 34.21667 | -119.08333 | |
| CZZ | 32.62333 | -116.47278 | |
| USW00003177 | 33.12806 | -117.27944 | |
| CCHC1 | 34.25 | -118.6 | |
| CHEC1 | 40.30333 | -121.24222 | |
| NID | 35.6875 | -117.69306 | |
| USW00003179 | 33.97528 | -117.63611 | |
| RCOC1 | 33.66167 | -115.72056 | |
| CWPC1 | 37.98333 | -122.06917 | |
| CCR | 37.99167 | -122.055 | |
| COPC1 | 41.97972 | -122.33778 | |
| CEC | 41.78028 | -124.23667 | |
| CVRC1 | 34.00472 | -118.415 | |
| DAVC1 | 38.535 | -121.77611 | |
| DESC1 | 39.87167 | -121.61083 | |
| DELC1 | 35.76833 | -119.26 | |
| TRM | 33.62667 | -116.15944 | |
| EGLC1 | 33.80889 | -115.45083 | |
| ELJC1 | 32.81389 | -116.975 | |
| ELCC1 | 32.76694 | -115.56167 | |
| ELKC1 | 41.98806 | -123.71833 | |
| EORC1 | 33.66917 | -117.33194 | |
| USC00042871 | 33.12111 | -117.08833 | |
| EKA | 40.80972 | -124.16028 | |
| FARC1 | 39.42806 | -120.03306 | |
| FDDC1 | 38.52361 | -120.70611 | |
| FILC1 | 34.40861 | -118.94556 | |
| FSTC1 | 39.01 | -120.845 | |
| LOKC1 | 34.73333 | -119.10389 | |
| FETC1 | 37.54222 | -122.01583 | |
| FAT | 36.78 | -119.71944 | |
| FYIC1 | 36.7525 | -119.70167 | |
| FRAC1 | 36.99694 | -119.70722 | |
| FTDC1 | 41.88083 | -124.13528 | |
| FTSC1 | 40.21833 | -123.63222 | |
| USW00003166 | 33.87194 | -117.97889 | |
| GASC1 | 41.84528 | -123.96472 | |
| GEOC1 | 38.93306 | -120.80083 | |
| GTCC1 | 34.08694 | -118.47944 | |
| GNNC1 | 35.72694 | -118.70056 | |
| GLRC1 | 39.165 | -120.85667 | |
| GRGC1 | 36.73944 | -118.96306 | |
| GVHC1 | 34.96056 | -118.93833 | |
| USC00043573 | 39.20417 | -121.06806 | |
| GROC1 | 37.84444 | -120.22583 | |
| USW00053119 | 36.31889 | -119.62889 | |
| HAFC1 | 36.31583 | -119.63694 | |
| HPYC1 | 41.80417 | -123.37583 | |
| USW00003167 | 33.92278 | -118.33417 | |
| HWD | 37.65417 | -122.115 | |
| HSCC1 | 35.68417 | -121.16833 | |
| HENC1 | 33.23722 | -116.76139 | |
| HESC1 | 34.42056 | -117.26611 | |
| HONC1 | 40.2375 | -124.13222 | |
| HNTC1 | 37.2275 | -119.22056 | |
| HWOC1 | 36.18278 | -120.12222 | |
| IDYC1 | 33.75722 | -116.70667 | |
| USW00003144 | 32.83417 | -115.57861 | |
| IDOC1 | 33.70861 | -116.21528 | |
| IRNC1 | 34.14722 | -115.12194 | |
| JCSC1 | 35.30167 | -118.00139 | |
| JSVC1 | 34.35917 | -116.53778 | |
| JSTC1 | 34.14694 | -116.27472 | |
| JULC1 | 33.07639 | -116.5925 | |
| KENC1 | 37.95667 | -122.54472 | |
| KTTC1 | 36.00417 | -119.96 | |
| LAGC1 | 33.54528 | -117.78139 | |
| LSOC1 | 38.49306 | -122.00472 | |
| WJF | 34.74111 | -118.21167 | |
| LEBC1 | 34.83278 | -118.865 | |
| LEVC1 | 37.95667 | -119.11944 | |
| LEGC1 | 39.87444 | -123.72056 | |
| LMGC1 | 32.73833 | -117.03 | |
| LEMC1 | 36.38167 | -119.02639 | |
| NLC | 36.33333 | -119.95 | |
| LINC1 | 36.20333 | -119.05444 | |
| LVK | 37.69278 | -121.81444 | |
| USC00045028 | 36.60444 | -118.7325 | |
| LGB | 33.81167 | -118.14639 | |
| CAIC1 | 35.38361 | -118.41222 | |
| LOSC1 | 37.05639 | -120.86667 | |
| LCCC1 | 34.02361 | -118.29111 | |
| LPOC1 | 34.54444 | -119.79139 | |
| LAX | 33.93806 | -118.38889 | |
| MADC1 | 40.31861 | -123.37389 | |
| USW00093242 | 36.98778 | -120.11056 | |
| MALC1 | 37.64778 | -118.96167 | |
| MNZC1 | 40.54111 | -121.57667 | |
| MRIC1 | 37.495 | -119.98583 | |
| MRLC1 | 38.49167 | -122.12417 | |
| MYV | 39.10194 | -121.56778 | |
| MCLC1 | 41.25139 | -122.13833 | |
| MCAC1 | 33.57139 | -116.07667 | |
| USW00023257 | 37.28472 | -120.51278 | |
| MRNC1 | 40.18167 | -123.77611 | |
| MOD | 37.62417 | -120.95056 | |
| MODC1 | 37.65 | -121.0 | |
| USW00023244 | 37.40583 | -122.04806 | |
| MOHC1 | 35.05611 | -118.17306 | |
| SIY | 41.78056 | -122.47167 | |
| KMRY | 36.58806 | -121.84528 | |
| MTR | 36.59278 | -121.85556 | |
| MVCC1 | 34.08639 | -116.56222 | |
| CLSC1 | 39.33333 | -122.01667 | |
| MLNC1 | 32.86722 | -116.41944 | |
| MHS | 41.3325 | -122.33278 | |
| MWS | 34.23083 | -118.07111 | |
| APC | 38.21028 | -122.28472 | |
| EED | 34.7675 | -114.61889 | |
| NVDC1 | 39.24667 | -121.00083 | |
| NMDC1 | 38.00472 | -120.48639 | |
| CYMC1 | 34.94556 | -119.68278 | |
| 3L3 | 33.6025 | -117.88028 | |
| NZY | 32.7 | -117.2 | |
| CSUC1 | 34.24472 | -118.525 | |
| OAK | 37.72139 | -122.22083 | |
| OCCC1 | 38.38583 | -122.96611 | |
| L34 | 33.20972 | -117.395 | |
| USW00053121 | 33.21944 | -117.34944 | |
| OCTC1 | 33.15528 | -116.16889 | |
| OJAC1 | 34.44778 | -119.2275 | |
| OMSC1 | 37.34056 | -119.66833 | |
| USW00003102 | 34.05611 | -117.60028 | |
| OSFC1 | 35.80278 | -120.10306 | |
| ORIC1 | 41.28333 | -124.06667 | |
| ONDC1 | 39.74583 | -122.19972 | |
| ONSC1 | 41.30333 | -123.53444 | |
| ORLC1 | 41.30889 | -123.53167 | |
| USW00093210 | 39.49 | -121.61833 | |
| USW00093110 | 34.20083 | -119.20694 | |
| PPWC1 | 37.03333 | -121.18333 | |
| USW00093138 | 33.82806 | -116.50528 | |
| PSPC1 | 33.8275 | -116.50972 | |
| USW00023182 | 34.62944 | -118.08361 | |
| PLRC1 | 33.37806 | -116.84 | |
| PRDC1 | 39.75361 | -121.62389 | |
| PSAC1 | 34.14833 | -118.14472 | |
| PRB | 35.66972 | -120.62833 | |
| PRBC1 | 35.62778 | -120.68556 | |
| PISC1 | 35.15972 | -120.68306 | |
| PRPC1 | 40.98694 | -121.97722 | |
| PEDC1 | 38.78528 | -120.74194 | |
| POMC1 | 34.08167 | -117.76583 | |
| PRAC1 | 39.80528 | -120.47194 | |
| PORC1 | 39.36194 | -123.12861 | |
| POWC1 | 33.0175 | -117.02917 | |
| QCYC1 | 39.93667 | -120.9475 | |
| USW00053120 | 33.0375 | -116.91583 | |
| SGX | 33.02167 | -117.08139 | |
| RANC1 | 35.36917 | -117.6525 | |
| RBL | 40.15194 | -122.25361 | |
| RDD | 40.5175 | -122.29861 | |
| RDOC1 | 33.83417 | -118.37556 | |
| RWCC1 | 37.47667 | -122.23861 | |
| USW00003171 | 33.95194 | -117.43861 | |
| REVC1 | 33.95111 | -117.38806 | |
| USW00093225 | 38.69556 | -121.58972 | |
| SMTC1 | 38.55556 | -121.41694 | |
| SAC | 38.50694 | -121.495 | |
| STHC1 | 38.49306 | -122.53833 | |
| SNS | 36.66361 | -121.60806 | |
| SNSC1 | 36.65944 | -121.66639 | |
| USW00003178 | 32.57222 | -116.97944 | |
| SJOC1 | 37.35917 | -121.92389 | |
| SARC1 | 37.99833 | -122.53722 | |
| SFOC1 | 37.77056 | -122.42694 | |
| GABC1 | 34.15528 | -117.90778 | |
| JBLC1 | 34.10611 | -118.1 | |
| SBPC1 | 35.30556 | -120.66194 | |
| USW00093206 | 35.23722 | -120.64139 | |
| SFO | 37.61972 | -122.36472 | |
| NKX | 32.86667 | -117.13333 | |
| SAN | 32.73361 | -117.18306 | |
| USW00003131 | 32.81583 | -117.13944 | |
| SDB | 34.74361 | -118.72417 | |
| STS | 38.50389 | -122.81028 | |
| SMX | 34.89944 | -120.44861 | |
| SMRC1 | 35.37417 | -120.6375 | |
| SBA | 34.42583 | -119.8425 | |
| 1L2 | 34.0075 | -118.49972 | |
| SMO | 34.01583 | -118.45139 | |
| STAC1 | 33.74417 | -117.86667 | |
| USW00093184 | 33.68 | -117.86639 | |
| SCRC1 | 36.99056 | -121.99111 | |
| SBAC1 | 34.41667 | -119.68444 | |
| SGSC1 | 34.58944 | -118.45472 | |
| SWBC1 | 41.30111 | -123.13306 | |
| SHDC1 | 40.71417 | -122.41611 | |
| SERC1 | 39.58333 | -120.37056 | |
| YNPC1 | 37.50722 | -119.63306 | |
| SONC1 | 37.96722 | -120.38722 | |
| TVL | 38.89833 | -119.99472 | |
| SCKC1 | 37.99944 | -121.31778 | |
| SCK | 37.88917 | -121.22583 | |
| STOC1 | 39.58611 | -122.53417 | |
| STYC1 | 39.56306 | -121.10778 | |
| SRLC1 | 38.37722 | -120.80083 | |
| TFTC1 | 35.15028 | -119.43 | |
| TAAC1 | 39.06 | -120.12917 | |
| THPC1 | 35.10111 | -118.42222 | |
| RTMC1 | 36.45111 | -118.89611 | |
| TREC1 | 36.465 | -118.86194 | |
| TOA | 33.80167 | -118.34194 | |
| TRPC1 | 37.79667 | -121.58278 | |
| SUU | 38.26667 | -121.93333 | |
| TNAC1 | 35.76361 | -117.39083 | |
| TRK | 39.32 | -120.13944 | |
| WVSC1 | 34.12056 | -115.85 | |
| NXP | 34.3 | -116.16667 | |
| TYEC1 | 34.12806 | -116.03694 | |
| UCLC1 | 34.06972 | -118.44278 | |
| USC00049126 | 39.12667 | -123.27194 | |
| UKI | 39.12583 | -123.20083 | |
| VCB | 38.3775 | -121.9575 | |
| VLJC1 | 38.14 | -122.23417 | |
| USW00023130 | 34.20972 | -118.48917 | |
| VNOC1 | 38.60861 | -123.01806 | |
| VERC1 | 39.52139 | -120.02694 | |
| VCVC1 | 34.535 | -117.30583 | |
| VISC1 | 36.32833 | -119.29917 | |
| VSTC1 | 33.22944 | -117.22694 | |
| WASC1 | 35.58917 | -119.35194 | |
| USW00023277 | 36.93583 | -121.78861 | |
| WEAC1 | 40.72222 | -122.93306 | |
| WSTC1 | 38.3775 | -120.54528 | |
| WESC1 | 36.22722 | -119.99667 | |
| WILC1 | 39.15 | -122.15 | |
| WINC1 | 38.52528 | -121.97778 | |
| WSHC1 | 37.00694 | -118.98389 | |
| CPKC1 | 34.18194 | -118.57444 | |
| WRIC1 | 34.36167 | -117.63861 | |
| YBLC1 | 33.89 | -117.81889 | |
| YRKC1 | 38.90528 | -123.23139 | |
| YPQC1 | 37.75 | -119.58972 | |
| YKAC1 | 41.70361 | -122.64083 | |
| YUVC1 | 34.12944 | -116.38778 | |
| YMSC1 | 34.21833 | -116.40722 |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment