Python 如何将质心与几何图形一起保存在形状文件中?

Python 如何将质心与几何图形一起保存在形状文件中?,python,pandas,shapely,geopandas,Python,Pandas,Shapely,Geopandas,我计算了一些地理数据框的质心 M["centroid"] = M.centroid 现在,我想将该列保存在shp文件中,然后执行以下操作 M[["centroid","geometry"]].to_file("mfile.shp") 但司机抱怨我无法将点与几何图形一起保存。我想这没关系,但我想知道使用geopandas将控件信息与其他地理信息一起存储的最佳方法是什么,因为geopandas不允许保存两个几何列(创建shapefile时),我建议将xy坐标保存到每个质心的列中。从这一点上,你总

我计算了一些
地理数据框的质心

M["centroid"] = M.centroid
现在,我想将该列保存在
shp
文件中,然后执行以下操作

M[["centroid","geometry"]].to_file("mfile.shp")

但司机抱怨我无法将
与几何图形一起保存。我想这没关系,但我想知道使用
geopandas

将控件信息与其他地理信息一起存储的最佳方法是什么,因为geopandas不允许保存两个几何列(创建shapefile时),我建议将xy坐标保存到每个质心的列中。从这一点上,你总是可以很容易地变得匀称

for index, row in M.iterrows():
    centroid_coords = row.geometry.centroid.coords.xy
    M.loc[index, 'cen_x'] = centroid_coords[0][0]
    M.loc[index, 'cen_y'] = centroid_coords[1][0]

M[["cen_x", "cen_y", "geometry"]].to_file("mfile.shp")
根据以下评论进行编辑(谢谢,我没有意识到):


小注释:您不需要迭代,因为您可以直接访问x/y坐标:
M.centroid.x
M.centroid.y
(或者将
M.centroid
保存到临时变量中,以避免计算两次)
temp = M.centroid

M['cen_x'] = temp.x
M['cen_y'] = temp.y

M[["cen_x", "cen_y", "geometry"]].to_file("mfile.shp")