python - 如何在 pandas 或 GeoPandas 中过滤具有无效几何图形的 WKT 字符串

标签 python geopandas shapely wkt

我正在尝试将 Excel 文件转换为 GeoPandas 数据框。我正在尝试使用 Shapely 和 WKT 来做到这一点。

将文件读入 pandas 后,我有一个几何列。我正在尝试执行以下操作将几何列转换为“对象”数据类型:

from shapely import wkt

my_df['geometry'] = my_df['geometry'].apply(wkt.loads)

我收到以下错误:

WKTReadingError: Could not create geometry because of errors while reading input.

为了尝试诊断问题所在,我还尝试使用以下代码将此 Excel 文件转换为地理数据框:

import geopandas

my_df = gpd.GeoDataFrame(my_df, geometry='geometry')

我收到以下错误:

TypeError: Input must be valid geometry objects: MULTIPOLYGON (((1314112.145833299 1027703.927083313, 1314091.947916642 1027761.937499985, 1314232.583333299 1027811.447916642, 1314240.99999997 1027814.395833313, 1314246.739583299 1027794.468749985, 1314292.71874997 1027692.947916642, 1314282.18749997 1027689.010416642, 1314136.364583299 1027634.374999985, 1314112.145833299 1027703.927083313)))

看来我只有一个不好的几何形状? (或者它可能只是第一个坏的几何形状)。

我可以在 wkt.loads 步骤中跳过这个糟糕的部分吗?我找不到有关如何执行此操作的文档或其他示例。

最佳答案

您可以使用循环而不是应用 try/except 来捕获错误的几何图形。

from shapely import wkt

geom = []

for g in my_df['geometry']:
    try:
        geom.append(wkt.loads(g))
    except:
        geom.append(None)

my_df['geometry'] = geom

关于python - 如何在 pandas 或 GeoPandas 中过滤具有无效几何图形的 WKT 字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64688028/

相关文章:

python - 两条线串的交集 Geopandas

python - Django 500 内部服务器错误 - 配置不当 : Error loading MySQLdb module:

Python geopandas - 如何聚合(或进行其他一些统计)多边形内点的值?

python - Conda install some-package hangs with (Solving environment : failed)

python - 如何获取多边形的边作为 LineStrings?

python - geopandas df 中的形状点几何到纬度/经度列

python - 如何使用pip更新私有(private)包?

python - 如何在没有循环的情况下将负元素转换为零?

python - 如何让 python 等到 Excel 宏/刷新完成

python - GeoPandas 中的格式/圆形数字图例标签