Особенности геообработки с выходными данными в формате шейп-файла.
Несколько лет назад в Esri были разработаны три основных формата данных для хранения географической информации – покрытия, шейп-файлы и базы геоданных. Шейп-файлы были разработаны как простой формат для хранения географической и атрибутивной информации. В силу их простоты, шейп-файлы стали популярным форматом для обмена данными. Хотя шейп-файлы просты и удобны в работе, они имеют некоторые ограничения, которые отсутствуют в базах геоданных. При использовании шейп-файлов, эти ограничения следует учитывать. В целом,
- Географические данные представляют собой большее, чем только пространственные объекты и атрибуты, которые могут храниться в шейп-файле. Например, существуют аннотации, атрибутивные связи, топологические связи, атрибутивные домены и подтипы, координатная точность и разрешение, и множество других свойств, которые поддерживаются в базе геоданных, но не в шейп-файлах.
- Поскольку шейп-файлы являются открытым форматом, популярным для передачи данных, многие программные пакеты сторонних производителей (не Esri) записывают данные в этом формате. (Спецификацию формата шейп-файлов можно найти по адресу http://www.esri.com/library/whitepapers/pdfs/shapefile.pdf.) К сожалению, эти программные пакеты не всегда могут записать правильно отформатированные шейп-файлы. Возможно, у вас уже имеется опыт получения поврежденных шейп-файлов из какого-либо источника.
- Шейп-файлы используют формат dBASE (файл .dbf) для хранения атрибутов. dBASE не является форматом Esri, он был разработан в начале 1980-х и в то время стал наиболее распространенным форматом хранения таблиц атрибутов. Однако со временем появилось большое количество улучшений, связанных с отображением данных, например, формат Unicode, поддерживающий большинство языков, использующихся в мире. Это одна из причин, почему шейп-файлы плохо подходят для хранения данных на других языках, кроме английского.
- В отличие от классов объектов базы геоданных, ArcGIS не вычисляет и не хранит поля длины и площади геометрии.
Эти и другие проблемы делают шейп-файлы слабо пригодными для активной работы с базами данных – они не соответствуют современным способам создания, редактирования, поддержки версий и архивирования.
Когда следует использовать шейп-файл?
- При экспорте данных для работы со сторонними (не-Esri) программными приложениями
- При экспорте данных для работы в ArcView GIS 3 или ArcInfo Workstation
- Если необходимо быстро записать простые объекты и атрибуты, например для сервисов геообработки (однако необходимо помнить об ограничениях, которые описаны ниже.)
Когда не следует использовать шейп-файл?
С некоторыми исключениями, описанными ниже, шейп-файлы подходят для хранения простой геометрии пространственных объектов. Однако шейп-файлы имеют серьезные проблемы, связанные с хранением атрибутов. Например, они не могут хранить значения NULL, округлять числа, имеют ограниченную поддержку символов Unicode, не могут хранить поля, имена которых длиннее 10 знаков, и не могут хранить дату и время в одном поле. Это только основные ограничения. Кроме того, они не поддерживают возможности, присутствующие в базах геоданных, например, работу с доменами и подтипами. Поэтому, не следует использовать шейп-файлы, если вы хотите хранить сложные атрибуты и пользоваться возможностями, предоставляемыми базами геоданных.
Компоненты шейп-файлов и расширения файлов
Шейп-файлы хранятся в трех или более файлах, которые имеют одинаковый префикс и находятся в одной папке (рабочей области шейп-файлов). Отдельные файлы можно увидеть с помощью Проводника Windows, в ArcCatalog они не отображаются.
Дополнительный модуль |
Описание |
Необходимо? |
---|---|---|
.shp |
Основной файл, в котором хранится геометрия объектов. В этом файле не хранятся атрибуты – только геометрия. |
Да |
.shx |
Парный к .shp файл, в котором хранятся местоположения отдельных ID пространственных объектов, находящихся в файле .shp. |
Да |
.dbf |
Таблица dBASE, в которой находятся атрибуты пространственных объектов. |
Да |
.sbn и .sbx |
Файлы, в которых хранится пространственный индекс объектов. |
No |
.atx |
Атрибутивный индекс, создающийся в ArcCatalog для каждой таблицы dBASE. |
No |
.ixs и .mxs |
Индекс геокодирования для чтения-записи шейп-файлов. |
No |
.prj |
Файл, в котором хранится информация о системе координат. |
No |
.xml |
Метаданные для ArcGIS; хранит информацию о шейп-файле. |
No |
Ограничения по геометрии
- Каждый файл-компонент шейп-файла не может быть более 2 GB, что составляет примерно 70 миллионов точечных объектов. Количество линейных или полигональных объектов, которые могут содержаться в шейп-файле, зависит от числа вершин этих объектов (вершина является эквивалентом точки).
- В шейп-файлах не хранится значение допуска x,y, как в классах объектов базы геоданных. Допуск по x,y – это минимальное расстояние между координатами, ближе которого они будут считаться идентичными. Допуск используется при оценке взаимосвязей между пространственными объектами одного класса объектов, или между объектами нескольких различных классов. Он активно используется при редактировании объектов. Если вы выполняете любую операцию, включающую сравнение объектов, например, используете инструменты группы Наложение (Overlay), инструмент Вырезать (Clip), инструмент Выбрать в слое по расположению (Select Layer By Location), или любой инструмент, который использует в качестве входных данных два или более класса пространственных объектов, следует использовать класс объектов базы геоданных (который имеет допуск по x,y) вместо шейп-файлов.
- Шейп-файл может занимать от трех до пяти раз больше места, по сравнению с файловой базой геоданных или SDE, поскольку использует иные методы сжатия.
- Шейп-файлы поддерживают объекты-мультипатчи, но не поддерживают следующие возможности мультипатчей:
- Координаты текстур
- Текстуры и частичное окрашивание
- Нормали освещенности
- Пространственный индекс шейп-файла малоэффективен по сравнению с индексом класса объектов базы геоданных. Это означает, что пространственные запросы (например, выбор объектов в пределах полигона) занимает больше времени по сравнению с классом объектов базы геоданных. Эта неэффективность заметна только при работе с большим количеством пространственных объектов.
- Параметрически заданные кривые (также известные как кривые дуговых сегментов) не поддерживаются в шейп-файлах. Параметрические кривые можно создать, отредактировав класс объектов базы геоданных, как описано в разделе Создание кривой. Для построения кривых используются математические формулы. При экспорте класса объектов базы геоданных, который содержит параметрические кривые, в шейп-файл, кривые будут трансформированы в простые линейные объекты, вершины которых будут расположены очень близко друг к другу, чтобы сохранить соответствующую форму.
Ограничения атрибутов
- В отличие от других форматов, шейп-файл хранит числовые атрибуты в символьном, а не бинарном формате. Для реальных числовых значений (например, с десятичными знаками), это может привести к ошибкам из-за округления. Это ограничение касается только атрибутов, и не относится к хранению координат в столбце shape. В следующей таблице представлены значения ширины полей для каждого типа атрибутов:
Ширина полей в формате dBASEТип данных базы геоданных
Тип поля dBASE
Ширина полей dBASE (число символов).
Object ID
Число (Number)
9
Короткое целое (Short Integer)
Число (Number)
4
Длинное целое (Long Integer)
Число (Number)
9
Число с плавающей точкой (Float)
Число с плавающей точкой (Float)
13
Двойной
Число с плавающей точкой (Float)
13
Текст
Символ (Character)
254
Date (Дата)
Date (Дата)
8
- Формат файлов dBASE поддерживает только символы ANSI в именах полей и значениях. Esri добавил поддержку Unicode в файлы dBASE, что позволяет хранить поля и значения в формате Unicode. Но эта поддержка работает только в ArcGIS и может оказаться недоступной в других приложениях (не-Esri). Поддержка Unicode в dBASE в настоящее время разрабатывается в Esri, и в скором времени эта проблема будет разрешена.Примечание:
Если вам необходима поддержка кодировки Unicode для имен полей или атрибутивных значений, мы настоятельно рекомендуем использовать формат базы геоданных, а не шейп-файла.
- Поля Даты (Date) поддерживают хранение даты или времени, но нельзя хранить дату и время в одном и том же поле.
- Имена полей не могут быть длиннее 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, бесконечность или NaN (Не Число) в выходном значении. |
-1.7976931348623158e+308 (IEEE стандарт для максимального отрицательного значения) |
Число (все остальные инструменты геообработки). |
0 |
Текст |
" " (пусто – без пробела) |
Date (Дата) |
Хранится как ноль, но отображается как <null> |
Неподдерживаемые функции
Шейп-файлы не имеют дополнительных типов данных, как другие рабочие области или классы объектов. При конвертации в шейп-файл класса объектов базы геоданных, или набора данных другого формата, следующие элементы будут потеряны:
- Подтипы
- Атрибутивные домены
- Геометрические сети
- Топологии
- Аннотации
Shape length и shape area
Для классов линейных и полигональных объектов, хранящихся в базе геоданных, ArcGIS вычисляет и хранит поля shape_length и shape_area; т.е., когда вы редактируете форму линии или полигона в классе объектов базу геоданных, значения полей shape_length и shape_area вычисляются заново с учетом изменений. Но для шейп-файлов этого не происходит. Даже если шейп-файл содержит поле shape_area или shape_leng, они не будут обновляться при изменении шейп-файла.
Шейп-файлы и геообработка
Любой инструмент геообработки, выходными данными которого является класс пространственных объектов, позволяет вам выбрать в качестве выходного набора данных шейп-файл или класс объектов базы геоданных. Точно так же, если выходными данными инструмента является таблица, вы можете выбрать таблицу базы геоданных или файл dBASE (.dbf). При выборе формата выходных данных, вы должны понимать возможные проблемы, которые возникают если в качестве входных данных задан класс объектов базы геоданных, а для выходных данных определен шейп-файл.
Инструмент геообработки создает выходной класс объектов или таблицу автоматически. Автоматически создаваемые выходные данные базируются на ряде факторов, как описано в разделе Использование параметров среды Текущая и Временная рабочие области. Если в качестве временной рабочей области задана системная папка, а не база геоданных, автоматически создаваемый выходной класс объектов будет шейп-файлом или файлом dBASE (см. рис. ниже).
Если в качестве временной рабочей области будет задана файловая база геоданных, автоматически создаваемый выходной класс объектов будет классом объектов этой базы геоданных, а не шейп-файлом или таблицей .dbf (см. рис. ниже).
Более подробно о параметрах среды геообработки
Так как сохранение шейп-файла занимает мало времени, они часто используются для записи промежуточных данных в модели, что уменьшает время, необходимое для выполнения модели. Тем не менее, запись в файловую базу геоданных, как правило, занимает не больше времени, чем запись шейп-файла, поэтому, если скорость выполнения модели для вас не критична, вам следует использовать файловую базу геоданных для промежуточных и выходных данных. Однако, если вы все-таки используете шейп-файлы, помните об их ограничениях, описанных выше, и используйте шейп-файлы только для хранения простых пространственных объектов или атрибутов. Альтернативой использования шейп-файлов является использование виртуальной рабочей области для хранения промежуточных данных.
Более подробно о виртуальной рабочей области
Пространственная привязка и шейп-файлы
В разделе Пространственная привязка и геообработка обсуждается важность определения свойств пространственной привязки при использовании инструментов геообработки. Несколько параметров среды геообработки контролируют пространственную привязку данных при работе инструментов геообработки. Следующие параметры не поддерживаются, если в качестве выходных данных инструмента задан шейп-файл: