-这是一个普遍存在的Python问题。
我经常遇到拓扑错误,它们很小,即使它们在那里,我也想继续进行交叉。是否有可能为此例外设置一个例外:
TopologyException: found non-noded intersection between LINESTRING (229971 4.39944e+06, 229971 4.39944e+06) and LINESTRING (229971 4.39944e+06, 229971 4.39944e+06) at 229971.08857010119 4399438.0928708706
并使其完全完成该过程?我正在使用Python和Geopandas。
有时在十字路口也说:
TopologicalError: This operation could not be performed. Reason: unknown
是否可能出现任何这样的行:inte_s=gpd.overlay(data2,asttom,how='intersection')
导致此错误创建异常并使其不受出现的错误影响而执行计算?在完成交点的这一行中,什么代码可以做到?
答案 0 :(得分:1)
处理Python错误的一种方法是使用try and except statement。
这是我在测试时经常使用的示例代码。您可以将可能失败的操作放在该块的try部分中,即使它确实引发异常,您的整个脚本也不会损坏。
try:
#operation that may fail
except Exception as e:
print('something went wrong: ' + e)
# what you want to do if the operation does fail
上面的代码是try / except语句的一般形式。如果您希望捕获特定于 的错误,那么您正在寻找类似this这样的答案。
答案 1 :(得分:0)
是的,您可以使用try/except
块跳过或处理python中的任何异常。在您的情况下,将是:
try:
inte_s=gpd.overlay(data2,asttom,how='intersection')
except (TopologicalError, TopologyException):
#skipping error here
pass
答案 2 :(得分:0)
TopologicalError需要首先导入,然后使用try ... except语句。
from shapely.geos import TopologicalError
try:
# your code that may raise the exception
except TopologicalError:
# alternative code if the exception is raised