University of Minnesota
University of Minnesota
Minnesota Solar Suitability Analysis


The purpose of this study was to develop a method for calculating solar insolation at a high resolution (1 meter) across a large area (the state of Minnesota). The results were intended to provide a conservative estimate of solar insolation for determining the suitability of potential photovoltaic solar installations. This project relies on 800+ GB of Digital Surface Model (DSM) Rasters covering the extent of Minnesota. This input data is processed using ArcGIS spatial analysis functions in a python scripting process. The analysis creates a sky view for each location of the raster and calculates incident solar radiation across a year. The overall process relies on a PostgreSQL database to manage individual tasks and provides a mechanism to track the progress of the data analysis. The output product is a 800+ GB Area Solar Radiation Raster.

Video overview:

^^ TOP ^^ NEXT >>

Lidar Data

The primary source data used in this study was LiDAR elevation points gathered for Minnesota between 2006 and 2012 and made publicly available by the Minnesota Department of Natural Resources and cooperating agencies.

Lidar is a type of active remote sensing technology where light pulses (most commonly in the near-infrared wavelengths) are emmitted from a laser scanner and response times are measured. The information collected allows data processors to generate a point cloud, where each point represents one return from a laser pulse. The input data in this study was collected using airborne laser scanners mounted to airplanes. The data was originally collected between 2006 and 2012 through an intergovernmental initiative with the primary objective of providing improved elevation data for flood mapping. While we analyzed this data as a whole, the data is the rusult of a number of different collection efforts and contracts that have been made public through the Minnesota Geospatial Information Office.

LiDAR crane

LiDAR Point Cloud of UMN East Bank Campus


Digital Surface Model (DSM) Development

In order to conduct the Solar Analysis process a Digital Surface Model (DSM) was needed to represent the earths surface and all objects that lie above that surface in grid. In other words irregularly spaced lidar points had to be converted into a grid (raster) whereby each point (pixel) represents the elevation at that location. We generated our DSM using a Streaming Delauney Triangulation process developed by Martin Isenburg (now part of the LAStools software package). Triangles are iteratively generated using nearby lidar returns and values for each point are determined by extracting interpolated elevation from the surface of the triangle.


ABOVE: A lidar-derived elevation raster DSM (of Dinkytown, MN) draped by an aerial photo for demonstration. The photo is stretched according to the elevation values of each corresponding cell in the DSM. BELOW: A screenshot of our state-wide DSM. Here dark colors represent low elevation and lighter color = higer elevation.


< < PREVIOUS ^^ TOP ^^ NEXT >>

Solar Radiation Analysis

The Solar Radiation Analysis is completed using ESRI's ArcGIS Spatial Analyst software via Python programming and the ArcPy package. The Area Solar Radiation tool allows the user to input a DSM to analyze the landscape and the sun's path across the sky (throughout the day and the year) to measure the amount of incoming direct and diffuse solar radiation for a particular place on the landscape.

These calculations, which can be performed for point locations or entire geographic areas, are carried out using these four steps:

  1. An upward-looking hemispherical viewshed is calculated based on topography.
  2. The viewshed is overlaid on a direct sunmap to estimate direct radiation.
  3. The viewshed is overlaid on a diffuse skymap to estimate diffuse radiation.
  4. The process is repeated for every location of interest to produce an insolation map.

For our analysis, these calculations are repeated for every square meter across Minnesota.


For each location in the output raster, the Area Solar Radiation tool utilizes the DSM to create a sky obstruction view. This sky obstruction view is an upward facing circular view depicting the portion of the sky visible at this location. The skyview limits the amount of area direct radiation can be captured by looking at the elevation of nearby features (such as trees, buildings, hills, etc.). Next, sunmaps (sun position/direct radiation throughout the day and the year) and skymaps (directional diffuse radiation for each sky sector) are taking into consideration. Direct + diffuse radiation, constrained to the viewshed and calculated as represented above, yields total solar insolation for each one meter cell measued in watt-hours per meter2. The equation pictured above represents the starred point, a rooftop in close proximity to several tall buildings.

BELOW: More interesting imagery...these animations represent sunlight analysis throughout the day and the year for Dinkytown, MN. These images are intermediary data products extracted from the process described above.

Sunlight throughout the day in Dinkytown on July 4th.

Sunlight throughout the year. See why South facing is preffered?

< < PREVIOUS ^^ TOP ^^ NEXT > >

Parallel Processing

Lidar for Minnesota amasses 940Gb of data (compressed as .laz files). Calculating solar capacity for every square meter of the state would take about 1,000 days on an average desktop computer running a sequential process. Using Python and a PostGIS database for storing metadata and tracking progress we wrote software that:

  • Uses fishnets to divide the state into manageably sized tiles that function as a job queue
  • Efficiently generates DSMs by spatially querying only the necessary .laz files for each tile
  • Avoids edge artifacts by buffering input and constraining output to coincident boundaries
  • Creates a mosaic dataset of DSM rasters from which Area Solar Radiation input is extracted
  • Runs effectively on Minnesota Super Computing’s “Itasca” High-performance cluster using ArcGIS Server for Linux

Breaking this project into manageable jobs required creating a database system that divides the work, and an aggregation process that produces a seamless output. PostgreSQL with PostGIS extension were used to manage the individual analysis jobs and track the progress and processing time for each job. The processing size chosen was 1 square kilometer, which resulted in a total of 220,165 individual jobs for the state of Minnesota.

The below animation is symbolized based on the time stamp of a tiles completion.

Data tiling structure with DSM processing extents (red) and Solar Analysis processing extents (black).

Solar radiation modeling is computationally demanding and complicated to implement. Our database control structure comibined with the "embarrassingly parallel" nature of our model, much of the analysis to be quickly computed using Minnesota Supercomputing Institute's High Performance Computing resources as well as virtual machines and entire labs of desktop computers.

To learn more about processing methods and tool parameters used in our analysis, visit the gitHub Github project site gitHub where all of the scripts utilized can be accessed in full.


ABOVE: All machines in a Blegen Hall lab processing Solar data during Spring Break.

BELOW: We ran as many processes as possible on each machine.


< < PREVIOUS ^^ TOP ^^ NEXT >>

App Development

In recent years the decrease in price and increase in demand for solar panels has not be met by an increase in publicly available information for site suitability analysis to determine ideal solar panel placement. For homeowners or businesses potentially interested in a PV solar system, there is a demand for more detailed information before reaching the step of hiring a solar installer. Solar insolation varies by latitude and climate, but the most important factor affecting small scale photovoltaic (PV) solar installations is intermittent shading due to adjacent structures and trees.

The purpose of this study was to develop a method for conducting shade analysis to calculate solar insolation at a high resolution (1 meter) across a large area (the state of Minnesota). The results were intended to provide a conservative estimate of solar insolation in kilowatt-hours (kWh). The primary data used in this study was Lidar elevation points gathered for Minnesota counties between 2006 and 2012 and made publicly available through the Minnesota Department of Natural Resources. The analysis was completed using a combination of proprietary and open-source Geographic Information Systems (GIS) technology. This study was designed to provide maximum utility for a variety of applications. The resulting data can be integrated into existing maps and Geographic Information Systems, and it can be combined with local data for further analysis.
Original App

The original web app interface

A simple interactive map viewer was developed to visualize the processed data. Many enhancements have been made since then, and there are a number of possibilities for further expansion. The original application could only perform a simple point query of total yearly insolation in kWh. The new app makes use of server-side processing to expand the query to real-time shading analysis. A selected point returns values for monthly insolation as well as sun hours.
New App

The new web app interface

The first map had no formal method for offline output. The new map includes a printable location report, so that users can analyze a site and share the results. This report may also be emailed.
printable report

A printable location report

There are a number of ways we can enhance functionality in the future. Most notably, the data makes it possible to estimate energy production and costs. We will work with solar industry experts to define the variables needed to complete these estimates, such as equipment efficiency. For planning an installation, it would also be helpful for users to be able to draw rectangles in the app. From there we could estimate total system size and calculate the insolation across the whole area. Ideally, the app would allow a homeowner to calculate their return on investment for a PV solar system.
Drawing functionality

Example of drawing functionality