Naming of solar panels according to their spatial distribution and clustering in panels. This repository requires a previous tool for automatically extracting quads depicting solar panels. Hence, the input of this program is a .shp
file.
Dependencies are defined in requirements.txt
. These include matplotlib
, numpy
, seaborn
, Fiona
, pandas
and jupyter
.
The workflow mainly depends on three parameters that can be found in panel_naming.ipynb
, which are the following:
-
Filename: path of a
.shp
file that includes the geometry of solar panels. -
Epsilon distance in DBSCAN: maximum distance between two points.
-
Max distance between cells in the same row. It must be configured according to how well were cells obtained. Normally, a value below 0.5 meters works fine.
The workflow consists of two main steps:
- Clustering and ordering of arrays. Arrays are the nomenclature used to refer to isolated groups of solar panels. These are first extracted with DBSCAN and then sorted in X and Y.
Ordered identification of arrays.
- Clustering and ordering of cells. The same as the previous step, but applied to panels in arrays instead of simply arrays.
Ordered identification of arrays and panels.
The script identify_missing_panels.ipynb
can detect missing panels from a previously generated .shp
file. From the previous step, the number of columns and rows is known for each array and thus the solar plantation can be filled with those panels that were not detected in the algorithm of your preference.
The only parameter that can be configured during this process is the threshold distance considered to decide whether the space between two consecutive panels is too much or not (threshold_distance
). Note that this factor will be multiplied by the average panel width, and therefore, can be specified in terms of %.
Initial panel detection with missing geometry.
Fixed geometry of a solar plantation.
- Make it robust to manage arrays that have different directions. Currently, a global direction is averaged and every array is considered to expand in such a direction.