Формат шейп-файла — это геопространственный векторный формат данных для программного обеспечения географической информационной системы (ГИС) . Он разработан и регулируется Esri как в основном открытая спецификация для взаимодействия данных между Esri и другими программными продуктами ГИС . [1] Формат шейп-файла может пространственно описывать векторные объекты: точки , линии и полигоны , представляющие, например, колодцы , реки и озера . Каждый элемент обычно имеет атрибуты , которые его описывают, такие как имя или температура .
Формат shapefile — это цифровой векторный формат хранения для хранения географического местоположения и связанной с ним атрибутивной информации. Этот формат не имеет возможности хранить топологическую информацию. Формат shapefile был представлен в ArcView GIS версии 2 в начале 1990-х годов. Теперь можно читать и записывать географические наборы данных с помощью формата shapefile с помощью широкого спектра программного обеспечения.
Формат шейп-файла хранит геометрию в виде примитивных геометрических фигур, таких как точки, линии и многоугольники. Эти фигуры вместе с атрибутами данных, связанными с каждой фигурой, создают представление географических данных. Термин «шейп-файл» довольно распространен, но формат состоит из набора файлов с общим префиксом имени файла, хранящихся в одном каталоге . Три обязательных файла имеют расширения имен файлов .shp
, .shx
и .dbf
. Фактический шейп-файл относится конкретно к .shp
файлу, но сам по себе неполный для распространения, поскольку требуются другие вспомогательные файлы. В соответствии с Техническим описанием шейп-файлов ESRI [ 1] устаревшее программное обеспечение ГИС может ожидать, что префикс имени файла будет ограничен восемью символами, чтобы соответствовать соглашению об именах файлов DOS 8.3 , хотя современные программные приложения принимают файлы с более длинными именами.
.shp
x-gis/x-shapefile
.shx
x-gis/x-shapefile
.dbf
application/octet-stream
ИЛИtext/plain
.prj
— описание проекции с использованием известного текстового представления систем координат {content-type: text/plain ИЛИ application/text}.sbn
и .sbx
— пространственный индекс объектов {content-type: x-gis/x-shapefile}.fbn
и .fbx
— пространственный индекс объектов, доступных только для чтения {content-type: x-gis/x-shapefile}.ain
и .aih
— индекс атрибута активных полей в таблице {content-type: x-gis/x-shapefile}.ixs
— индекс геокодирования для наборов данных для чтения и записи {content-type: x-gis/x-shapefile}.mxs
— индекс геокодирования для наборов данных для чтения и записи (формат ODB) {content-type: x-gis/x-shapefile}.atx
— индекс атрибута для .dbf
файла в форме (ArcGIS 8 и более поздние версии) {content-type: }shapefile.columnname.atx
x-gis/x-shapefile
.shp.xml
— геопространственные метаданные в формате XML, например ISO 19115 или другая схема XML {content-type: application/fgdc+xml}.cpg
— используется для указания кодовой страницы (только для .dbf
) для определения используемой кодировки символовtext/plain
{content-type: ИЛИ x-gis/x-shapefile
}.qix
— альтернативный пространственный индекс квадродерева , используемый MapServer и программным обеспечением GDAL/OGR {content-type: x-gis/x-shapefile}В каждом из файлов .shp
, .shx
, и .dbf
формы в каждом файле соответствуют друг другу в последовательности (т. е. первая запись в файле .shp
соответствует первой записи в файлах .shx
и .dbf
и т. д.). Файлы .shp
и .shx
имеют различные поля с разным порядком байтов , поэтому разработчик форматов файлов должен быть очень внимателен к соблюдению порядка байтов каждого поля и обращаться с ним правильно.
Основной файл ( .shp ) содержит геометрические данные. Геометрия заданного объекта хранится в виде набора векторных координат. [1] : 5 Двоичный файл состоит из одного заголовка фиксированной длины , за которым следует одна или несколько записей переменной длины . Каждая из записей переменной длины включает компонент заголовка записи и компонент содержимого записи. Подробное описание формата файла приведено в Техническом описании шейп-файлов ESRI . [1] Этот формат не следует путать с исходным форматом шрифта формы AutoCAD , который имеет такое же расширение..shp
Двумерный порядок осей координатных данных предполагает декартову систему координат , использующую порядок (XY) или (Восток Север). Этот порядок осей соответствует географическим системам координат , где порядок аналогичен (долгота широта). Геометрии также могут поддерживать 3- или 4- мерные координаты Z и M для высоты и меры соответственно. Z-измерение хранит высоту каждой координаты в трехмерном пространстве , что может использоваться для анализа или визуализации геометрий с использованием трехмерной компьютерной графики . Определяемое пользователем измерение M может использоваться для одной из многих функций, таких как хранение линейных референтных мер или относительного времени объекта в четырехмерном пространстве .
Длина основного заголовка файла фиксирована и составляет 100 байт, он содержит 17 полей: девять 4-байтовых (32-битное целое число со знаком или int32) целочисленных полей, за которыми следуют восемь 8-байтовых ( double ) знаковых полей с плавающей точкой:
Затем файл содержит любое количество записей переменной длины. Каждая запись имеет префикс в виде заголовка записи из 8 байт:
После заголовка записи следует сама запись:
Содержимое записи переменной длины зависит от типа формы, который должен быть либо типом формы, указанным в заголовке файла, либо Null. Ниже приведены возможные типы форм:
Индекс содержит позиционный индекс геометрии объекта и тот же 100-байтовый заголовок, что и .shp
файл, за которым следует любое количество 8-байтовых записей фиксированной длины, которые состоят из следующих двух полей:
Используя этот индекс, можно искать назад в шейп-файле, сначала выполняя поиск назад в шейп-индексе (что возможно, поскольку он использует записи фиксированной длины), затем считывая смещение записи и используя это смещение для поиска правильной позиции в файле .shp
. Также можно искать вперед произвольное количество записей, используя тот же метод.
Можно сгенерировать полный индексный файл, имея один .shp
файл. Однако, поскольку шейп-файл должен всегда содержать индекс, это считается восстановлением поврежденного файла. [2]
Этот файл хранит атрибуты для каждой формы; он использует формат dBase IV. Формат общеизвестен и был реализован во многих клонах dBase, известных как xBase . Например, библиотека C shapefile с открытым исходным кодом называет свой формат "xBase", хотя это обычный dBase IV. [3]
Названия и значения атрибутов не стандартизированы и будут различаться в зависимости от источника шейп-файла.
Это двоичный файл пространственного индекса , который используется только программным обеспечением Esri. Формат не документирован Esri. Однако он был подвергнут обратному проектированию и документирован сообществом разработчиков программного обеспечения с открытым исходным кодом. 100-байтовый заголовок аналогичен заголовку в .shp . [4] В настоящее время он не реализован другими поставщиками. Файл не является строго необходимым, поскольку содержит всю информацию, необходимую для успешного анализа пространственных данных..sbn
.shp
Формат шейп-файла имеет ряд ограничений. [5]
Формат shapefile не имеет возможности хранить топологические отношения между формами. Покрытия ESRI ArcInfo и многие базы геоданных имеют возможность хранить топологию объектов.
Размер обоих файлов .shp
и .dbf
компонентов не может превышать 2 ГБ (или 2,31 байта ) — в лучшем случае около 70 миллионов точечных объектов. [6] Максимальное количество объектов для других типов геометрии варьируется в зависимости от количества используемых вершин.
Формат базы данных атрибутов для .dbf
файла компонента основан на более старом стандарте dBase . Этот формат базы данных изначально имеет ряд ограничений: [6]
Поскольку тип фигуры предшествует каждой записи геометрии, шейп-файл технически способен хранить смесь различных типов фигур. Однако спецификация гласит: «Все ненулевые фигуры в шейп-файле должны иметь один и тот же тип фигуры». Поэтому эта возможность смешивать типы фигур должна быть ограничена вкраплением нулевых фигур с единственным типом фигуры, объявленным в заголовке файла. Шейп-файл не должен содержать как данные полилинии, так и полигона, например, описания для колодца (точки), реки (полилинии) и озера (полигона) будут храниться в трех отдельных наборах данных.