Заголовок индексного файла

Техническое описание shapefiles.

Для чтения и записи информации shapefiles может быть создана компьютерная программа, использующая технические данные, описанные в этом разделе.

Shapefiles ArcView GIS состоит из главного файла, индексного файла и таблицы dBase. Главный файл - это файл прямого доступа, содержащий записи переменной длинны, каждая из которых описывает объект при помощи списка вершин. В индексном файле каждая запись содержит смещение соответствующей записи в главном файле относительно начала главного файла. Таблица dBase содержит атрибуты объектов. Только одна строка таблицы соответствует только одному объекту в главном файле. Соответствие «один к одному» между атрибутами и объектами основывается на номере записи. Номер записи атрибутов в таблице dBase должен быть таким же, как и номер записи в главном файле.

Названия файлов

Главный файл, индексный файл и dBase-файл должны иметь одно и то же имя. Расширение главного файла должно быть таким: «.shp». Расширение индексного файла: «.shx». Расширение dBase-файла : «.dbf».

Примеры:

главный файл: counties.shp

индексный файл: counties.shx

таблица dBase: counties.dbf

Числовые типы

Shapefiles содержат числовые данные как integer (целое) и double precision (плавающее с двойной точностью) (далее в тексте дается без перевода):

Integer: 32-битное целое со знаком ( 4 байта).

Double: 64-битное IEEE плавающее с двойной точностью (8 байт).

В первом разделе пособия описана общая структура и организация shapefile. В следующем разделе будут раскрыты содержания записи для каждого типа форм, поддерживаемого shapefile.

Организация главного файла

Главный файл содержит заголовок файла фиксированной длины, за которым следуют записи переменной длины. Каждая запись переменной длины состоит из заголовка записи фиксированной длины, за которым следует содержимое строки переменной длины. Рис. 1 иллюстрирует организацию главного файла.

Заголовок индексного файла - student2.ru

Порядок байтов

Порядок байтов в integers и double-precision integers, составляющих описание данных в заголовке файла (определенном выше) и в содержимом строк в главном файле, - малый (PC или Intel). Порядок байтов в integers и double-precision integers, из которых состоит остаток файла, - большой (Sun или Motorola).

Заголовок главного файла

Длина заголовка главного файла - 100 байт. В Таблице 1 показаны поля, их положение в байтах относительно начала файла, и порядок байтов.

Заголовок индексного файла - student2.ru

Значение длины файла есть общая длина файла, измеренная в 16-битных словах (включая 50 16-битных слов, которые составляют заголовок).

Все объекты в shapefile должны быть одного и того же типа. Величины типов должны быть такими:

Заголовок индексного файла - student2.ru

Заголовок записи

Заголовок для каждой записи содержит номер записи и длину содержимого записи. заголовок записи имеет фиксированную длину 8 байт. В Таблице 2 показаны поля заголовка записи, их позиции относительно начала файла, величины и порядок байтов.

Заголовок индексного файла - student2.ru

Номера записей начинаются с 1.

Длина содержимого записи измеряется в 16-битных словах. Каждая запись, следовательно, составляет (4 + длина содержимого) 16-битных слов, и такие записи расположены вплоть до конца файла, длина которого хранится в 24-м байте заголовка файла.

Содержимое записи главного файла

Содержимое записи shapefile состоит из типа объекта, за которым следуют геометрические данные объекта. Длина содержимого записи зависит от количества частей и вершин объекта. Для каждого типа объекта мы сначала опишем сам объект, а затем его соотношение с содержимым записи на диске. В Таблицах 3-6 позиция относится к началу содержимого записи.

Точка

Точка состоит из пары чисел double-precision в порядке X, Y.

Point

{

Double X //Координата X

Double Y //Координата Y

}

Заголовок индексного файла - student2.ru

Набор_точек

Набор_точек представляет собой набор точек:

MultiPoint

{

Double[4] Box //Граничный прямоуг.

Integer NumPoints //Количество точек

Point[NumPoints] Points //Точки в наборе

}

Граничный прямоугольник записывается в следующем порядке: Xmin, Ymin, Xmax, Ymax.

Заголовок индексного файла - student2.ru

Организация индексного файла. Индексный файл содержит 100-байтный заголовок, за которым следуют 8-байтные записи фиксированной длины. Рис. 3 иллюстрирует организацию индексного файла.

Заголовок индексного файла - student2.ru

Заголовок индексного файла

Заголовок индексного файла идентичен по организации заголовку главного файла, описанному выше. Длина файла, хранящаяся в заголовке файла, есть общая длина индексного файла, измеренная в 16-битных словах. (Пятьдесят 16-битных слов самого заголовка плюс 4 умножить на количество строк).

Записи индексного файла

I-я запись индексного файла представляет собой смещение и длину содержимого для I-й записи в главном файле. Таблица 7 показывает поля заголовка файла, их позицию, величину и порядок байтов. В таблице позиция - это количество байтов по отношению к началу записи индексного файла.

Заголовок индексного файла - student2.ru

Смещение записи в главном файле есть количество 16-битных слов от начала главного файла до первого байта заголовка записи для этой записи. Таким образом, смещение первой записи главного файла равно 50, что есть 100-байтный заголовок файла до первого байта заголовка записи для этой записи. Таким образом, смещение первой записи главного файла равно 50, что есть 100-байтный заголовок файла.

Содержимое записи, хранимое в записи индексного файла, имеет ту же величину, что и содержимое записи, хранимое в заголовке записи главного файла.

Организация файла dBase.

Файл dBase содержит любую атрибутивную информацию об объектах или атрибутивные ключи, по которым могут быть присоединены другие атрибутивные таблицы. Его формат - это стандартный формат DBF, используемый многими приложениями в Windows™ и DOS. В таблице может быть представлен любой набор полей. Есть только три требования, предъявляемые к таблице, а именно:

Имя файла должно быть таким же, как и имя главного файла, но с расширением «.dbf .

Таблица должна содержать одну запись, соответствующую одной записи в главном файле.

Порядок записей должен быть таким же, как и порядок объектов в главном (*.shp) файле.

Наши рекомендации