旋转多边形而不改变内部空间关系
我有一个多边形的 shapefile 文件,我想把它旋转一下。我可以做到旋转,但问题是,旋转后内部的顶点也会改变。这就导致了多边形之间重叠,而我并不想要这种情况。
这是我尝试过的。
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
https://drive.google.com/drive/folders/1HJpnNL-iXU_rReQzVcDGuyWZ8IjciKP8?usp=drive_link 这是多边形的链接
1 个回答
3
如果我理解正确,你需要把centroid
(中心点)作为旋转的起点,而这个中心点是从unary_union
得到的。
out = gpd.GeoDataFrame(
geometry=gdf.rotate(
angle=-90, origin=list(gdf.unary_union.centroid.coords)[0]
)
)
注意: 你不需要explode
几何形状,因为你没有多边形组合。
使用的输入数据(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")