The search page for Beam. You can enter your address here, and Beam will calculate the potential energy savings.
On the right, the original Google Maps image (left) is superimposed with estimate solar panel area for residence. Savings results above.
The inspiration for this project came from analyzing various environment-conscious ways to fuel our future, and pondering how to incentivize these changes. By providing users with an estimate of their monthly savings as a result of transitioning to solar energy, we hope to encourage communities to convert to renewable energy sources.
What it does
Beam allows users to enter an address within our simple web interface, which queries Google Maps for an image of that location. After retrieving this image, a rudimentary clustering algorithm (which will hopefully be improved!) detects a two-dimensional rooftop plane, the area of which can be estimated using the scale of the Google Maps viewport. Based on this estimated area, and a rough estimate of light intensity calculated based on the latitude and longitude of the address, an estimate of a location's monthly saving potential is displayed.
How we built it
Beam was built using Python, and specifically utilizing Flask for the web application. The Google Maps API was used to retrieve satellite imagery and opencv was used for rooftop detection, with scikit-learn also used to research various clustering algorithms (including the k-means algorithm, which we resolved upon). The template and styles were created via HTML/CSS/JS, and served using Flask.
Challenges we ran into
The detection of rooftops from satellite imagery is the largest challenge we came across. After retrieving an image, an optimal algorithm would clearly define the rooftop area, offering the most accurate area prediction. In utilizing an algorithm such as k-means, which is currently implemented, computation is slightly more intensive than desired, with the results varying on each run (because of randomized initial centroids). Various other detection algorithms were attempted, such as opencv contours and DBSCAN, though these did not provide results we were looking for. We hope to continue work on this aspect of the project.
Accomplishments that we're proud of
We are very proud of our ability to develop a functional web application that focuses on sustainability and encourages a transition to solar energy.
What we learned
We learned about serving up applications via Flask (something we hadn't really done before!) and looked more into various opencv methods and machine learning algorithms to determine rooftop contours.
What's next for Beam
Though we are proud of our current product, we are looking forward to updating our rooftop detection algorithm to more quickly and accurately define a rooftop. We can look more closely at papers such as this to guide our next changes. This would also allow us to do this on a larger scale, potentially allowing whole communities with the insight of savings when transitioning their neighborhood to solar energy. We also hope to take advantage of retrieving light intensities based on geographical location.