Я выясняю различия между двумя векторными слоями и соответственно атрибутирую. Как только я знаю все различия, я фильтрую слои по этим атрибутам, а затем копирую каждый объект в один выходной слой, используя функцию ниже.
После того, как я создал этот новый слой, скопировав элементы из обоих других слоев, кажется, что у него нет определения слоя, что затрудняет дальнейшие манипуляции.
def _copy_list_of_layers_to_single_output_layer(feature_class, layers, output_ds):
out_layer = output_ds.CreateLayer(feature_class)
for layer in layers:
# Ive tested the layers here, both have a layer defenition
for feature in layer:
out_layer.CreateFeature(feature)
# but once I have copied the features into the out_layer it seems to have no layer definition
Я хочу использовать определение слоя, чтобы удалить ненужные поля из нового слой, но у него его нет.
Это потому, что он создан из объектов из двух отдельных слоев?
Не уверен, почему у него нет определения слоя, на двух слоях объекты скопированы from имеют те же поля, могу ли я сгенерировать его или скопировать из исходных слоев?
edit: Я сейчас делаю это, но это похоже на обходной путь, но я получаю определение слоя таким образом
def _copy_features_to_output_layer(feature_class, layer, output_ds):
out_layer = output_ds.GetLayerByName(feature_class)
if out_layer:
for feature in layer:
out_layer.CreateFeature(feature)
else:
output_ds.CopyLayer(layer, feature_class, ['OVERWRITE=YES'])```