Шейп-файл
![]() Векторная карта с точками, ломаными линиями и многоугольниками. | |
Расширение имени файла | .shp , .shx , .dbf |
---|---|
Тип интернет-СМИ |
x-gis/x-shapefile |
Разработано | Эсри |
Тип формата | ГИС |
Стандартный | Техническое описание шейп-файла |
Формат шейп-файла — это формат геопространственных векторных данных для программного обеспечения географических информационных систем (ГИС) . Он разработан и регулируется Esri как в основном открытая спецификация для совместимости данных между Esri и другими программными продуктами ГИС . [ 1 ] Формат шейп-файла может пространственно описывать векторные объекты: точки , линии и многоугольники , представляющие, например, колодцы , реки и озера . Каждый элемент обычно имеет атрибуты , описывающие его, например имя или температуру .
Обзор
[ редактировать ]Формат шейп-файла представляет собой цифровой векторный формат хранения данных о географическом местоположении и связанной с ним атрибутивной информации. В этом формате отсутствует возможность хранения топологической информации. Формат шейп-файла был представлен в ArcView GIS версии 2 в начале 1990-х годов. Теперь можно читать и записывать наборы географических данных, используя формат шейп-файла, с помощью широкого спектра программного обеспечения.
Формат шейп-файла хранит геометрию в виде примитивных геометрических фигур, таких как точки, линии и многоугольники. Эти фигуры вместе с атрибутами данных, связанными с каждой фигурой, создают представление географических данных. Термин «шейп-файл» довольно распространен, но формат состоит из набора файлов с общим префиксом имени файла, хранящихся в одном каталоге . Три обязательных файла имеют расширения имен. .shp
, .shx
, и .dbf
. Фактический шейп-файл относится конкретно к .shp
файл, но сам по себе является неполным для распространения, поскольку требуются другие вспомогательные файлы. В соответствии с техническим описанием шейп-файла ESRI. [ 1 ] Устаревшее программное обеспечение ГИС может ожидать, что префикс имени файла будет ограничен восемью символами, чтобы соответствовать соглашению об именах файлов DOS 8.3 , хотя современные программные приложения принимают файлы с более длинными именами.
Обязательные файлы
[ редактировать ].shp
— формат фигуры; сама геометрия объекта { content-type : x-gis/x-shapefile}.shx
— формат индекса формы; позиционный индекс геометрии объекта, позволяющий быстро искать вперед и назад {content-type: x-gis/x-shapefile}.dbf
— формат атрибута; столбчатые атрибуты для каждой фигуры в формате dBase IV {content-type: application/octet-stream OR text/plain}
Другие файлы
[ редактировать ].prj
— описание проекции с использованием общеизвестного текстового представления систем координат {content-type: text/plain OR 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
файл в видеshapefile.columnname.atx
(ArcGIS 8 и более поздние версии) {content-type:x-gis/x-shapefile
}.shp.xml
— геопространственные метаданные в формате XML, например ISO 19115 или другой схеме XML {content-type: application/fgdc+xml}.cpg
— используется для указания кодовой страницы (только для.dbf
) для определения кодировки символов {content-type: используемойtext/plain
ИЛИ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 Shapefile . [ 1 ] Этот формат не следует путать с исходным форматом шрифта фигуры AutoCAD , который разделяет .shp
расширение.
Упорядочение координатных данных по 2D-осям предполагает декартову систему координат с использованием порядка (XY) или (восточное смещение). Этот порядок осей одинаков для географических систем координат , где порядок аналогичен (долгота, широта). Геометрии также могут поддерживать 3- или 4- мерные координаты Z и M для высоты и измерения соответственно. Z-размер хранит высоту каждой координаты в трехмерном пространстве , которую можно использовать для анализа или визуализации геометрии с использованием трехмерной компьютерной графики . Пользовательский размер M можно использовать для одной из многих функций, таких как сохранение линейных привязок или относительного времени объекта в 4D-пространстве .
Заголовок основного файла имеет фиксированную длину 100 байт и содержит 17 полей; девять 4-байтовых (32-битных целых чисел со знаком или int32) целых полей, за которыми следуют восемь 8-байтовых ( двойных ) полей со знаком и плавающей запятой:
Заголовки шейп-файлов
[ редактировать ]Байты | Тип | Порядок байтов | Использование |
---|---|---|---|
0–3 | int32 | большой | Код файла (всегда шестнадцатеричное значение) 0x0000270а ) |
4–23 | int32 | большой | Неиспользованный; пять uint32 |
24–27 | int32 | большой | Длина файла (в 16-битных словах, включая заголовок) |
28–31 | int32 | маленький | Версия |
32–35 | int32 | маленький | Тип формы (см. ссылку ниже) |
36–67 | двойной | маленький | Минимальный ограничивающий прямоугольник (MBR) всех фигур, содержащихся в наборе данных; четыре дубля в следующем порядке: мин X, мин Y, макс X, макс Y |
68–83 | двойной | маленький | Диапазон Z; два дубля в следующем порядке: мин Z, макс Z |
84–99 | двойной | маленький | Диапазон М; два дубля в следующем порядке: мин М, макс М |
Заголовки записей шейп-файлов
[ редактировать ]Затем файл содержит любое количество записей переменной длины. Каждая запись имеет префикс заголовка записи длиной 8 байт:
Байты | Тип | Порядок байтов | Использование |
---|---|---|---|
0–3 | int32 | большой | Номер записи (на основе 1) |
4–7 | int32 | большой | Длина записи (в 16-битных словах) |
Записи шейп-файла
[ редактировать ]После заголовка записи следует фактическая запись:
Байты | Тип | Порядок байтов | Использование |
---|---|---|---|
0–3 | int32 | маленький | Тип формы (см. ссылку ниже) |
4– | – | – | Форма контента |
Содержимое записи переменной длины зависит от типа фигуры, который должен быть либо типом фигуры, указанным в заголовке файла, либо нулевым. Ниже приведены возможные типы фигур:
Ценить | Тип формы | Поля |
---|---|---|
0 | Нулевая форма | Никто |
1 | Точка | X,Y |
3 | Полилиния | MBR, Количество деталей, Количество точек, Детали, Очки |
5 | Полигон | MBR, Количество деталей, Количество точек, Детали, Очки |
8 | Многоточечный | MBR, Количество очков, Очки |
11 | ТочкаZ | Х, Ю, Я Дополнительно : М |
13 | ПолилинияZ | Обязательно : MBR, количество частей, количество точек, части, точки, диапазон Z, массив Z. Опционально : диапазон M, массив M |
15 | ПолигонZ | Обязательно : MBR, количество частей, количество точек, части, точки, диапазон Z, массив Z. Опционально : диапазон M, массив M |
18 | МультиПоинтЗ | Обязательно : MBR, количество точек, точки, диапазон Z, массив Z. Опционально : диапазон M, массив M |
21 | ТочкаМ | Х, Ю, М |
23 | ПолилинияМ | Обязательно : MBR, Количество частей, Количество точек, Части, Очки Опционально : диапазон M, массив M |
25 | ПолигонМ | Обязательно : MBR, Количество частей, Количество точек, Части, Очки Опционально : диапазон M, массив M |
28 | МультипоинтМ | Обязательно : MBR, Количество баллов, Очки. Дополнительные поля : диапазон M, массив M. |
31 | Мультипатч | Обязательно : MBR, количество деталей, количество точек, детали, типы деталей, точки, диапазон Z, массив Z. Опционально : диапазон M, массив M |
Формат индекса формы шейп-файла ( .shx )
[ редактировать ]Индекс содержит позиционный индекс геометрии объекта и тот же 100-байтовый заголовок, что и .shp
файл, за которым следует любое количество 8-байтовых записей фиксированной длины, состоящих из следующих двух полей:
Байты | Тип | Порядок байтов | Использование |
---|---|---|---|
0–3 | int32 | большой | Смещение записи (в 16-битных словах) |
4–7 | int32 | большой | Длина записи (в 16-битных словах) |
Используя этот индекс, можно выполнить поиск назад в шейп-файле, сначала выполняя поиск назад по индексу формы (что возможно, поскольку он использует записи фиксированной длины), затем считывая смещение записи и используя это смещение для поиска правильное положение в .shp
файл. Также можно выполнить поиск произвольного количества записей, используя тот же метод.
Можно сгенерировать полный индексный файл по одному .shp
файл. Однако, поскольку предполагается, что шейп-файл всегда содержит индекс, это считается восстановлением поврежденного файла. [ 2 ]
Формат атрибута шейп-файла ( .dbf )
[ редактировать ]В этом файле хранятся атрибуты каждой фигуры; он использует формат dBase IV. Формат общеизвестен и реализован во многих клонах dBase, известных как xBase . Например, библиотека C шейп-файлов с открытым исходным кодом называет свой формат «xBase», хотя это обычный dBase IV. [ 3 ]
Имена и значения атрибутов не стандартизированы и будут различаться в зависимости от источника шейп-файла.
Формат пространственного индекса шейп-файла ( .сбн )
[ редактировать ]Это двоичный файл пространственного индекса , который используется только программным обеспечением Esri. Формат не документирован Esri. Однако он был реконструирован и задокументирован сообществом открытого исходного кода. 100-байтовый заголовок аналогичен заголовку в .шп . [ 4 ] В настоящее время он не реализован другими поставщиками. .sbn
файл не является строго необходимым, поскольку .shp
Файл содержит всю информацию, необходимую для успешного анализа пространственных данных.
Ограничения
[ редактировать ]Формат шейп-файла имеет ряд ограничений. [ 5 ]
Топология и формат шейп-файла
[ редактировать ]Формат шейп-файла не позволяет хранить топологические связи между фигурами. ESRI ArcInfo Покрытия и многие базы геоданных имеют возможность хранить топологию объектов.
Хранение данных
[ редактировать ]Размер обоих .shp
и .dbf
файлы компонентов не могут превышать 2 ГБ (или 2 31 байт) — в лучшем случае около 70 миллионов точечных объектов. [ 6 ] Максимальное количество объектов для других типов геометрии варьируется в зависимости от количества используемых вершин.
Формат базы данных атрибутов для .dbf
Файл компонента основан на более старом стандарте dBase . Этот формат базы данных по своей сути имеет ряд ограничений: [ 6 ]
- Хотя текущий стандарт dBase и GDAL/OGR (основная библиотека программного обеспечения с открытым исходным кодом для чтения и записи наборов данных в формате шейп-файлов) поддерживают нулевые значения, программное обеспечение ESRI представляет эти значения как нули — очень серьезная проблема для анализа количественных данных, поскольку это может искажать представление и статистика, если нулевые количества представлены как ноль
- Плохая поддержка в Юникоде. имен полей или хранения полей
- Максимальная длина имени поля — 10 символов.
- Максимальное количество полей — 255.
- Поддерживаемые типы полей: с плавающей запятой (хранилище 13 символов), целое число (хранилище 4 или 9 символов), дата (без хранения времени; хранение 8 символов) и текст (максимум 254 символа).
- Числа с плавающей запятой могут содержать ошибки округления, поскольку они хранятся в виде текста.
Смешивание типов фигур
[ редактировать ]Поскольку тип формы предшествует каждой записи геометрии, шейп-файл технически способен хранить смесь различных типов форм. Однако в спецификации указано: «Все фигуры, отличные от NULL, в шейп-файле должны относиться к одному и тому же типу фигур». Таким образом, эта возможность смешивать типы фигур должна быть ограничена вкраплением нулевых фигур с одним типом фигуры, объявленным в заголовке файла. Шейп-файл не должен содержать одновременно данные полилинии и полигона. Например, описания колодца (точки), реки (ломаной линии) и озера (многоугольника) будут храниться в трех отдельных наборах данных.
См. также
[ редактировать ]- Геоинформационная система
- Открытый геопространственный консорциум
- Геопространственный фонд с открытым исходным кодом (OSGeo)
- Список программного обеспечения географических информационных систем
- Сравнение программного обеспечения геоинформационных систем
Ссылки
[ редактировать ]- ^ Перейти обратно: а б с д ESRI (июль 1998 г.). «Техническое описание шейп-файла ESRI» (PDF) . Проверено 4 июля 2007 г.
- ^ Ролласон, Эд. «qgis – Создание отсутствующего файла .shx?» . Обмен стеками географических информационных систем .
- ^ «Библиотека шейп-файлов C V1.2» .
- ^ «Формат СБН» (PDF) . 4 октября 2011 г. Архивировано из оригинала (PDF) 13 августа 2016 г. . Проверено 21 июня 2023 г.
- ^ Чепицки, Яхим (2017). «Переключиться из шейп-файла» . Switchfromshapefile.org .
- ^ Перейти обратно: а б «Справка по ArcGIS Desktop 9.3 – Рекомендации по геообработке для вывода шейп-файлов» . Эсри. 24 апреля 2009 г.
Внешние ссылки
[ редактировать ]- Расширения файлов шейп-файлов – документация Esri Webhelp для ArcGIS 10.0 (2010 г.)
- Esri – Понимание топологии и шейп-файлов
- shapelib.maptools.org – Бесплатная библиотека C для чтения/записи шейп-файлов.
- Библиотека шейп-файлов Python — библиотека Python с открытым исходным кодом (лицензия MIT) для чтения/записи шейп-файлов.
- Библиотеки Java Shapefile и Dbase — библиотеки Java с открытым исходным кодом (лицензия Apache) для чтения/записи шейп-файлов и связанных с ними файлов dBase (библиотеки являются частью библиотеки AFC , но могут использоваться независимо).