Функция shapely.ops.transform
работает с геометрией single . Например (используя вашу функцию id_func
):
In [15]: from shapely.geometry import LineString
In [16]: from shapely.ops import transform
In [17]: l = LineString([(0, 0), (1, 1)])
In [18]: def id_func(x, y):
...: return x-10, y
In [20]: print(transform(id_func, l))
LINESTRING (-10 0, -9 1)
Если вы хотите применить это к каждой геометрии в GeoSeries / GeoDataFrame, вам нужно будет выполнить итерации по ним или применить функцию:
new_geometries = [transform(id_func, geom) for geom in alabama.geometry]
Кстати, если вы ищете способы преобразования геометрии с помощью пользовательских функций, аффинные преобразования могут быть интересны: https://shapely.readthedocs.io/en/stable/manual.html#affine-transformations (и большинство из них напрямую отображаются в GeoDataFrame / GeoSeries )