momepy.compactness_weighted_axis#

momepy.compactness_weighted_axis(geometry, longest_axis_length=None)[source]#

Calculates the compactness-weighted axis of each object in a given GeoDataFrame.

\[d_{i} \times\left(\frac{4}{\pi}-\frac{16 (area_{i})} {perimeter_{i}^{2}}\right)\]
Parameters:
geometryGeoDataFrame | GeoSeries

A GeoDataFrame or GeoSeries containing polygons to analyse.

longest_axis_lengthNDArray[np.float64] | Series | None, optional

array of longest axis lengths. If None, it will be calculated, by default None

Returns:
Series

Examples

>>> path = momepy.datasets.get_path("bubenec")
>>> buildings = geopandas.read_file(path, layer="buildings")
>>> momepy.compactness_weighted_axis(buildings)
0       26.327730
1      208.588747
2       14.358370
3       26.026429
4       14.095118
        ...
139      3.853623
140     12.462700
141     32.888900
142      3.975422
143      4.228395
Length: 144, dtype: float64

If you know the longest axis length, you can pass it to skip the computation step.

>>> lal = momepy.longest_axis_length(buildings)
>>> momepy.compactness_weighted_axis(buildings, longest_axis_length=lal)
0       26.327730
1      208.588747
2       14.358370
3       26.026429
4       14.095118
        ...
139      3.853623
140     12.462700
141     32.888900
142      3.975422
143      4.228395
Length: 144, dtype: float64