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