Giter Site home page Giter Site logo

civicmapper / bard-hydropower Goto Github PK

View Code? Open in Web Editor NEW
3.0 5.0 4.0 11.14 MB

Estimate the power potential of microhydropower installations using geodata.

Home Page: http://bard-hydropower.civicmapper.com

License: GNU General Public License v3.0

Python 6.16% CSS 25.84% JavaScript 51.82% HTML 16.18%
leaflet map esri esri-leaflet jquery bootstrap hydropower dem terrain hydrology

bard-hydropower's People

Contributors

gassc avatar

Stargazers

 avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

bard-hydropower's Issues

Watershed

Display delineated watershed on map. Make sure that layer is included in a layer list so it can be turned on/off.

Measurements should be presented in English measurement system

Measurements should be presented in English measurement system

Why: A majority of the site visitors will be unfamiliar with the metric system
What: Switch out labels and reprogram the algorithms to return English system. Alternatively, make the measurement system user-selectable.

Also, label the “Environmental Flow” with its metric type (cubic feet per second, cubic meters per second, percent of stream flow, etc...)

migrate to "serverless"

I think with a hosted AGOL resource proxy, I can drop the Flask portion of this application and still use Esri premium services for the watershed and elevation profile fallback. That would vastly simplify builds, deployment, and hosting (I could even run it from a gh-pages branch here).

It would require:

  • a bit of work to migrate from the Flask application structure and jinja2 templates to a Jekyll structure with liquid templates.
  • some slight changes the javascript to remove token handling

Other Layers and a Layer Control

Other layers to include:

  • Contours
  • Hillshade
  • Watershed results

Depending on what's available for terrain, it may make sense to utilize a second basemap layer to overlay on the imagery, rather then pull in several separate and potentially heavy layers.

Layer control will also need to be implemented to turn these things on/off. Transparency adjustment is a plus.

Make finding a site easier

Issue 4 Make finding a site easier
Why The site is for all New Yorkers. The current default view is a closeup of the Bard site with no easily
identifiable landmarks which is confusing perhaps even to Bard students/faculty.
What Use the Streets base map at Level 7 showing the entire state of New York. Add an address finder box which would
zoom to that location if found.

Disclaimer content

Client mentioned need to reflect disclaimer content that is on the main website here.

Results Modal

Consider a separate results modal that is enabled once the calculation is complete.

This could contain:

  • all the parameters used
  • the elevation profile
  • a small thumbnail map showing the watershed delineation
  • the results

Remove extra Flask boilerplate stuff

Lots of stuff here from the boilerplate code we started with that can go; particularly anything related to database or authentication, since we're not going to manage either of those things locally.

  • functions: register, login, logout, send_data, login_required, user_loader
  • dependencies: bcrypt, sqlalchemy
  • modules: models.py, forms.py

Elevation Profile Results Display

Enable this and display it...somewhere. Consider a separate results modal that is enabled once the calculation is complete (would also contain all the parameters used, maybe even an overview map of the watershed delineation)

Reference Layers

Add Contours and Hillshade from available NYS GIS service endpoints.

Move calculator logic to a new endpoint

Move calculator logic from client- to server-side; create an API endpoint from which it can be accessed; call that endpoint from within the client-side script.

This will enable us to expose the logic to the main Bard Hydro website, and also will make #3 easier to do.

If a negative head is derived, use the absolute value of the head height (?)

(client request)

Issue 2: If a negative head is derived, use the absolute value of the head height.
Why: The visitor probably started at the upstream location when drawing their line. Showing a negative number makes the site seem unreliable which could to turn the visitor off to renewable energy or make it seem too hard to investigate further. What Also display a suggestion pop-up and switch the Head toggle from “Map” to “Form” if the result seems out-of-kilter.

Allow the base map to be toggled

Issue 5 Allow the base map to be toggled between Imagery and World Topographic at Level 18 during line drawing
Why Level 18 will give the visitor sufficient detail to place their line in order to gain more accuracy.
What Add a base map selector.

Expose hydropower calculation variables to the user

  • A: calculated from watershed delineation GP service, but should be tweak-able by the user
  • h: calculated from the elev profile GP service but this could be messy/inaccurate if the topographic data is coarse
  • x: environmental flow requirement (default is 0.3, range options from 0.1-0.5)
  • e: efficiency. default is 0.7, but they can put in whatever they want.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo 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.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.