При создании классов пространственных объектов или таблиц вы выбираете для каждого поля тип данных. Список доступных типов данных включает в себя различные числовые типы, текстовые, даты, большие двоичные объекты (BLOB) и глобальные уникальные идентификаторы (GUID). Правильный выбор типа данных позволит вам корректно хранить ваши данные и облегчит выполнение анализа, управление данными и упростит решение бизнес-задач.
В данном разделе будут описаны типы данных, которые доступны при создании класса пространственных объектов или таблицы в ArcGIS. Если вы храните свои данные в базе данных или базу геоданных в базе данных, типы данных ArcGIS и типы данных системы управления базами данных (СУБД) могут не совпадать напрямую. Типы соответствуют максимально схожему доступному типу данных базы данных. Данный процесс называется преобразованием типа данных. В течение этого процесса возможно, что значения, которые будут храниться в базе данных с другим типом данных, будут использовать для атрибута данных иные критерии. В результате, типы данных, которые вы видите в свойствах таблицы или класса объектов в ArcGIS Pro, могут отличаться от заданных. Более подробно о процессе преобразования типов данных см. в разделе Типы данных в СУБД.
Другие форматы хранения данных, такие как шейп-файлы или таблицы DBF, имеют другие ограничения по типам данных. Убедитесь, что знаете обо всех ограничениях на типы данных и размер в конечном формате, при изменении типов хранения данных.
Числовые
Вы можете хранить числа с помощью одного из четырех численных типов данных:
- Short integer
- Long integer
- Float (числа с плавающей точкой одинарной точности)
- Double (числа с плавающей точкой двойной точности)
При выборе типа данных, следует определить, будете ли вы хранить целые числа или дробные. Если вам нужно хранить только целые числа, например, 12 или 12 345 678, то используйте тип short integer или long integer. Если вам нужно хранить дробные числа с десятичными долями, например, 0,23 или 1234,5678, то используйте числа с плавающей точкой (float) или числа с двойной точностью (double).
При выборе между short integer и long integer или между float и double выберите тип данных, который занимает меньше всего места для хранения. Это не только позволит вам минимизировать объем необходимого дискового пространства, но также повысит производительность. Например, чтобы хранить целочисленные значения только между -32768 и 32767, задайте тип данных short integer, поскольку для этого необходимо только 2 байта, тогда как long integer использует 4 байта. Чтобы хранить дробные значения только между -3,4E38 и 1,2E38, задайте тип данных с float, поскольку для этого необходимо только 4 байта, тогда как double использует 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 | Численные значения с дробными значениями в рамках заданного интервала |
Если вы добавляете числовые поля в таблицу или класс пространственных объектов в файловой или мобильной базе геоданных, вам нужно только указать тип данных. Если вы добавляете числовое поле в таблицу или класс пространственных объектов в базе данных или многопользовательской базе геоданных, вы можете указать точность (максимальную длину поля). Если поле имеет тип данных float или double, вы также можете указать масштаб (максимальное количество десятичных знаков) для значений поля.
Определение разрядности и количества десятичных знаков позволяет ограничить диапазон значений и установить допустимые форматы значений, которые могут быть использованы в определенном поле. Все это обеспечивает более полное управление системой. Например, если указать тип float с разрядностью, равной 4, и точностью, равной 2, то вы сможете ввести в это поле 12.34. Если вы попытаетесь ввести в это поле 12,345, то будет выведено сообщение об ошибке, поскольку данное значение превышает установленный порог количества цифр и разрешенного числа знаков после запятой. В качестве альтернативы, если вы указываете float с точностью 5 и колиеством знаков после запятой 3, вы можете ввести 12,345.
Типы данных, а также значения точности и количества знаков после запятой, которые вы можете указать при добавлении поля в виде поля, перечислены ниже. Использование данной информации поможет при выборе типа данных, количества десятичных знаков и разрядности:
Тип данных | Разрядность (длина поля) | Количество десятичных знаков (число знаков после запятой) |
---|---|---|
Короткое целое (Short integer)* | 1–5 (Oracle); 5 (IBM Db2, Microsoft SQL Server и PostgreSQL | 0 |
Long integer | 6–10 (Oracle); 6–9 (Db2), 10 (SQL Server и PostgreSQL) | 0 |
Float | 1–6 | 1–6 |
Double | 7+ | 0+ |
*По умолчанию в ArcGIS Pro short integers создаются с разрядностью 5. Но в столбцах short integer могут храниться только значения в диапазоне от -32 768 до 32 767. В поле short integer нельзя хранить значение, большее 32 767 или меньшее -32 768, даже если точность установлена равной 5. Нет причин указывать точность для столбцов short integer, созданных ArcGIS Pro в базе данных, отличной от Oracle.
В следующей таблице приведены примеры числовых диапазонов и возможностей их хранения в базе данных или в многопользовательской базе геоданных:
Диапазон | Тип данных | Разрядность (длина поля) | Количество десятичных знаков (число знаков после запятой) |
---|---|---|---|
от 0 до 99 | Short integer | 2 | 0 |
от -99 до 99* | Short integer | 3 | 0 |
От -32,768 до 32,767* | Short integer | 5 | 0 |
От -99,999 до 99,999* | Long integer | 5 | 0 |
от 0.001 до 0.999 | Float | 4 | 3 |
от 1,000.00 до 9,999.99 | Float | 6 | 2 |
от -123,456.78 до 0* | Double | 9 | 2 |
от 0 до 1,234.56789 | Double | 9 | 5 |
*Отрицательные числа требуют наличия дополнительного разряда для хранения знака минус.
Компьютеры могут хранить только ограниченное число цифр, что определяется в зависимости от выделенного дискового пространства. Поля с типом данных числа с плавающей точкой двойной точности в базах данных и геоданных могут хранить числа, которые состоят не более, чем из 15 цифр, потому что это самое длинное число, которое может быть определено посредством 8 байт дискового пространства. Числа, имеющие более 15 цифр, округляются и хранятся в формате, который похож на экспоненциальное представление, с помощью которого числа определяются приблизительно. Например, если введено 20-разрядное число 12 345 678 901 234 567 890, оно округляется и хранится как 15-разрядное число 1.23456789012346E+19. Кодовое число в конце, E+19, определяет место десятичной точки.
Поля типа данных float в файловой и мобильной базах геоданных могут хранить точно только те числа, которые состоят не более чем из 6 цифр. Например, вы не сможете хранить точно число 123456,7 в поле с типом float, потому что это число содержит больше шести цифр. Вы сможете ввести это число в поле с типом float в файловой базе геоданных, но оно будет округлено до 123457, т.е. до числа, содержащего разрешенные шесть цифр. Чтобы хранить это число точно, вы можете хранить его в поле с типом double. Поля float в многопользовательских базах геоданных и базах данных не позволяют вводить больше цифр, чем точность для поля, поэтому округления не происходит.
Text
Текстовое поле представляет набор текстовых символов. Этот текст может включать в себя названия улиц, свойства атрибутов и другие текстовые описания. Альтернативой повтору текстовых атрибутов в базе геоданных является определение кодированного значения. В этом случае текстовое описание кодируется числовым значением. Например, вы можете закодировать типы дорог при помощи численных значений путем присвоения значения 1 для усовершенствованных дорог с покрытием, 2 - для гравийных дорог и так далее. Это позволит вам сэкономить используемое дисковое пространство базы геоданных. Однако, кодированные значения должны легко распознаваться пользователем данных. Если вы задаете ваши кодированные значения в домене с кодированными значениями в базе геоданных и связываете этот домен с полем integer, в котором хранятся ваши коды, то база геоданных отобразит текстовое описание при просмотре таблицы в ArcGIS Pro.
Чтобы более подробно познакомиться с подтипами и атрибутивными доменами, можно обратиться к соответствующим разделам.
Символы, которые используются для текстового представления, могут различаться в зависимости от языка. Для обеспечения легкой конвертации текста между языками ArcGIS использует Unicode для кодирования символов.
Date
Тип данных дата (date) позволяет хранить даты, время или даты и время. Форматом по умолчанию для представления информации является mm/dd/yyyy hh:mm:ss (мм/дд/гггг чч:мм:сс) с указанием времени до или после полудня (AM или PM). При вводе полей даты в таблицу с помощью ArcGIS данные преобразуются в этот формат.
BLOB
Большой двоичный объект (BLOB) представляет собой некоторую часть данных, хранимую в виде длинной последовательности двоичных чисел. ArcGIS хранит в виде больших двоичных объектов (BLOB) аннотации и объекты-размеры (dimension), а также такие элементы, как изображения, мультимедиа или фрагменты кода. В этом поле также могут храниться биты кода. Вам будет нужно использовать пользовательский загрузчик или вьювер или приложение третьих лиц для загрузки объектов в поле типа BLOB или просмотра его содержания.
Идентификаторы объектов
Когда вы создаете таблицу в ArcGIS, в таблицу добавляется уникальное целочисленное поле, не допускающее значения NULL, которое действует как идентификатор объекта (ID объекта). Поле Object ID объекта автоматически поддерживается в ArcGIS и гарантирует, что у каждой записи в таблице будет свой уникальный идентификатор. Если открыть таблицу или атрибутивную таблицу слоя, вы увидите поле ObjectID сразу после псевдонимов OID или ObjectID для таблиц и FID для веб-векторных слоев и шейп-файлов. От наличия этого поля зависят такие ключевые функции, как прокрутка и отображение выбранных наборов.
ID объекта также требуется при регистрации таблицы в многопользовательской базе геоданных. Объяснение требований к ID объекта при регистрации таблицы см. в разделе Регистрация таблицы или вида в базе геоданных.
Для большинства функций ArcGIS Pro, таких как использование инструмента идентификация, необходимо, чтобы значения в поле object ID были уникальными. Поэтому будьте осторожны при работе напрямую с данными вне ArcGIS, чтобы ID объектов не дублировались. Например, когда вы создаете вид в базе данных с отношением один-ко-многим, возможно, что ID объектов будут дублироваться. Это приведет к некорректному поведению функций ArcGIS Pro.
При добавлении таблицы базы данных на карту требуется идентификатор объекта. Если ArcGIS не удается найти поле integer без значений null для использования в качестве идентификатора объекта, пользователю будет предложено выбрать поле, которое будет использоваться в качестве идентификатора объекта. Более подробно см. в разделе Выбор поля уникального идентификатора для слоя запроса.
Примечание:
ArcGIS не поддерживает значения в этих полях базы данных, и не гарантируется, что все значения в этих полях являются уникальными.
Глобальные идентификаторы
Типы данных global ID и GUID содержат реестр строк стилей (registry style strings), состоящий из 36 символов, заключенных в круглые скобки. Эти строки уникально определяют объект или запись таблицы внутри и вне базы геоданных. Так обеспечивается отслеживание объектов при одностороннем или двустороннем создании реплик. Разработчики могут использовать их в отношениях или в любом приложении, требующем GUID. В отношении, если поле Global ID является исходным ключом, то поле GUID должно быть ключом назначения. Глобальные идентификаторы можно добавить в набор данных в базе геоданных с помощью инструмента геообработки Добавить Global ID. Затем база геоданных автоматически поддерживает эти значения. Вы можете создать поле GUID в ArcCatalog, но обслуживать его значения надо будет вам вручную.
Базы данных с собственным типом данных GUID, например, SQL Server, хранят 16-байтовые значения Global ID и GUID. Базы данных, не имеющие «родной» тип данных GUID, хранят их в виде 38 байт.
Примечания к Global ID
При использовании Global ID помните следующее:
- Поля типа GUID могут быть добавлены в наборы данных базы геоданных с помощью вида поля или команды Новое поле в окне таблицы.
- Вы можете добавить Global ID для отдельных классов пространственных объектов, таблиц и классов атрибутивных отношений в базах геоданных. Global ID нельзя добавлять к отдельным наборам данных внутри набора объектов, это применимо только ко всему набору данных объектов.
- Global ID также нельзя добавлять в таблицы в базе данных.
- Если есть существующий столбец 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 поменялся бы соответствующим образом — на линия, точка, мультиточка, мультипатч или полигон для объектов-размеров или аннотаций.
Когда вы создаете поле geometry в классе пространственных объектов в базе данных или многопользовательской базе геоданных, вам также необходимо учитывать тип данных базы данных. Способ хранения значения поля SHAPE в СУБД зависит от типа хранения геометрии, используемого СУБД. При создании класса объектов в многопользовательской базе геоданных, используемый тип хранения геометрии определяется настройкой параметра GEOMETRY_STORAGE ключевого слова конфигурации. При создании класса объектов в базе данных, пространственный тип поля определяется в параметром Ключевое слово конфигурации в разделе Настройки базы геоданных инструмент Создать класс объектов.