
As cities grow, so does the need for sustainable energy. Did you know that there are compact wind turbines that can silently operate on rooftops providing power back to the energy grid while blending into the urban skyline? These small but mighty turbines can help offset energy waste while generating clean energy, however, finding the right locations to install them can be tricky.
Dr. Ioannis Tsionas (co-author of this blog and Senior Associate Researcher at LAB, UC Louvain) has provided the following project details to share how it can be done using Python in ArcGIS CityEngine.
Project Overview
The UC Louvain research institute for Landscape, Architecture, and the Built Environment (LAB) joined the Wind Energy for Brussels (WEB) project from 2022 to 2024. The project explored the feasibility of installing Small Urban Wind Turbines (SUWT) in the Northern Quarter Central Business District of Brussels. This area features high-rise buildings ideal for catching strong winds while having space to support turbine installation and maintenance.
Recognizing this potential, UC Louvain analysts partnered with engineers from BuildWind to develop a data-driven approach. With co-financing from Innoviris (a public organization that supports research and innovation in Brussels) all stakeholders committed to making a meaningful and sustainable impact in the city’s downtown core.

Investigating Urban Wind Energy Potential
Integrating SUWTs in urban areas offers many advantages. They generate clean energy that is consumed locally which, reduces dependence on grid infrastructure and they support city resilience in case of power shortages. As technology advances, the systems have also gotten smaller, quieter, and easier to connect to the grid, improving cost-effectiveness and accessibility.
However, before installation, SUWTs must be justified based on net energy gain including grey energy impacts. This means that they need to consume less energy and greenhouse gases from assembly and manufacturing to decommissioning (cradle to grave) than the energy they replace.

SUWTs have a lifespan of 15 to 25 years. To evaluate energy potential, WEB project analysts first assessed wind resource availability and power production efficiency. They built simulations with Computational Fluid Dynamics (CFD) enhanced with machine learning to provide cost-effective wind resource estimations. Meanwhile, a hybrid Life Cycle Analysis (LCA) examined energy requirements for manufacturing, transport, installation, maintenance, and decommissioning. This approach determined the return on investment in energy and emissions for each proposed candidate location.

Potential Challenges
Installing SUWTs in urban environments comes with challenges. Public concerns can include:
- Mechanical failures posing risks to pedestrians
- Ice hazards from moving blades
- Threats to wildlife (particularly flying fauna)
- Vibrations affecting buildings
- Noise Impact
- Visual impact
UC Louvain analysts (including the co-author of this blog), focused on noise and visual pollution as key factors in gaining public acceptance. The noise impact analysis was more straightforward since most SUWT specifications report decibel (dB) levels as “low.” The hummm of a small generator and the soft whooshing of the small blades on these turbines would not overwhelm the atmospheric sounds of the surrounding urban environment. Additionally, distance attenuation from high-rise rooftops and the pre-existing building systems would further mask the sound of these proposed SUWTs.
Ultimately, understanding the visual impact of turbines on the Northern Quarter proved more complex – requiring further study. Analysts found that in this case, aesthetic subjectivity and perception would often contend with project goals. For example, a turbine near a monument might be seen as intrusive, while one on a modern building would symbolize a commitment to green energy.
To further explore these impact studies, check out these peer reviewed articles (Tsionas, Llaguno and Stephan, 2025)
Rooftop Refinement in ArcGIS Pro
To evaluate turbine visibility, ArcGIS Pro helped to centralize and process 2D and 3D data sources. Initially, building footprints were extruded as low-poly massing models. Later, the team received and processed aerial LiDAR and terrestrial laser scan (TLS) data to refine roof geometries. This would provide a digital twin of the existing roof structures for better visibility results. In this blog, the Finance Tower (a prominent building in the study area) will demonstrate how all buildings and their associated candidate locations were analyzed for visibility in the Northern Quarter.


Creating Candidate Locations and Observation Points
Using this data, 2,079 candidate locations were selected in wind-exposed areas without disrupting pre-existing infrastructure. Analysts then placed 22,512 observation points in public spaces at 5- to 10-meter intervals. With the 3D Analyst extension Intervisibility tool in ArcGIS Pro, the team began the analysis, seeking which locations (undesirably) had high-visibility.
A custom toolbox created with ModelBuilder in ArcGIS Pro enabled detailed, user-defined assessments to test the and alter the placement of these candidates and observer points. Analysts tested views from roads, parks, rivers, and landmarks, ensuring a structured and reusable geoprocessing solution.

Being able to manipulate density and observer height parameters allowed for a more flexible analysis whilst considering the view from different public perspectives. For realistic results, a varying observer height was set to accommodate for physical differences (e.g. child vs. adult). Analysts also accounted for varying elevations from the ground up including views from trains, cars, boats, building floors, terraces and flight paths.
Enhancing Accuracy with ArcGIS CityEngine
This project initially didn’t plan to use ArcGIS CityEngine – but sometimes the right tool finds you!
In the larger suite of Esri products, you have many tools that you can use to customize workflows. Sometimes, it’s just about dipping into your creative problem-solving skills as you progress towards a goal.
Although ArcGIS Pro provided a solid foundation for data and analysis, there were some limitations for this specific use case. Analysts found that SUWTs were only represented as points, resulting in simple yes/no visibility results when using the intervisibility tool. This led to false negatives when accounting for partial visibility.
Additionally, since objects appear smaller and harder to see with distance, analysts realized they couldn’t directly account for this using the intervisibility tool.
At this stage, the team pivoted to CityEngine, allowing them to measure visual prominence using solid angles. These measurements (steradians) could then be normalized as a percentage of the Field of View (FOV) to better align with human visual perception.

Field of View (FOV) Coverage by Distance
As the observer’s distance increases, the area covered by each FOV grows significantly. For example, at 20 meters, the binocular view covers 4,800 m², but at 1,000 meters, it expands to 12,000,000 m².
- Binocular View (120° x 120°): Covers a large area but with less detail.
- Central View (60° x 30°): A balanced view with moderate detail.
- Foveal View (12° x 10°): Focuses on small areas with high detail.

A full 360° spherical view equals 12.57 steradians, but humans can only see a portion of this. To measure visibility accurately in CityEngine, analysts calculated how much of the view was occupied by wind turbines at different distances.
Python in CityEngine
Python scripting capabilities in CityEngine streamlined the analysis. With so many install locations and observation points across the study area, automation was essential.
Using Python, the project analysts could more efficiently create viewsheds according to a desired FOV and systematically extract the metrics into comma-separated value (*.csv) files. Those CSV files could then be reimported into ArcGIS Pro and geocoded as point data on a map. Attributes were otherwise related to the original observation points to visualize the one-to-many relationship between them. Check out the CityEngine Python Reference manual to automate workflows on your next project!

Workflow Overview
- Transition from points to 3D models – In ArcGIS Pro the SUWTs were originally represented as points in ArcGIS Pro, so the team drafted a 3D collada (*.dae) model of the turbine by specification so that it could be replicated in visualizations.
- Import 3D Collada (*.dae) models of SUWTs into CityEngine as assets
- Import observation points from ArcGIS Pro into CityEngine using a file geodatabase
- Import refined multipatch buildings of existing conditions into CityEngine using a file geodatabase
- Create Python (*.py) scripts in the CityEngine Python module
- Run a Python (*.py) script to create and alter visibility based on horizontal and vertical FOVs
- Run a Python (*.py) script to export and save the observation points’ coordinates and corresponding viewing metrics into a comma-separated value (*.csv) file
- In ArcGIS Pro, geocode and convert comma-separated value (*.csv) file into points
- In ArcGIS Pro, use a relationship class to analyze the one-to-many relationship between SUWTs and observation points
- Publish and symbolize findings for interactive web viewing in ArcGIS Online

Sharing the Work
It’s always great when technical professionals can share their knowledge and offer a helping hand or inspire a spark of creativity to continue the original work. With this in mind, UC Louvain analysts have provided a Python (*.py) script to share with the ArcGIS CityEngine Community – that’s you!
The script exports the analysis to a CSV file with visibility metrics and viewshed information including the viewing distance and the FOV. The visibility metrics are reported by layer, in sterads X 1000 to enable readability. View/observer points are selected as viewshed layers in the legend and target objects are in the layers with the targetFilter expression which is hard-coded. The script itself is publicly available on Github for anyone that needs it or desires to improve it.
The Finance Tower – Example Building Results
Using Python to automate the analysis made it much easier to evaluate each SUWT location. The Finance Tower – standing at 141 meters tall was a key test site to validate the analysis. Its rooftop is exposed to high winds and features structures like edge protection, antennas, and mechanical equipment – elements that could help conceal the turbines.
For example, when placing a SUWT at the center of the Finance Tower’s roof, a simple roof model showed eastward visibility. However, the refined roof geometry introduced more obstructions, ultimately blocking visibility to the east. Each SUWT location was tested using Python to ensure accurate results. Check out Fig #11A/B to compare the sightlines, where colors indicate distance (dark = short, light = far).

Continuing to use the Finance Tower as an example, let’s take a look at the map below (Fig#12). You’ll notice that the size of the red circles indicates the degree of visibility and the X’s mean that no visibility was reported (the desired outcome). Now that this analysis is automated, adjustments can be made quickly to try and increase the number of SUWTs hidden from view.

Key Findings from the Enhanced Analysis
- Enhanced 3D models reduced overall SUWT visibility by 1.3%
- 11,681 additional lines of sight reported no visibility (a desired outcome) due to refined building geometry
- Visibility patterns varied based on location, surrounding buildings, and observer positions

Computational Efficiency
Analysis in 3D can be demanding on graphics and processing efficiency. For this effort, analyzing visibility required significant processing power. Sessions handled 300 to 500 observation points at a time. The team had to upgrade to a 12th Gen Intel Core i7-12700H with 32GB RAM which outperformed the older Intel Core i5-6500 with 8GB RAM that they started with. It’s a good idea to keep this in mind if embarking on a similar task. To help, you can also check out the Minimum System Requirements and Optimization Recommendations for Graphics Cards before starting your work.
Measuring Success
Urban environments are complex. Gaining public acceptance for energy infrastructure requires balancing quantitative data with subjective perceptions. As with this project, success may also depend on precise modeling, automation, and strong stakeholder collaboration.
By integrating CityEngine with other technologies and data types, you can refine analyses, improve stakeholder collaboration, enhance transparency and develop effective strategies for real-world implementation. Ready to explore? Try CityEngine’s free 21-day trial and visit the CityEngine Community Board to ask questions.
Co-Author

Commenting is not enabled for this article.