【发布时间】:2020-05-28 13:31:46
【问题描述】:
我正在从数据集中的图层中删除一堆字段。
但是我发现,一旦我删除了一些字段,如果我在删除字段后尝试迭代功能,就会出现段错误
# If I comment out this for loop that deletes fields everything is fine
for layer in ds:
layer_fields = _get_layer_fields(layer)
for field in layer_fields:
if field in list_of_fields_to_delete:
layer.DeleteField(layer.FindFieldIndex(field, True))
# This prints successfully showing the fields have been deleted
for layer in ds:
print(layer.GetFeatureCount())
print(_get_layer_fields(layer))
# but if I do delete feilds it will segfault when I try to iterate over features
for layer in ds:
for feature in layer:
pass
# Here's the function were calling for list of fields
def _get_layer_fields(layer):
layerDefinition = layer.GetLayerDefn()
layer_fields = []
if layerDefinition.GetFieldCount():
for i in range(layerDefinition.GetFieldCount()):
layer_fields.append(layerDefinition.GetFieldDefn(i).GetName())
我可以GetFeatureCount、GetFieldCount 提供所有这些好东西,但是一旦我删除了字段,我就无法迭代这些功能,我得到一个错误
进程以退出代码 139 结束(被信号 11:SIGSEGV 中断)
谁能帮我理解为什么我在删除字段后失去了迭代的能力?
【问题讨论】:
-
是不是因为我的特征无效,它们可能不再匹配图层定义?如果是这样,我的问题变成了如何从具有特征的图层中删除字段?
标签: python segmentation-fault layer ogr