Проблемы с удалением записей из шейп-файла с использованием класса Editor() в pyShp

Я использую pyShp для добавления трех полигонов в новый шейп-файл. Я добавил геометрию и записи (атрибуты). Пока нет проблем.

Позже я хотел использовать класс Editor() для удаления одного из трех полигонов. Если я попытаюсь удалить последний «P3», он будет работать нормально.

Проблема возникает, когда я пытаюсь удалить любой другой полигон. Например, если я удалю первый, форма исчезнет, ​​но ее атрибуты останутся, поэтому многоугольник «P2» наследует их. Запись, которая удаляется, является последней (первоначально связанной с «P3»).

import shapefile
w = shapefile.Writer(shapefile.POLYGONZ)
print(w.shapeType)
w.poly(parts=[[[0,0],[5,0],[5,5],[0,5]]])
w.poly(parts=[[[10,0],[15,0],[15,10],[10,5]]])
w.poly(parts=[[[5,10],[10,10],[10,15],[5,15]]])

w.field('NAME', 'C',40)
w.record('P1')
w.record('P2')
w.record('P3')
w.save("polygons")

edit = shapefile.Editor("polygons")
edit.delete(0)
edit.save("polygonDeleted")

Я знаю, что могу выбрать две фигуры, которые хочу сохранить, и записать их в новый шейп-файл, но мне хотелось бы понять, почему класс Editor() не работает должным образом.


person Daniel    schedule 30.07.2018    source источник


Ответы (1)


В новейшей версии pyshp удален класс Editor(), поэтому он больше не доступен.

person Daniel    schedule 27.05.2019