River Runner
Visualize the path of a rain droplet from any point in the contiguous United States to its end point.
https://github.com/sdl60660/river-runner
Category: Hydrosphere
Sub Category: Freshwater and Hydrology
Keywords
3d data-visualization geology hydrology mapbox mapping mapping-tools mountain-features nhdplus nhdplus-data ocean river-runner sci-viz svelte topography usgs usgs-api usgs-data visualization yellowstone-national-park
Last synced: about 13 hours ago
JSON representation
Repository metadata
Uses USGS/MERIT Basin data to visualize the path of a rain droplet to its endpoint.
- Host: GitHub
- URL: https://github.com/sdl60660/river-runner
- Owner: sdl60660
- License: gpl-3.0
- Created: 2021-05-08T21:41:33.000Z (almost 4 years ago)
- Default Branch: main
- Last Pushed: 2025-04-20T00:10:15.000Z (7 days ago)
- Last Synced: 2025-04-25T13:03:53.867Z (1 day ago)
- Topics: 3d, data-visualization, geology, hydrology, mapbox, mapping, mapping-tools, mountain-features, nhdplus, nhdplus-data, ocean, river-runner, sci-viz, svelte, topography, usgs, usgs-api, usgs-data, visualization, yellowstone-national-park
- Language: Svelte
- Homepage: https://river-runner-global.samlearner.com/
- Size: 112 MB
- Stars: 399
- Watchers: 6
- Forks: 28
- Open Issues: 9
- Releases: 22
-
Metadata Files:
- Readme: README.md
- Funding: .github/FUNDING.yml
- License: LICENSE
README.md
River Runner
This project visualizes the path of a rain droplet from any point in the world to its end point (usually an ocean or an inland water features). It will find the closest river/stream flowline coordinate to a click/search and then animate along that flowline's downstream path. The data used in this project comes from the River Runner API, which is based on several open source projects and datasets. Similar data, initially used for the project, came from the USGS's NHDPlus data and their NLDI API
I've used mapbox to animate the downstream path, but needed to make all sorts of adjustments for elevation and bearing changes to prevent jerkiness/nausea (just moving from point to point feels a little like flying through turbulence while shaking your head side-to-side).
I've hosted a dataset with NHDPlus Value Added Attributes on Firebase, which allows me to group flowlines into their parent features and determine distances quickly.
Note: The newly-released, global version of this project is in beta. We currently have relatively poor coverage of river names outside of the United States, which we are hoping to fill out, as well as some UX edge-cases and bugs that we hope to resolve.
Examples
Here are a couple of examples of what it looks like in action.
This is a section of the path from eastern Turkey to the Persian Gulf:
Here's part of the path from Southwest Arizona down to the Mexican border:
You can look at a heatmap of previous searches here or find a list of some of our favorite paths here
Running this on your own
If you'd like to run this locally and play around with it, just run the following commands in your terminal (assuming you have npm installed):
git clone https://github.com/sdl60660/river-runner.git
cd river-runner
npm install
npm run dev
(then follow the link to the local server, probablyhttp://localhost:5000
).- If you're running this on your own or forking into a new app, please replace the Mapbox Access Token strings in
src/access_tokens.js
with your own. You can generate a couple of tokens (for free), by creating a Mapbox account and visiting this page. You'll need to generate two separate tokens to replace the ones in the existing file, but it does not matter which serves as the primary token and which serves as the secondary token.
Supporters
Thank you to Mapbox for sponsoring this project!
Updates
- January 2022: The global version of this tool is now released and in beta! While some lingering issues are resolved and it remains in beta, it can be found on this branch, while the original, US-only version is preserved here in Github, and at its original URL: https://river-runner.samlearner.com/. This is to avoid any breaking changes to existing share links/paths due to any discrepancies and because minor US issues persist on the global version, mainly when paths involve dams, canals, or conduits.
If you'd like to be notified about major updates to the tool, you can sign up for an email list here.
Owner metadata
- Name: Sam Learner
- Login: sdl60660
- Email:
- Kind: user
- Description:
- Website: https://www.samlearner.com/
- Location: Brooklyn, NY
- Twitter: sam_learner
- Company: @ft-interactive
- Icon url: https://avatars.githubusercontent.com/u/12772904?u=a5418ca7887d7dfa14640444a18ac96c3c1e01a5&v=4
- Repositories: 39
- Last ynced at: 2025-04-24T10:59:57.087Z
- Profile URL: https://github.com/sdl60660
GitHub Events
Total
- Watch event: 15
- Issue comment event: 1
- Push event: 31
- Pull request event: 2
- Fork event: 2
- Create event: 2
Last Year
- Watch event: 15
- Issue comment event: 1
- Push event: 31
- Pull request event: 2
- Fork event: 2
- Create event: 2
Committers metadata
Last synced: 4 days ago
Total Commits: 674
Total Committers: 1
Avg Commits per committer: 674.0
Development Distribution Score (DDS): 0.0
Commits in past year: 50
Committers in past year: 1
Avg Commits per committer in past year: 50.0
Development Distribution Score (DDS) in past year: 0.0
Name | Commits | |
---|---|---|
sdl60660 | l****d@g****m | 674 |
Committer domains:
Issue and Pull Request metadata
Last synced: 1 day ago
Total issues: 20
Total pull requests: 13
Average time to close issues: 2 months
Average time to close pull requests: 1 minute
Total issue authors: 14
Total pull request authors: 1
Average comments per issue: 1.3
Average comments per pull request: 1.0
Merged pull request: 13
Bot issues: 0
Bot pull requests: 0
Past year issues: 0
Past year pull requests: 1
Past year average time to close issues: N/A
Past year average time to close pull requests: less than a minute
Past year issue authors: 0
Past year pull request authors: 1
Past year average comments per issue: 0
Past year average comments per pull request: 1.0
Past year merged pull request: 1
Past year bot issues: 0
Past year bot pull requests: 0
Top Issue Authors
- sdl60660 (7)
- bzbarsky (1)
- ShonFrazier (1)
- wffurr (1)
- caretcaret (1)
- kenfucik (1)
- owenpalmer (1)
- blackboxlogic (1)
- diericx (1)
- RedCanoe2000 (1)
- Chrismarsh (1)
- ghaarsma (1)
- csantosumich (1)
- JMachell (1)
Top Pull Request Authors
- sdl60660 (13)
Top Issue Labels
Top Pull Request Labels
Dependencies
- actions/checkout v2 composite
- actions/setup-node v2 composite
- nodemon ^2.0.15 development
- compression ^1.7.4
- cors ^2.8.5
- cross-env ^7.0.0
- csv-parse ^5.0.4
- dotenv ^10.0.0
- express ^4.17.2
- express-mongo-sanitize ^2.1.0
- express-rate-limit ^5.5.1
- fast-csv ^4.3.6
- helmet ^4.1.0
- http-status ^1.5.0
- joi ^17.5.0
- mongoose ^5.13.13
- node-csv ^0.1.2
- nodemailer ^6.3.1
- passport ^0.5.2
- pm2 ^5.1.2
- validator ^13.0.0
- winston ^3.3.3
- xss-clean ^0.1.1
- @rollup/plugin-commonjs ^17.0.0 development
- @rollup/plugin-node-resolve ^11.0.0 development
- eslint ^7.26.0 development
- eslint-config-airbnb-base ^14.2.1 development
- eslint-plugin-import ^2.22.1 development
- eslint-plugin-svelte3 ^3.2.0 development
- node-sass ^7.0.1 development
- rollup ^2.3.4 development
- rollup-plugin-css-only ^3.1.0 development
- rollup-plugin-livereload ^2.0.0 development
- rollup-plugin-svelte ^7.0.0 development
- rollup-plugin-terser ^7.0.0 development
- svelte ^3.0.0 development
- svelte-preprocess ^4.10.7 development
- @rollup/plugin-json ^4.1.0
- @turf/along ^6.3.0
- @turf/bbox ^6.5.0
- @turf/bbox-polygon ^6.5.0
- @turf/bearing ^6.3.0
- @turf/boolean-point-in-polygon ^6.3.0
- @turf/buffer ^6.3.0
- @turf/circle ^6.3.0
- @turf/collect ^6.3.0
- @turf/destination ^6.3.0
- @turf/distance ^6.3.0
- @turf/helpers ^6.3.0
- @turf/intersect ^6.5.0
- @turf/length ^6.3.0
- @turf/line-offset ^6.3.0
- @turf/line-split ^6.5.0
- @turf/nearest-point-on-line ^6.5.0
- @turf/point-to-line-distance ^6.3.0
- @turf/points-within-polygon ^6.5.0
- @turf/polygon-to-line ^6.3.0
- d3 ^6.7.0
- d3-fetch ^2.0.0
- dateformat ^4.5.1
- fast-xml-parser ^3.19.0
- mapbox-gl ^2.10.0
- node-html-parser ^3.3.5
- scrollama ^2.2.2
- sirv-cli ^1.0.0
- svelte-actions-resize ^0.1.1
- svelte-loading-spinners ^0.1.4
- svelte-slider ^1.0.0
- three ^0.113.0
- title-case ^3.0.3
- topojson-client ^3.1.0
- topojson-server ^3.0.1
Score: 6.0112671744041615