【问题标题】:Fix invalid geometry in Geopandas修复 Geopandas 中的无效几何图形
【发布时间】:2022-01-05 00:41:13
【问题描述】:

如何修复 Geopandas 数据框中的无效几何图形。来自:

gpdf_gml_geom_invalid = gpdf_gml_files[gpdf_gml_files.is_valid ==False]
gpdf_gml_geom_invalid.info()

我可以看到有无效的几何图形。我曾尝试使用 Shapely 来了解使用无效几何图形的原因可能是什么

gpdf_gml_geom_invalid = gpdf_gml_geom_invalid.set_geometry('geometry')
explain_validity(gpdf_gml_geom_invalid.geometry)

哪个会引发错误

AttributeError: 'GeoDataFrame' object has no attribute '_geom'

编辑,添加数据

4     MULTIPOLYGON (((526079.599 251118.907, 526080....
13    MULTIPOLYGON (((541228.102 252251.403, 541203....
16    MULTIPOLYGON (((546165.813 277723.432, 546164....
30    MULTIPOLYGON (((510680.266 267340.564, 510680....
37    MULTIPOLYGON (((520711.924 279690.049, 520721....
Name: geometry, dtype: geometry

【问题讨论】:

  • 确实需要一些样本数据来评论。 gpdf_gml_geom_invalid.head(5)
  • 谢谢,我也考虑过修改它stackoverflow.com/questions/20833344/…
  • @mappingdom - 这根本不是样本数据……那是print(gdf)。请注意...,请尝试发布minimal reproducible example。问题是你不能在整个 geopandas GeoArray/GeoSeries 上调用 shapely 命令。拿出你的无效几何列表并使用 shapely 来分别解释每个几何的有效性。

标签: python geopandas shapely


【解决方案1】:

这对我有用

def geometry_reviewer(object):
    """
    Simple function that returns output of shapely validation check
    ----------

    Returns
    -------
    <string>
      shapely output
    """  
    return explain_validity(object)

gpdf_gml_files['geometry'].apply(geometry_reviewer)

这将返回一些非常冗长的内容,您可以使用它使阅读更容易

gpdf_gml_files['geom_review_simple'] = gpdf_gml_files['geom_review'].str.split('[').str[0]
gpdf_gml_files.groupby(['geom_review_simple']).size()

输出总结了多边形验证问题,然后您可以通过编程解决

geom_review_simple
Interior is disconnected      3
Ring Self-intersection       32
Self-intersection            37
Valid Geometry              359

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多