Как версионировать шейп-файлы

Программа, над которой я работаю, имеет несколько шейп-файлов с несколькими атрибутами. На данный момент они хранятся в нашей системе управления версиями (Subversion) в виде сжатых больших двоичных объектов (dbf.gz, shp.gz и shx.gz). Так они используются программой, но крайне неудобно для целей версионирования. Мы не получаем никакой информации об изменениях в записях или атрибутах — просто что-то где-то в файле изменилось. Нет полезного диф.

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

Другой подход может состоять в том, чтобы удалить почти все атрибуты из шейп-файла, сохранить их в CSV/YAML/во что угодно (что может быть хорошо версионировано) и либо искать их по идентификаторам шейп-файлов, либо пытаться прикрепить их к нашим объектам после того, как они будут был создан из шейп-файлов, что-то в этом роде.

Но, может быть, у людей с большим опытом работы с шейп-файлами есть идеи получше?


person pfctdayelise    schedule 27.07.2011    source источник


Ответы (1)


DBF, на который вы ссылаетесь, начиная со второго абзаца, имеет атрибуты. Почему бы не выгрузить таблицу на основе «для каждой формы» в файл стиля XML и использовать ЭТО для подрывной деятельности. Если вы на самом деле работаете в Visual Foxpro (который также использует файлы стилей DBF), вы можете использовать функцию CursorToXML() и просто запустить ее через цикл различных форм и выгрузить в каждый соответствующий XML-файл. Затем, при чтении обратно в.... XMLToCursor() формы файла.

person DRapp    schedule 27.07.2011