Особенности геообработки с выходными данными в формате шейп-файла

В Esri есть два основных формата данных для хранения географической информации – шейп-файлы и базы геоданных. Шейп-файлы были разработаны как простой формат для хранения географической и атрибутивной информации. В силу их простоты, шейп-файлы стали популярным форматом для обмена данными. Хотя шейп-файлы просты и удобны в работе, они имеют некоторые ограничения, которые отсутствуют в базах геоданных. В общих чертах, ограничения включают следующее:

  • Географические данные представляют собой большее, чем только пространственные объекты и атрибуты, которые могут храниться в шейп-файле. Например, существуют аннотации, атрибутивные связи, топологические связи, атрибутивные домены и подтипы, координатная точность и разрешение, и множество других свойств, которые поддерживаются в базе геоданных, но не в шейп-файлах.
  • Шейп-файлы используют формат dBASE (файл .dbf) для хранения атрибутов. dBASE не является форматом Esri, он был разработан в начале 1980-х и в то время стал наиболее распространенным форматом хранения таблиц атрибутов. Однако с тех пор появилось большое количество улучшений, связанных с отображением данных, например, стандарт Unicode, поддерживающий большинство языков, использующихся в мире. Это одна из причин, почему шейп-файлы плохо подходят для хранения данных на других языках, кроме английского.
  • В отличие от классов объектов базы геоданных, шейп-файлы не содержат поля длины и площади геометрии.

Шейп-файлы малопригодны для активной работы с базами данных, так как не соответствуют современным способам создания, редактирования, поддержки версий и архивирования.

Шейп-файлы могут быть выбраны в следующих случаях:

  • При экспорте данных для работы со сторонними (не-Esri) программными приложениями.
  • Для быстрой записи простых объектов и атрибутов.

С некоторыми исключениями, описанными ниже, шейп-файлы подходят для хранения простой геометрии пространственных объектов. Однако шейп-файлы неудобны в отношении атрибутов. Например, шейп-файлы не могут хранить значения NULL, округляют числа, не полностью поддерживают строки символов Unicode, не могут работать с полями, имена которых длиннее 10 знаков, и не могут хранить время в поле дат. Кроме того, они не поддерживают возможности, присутствующие в базах геоданных, например, работу с доменами и подтипами. Поэтому не следует использовать шейп-файлы, если вы хотите хранить сложные атрибуты и пользоваться возможностями, предоставляемыми базами геоданных.

Компоненты шейп-файлов и расширения файлов

Шейп-файлы хранятся в трех или более файлах, которые имеют одинаковый префикс и находятся в одной папке. Отдельные папки можно увидеть при просмотре папки в File Explorer, а не в ArcGIS Pro.

РасширениеОписаниеОбязательный?

.shp

Основной файл, в котором хранится геометрия объектов. В этом файле не хранятся атрибуты – только геометрия.

Да

.shx

Парный к .shp файл, в котором хранятся местоположения отдельных ID пространственных объектов, находящихся в файле .shp.

Да

.dbf

Таблица dBASE, в которой находятся атрибуты пространственных объектов.

Да

.sbn и .sbx

Файлы, в которых хранится пространственный индекс объектов.

Нет

.atx

Атрибутивный индекс, создающийся для каждой таблицы dBASE.

Нет

.ixs и .mxs

Индекс геокодирования для чтения-записи шейп-файлов.

Нет

.prj

Файл, в котором хранится информация о системе координат.

Нет

.xml

Метаданные для ArcGIS; хранит информацию о шейп-файле.

Нет

Расширения шейп-файлов

Ограничения шейп-файлов

Есть следующие ограничения при работе с шейп-файлами:

  • Каждый файл-компонент шейп-файла не может быть более 2 GB, что составляет примерно 70 миллионов точечных объектов. Количество линейных или полигональных объектов в шейп-файле зависит от числа вершин этих объектов (вершина является эквивалентом точки).
  • В шейп-файлах не хранится значение допуска x,y, как в классах объектов базы геоданных. Допуск по x,y – это минимальное расстояние между координатами, ближе которого они будут считаться идентичными. Допуск x,y используется при оценке взаимосвязей между пространственными объектами одного класса объектов, или между объектами нескольких различных классов. Он активно используется при редактировании объектов. Если вы выполняете любую операцию, включающую сравнение объектов, например, используете инструменты группы Наложение, инструмент Вырезание, инструмент Выбрать в слое по расположению или любой инструмент, который использует в качестве входных данных два или более класса пространственных объектов, следует использовать класс объектов базы геоданных (с допуском по x,y) вместо шейп-файлов.
  • Шейп-файл может занимать в три - пять раз больше места, по сравнению с файловой или многопользовательской базой геоданных, что связано с методами сжатия геометрии.
  • Шейп-файлы поддерживают объекты-мультипатчи, но не поддерживают следующие возможности мультипатчей:
    • Координаты текстур
    • Текстуры и частичное окрашивание
    • Нормали освещенности
  • Пространственный индекс шейп-файла малоэффективен по сравнению с индексом класса объектов базы геоданных. Это означает, что пространственные запросы (например, выбор объектов в пределах полигона) занимает больше времени по сравнению с классом объектов базы геоданных. Эта неэффективность заметна только при работе с большим количеством пространственных объектов.
  • Параметрически заданные кривые (также известные как кривые дуговых сегментов) не поддерживаются в шейп-файлах. Параметрические кривые можно создать, отредактировав класс объектов базы геоданных, как описано в разделе Создание кривых дуговых сегментов. Для построения кривых используются математические формулы. При экспорте класса объектов базы геоданных, который содержит параметрические кривые, в шейп-файл, кривые будут трансформированы в простые линейные объекты, вершины которых будут расположены очень близко друг к другу, чтобы сохранить соответствующую форму.

Ограничения атрибутов

Есть следующие ограничения при работе с атрибутами шейп-файлов:

  • В отличие от других форматов, шейп-файл хранит числовые атрибуты в символьном, а не бинарном формате. Для реальных числовых значений (например, с десятичными знаками), это может привести к ошибкам из-за округления. Это ограничение касается только атрибутов, и не относится к хранению координат в столбце shape. В следующей таблице представлены значения ширины полей для каждого типа атрибутов:

    Тип данных базы геоданныхТип поля dBASEШирина полей dBASE (число символов).

    Object ID

    Число

    9

    Short Integer

    Число

    4

    Long Integer

    Число

    9

    Float

    Float

    13

    Double

    Float

    13

    Текст

    Символ

    254

    Date

    Дата

    8

    Ширина полей в формате dBASE
  • Поля даты поддерживают только дату и не позволяют хранить время.
    Внимание:

    То, что в полях дат не поддерживается время, может стать серьезным ограничителем для любого инструмента выполнения временного анализа.

  • Имена полей не могут быть длиннее 10 символов
  • Максимальная длина записи атрибута – 4000 байт. Длина записи – это число байт, используемое для определения всех полей, а не число байт, используемое для хранения конкретной записи.
  • Максимальное число полей не должно превышать 255. Если этот лимит будет превышен, то при конвертации в шейп-файл будут конвертированы только первые 255 полей.
  • Файл dBASE должен содержать, как минимум, одно поле. Когда вы создаете новый шейп-файл или таблицу dBASE, по умолчанию создается целочисленное поле ID.
  • Файлы dBASE не поддерживают типы BLOB, GUID, Global ID и Raster.
  • Файлы dBASE имеют ограниченную поддержку SQL в выражениях WHERE.
  • При сохранении изменений атрибутивные индексы удаляются, и их необходимо перестраивать из временных.

В ArcGIS Pro файлы dBase по умолчанию поддерживают набор символов ANSI для имен своих полей и значений. Esri добавил поддержку Unicode в файлы dBASE, что позволяет хранить поля и значения в Unicode. Но эта поддержка может оказаться недоступной в других приложениях (не-Esri). Для поддержки других наборов символов установите в реестре значение dbfDefault для идентификатора поддержки кодовой страницы.

Свойство длины строкового поля зависит от источника данных. В файле dBase длина поля представляет количество поддерживаемых байт. В отличие от этого, в таблице файловой базы геоданных длина поля представляет собой количество символов. Это означает, что шейп-файл с длиной поля 10 может содержать только три 3-байтовых иероглифа. При экспорте таблицы с многобайтовыми символами в таблицу dBase значения могут передаваться не так, как ожидалось. Если длина многобайтовых символов больше длины поля, значения полей будут содержать пустые или неожиданные значения.

Представление нулевого значения

Шейп-файлы не поддерживают хранение пустых (Null) значений. Если класс объектов, содержащий значения NULL, конвертировать в шейп-файлы или конвертировать таблицу базы данных в файл dBASE, значения NULL будут заменены на значения, приведенные в следующей таблице.

Внимание:

При использовании шейп-файлов или файлов dBASE (.dbf) в качестве входных данных для инструментов ArcGIS не может определить, представляют ли значения полей значение NULL или допустимое значение.

Тип данных, содержащий значения NullПодстановка значений NULL

Число – если необходимым выходным значением инструмента должны быть NULL, бесконечность или NaN (Не Число).

-1.7976931348623158e+308 (IEEE стандарт для максимального отрицательного значения)

Number (все остальные инструменты геообработки).

0

Текст

" " (пусто – один пробел)

Дата

Хранится как ноль, но отображается <null>

Подстановка значений NULL в шейп-файлах и файлах dBASE (.dbf)

Неподдерживаемые функции

Шейп-файлы не имеют дополнительных типов данных, как другие рабочие области или классы объектов. При конвертации в шейп-файл класса объектов базы геоданных или набора данных другого формата следующие элементы будут потеряны:

  • Подтипы
  • Атрибутивные домены
  • Геометрические сети
  • Топология
  • Аннотации

Shape length и shape area

Для классов линейных и полигональных объектов, хранящихся в базе геоданных, ArcGIS вычисляет и поддерживает поля shape_length и shape_area. При редактировании геометрии линейного или полигонального класса объектов базы геоданных значения в полях shape_length и shape_area обновляются автоматически. Это не касается шейп-файлов. Даже если шейп-файл содержит поле shape_area или shape_leng, они не будут обновляться при изменении шейп-файла.

Шейп-файлы и геообработка

Большинство инструментов геообработки, записывающих на выходе класс пространственных объектов, поддерживают как шейп-файлы, так и классы объектов базы геоданных. Точно так же большинство инструментов, записывающих таблицы, поддерживают в качестве выходных данных файлы dBASE (.dbf) и таблицы базы геоданных.

При использовании инструмента на панели Геообработка инструмент автоматически создаст выходной класс пространственных объектов или путь к таблице. Если для настройки среды Текущая рабочая область задана папка, а не база геоданных, путь к выходному классу объектов будет вести к шейп-файлу или файлу dBASE. По умолчанию, для настройки среды Текущая рабочая область задана база геоданных.

Более подробно о параметрах среды геообработки

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

Пространственная привязка и шейп-файлы

В разделе Пространственная привязка и геообработка обсуждается важность определения свойств пространственной привязки при использовании инструментов геообработки. Несколько параметров среды геообработки контролируют пространственную привязку данных при работе инструментов геообработки. Следующие параметры не поддерживаются, если в качестве выходных данных инструмента задан шейп-файл:

Связанные разделы