Model Builder - Solar Radiation Mapping

Solar Irradiance is the output of light energy from the entire disk of the sun, measured at the Earth (NASA SDO). When converting energy from the sun to power appliances and equipment with photovoltaic cells, the irradiance measurement (TSI) provides the data to visually assess where the most energy can be harvested.

The National Aeronautic Space Administration (NASA) hosts a solar isolation map demonstrating how much sunlight in watts per sq/m reached the earth during different time frames but, what does the solar isolation map look like for Philadelphia? Luckily, The Delaware Valley Regional Planning Commission has publicly shared their Light Detection and Ranging (LIDAR) data which has a nominal point spacing (NPS) of 0.7 meters on PASDA.

Now, lets talk shop: My goal is to to produce a 0.7 meter resolution solar isolation map using existing LIDAR and geoprocessing tools, I used ArcGIS Pro 2.0's model builder interface to:

  1. Create an LAS Dataset (.lasd) for each LAS file 
  2. Create an LAS Dataset Layer to filter the LIDAR Last return and all applicable class codes excluding low noise (7) and high noise (18) 
  3. Iterate through each LAS dataset to create a Digital Surface Model raster 
  4. Use those DSMs as an input parameter to calculate solar radiation 


I found that this takes quite a lot of time to calculate if you want an annual solar radiation model (12 months + 1 annual average = 13 rasters per LAS file)...I'm talking DAYS so, definitely consider getting a separate machine to run this on. In my case, this model iterates through 208 LAS files.


Pro Tips:


  • Don't run this against a server that may have database locks. If you are importing las files from a server, your analysis may fail due to editing locks in the directory prompting an error 

  • Test workflow on a few las files before running the final analysis 

  • QAQC always - make sure all of your files have been completed and aren't corrupt 

  • Clean up your C: drive even if your exports are going to an external hardrive or your project lives elsewhere because, temp files are generated on your local machine when this process runs. Make sure you clean up these temp files (C:\Users\YourName\AppData\Local\Temp), delete any error logs created inbetween tests and ensure that you have optimal memory on your machine before running the final model. 

  • If you are using ArcGIS Pro, do not use a named user license connected to the online network because this tool will take a long time to run and a network drop can cause ArcGIS Pro to disconnect and close. Sign out a single user or concurrent license instead. 

  • Up the Auto Commit environment setting by a couple 0's (the default is 1000) I recommend 100,000 to speed things up a little. 

  • Inline Variable Substitution is not currently included as a parameter in the "calculate solar radiation" script. You will need to manually update it in python to ensure that when you are iterating through each LAS file - your outputs don't get overwritten. For example, as the script currently is: The output solar isolation raster for LAS file 1 in August is named "aug". The output solar isolation raster for LAS file 2 in August is also named "aug." LAS file 2 will overwrite/replace "aug" in the database when it is done generating. 
Now for the piece de resistance!

The outputs so far look super cool! Since this is an ongoing project, here's a preview of the next steps:

  • Classify Rasters by max kilowatt hours 
  • Cache all Rasters on ArcGIS for Server as a tile service 
  • Create Solar Panel grid array based on the National Renewable Energy Laboratory (NREL) standard dimensions and recommended PV model 
  • Calculate potential energy savings based on # of panels utilized on each roof. See finished results achieved by CityGeo in collaboration with the Office of Sustainability here: https://phl.maps.arcgis.com/apps/MapSeries/index.html?appid=c1a5d30acec04aec8c4acfa4cc60a311

Comments