gpt4 book ai didi

python - Geopandas 旋转功能

转载 作者:行者123 更新时间:2023-12-01 08:26:02 27 4
gpt4 key购买 nike

我想使用geopandas.rotate()函数根据列中的属性旋转geodataframe中的所有要素。如果我只选择一项功能,我就会成功。然而,对于多行,我相信我需要创建一个 for 循环。

new_gdf = gpd.GeoDataFrame(columns=foo.columns)
for index, row in foo.iterrows():
bar = foo[foo[row]].rotate(foo[rotation_col], origin='center')
new_gdf=new_gdf.append(bar)

当我尝试编写 for 循环时,出现类型错误 unhashable type: 'Polygon'。我还尝试编写 .apply() 函数。我不确定我做的对吗?但这就是我所拥有的:

foo_new = foo.apply(foo.rotate(foo.rotation_col, origin='center'))

我可以根据需要提供更多信息。

谢谢

最佳答案

您正在尝试旋转 shapely.Polygon,而不是 GeoPandas.GeoSeries,因此您需要使用 shapely 来执行此操作。

import geopandas as gpd
import shapely

p1 = shapely.geometry.Polygon([(0, 0), (1, 0), (1, 1), (0, 1)])
p2 = shapely.geometry.Polygon([(2, 0), (3, 0), (3, 1), (2, 1)])

g = gpd.GeoSeries([p1, p2])

gdf = gpd.GeoDataFrame(geometry=g)
gdf['angle'] = [25, 45]

for index, row in gdf.iterrows():
rotated = shapely.affinity.rotate(row['geometry'], row['angle'])
gdf.loc[index, 'geometry'] = rotated

关于python - Geopandas 旋转功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54247745/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com