Типы данных полей ArcGIS

При создании классов пространственных объектов или таблиц вы выбираете для каждого поля тип данных. Список доступных типов данных включает в себя различные числовые типы, текстовые, дата, большие бинарные объекты (BLOB) и глобальные уникальные идентификаторы (GUID). Правильный выбор типа данных позволит вам корректно хранить ваши данные и облегчит выполнение анализа, управление данными, решение бизнес-задач.

В данном разделе будут описаны типы данных, которые доступны при создании класса пространственных объектов или таблицы в ArcGIS. Если вы храните данные в базе данных или геоданных в системе управления базами данных (СУБД), типы данных ArcGIS и СУБД могут не совпадать. При преобразовании типа данных ArcGIS происходит его замещение максимально схожим типом данных, который доступен в СУБД. Данный процесс называется преобразованием типа данных. В течение этого процесса возможно, что значения, которые будут храниться в СУБД с другим типом данных, будут использовать для атрибута данных иные критерии. В результате, типы данных, которые вы видите в свойствах таблицы или класса объектов в ArcGIS Pro, могут отличаться от заданных.

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

Числа

Вы можете хранить числа с помощью одного из четырех числовых типов данных:

  • Short integer
  • Long integer
  • Float (числа с плавающей точкой одинарной точности)
  • Double (числа с плавающей точкой двойной точности)

При выборе типа данных, следует определить, будете ли вы хранить целые числа или дробные. Если вам нужно хранить только целые числа, например, 12 или 12345678, то используйте short integer или long integer. Если вам нужно хранить дробные числа, которые имеют десятичные доли, например, 0.23 или 1234.5678, то используйте float или double.

Следует произвести выбор между типами данных short integer или long integer или между типами данных числа с плавающей точкой с одинарной (float) или двойной точностью (double). Это не только позволит вам минимизировать объем необходимого дискового пространства, но также повысит производительность. Если необходимо хранить целочисленные значения от -32768 до 32767, задайте тип данных короткое целое, поскольку для этого необходимо только 2 байта, тогда как длинное целое использует 4 байта. Если необходимо хранить дробные значения только между -3.4E38 и 1.2E38, задайте тип данных с плавающей точкой, поскольку для этого необходимо только 4 байта, тогда как числа двойной точности использует 8 байт. В таблице ниже перечислены типы данных, их диапазоны и требования к хранению. Диапазоны значений приводятся для файловых и персональных баз геоданных. Диапазоны в базах данных и многопользовательских, рабочей группы или настольных базах геоданных слегка отличаются.

Тип данных

Диапазон хранимых значений

Размер (байты)

Применение

Short integer

от -32768 до 32767

2

Числовые значения без дробных значений в рамках заданного интервала; кодированные значения

Long integer

от -2 147 483 648 до 2 147 483 647

4

Числовые значения без дробных значений в рамках заданного интервала

Float (числа с плавающей точкой одинарной точности)

примерно от -3,4E38 до 1,2E38

4

Числовые значения с дробными значениями в рамках заданного интервала

Double (числа с плавающей точкой двойной точности)

примерно от -2,2E308 до 1,8E308

8

Числовые значения с дробными значениями в рамках заданного интервала

Таблица типов данных ArcGIS

При определении численных полей для таблицы в файловой базе геоданных вам нужно указать только тип данных. При определении числовых полей таблицы в базе данных или в многопользовательской базе геоданных также укажите разрядность (максимальную длину поля) и точность (количество десятичных знаков после запятой).

Определение разрядности и количества десятичных знаков позволяет ограничить диапазон значений и установить допустимые форматы значений, которые могут быть использованы в определенном поле. Все это обеспечивает более полное управление системой. Например, если указать тип float с разрядностью, равной 4, и точностью, равной 2, то вы сможете ввести в это поле 12.34. Если вы попытаетесь ввести в это поле 12.345, то будет выведено сообщение об ошибке, поскольку данное значение превышает установленный порог количества цифр и разрешенного числа знаков после запятой. С другой стороны, если указать тип данных float с разрядностью, равной 5, и точностью, равной 3, то вы сможете ввести в это поле 12.345.

Типы данных и их возможные значения разрядности и количества десятичных знаков перечислены в расположенной ниже таблице. Использование данной таблицы поможет при выборе типа данных, количества десятичных знаков и разрядности:

Тип данныхРазрядность (длина поля)Точность (количество десятичных знаков)

Short integer*

1-5 (Oracle, Microsoft SQL Server); 5 (IBM Db2) 1-4 (PostgreSQL)

0

Long integer

6-10 (Oracle); 6-9 (Db2, SQL Server); 5-9 (PostgreSQL)

0

Float

1–6

1–6

Double

7+

0+

*По умолчанию в ArcGIS Pro короткие целые создаются с разрядностью 5. Но в столбцах short integer могут храниться только значения в диапазоне от -32 768 до 32 767. Следовательно, в поле short integer нельзя хранить значение, большее 32 767 или меньшее -32 768, даже если разрядность установлена равной 5. Нет смысла указывать точность для столбцов длинных целых чисел в ArcGIS Pro для всех баз данных, кроме Oracle. Нет смысла указывать точность для столбцов длинных целых чисел в ArcGIS Pro для баз данных SQL Server или PostgreSQL.

Ниже приведены примеры числовых диапазонов и возможностей их хранения в многопользовательской базе геоданных или базе данных.

ИнтервалТип данныхРазрядность (длина поля)Точность (количество десятичных знаков)

от 0 до 99

Short integer

2

0

от -99 до 99*

Short integer

3

0

от 0 до 32767*

Short integer

5

0

от 32768 до 99999

Long integer

5

0

от 0.001 до 0.999

Float

4

3

от 1000.00 до 9999.99

Float

6

2

от -123456.78 до 0*

Double

9

2

от 0 до 1 234,56789

Double

9

5

Примеры числовых диапазонов, типов данных, разрядности и точности

*Отрицательные числа требуют наличия дополнительного разряда для хранения знака минус.

Компьютеры могут хранить только ограниченное число цифр, что определяется в зависимости от выделенного дискового пространства. Поля с типом данных double в базах данных и геоданных могут хранить числа, которые состоят не более, чем из 15 цифр, потому что это самое длинное число, которое может вместиться в 8 байт дискового пространства. Числа, имеющие более 15 цифр, округляются и хранятся в формате, который похож на экспоненциальное представление, с помощью которого числа определяются приблизительно. Например, если введено 20-разрядное число 12 345 678 901 234 567 890, оно округляется и хранится как 15-разрядное число 1.23456789012346E+19. Кодовое число в конце, E+19, определяет место десятичной точки.

Числа с плавающей точкой в файловой базе геоданных могут хранить точно только те числа, которые состоят не более чем из 6 цифр. Например, вы не сможете хранить точно число 123456,7 в поле с типом float, потому что это число содержит больше шести цифр. Вы сможете ввести это число в поле с типом float в файловой базе геоданных, но оно будет округлено до 123457, т.е. до числа, содержащего разрешенные 6 цифр. Если вам необходимо хранить это число точно, то вы бы могли хранить его в поле с типом double. Поля float в многопользовательских базах геоданных и базах данных не позволят ввести больше цифр, чем значение разрядности поля, так что округление производиться не будет.

Текст

Текстовое поле представляет набор текстовых символов. Этот текст может включать в себя названия улиц, свойства атрибутов и другие текстовые описания. Альтернативой повторяющимся текстовым атрибутам в базе геоданных является определение кодированных значений. Текстовое описание будет кодироваться с помощью численного значения. Например, вы можете закодировать типы дорог при помощи численных значений путем присвоения значения 1 для усовершенствованных дорог с покрытием, 2 – для гравийных дорог и так далее. Это позволит вам сэкономить используемое дисковое пространство базы геоданных. Однако, кодированные значения должны легко распознаваться пользователем данных. Если вы определяете ваши кодированные значения в домене кодированных значений в базе геоданных и связываете этот домен с целочисленным полем, в котором хранятся коды, то база геоданных отобразит текстовое описание при просмотре таблицы в ArcGIS Pro.

Чтобы более подробно познакомиться с подтипами и атрибутивными доменами, можно обратиться к соответствующим разделам.

Символы, которые используются для текстового представления, могут различаться в зависимости от языка. Для обеспечения легкой конвертации текста между языками ArcGIS использует Unicode для кодирования символов.

Даты

Тип данных дата (date) позволяет хранить даты, время или даты и время. Форматом по умолчанию для представления информации является мм/дд/гггг чч:мм:сс с указанием времени до или после полудня (AM или PM). При вводе полей даты в таблицу с помощью ArcGIS данные преобразуются в этот формат.

BLOB

Большой двоичный объект (BLOB) - это данные, хранимые в виде длинной последовательности двоичных чисел. ArcGIS хранит как BLOB аннотации и объекты-размеры, а также такие элементы, как изображения, мультимедиа или фрагменты кода. Для загрузки элементов в поле типа BLOB или просмотра его содержания необходимо использовать пользовательский загрузчик или вьюер или приложение сторонних разработчиков.

Идентификаторы объектов

Поле Object ID объекта автоматически поддерживается в ArcGIS и гарантирует, что у каждой записи в таблице будет свой уникальный идентификатор. Если открыть таблицу или атрибутивную таблицу слоя, вы увидите поле ObjectID сразу после псевдонимов OID или ObjectID для таблиц и FID для слоев. От наличия этого поля зависят такие ключевые функции, как прокрутка и отображение выбранных наборов.

Следует отметить, что для работы большинства функциональных возможностей ArcGIS Pro, даже для инструмента Идентифицировать, необходимо наличие поля ObjectID с уникальными значениями. Соответственно, с базой данных вне ArcGIS надо работать очень осторожно, чтобы случайно не создать повторяющиеся записи в полях типа ObjectID. Например, при создании видов со связями типа один-ко-многим есть вероятность продублировать идентификаторы объектов. Это приведет к некорректному поведению функций ArcGIS Pro.

При добавлении таблицы базы данных на карту требуется идентификатор объекта. Если ArcGIS не удается найти ненулевое целочисленное поле для использования в качестве идентификатора объекта, пользователю будет предложено выбрать поле, которое будет применяться в качестве идентификатора объекта. Более подробно см. в разделе Выбор поля уникального идентификатора для слоя запроса.

Глобальные идентификаторы

Тип данных global ID, или GUID, хранит реестр строк стилей, состоящий из 36 символов, заключенных в круглые скобки. Эти строки уникально определяют объект или запись таблицы внутри и вне базы геоданных. Так обеспечивается отслеживание объектов при одностороннем или двустороннем создании реплик. Разработчики могут использовать их в отношениях или в любом приложении, для которого требуется наличие глобальных уникальных идентификаторов. В отношении, если поле Global ID является исходным ключом, то поле GUID должно быть ключом назначения. Глобальные идентификаторы можно добавить в набор данных в базе геоданных с помощью инструмента геообработки Добавить Global ID. После этого база геоданных будет поддерживать эти значения автоматически. Вы также можете создать поле GUID, но вам придется самостоятельно поддерживать его значения.

Базы данных с собственным типом данных GUID, например, SQL Server, хранят 16-байтовые значения Global ID и GUID. Базы данных, в которых нет собственного типа данных GUID, хранят их в виде 38 байт.

Некоторые примечания по работе с глобальными идентификаторами

  • Поля типа GUID могут быть добавлены в наборы данных базы геоданных с помощью вида Поля или команды Новое поле в окне таблицы.
  • Вы можете добавить Global ID для отдельных классов пространственных объектов, таблиц и классов атрибутивных отношений в базах геоданных. Это невозможно выполнить с отдельными наборами данных внутри наборов классов объектов, команда запускается только для всего набора классов объектов. Ее также нельзя выполнять для таблиц в базе данных.
  • Если столбец Global ID уже создан, инструмент оставляет имеющийся столбец, он не удаляется и не создается заново.
  • Если при добавлении класса пространственных объектов в набор классов объектов в базе геоданных желательно добавить для него столбец глобальных идентификаторов Global ID, необходимо выполнить инструмент Добавить Global ID для набора данных объектов. Это приведет к добавлению столбца Global ID для нового класса пространственных объектов и для всех классов пространственных объектов, у которых еще нет столбца Global ID. Классы пространственных объектов, которые уже имеют столбец Global ID, останутся нетронутыми.
  • Операции копирования и вставки, извлечения данных, экспорта/импорта документов рабочих областей XML не меняют значения Global ID в выходной базе геоданных. При прочих способах экспорта и импорта данных эти значения не сохраняются.

Поля типа растр

В отличие от гиперссылки, которая просто связывает поле объекта с изображением, поле типа raster позволяет хранить растровые данные в рамках или при базе геоданных. Более подробно см. в разделе Добавление наборов растровых данных в качестве атрибутов классов объектов.

Геометрия

В ArcGIS тип данных geometry определяет тип геометрии объектов: точка, линия, полигон, мультиточка или мультипатч, – который хранится в определенной таблице. Поле, хранящееся как тип geometry, при создании из ArcGIS получает имя SHAPE.

Geometry – это тип данных, используемый ArcGIS. Например, если для нового класса объектов выбрано Полигональные объекты, поле SHAPE, добавленное по умолчанию, получит тип данных ArcGIS Geometry.

Для параметра Тип геометрии инструмента Создать класс пространственных объектов, тип геометрии указывается как Полигональный.

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

При создании поля геометрии в классе объектов в базе данных или многопользовательской базе геоданных следует учитывать дополнительный тип данных: тип данных базы данных. Способ хранения значения поля SHAPE в СУБД зависит от типа хранения геометрии, используемого СУБД. При создании класса объектов в многопользовательской базе геоданных, используемый тип хранения геометрии определяется заданным значением параметра GEOMETRY_STORAGE ключевого слова конфигурации. При создании класса объектов в базе данных, пространственный тип поля определяется в параметром Ключевое слово конфигурации в разделе Настройки базы геоданных инструмент Создать класс пространственных объектов.