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

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

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

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

Когда следует использовать шейп-файл?

  • При экспорте данных для работы со сторонними (не-Esri) программными приложениями.
  • Когда вам нужно быстро записать простые объекты и атрибуты. (Однако, необходимо помнить о следующих ограничениях.)

Когда не следует использовать шейп-файл?

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

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

Шейп-файлы хранятся в трех или более файлах, которые имеют одинаковый префикс и находятся в одной папке (рабочей области шейп-файлов). Отдельные файлы можно увидеть с помощью Проводника Windows, в 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) вместо шейп-файлов.
  • Шейп-файл может занимать от трех до пяти раз больше места, по сравнению с файловой базой геоданных или SDE, поскольку использует иные методы сжатия.
  • Шейп-файлы поддерживают объекты-мультипатчи, но не поддерживают следующие возможности мультипатчей:
    • Координаты текстур
    • Текстуры и частичное окрашивание
    • Нормали освещенности
  • Пространственный индекс шейп-файла малоэффективен по сравнению с индексом класса объектов базы геоданных. Это означает, что пространственные запросы (например, выбор объектов в пределах полигона) занимает больше времени по сравнению с классом объектов базы геоданных. Эта неэффективность заметна только при работе с большим количеством пространственных объектов.
  • Параметрически заданные кривые (также известные как кривые дуговых сегментов) не поддерживаются в шейп-файлах. Параметрические кривые можно создать, отредактировав класс объектов базы геоданных, как описано в разделе Создание кривых дуговых сегментов. Для построения кривых используются математические формулы. При экспорте в шейп-файл класса объектов базы геоданных, которые содержат круговые кривые дуги, объекты кривых трансформируются в простые линейные объекты с вершинами, интервалы между которыми настолько незначительны, что они не обеспечивают необходимую кривизну.

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

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

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

    ID объекта

    Числовое

    9

    Короткое целое

    Числовое

    4

    Длинное целое

    Числовое

    9

    С плавающей точкой

    С плавающей точкой

    13

    Двойной точности

    С плавающей точкой

    13

    Текстовое

    Символ

    254

    Дата

    Дата

    8

    Ширина полей в формате dBASE
  • Формат файлов dBASE поддерживает только символы ANSI в именах полей и значениях. Esri добавил поддержку Unicode в файлы dBASE, что позволяет хранить поля и значения в формате Unicode. Но эта поддержка работает только в ArcGIS и может оказаться недоступной в других приложениях (не-Esri).
    Примечание:

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

  • Поля даты поддерживают только дату. Они не поддерживают время.
    Внимание:

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

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

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

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

Внимание:

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

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

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

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

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

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.

Если в качестве временной рабочей области будет задана файловая база геоданных, автоматически создаваемый выходной класс объектов будет классом объектов этой базы геоданных, а не шейп-файлом или таблицей .dbf .

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

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

Дополнительные сведения о записи выходных данных геообработки в память

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

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

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