Я удаляю кучу полей из слоев в наборе данных.
Но я обнаружил, что после удаления некоторых полей я получаю segfault, если я пытаюсь перебирать функции после удаления полей
# 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)
Может ли кто-нибудь помочь мне понять, почему я теряю возможность итерации после удаления полей?