GOMap: A Python-developed GIS opportunity mapping tool for renewable energy technologies

A Geospatial Opportunity Mapping (GOMap) tool was developed to identify land that is unconstrained both within policy regulations and technical feasibility for the deployment of renewable energy technologies (RET). Typically, current opportunity mapping tools are populated with only technical information with few tools containing additional policy-related information. GOMap combines both highly detailed policy and technical spatial information and generates high-resolution opportunity maps highlighting areas suitable for RET project development. Weightings can be applied to policy and technical information depending on its significance in conjunction with built-in energy models to quantify annual energy generation as a function of different parameters based on the selected RET.


Motivation and significance
Opportunity maps are becoming increasingly common in exploring areas of suitability for project development [1][2][3][4]. Coupled with the need to invest in RETs to combat high energy consumption and high carbon emissions has allowed researchers and developers to create opportunity maps to identify sites for the deployment of low-carbon solutions to generate energy that can be used immediately or stored locally [5]. Traditionally, site identification required on-site surveys and land assessments to confirm the site can support RET deployment with minimal issue [6]. In addition, other policy and technical related issues may E-mail address: raheal.mcghee@strath.ac.uk. need to be explored that cannot be scrutinised by visual on-site surveys. This can be due to policy information dictating the site as a hotspot for biodiversity, or technical information dictating the site as being too distant from the nearest electric grid network connection point.
A number of available tools allows sites to be identified with pre-existing information, however, these tools, particularly those based in the UK, are equipped with limited policy and technical information in addition to often concentrating on large rural areas of land to fully utilise the available space for RET deployment [7][8][9]. This limitation and the ability to consolidate both policy and technical spatial information into a single opportunity map was an issue that was tackled during a consultancy project with Glasgow City Council (GCC). Based in Scotland, UK, GCC received  significant funding as part of a £24 million 'Future Cities Demonstrator' programme [10] with the purpose of utilising technology to make the city smarter by collecting and sharing data related to energy consumption via wireless technology; address community safety by introducing advanced street lighting based on motion-detection and reduce its overall energy consumption; and sustainability by converting vacant and derelict land (VDL) for development to provide economic benefit and the deployment of RETs to provide affordable warmth via electrified heating.
With this major investment, GCC consulted the Energy Systems Research Unit (ESRU) at the University of Strathclyde to focus on the latter Future Cities aim concerning the redevelopment of VDL for the deployment of Photovoltaic Power Stations (PVPS). The initial prototype was designed for GCC following collaborations between the GCC planning department and utility experts at Scottish Power Energy Network to provide policy and technical spatial information respectively that would influence site selection. The output of this consultancy project led to the design and implementation of a GIS-based evaluation method which takes into consideration policy and technical spatial information, and generates an interactive high-resolution opportunity map detailing all areas suitable and unsuitable for project deployment. This evaluation method became known as a Geospatial Opportunity Mapping tool, or GOMap [11].
GOMap was built upon the freely available QGIS framework [12], an open-source GIS software allowing its functionality and performance to be extended via source-code modification. External plugins have been developed specifically for QGIS to tackle varying issues ranging from estimating evapotranspiration and surface air temperature mapping [13,14]. GOMap was written in Python version (3.7) with its GUI designed using Qt designer version (5.15.1). GOMap is compatible with QGIS version (3.16 or above) with no other external Python libraries or software packages required.
The main functionality of the tool, its application and the results obtained from this consultancy project has been published elsewhere [15][16][17]. These prior publications focused on the development of the tool in terms of consultations with planning personnel and utility experts; the application of the tool in terms of identifying VDL for the deployment of ground mounted PVPS; and the numerical results obtained from the VDL/PVPS analysis. This paper, however, focuses on the tool's capabilities in generating opportunity maps for other scenarios and RETs by modifying the input policy and technical spatial information, incorporate a land utilisation factor to control how much land of a site should be allocated for RET deployment, and executing RET-specific Python scripts which currently exist within the tool's framework.
Such scripts include: • PVPS modelling to calculate optimal parameters and determine the number of arrays that can be deployed.
• Identifying north-or south-facing rooftops coupled with the PVPS model to determine the number of arrays that can be installed based on the available roof space and its physical geometry.
• Determining the maximum number of wind turbines to be deployed within a site considering site geometry and the minimum distance required between each turbine.
• Identifying dwellings that can be supplied by a local district heating network within a specified distance.

Software description
The main functionality of GOMap includes three systems: the grid system; the scoring system; and the weighting system. These systems have been described in detail elsewhere [16]. The following section provides a summary of these systems.

Software architecture
Grid system: All spatial information is converted into a highresolution grid where each grid cell possesses a unique ID, allowing the user to determine exactly which policy or technical information overlaps at any given point. The opportunity map can be seen as a 'master' grid connecting all spatial information via each cell's ID. With each cell possessing the ability to containing any spatial information, this facilitates the scoring system.
Scoring system: All spatial information is given a rating score between 1 ('Possible' for policy information; 'Favourable' for technical information) and 3 ('Sensitive' for policy information; 'Unlikely' for technical information) with higher numbers indicating more constraints. A rare score of 4 is given to policy spatial information deemed as a 'Showstopper' where absolutely no project development would be allowed (e.g., World Heritage Sites). As each grid cell may contain multiple overlapping spatial information, this results in multiple scores affecting the cell. Therefore, this system calculates either the median or mean statistical score for each cell and outputs two scores, one for all overlapping policy information and another for all technical information. With the grid cell scores calculated, the prioritisation of certain policy information over others, and vice-versa for technical information, is facilitated by the weighting system.
Weighting system: All spatial information is weighted based on its significance in relation to another. For example, policy environmental information may be weighted more heavily to protect or conserve natural areas compared to areas proposed for new housing. As a result, GOMap has become a Multi-Criteria Decision-Making (MCDM) support tool allowing users to weight all input information based on city regulations and expert knowledge using the Analytical Hierarchy Process (AHP), created by Saaty to resolve n criteria using pairwise comparison matrix A (n × n) [18]. Once the weightings are determined, the final cell score is calculated by multiplying each policy score with its relevant weighting and taking the sum; and repeating the process for each technical score. The generated opportunity map contains policy and technically weighted spatial information as shown in Fig. 1.

Software functionalities
As these systems have been designed and implemented within GOMap's source-code, external Python scripts are used to import spatial information into the tool

Shapefile conversion
All spatial information is contained within shapefiles -a geospatial vector data format designed for GIS software where a vector feature can be represented as points, lines, or polygons and able to hold attribute data in the form of a database. These shapefiles are reprojected to the local coordinate reference system, a fundamental GIS component used to accurately represent objects on a two-dimensional projected map [19]. The entire schema from input, process and output is illustrated in Fig. 2. At high-level, all spatial information is sorted into specific types: Policy aspect contains all policy-related information (e.g., Environmental) and comprises of factors stored within shapefiles (e.g., Conservation areas, Sites of Special Scientific Interest etc.); similarly for Technical aspect; Scope contains shapefiles for areas of interest to narrow down the opportunity map; and Additional information holds any other spatial, or otherwise, information for contextual purposes. All shapefiles excluding those for contextual purposes are processed for conversion.
The Python script to convert shapefiles is executed as a standalone file outside the GOMap environment to ensure efficient use of computing resource but can be executed from within the GOMap environment. The script prompts the user for input, the values of which are used to process the shapefiles accordingly, excluding those for contextual purposes. Typical input parameters include the type of shapefiles to be processed, the name of the policy or technical factor to which the shapefile belongs to, and the dimensions of the grid cell. In addition, the script automatically determines the vector features of each shapefile and processes these accordingly to ensure the spatial information can be imported into GOMap and used by the opportunity map: line features are converted to polygons with varying widths; point features become centroids for each grid cell and contain the distance from the cell to the point's original location; and polygon features are simply fragmented into grid cells with user-defined dimensions. The scores of each policy and technical spatial information are usually stored in the original shapefile which is read by the script's scoring system during processing. The processed shapefiles are then imported into GOMap in conjunction with the weighting system which performs a weighted overlay analysis, a method to calculate the final score of a grid cell by multiplying a score with a weighting. This produces the opportunity map as previously shown in Fig. 1. Low-scoring areas with minimal constraints can be processed further by extracting the sites as a separate output shapefile or passed to the in-built energy model for additional analysis.
A second Python script allows for an existing GOMap project to be converted into a new user-defined grid resolution by converting all imported shapefiles sequentially. This functionality allows users to quickly build a GOMap project by converting individual shapefiles to a coarse resolution. Once all shapefiles have been imported, the project conversion script rebuilds all shapefiles to the new resolution without requiring further input from the user and providing feedback as shown in Fig. 3.

Photovoltaic power stations
GOMap is equipped with a PVPS modelling script to calculate the optimal tilt angle and azimuth angle based on solar geometry [20], local weather information, and site coordinate. The model can also determine the inter-row distance between rows of PVPS to avoid shade from nearby rows [21] and generate PV polygon features to determine the number of panels that can be deployed based on a site's geometry to improve the accuracy of the energy yield. The PVPS model enables not only site-identification but also north/south-facing rooftop identification allowing policy planners from local authorities and homeowners to determine if public buildings or dwellings are orientated towards an ideal direction to fully benefit from solar radiation. The opportunity map can display all buildings with north-facing or south-facing rooftops and with the in-built PVPS model allowing the required number of PV arrays to be determined based on the available roof space and its physical geometry. Two sets of information are required [22]: a building polygon shapefile and a high-resolution digital surface model (DSM) containing heights for all natural and man-made structures such as trees and buildings.
The 2 m resolution DSM is translated into an aspect raster [23], an image file comprised of pixels each storing the value of its directional angle in relation to neighbouring pixels. A value of 0 • represents due north and 90 • as due east. The aspect raster is filtered to remove irrelevant information by reclassifying the pixel values to Boolean. For Glasgow, situated in the northern hemisphere, the ideal orientation for maximum solar radiation is south-facing. Therefore, pixel values in the directional range of 135 • and 225 • are saved with the value 1; all other values are saved with the value 0. All pixels with the value 1 are extracted and spatially intersected with the building polygon to obtain a new output shapefile containing polygons representing southfacing rooftops. Using the geometry of the roof space allows the script to determine the number of possible PV arrays to be installed. Using a higher resolution DSM would allow for a more accurate analysis when allocating roof space for PV deployment. Fig. 4 (left image) shows the PVPS scripting configuration interface containing the parameters that can be customised by the user including size of the PV array, tilt, and orientation angles etc. if these are known, otherwise the script can automatically detect the optimal parameters using local weather and site coordinate information. The output of this script generates opportunity areas based on either ground anchored PVPS or roof space PVPS, the latter of which is shown in Fig. 4 (right image).

Wind turbine
The wind turbine modelling script allows planners to determine the maximum number of turbines to be deployed within a site considering its geometry. The script uses the third law of motion and substitutes in the rate of change, mass flow rate, and the Betz Limit which is the theoretical maximum power efficiency (or coefficient of power which does not exceed 0.59) of any wind turbine design [24]. Specifications such as rotor diameter, wind speed, turbine efficiency and minimum distance between turbines can be defined to identify suitable placements for wind turbine installation ensuring the turbines are not in close proximity to one another or a residential area.
For each identified site, the number of wind turbine point features are estimated based on the area of the site and the sweeping area of a turbine. This model then randomly distributes To ensure each turbine is located at a minimum distance to another, circular polygon buffers are generated around each point where the diameter of the buffer is equivalent to the minimum distance. A geometric check is performed where if a buffer intersects another, that buffer and its associated point feature are removed. Once the geometric check is complete, all buffers are removed. Fig. 5 (left image) shows the wind turbine scripting configuration interface containing the parameters that can be customised by the user including rotor size, spacing between turbines, and average wind speed. The output of this script generates opportunity areas ensuring the location of each wind turbine is not within the defined proximity distance of another turbine as shown in Fig. 5 (right image).

Local district heating network
The local district heating network modelling script identifies dwellings and/or other buildings that can be supplied with heat energy within a defined proximity. Specifications such as energy network capacity, coefficient of performance, percentage heat loss, and the proximity radius that the network would supply can be configured. A building polygon layer with heat demand attribute data is required to calculate whether the building can be supplied by the network.
For each identified site, a heating network point feature is generated taking into consideration the proximity of the network. Within this proximity, another heating network point feature cannot be generated. A circular polygon buffer is created around the point feature where the diameter of the buffer is equivalent to the defined proximity. A building polygon layer is used in conjunction with the buffer to capture all buildings that fall within the heating network and the distance from the building to the point feature is recorded. Once all buildings within the network have been identified, the buildings are sorted beginning with the shortest distance. As the total energy supply of the network is calculated based on the input parameters, the model iterates through each building and subtracts the available supply with the building's heat demand. Boolean values are used whereby if the heat demand of the building is less than the available supply, the building polygon is assigned the value 1; if the heat demand of the building is more than the available supply, the building and all remaining building polygons are assigned the value 0. Fig. 6 (left image) shows the local district heating network scripting configuration interface containing the parameters that can be customised by the user including heat network capacity, coefficient of performance, and heat loss The output of this script generates opportunity areas identifying the source location of the local district heating network and all buildings within the defined proximity which can be supplied by the network (shown as green polygons) or not (shown as red polygons) as shown in Fig. 6 (right image).

Impact
GOMap has been noted for considering roads and car parks in its identification for areas for the deployment of PVPS during a scenario which examined the solar potential of building rooftops [25]. The technique employed by [25] used solar insolation data to calculate parts of the rooftop which receives the highest solar radiation. During its analysis, it calculates the solar radiation for all rooftops (north-facing and south-facing) and for the entire area of the roof. Although this technique is useful, discounting the relevant side of the rooftop (such as the northfacing rooftop when in the northern hemisphere), and taking into account the geometry of the roof to determine the number of PV arrays that can be installed, may have improved the overall analysis -both measures which can be enabled via GOMap.
Although there are several tools capable of generating opportunity maps, very few are populated with high-resolution information from both the local authority and local utility provider. GOMap has been designed in collaboration with two such bodies and is equipped with identifying sites for RET deployment based on comprehensive and detailed spatial information. It also provides a template for users to generate opportunity maps for other cities or areas of interest. The tool is designed as an aid for use within the decision-making process and to encourage collaboration between city planners and utility specialists. Due to the tool being open-source, modifications can be made such as: to expand existing and introduce new RET scripting models; address other issues which may have significant impact to RET deployment such as costs and revenues to determine suitable financial options; or integration of building performance simulation software for in-depth local community appraisal.

Conclusions
A Python-developed GIS opportunity mapping tool has been developed and trialled for the City of Glasgow, combining policy and technical spatial information in conjunction with RET modelling. GOMap is designed as a decision support tool to increase collaboration between policy makers and utility specialists in identifying suitable sites for RET deployment. The tool is built on top of the open-source QGIS software and was made as a freely available, open-source plugin application. In future, existing energy models can be modified and updated, and new energy models can be written into GOMap's framework further expanding the tool's capabilities. Connecting the tool to urban simulation programs allows determination of annual electrical requirements for communities while including consideration of occupancy behaviour and smart control systems. With this increased information, GOMap can generate opportunity maps depicting energy supply and demand at community scale.

Declaration of competing interest
The authors declare that they have no known competing financial interests or personal relationships that could have appeared to influence the work reported in this paper.

Data availability
The GOMap tool, its source code and the data used are available from the ESRU repository: https://www.esru.strath.ac.uk/ applications/gomap. assessment rules in the context of the city of Glasgow. Thanks, are also extended to Innovate UK, who provided funding for the original project [ID:101460].