Шейп-файл
Расширение имени файла | .shp , .shx , .dbf |
---|---|
Тип интернет-СМИ | x-gis/x-shapefile |
Разработано | Эсри |
Тип формата | ГИС |
Стандартный | Техническое описание шейп-файла |
Формат шейп-файла — это формат геопространственных векторных данных для программного обеспечения географических информационных систем (ГИС) . Он разработан и регулируется Esri как в основном открытая спецификация для совместимости данных между Esri и другими программными продуктами ГИС . [1] Формат шейп-файла может пространственно описывать векторные объекты: точки , линии и многоугольники , представляющие, например, колодцы , реки и озера . Каждый элемент обычно имеет атрибуты , описывающие его, например имя или температуру .
Обзор
[ редактировать ]Формат шейп-файла представляет собой цифровой векторный формат хранения данных о географическом местоположении и связанной с ним атрибутивной информации. В этом формате отсутствует возможность хранения топологической информации. Формат шейп-файла был представлен в ArcView GIS версии 2 в начале 1990-х годов. Теперь можно читать и записывать наборы географических данных, используя формат шейп-файла, с помощью широкого спектра программного обеспечения.
Формат шейп-файла хранит геометрию в виде примитивных геометрических фигур, таких как точки, линии и многоугольники. Эти фигуры вместе с атрибутами данных, связанными с каждой фигурой, создают представление географических данных. Термин «шейп-файл» довольно распространен, но формат состоит из набора файлов с общим префиксом имени файла, хранящихся в одном каталоге . Три обязательных файла имеют расширения имен. .shp
, .shx
, и .dbf
. Фактический шейп-файл относится конкретно к .shp
файл, но сам по себе является неполным для распространения, поскольку требуются другие вспомогательные файлы. Устаревшее программное обеспечение ГИС может ожидать, что префикс имени файла будет ограничен восемью символами, чтобы соответствовать соглашению об именах файлов 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– | – | – | Форма контента |
Содержимое записи переменной длины зависит от типа фигуры, который должен быть либо типом фигуры, указанным в заголовке файла, либо Null. Ниже приведены возможные типы фигур:
Ценить | Тип формы | Поля |
---|---|---|
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)
- Список программного обеспечения географических информационных систем
- Сравнение программного обеспечения геоинформационных систем
Ссылки
[ редактировать ]- ^ Jump up to: а б с ESRI (июль 1998 г.). «Техническое описание шейп-файла ESRI» (PDF) . Проверено 4 июля 2007 г.
- ^ Ролласон, Эд. «qgis – Создание отсутствующего файла .shx?» . Обмен стеками географических информационных систем .
- ^ «Библиотека шейп-файлов C V1.2» .
- ^ «Формат СБН» (PDF) . 4 октября 2011 г. Архивировано из оригинала (PDF) 13 августа 2016 г. . Проверено 21 июня 2023 г.
- ^ Чепицки, Яхим (2017). «Переключиться из шейп-файла» . Switchfromshapefile.org .
- ^ Jump up to: а б «Справка по 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 , но могут использоваться независимо).