当前位置: 首页 > 知识库问答 >
问题:

将多边形列从字符串转换为GeoPandas几何体

尉迟俊能
2023-03-14

我有一个数据帧存储为csv文件,其中一列是多边形对象。但是,此列存储为字符串,而不是GeoPandas几何对象。如何将此列转换为Geopandas几何对象,以便执行地理分析?

这就是我的数据的样子

my_df['geometry'].head()
0    POLYGON ((-122.419942 37.809021, -122.419938 3...
1    POLYGON ((-122.419942 37.809021, -122.419938 3...
2    POLYGON ((-122.419942 37.809021, -122.419938 3...
3    POLYGON ((-122.419942 37.809021, -122.419938 3...
4    POLYGON ((-122.405659 37.806674, -122.405974 3...
Name: geometry, dtype: object

我想将此Pandas数据帧转换为Geopandas GeopataFrame,使用列“geometry”作为Geopandas geometry列。

my_geo_df = gpd.GeoDataFrame(my_df, geometry=my_df['geometry'])

但是,由于列存储为字符串,因此Geopandas。DataFrame()无法识别它,因此无法实际创建GeoDataFrame。

TypeError: Input geometry column must contain valid geometry objects.

共有1个答案

谈禄
2023-03-14

多边形的格式为WKT,因此必须将其转换为shapely多边形。以下是Geopandas文件(https://geopandas.readthedocs.io/en/latest/gallery/create_geopandas_from_pandas.html)遵循

使用GeoPandas 0.9:

df['geometry'] = gpd.GeoSeries.from_wkt(df['geometry'])
my_geo_df = gpd.GeoDataFrame(my_df, geometry='geometry')

使用旧版本:

from shapely import wkt

df['geometry'] = df['geometry'].apply(wkt.loads)
my_geo_df = gpd.GeoDataFrame(my_df, geometry='geometry')
 类似资料:
  • 我不熟悉geopandas,只想绘制多边形的轮廓,类似于PostGIS中的函数 我有一个地理数据框包含每个状态的多边形 当我按一个状态划分子集时,我能够绘制该状态: 我只对轮廓感兴趣,但在留档中不清楚如何将多边形转换为线几何。在或其他空间库中是否有有用的方法可以帮助将多边形转换为线性字符串?

  • 问题内容: 如何使用Python将列表转换为字符串? 问题答案: 通过使用 或者,如果列表是整数,则在连接元素之前将其转换。

  • 问题内容: 我有一个清单 我想将其转换为字典 我该怎么做? 问题答案: 采用: 返回: 如果需要整数,请在以下位置更改分配: 这将给出:

  • 我试图在GeoPandas中找到两个多边形的并集,并输出一个包含两个多边形的点作为其顶点的单个几何体。函数为每个单独的并集提供多边形,但我想要一个多边形。 在上下文中,我使用它将两个行政区域合并为一个区域(即包括一个国家内的一个城镇区)。 下面的例子来自geopandas网站,说明了我想要的: 没有一个输出几何是我所期望的,这是以下内容: 首先,如何使用GeoPandas或shapely从输入多边

  • 问题内容: 我有一个pandas数据框。列之一包含一个列表。我希望该列为单个字符串。 例如,我的列表[‘one’,’two’,‘3’]应该简单地是‘1、2、3’ 给我[‘一个,两个,三个],[‘四个’,’五个’,’六个’],其中第二个列表来自下一行。不用说,对于数百万行,这种跨行连接不仅是不正确的,而且还会杀死我的内存。 问题答案: 在转换列表之前,您当然不应该转换为字符串。尝试: 另请注意,会将

  • 问题内容: 我有一个列表格式,如下所示: 如何转换为包含如下所示元素的列表: 问题答案: 用途: 或使用将其视为JSON : 以Python文字作为输入(因此Python源代码中的文本将为您提供一个值),以JSON输入。 演示: 只有当您的输入字符串中包含多个整数列表时,两者之间的区别才会发挥作用。JSON字符串包含unicode,在Python 2上无法正确解释,并且JSON类型只是支持的一部分