geopandas.GeoDataFrame.set_geometry#

GeoDataFrame.set_geometry(col, drop=None, inplace=False, crs=None)[来源]#

使用现有列或指定输入设置GeoDataFrame几何形状。默认情况下生成新对象。

原始几何列被输入替换。

Parameters:
colcolumn label or array-like

一个现有的列名或值,将作为新的几何列。如果传递了值(类数组,(地理)系列),如果它们是命名的(系列),新的几何列将具有相应的名称,否则现有的几何列将被替换。如果没有现有的几何列,新几何列将使用默认名称“geometry”。

dropboolean, default False

当为 col 指定一个命名的序列或现有的列名时,控制是否应该从结果中删除之前的几何列。默认值为 False,保留旧的和新的几何列。

自版本 1.0.0 起已弃用。

inplaceboolean, default False

在原地修改GeoDataFrame(不要创建新对象)

crspyproj.CRS, optional

要使用的坐标系统。该值可以是任何被 pyproj.CRS.from_user_input() 接受的内容,例如权威字符串(例如“EPSG:4326”)或 WKT 字符串。如果传递,将覆盖 DataFrame 和列的 crs。否则,尝试从传递的列值或 DataFrame 中获取 crs。

Returns:
GeoDataFrame

另请参阅

GeoDataFrame.rename_geometry

重命名活动几何列

示例

>>> from shapely.geometry import Point
>>> d = {'col1': ['name1', 'name2'], 'geometry': [Point(1, 2), Point(2, 1)]}
>>> gdf = geopandas.GeoDataFrame(d, crs="EPSG:4326")
>>> gdf
    col1     geometry
0  name1  POINT (1 2)
1  name2  POINT (2 1)

传递一个数组:

>>> df1 = gdf.set_geometry([Point(0,0), Point(1,1)])
>>> df1
    col1     geometry
0  name1  POINT (0 0)
1  name2  POINT (1 1)

使用现有列:

>>> gdf["buffered"] = gdf.buffer(2)
>>> df2 = gdf.set_geometry("buffered")
>>> df2.geometry
0    POLYGON ((3 2, 2.99037 1.80397, 2.96157 1.6098...
1    POLYGON ((4 1, 3.99037 0.80397, 3.96157 0.6098...
Name: buffered, dtype: geometry