如何解决如何在熊猫或GeoPandas中过滤具有无效几何形状的WKT字符串
我正在尝试将Excel文件转换为GeoPandas数据框。我正在尝试使用Shapely和WKT。
将文件读入熊猫后,我有一个几何列。我正在尝试执行以下操作以将“几何”列转换为“对象”数据类型:
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
,
尝试使用以下简单代码仅绘制有效的几何图形:
my_df[ my_df.geometry.is_valid ].plot(ec='black',alpha=0.3)
要在新的地理数据框中仅获取有效的几何图形,请执行以下操作:
valid_gdf = my_df[ my_df.geometry.is_valid ]
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。