Comments (2)
It turns out that different sites have different data on their stream stats pages ("gagepage"). Some sites have lots of data.
One original source is an old thing called the "Basin Characteristics File" that was first created in 1986! I found mentions of the file here: https://catalog.data.gov/dataset/watstore-stream-flow-basin-characteristics-file. This has links to the file on WATSTORE. It is in really old formats like .e00 and SDTS! These can be opened, but it doesn't seem worth it.
I checked several other packages to see if they have a way to access the gagepages:
- USGS-python/dataretrieval: they have some streamstats code, but it doesn't touch this file. It's more about getting geoJSON files, I think.
- cheginit/hydrodata: He has some routines that will calculate landcover for a watershed from the NLCD, but nothing with your slopes. You might find this package useful for you- the idea is that you provide a station, and this will retrieve the watershed and a lot of data for it.
- earthlab/streamstats: this finds the HUC8 watershed when you give it a point. It uses the streamstats service, but not the pages you want.
- Dewberry/usgs-tools: this uses the streamstats service too. It might be able to create a new watershed for you and calculate all of the statistics. It doesn't use the pre-calculated statistics that you found for the stations.
Since there doesn't seem to be anything that reads these pages, we could try to do it ourselves.
To read directly from the "gagepage" at streamstats, we could use Beautiful Soup, which parses HTML. I've never used it before, but here is a nice guide: https://www.pluralsight.com/guides/extracting-data-html-beautifulsoup It seems relatively easy to do:
pip install requests beautifulsoup4
import requests
from bs4 import BeautifulSoup as bs
url = "https://streamstatsags.cr.usgs.gov/gagepages/html/03335000.htm"
html_content = requests.get(url).text
soup = bs(html_content, "lxml")
The soup object has a few methods that allow you to select things...
soup.title
- or
soup.title.text
for just the content and not the title tag.
The tutorial page has an example that pulls data from a table. It shouldn't be too hard to figure out how to modify that to pull the data you want.
from hydrofunctions.
The site file is retrieved by hf.site_file(site) with commit 76f92cf.
It would still be useful to get the 'gagepages' because the site file mostly just contains the size of the watershed.
from hydrofunctions.
Related Issues (20)
- 'discharge' does not filter to only discharge HOT 5
- Make pyarrow an optional dependency
- Some NWIS sites have non-standard parameter codes
- SSL Certification error HOT 3
- mysterious hydrofunctions_testing.log HOT 3
- extract_nwis_df() function returns a tuple with dataframe and dictionary HOT 4
- annual statistics creates invalid URL HOT 1
- The hydrofunctions docstring example no longer works HOT 2
- requesting rdb data from nonexistent site returns uncaught error
- Update dependencies HOT 7
- Add functionality for multiple sensor / parameter code combinations HOT 6
- What is the relationship between hydrofunctions, Ulmo, dataretrieval, HyRiver, and others? HOT 13
- hf.peaks ParserError month HOT 6
- NWIS & get_nwis should print url before making request HOT 1
- Pandas error: TypeError: Cannot compare type 'Timedelta' with type 'Minute' HOT 5
- Add additional USGS webservices HOT 1
- Update CI system HOT 1
- extract_nwis_df wrong variable name HOT 5
- Create a 'verbose' mode that can be turned off. HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from hydrofunctions.