# Difference between df.geometry.buffer and df.geometry.scale in plain english

I am still struggling to grasp the difference between `df.geometry.buffer` and `df.geometry.scale`.

They can both be used to increase the size of a polygon but how are they different?

While in `df.geometry.scale(xfact=1.01, yfact=1.01, zfact=1.01, origin='center') ` we know how much we could increase the size from the origin but in buffer it is unclear to me. For example, how much does `df.geometry.buffer(0.001)` increase the polygon? how can I check the final result?

Can someone clarify?

• One scale the geometry by a factor (and can use different scale on each axis) while the other expend the feature by a fixed distance (as the distance is in the CRS unit this probably shouldn't be directly used with feature on a geographic CRS)
– J.R
Commented Feb 23, 2023 at 11:38

``````import geopandas as gpd
import shapely
import matplotlib.pyplot as plt

geoms = ["Polygon ((716228 7200069, 716072 7198883, 717168 7198760, 716228 7200069))",
"Polygon ((714718 7200461, 713185 7199633, 714617 7200136, 713868 7199342, 714875 7200270, 714718 7200461))",
"LineString (713487 7197585, 713610 7198659, 713968 7197541, 714192 7198547)"]
geoms = [shapely.wkt.loads(x) for x in geoms]

df = gpd.GeoDataFrame(geometry=geoms, crs=3006)

fig, ax = plt.subplots(figsize=(15, 15))
df.plot(ax=ax, color="blue")
``````

When you buffer you get a polygon with "all points within a given distance of each geometric object." Imagine walking around the feature always at a fixed distance from it.

``````for distance in range(50,250,50):
df.buffer(distance).plot(ax=ax, alpha=0.2)
``````

My coordinate system have meters as units so buffer(50) means buffer with 50 meters.

When you scale the entire shape is enlarged or smallen. It is like you are zooming in or out, the shape is not changed, the corners stay the same etc.

``````for scale in range(11, 15, 1):
df.scale(xfact=scale/10, yfact=scale/10).plot(ax=ax, alpha=0.1, color="green")
``````

The units are factors in x, y, z dimensions. 1.5 means scale 150 %.