我有一个多多边形Shapfile,我想旋转.我可以做旋转,但问题是旋转器改变了内部顶点.这就创造了我不想要的多边形重叠.

这就是我try 过的.

import geopandas as gpd
input_poly_path = "poly3.shp"
gdf = gpd.read_file(input_poly_path)
explode = gdf.explode(ignore_index=True)
ex = explode.rotate(-90, origin="centroid")
g = gpd.GeoDataFrame(columns=['geometry'], geometry='geometry')
g["geometry"] = ex

Original polygon Rotated polygon

https://drive.google.com/drive/folders/1HJpnNL-iXU_rReQzVcDGuyWZ8IjciKP8?usp=drive_link 链接到面

推荐答案

IIUC,你需要通过unary_unioncentroid作为旋转的origin:

out = gpd.GeoDataFrame(
    geometry=gdf.rotate(
        angle=-90, origin=list(gdf.unary_union.centroid.coords)[0]
    )
)

102: There is no need to 100 the geometry, because you do not have 101.

enter image description here

使用的输入(gdf):

import geopandas as gpd

# download from Google Drive
input_poly_path = (
    "C:/Users/Timeless/Downloads/"
    "share-20240330T125957Z-001.zip!share"
)

gdf = gpd.read_file(input_poly_path, engine="pyogrio")

Python相关问答推荐

如何处理嵌套的SON?

使用FASTCGI在IIS上运行Django频道

对整个 pyramid 进行分组与对 pyramid 列子集进行分组

如何访问所有文件,例如环境变量

' osmnx.shortest_track '返回有效源 node 和目标 node 的'无'

无法定位元素错误404

我如何使法国在 map 中完全透明的代码?

从一个系列创建一个Dataframe,特别是如何重命名其中的列(例如:使用NAs/NaN)

幂集,其中每个元素可以是正或负""""

为什么在FastAPI中创建与数据库的连接时需要使用生成器?

Polars map_使用多处理对UDF进行批处理

Python pint将1/华氏度转换为1/摄氏度°°

将CSS链接到HTML文件的问题

解决Geopandas和Altair中的正图和投影问题

获取git修订版中每个文件的最后修改时间的最有效方法是什么?

在第一次调用时使用不同行为的re. sub的最佳方式

多个矩阵的张量积

Django抛出重复的键值违反唯一约束错误

随机森林n_估计器的计算

普洛特利express 发布的人口普查数据失败