В площадных геометриях, хранящихся в формате SHP, могут встречаться ошибки типа самопересечения границ, взаимного пересечения границ и другие. В таких случаях при импорте в ObjectLand в файле отчёта сохраняется информация о координатах вершин границы, где произошла ошибка, а также номер сбойной записи SHP-файла. При помощи описываемой в данной статье программы ShpConvert возможно выделить из SHP-файла отдельные геометрии по их номерам, при необходимости преобразовать их из площадного типа в линейный и сохранить в той же папке каждую запись в виде небольшого SHP-файла. После такого преобразования импорт в ObjectLand становится возможным, ведь для линейных геометрий допускаются многие ситуации, приводящие к ошибке у площадных геометрий. При выделении отдельных геометрий из SHP-файла и преобразовании SHP-файла из площадного в линейный тип соответствующая геометриям атрибутивная (табличная) информация не теряется и при импорте может быть размещена в таблице ObjectLand, связанной с соответствующим типом геометрии. В программе ShpConvert возможно задание сразу нескольких геометрий для копирования из исходного файла, в этом случае их номера следует отделять запятыми (допустимы пробелы), например так: «23,67, 119, 203» – будет создано четыре небольших SHP-файла с соответствующими именами, расположенных в той же папке, что исходный SHP-файл. А если установить флажок «слить все конвертированные записи в один файл», то вместо четырёх файлов по одной геометрии каждый будет создан один файл с четырьмя геометриями. Как уже упоминалось выше, табличная информация, связанная с геометриями, не теряется и это значит, что при каждом SHP-файле создаются файлы формата DBF (табличный) и SHX (индексный) с тем же именем.
Рассмотрим теперь подробно процесс исправления ошибок геометрии площадного SHP-файла.
1) Скопировать с помощью программы ShpConvert сбойные геометрии в отдельные SHP-файлы (номера записей можно посмотреть в файле отчёта об импорте ObjectLand).
2) Для первой из сбойных геометрий: создать в слое, содержащем площадной тип, куда требуется доимпортировать сбойные геометрии, ещё один линейный тип геометрии и связать его с теми же таблицами и теми же характеристиками связи (уникальная либо множественная), что и площадной тип. Далее в этот линейный тип геометрии следует импортировать по очереди полученные на шаге 1) SHP-файлы (то есть шаги 2-5 надо последовательно пройти для каждого файла, полученного на шаге 1). Следует проследить за числом появившихся после импорта линейных геометрий, потому что иногда встречаются сбойные площадные геометрии с одной или несколькими «дырами». Каждая такая «дыра» при конвертации программой ShpConvert превращается в отдельную линейную геометрию.
3) Найти на плоскости место ошибки (координаты можно посмотреть в файле отчёта об импорте ObjectLand) и исправить её, редактируя вершины мышью.
4) Запомнить номер записи в таблице, связанной со сбойной геометрией и преобразовать геометрию из полилинии в полигон, сменив тип геометрии с линейного на соответствующий площадной в том же слое. Если редактирование на шаге 3 было корректным, преобразование пройдёт успешно. При этом потеряется связь геометрии с записью в таблице. Надо будет восстановить эту связь по запомненному номеру записи в таблице.
5) В случае площадной геометрии с «дырами» (см. шаг 2) следует преобразовать все границы в площадные объекты и в правильном порядке собрать составную площадную геометрию.
6) После прохождения шагов 2-5 для всех сбойных геометрий можно удалить из ГБД ненужный теперь линейный тип геометрии, созданный на шаге 2.
Программа ShpConvert требует наличия на компьютере исполняемой среды NET Framework 2.0, в настоящее время её дистрибутив предоставляется бесплатно по адресу http://www.microsoft.com/ru-ru/download/details.aspx?id=1639. Программа запускается только из локального (не сетевого) каталога, при этом все сопутствующие файлы (полученные при распаковке zip-архива) должны располагаться в одной папке (подкаталоге).
Обсуждение программы ShpConvert ведётся на форуме официального сайта ГИС ObjectLand здесь.
12 марта 2009 г. – 4 февраля 2020 г.
Трухачёв М.Ю.
Программа для выделения отдельных записей из SHP-файлов