При создании классов пространственных объектов или таблиц вы выбираете для каждого поля тип данных. Список доступных типов данных очень большой и включает в себя такие типы, как текст (text), дата (date), большие бинарные объекты (BLOB) и глобально определяемые уникальные идентификаторы (GUID). Правильный выбор типа данных позволит вам корректно хранить ваши данные и облегчит выполнение анализа, управление данными и упростит решение бизнес-задач.
В данном разделе будут описаны типы данных, которые доступны при создании класса пространственных объектов или таблицы в ArcGIS. Если вы храните ваши данные в базе геоданных ArcSDE, в персональной базе геоданных или в базе данных, то типы данных ArcGIS и вашей системы управления базами данных (СУБД) могут отличаться. При преобразовании типа данных ArcGIS происходит его замещение максимально схожим типом данных, который доступен в СУБД. Данный процесс называется преобразованием типа данных (data type mapping). В течение этого процесса возможно, что значения, которые будут храниться в СУБД с другим типом данных, будут использовать для атрибута данных (data attribute) иные критерии. В результате, типы данных, которые вы видите в свойствах таблицы или класса объектов в ArcGIS for Desktop могут отличаться от заданных. Более подробно о процессе преобразования типов данных с помощью используемой системы управления базами данных, см. в разделе Типы данных в СУБД.
Кроме того, другие форматы хранения данных, такие как шейп-файлы или таблицы 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) Это не только позволит вам минимизировать объем необходимого дискового пространства, но также повысит производительность. Если вам нужно хранить целые числа только от -32 768 до 32 767, то вам следует выбрать тип данных короткое целое (short integer), потому что для него потребуется до 2 байт, в то время как для типа данных длинное целое (long integer) будет нужно до 4 байт. Если вам будет нужно хранить дробные числа в интервале от -3,4E38 до 1,2E38, то вам следует выбрать тип данных чисел с плавающей точкой (float), поскольку для него потребуется до 4 байт, в то время как для типа данных чисел с двойной точностью (double) будет нужно до 8 байт. В расположенной ниже таблице перечислены типы данных, диапазоны возможных значений для них и требования к дисковому пространству. Диапазоны значений приводятся для файловых и персональных баз геоданных. Диапазоны значений в базах геоданных ArcSDE и базах данных будут слегка отличаться.
Тип данных (Data Type) | Диапазон хранимых значений | Размер (байты) | Применение |
Короткие целые (Short integer) | от -32768 до 32767 | 2 | Численные значения без дробных значений в рамках заданного интервала; кодированные значения |
Длинное целое | от -2147483648 до 2147483647 | 4 | Численные значения без дробных значений в рамках заданного интервала |
Float (числа с плавающей точкой обычной точности) | примерно от -3.4E38 до 1.2E38 | 4 | Численные значения с дробными значениями в рамках заданного интервала |
Double (числа с плавающей точкой двойной точности) | примерно от -2.2E308 до 1.8E308 | 8 | Численные значения с дробными значениями в рамках заданного интервала |
При определении численных полей для таблицы в файловой или персональной базе геоданных вам нужно указать только тип данных. При определении численных полей таблицы в базе данных или в базе геоданных ArcSDE нужно дополнительно указать разрядность (precision), которая представляет собой максимальную длину поля, и количество десятичных знаков (scale), которое представляет собой максимальное число знаков после запятой.
Определение точности (precision) и количества десятичных знаков (scale) позволяет вам ограничить диапазон значений и установить допустимые форматы значений, которые могут быть использованы в определенном поле. Все это обеспечивает для вас более полное управление системой. Например, если вы определили тип чисел с плавающей точкой (float) с точностью (precision), равной 4, и количеством десятичных знаков (scale), равным 2, то вы сможете ввести в это поле 12.34. Если вы попытаетесь ввести в это поле 12.345, то будет выведено сообщение об ошибке, поскольку данное значение превышает установленный порог количества цифр и разрешенного числа знаков после запятой. С другой стороны, если вы определите тип данных с плавающей точкой (float) с точностью (precision), равной 5, и количеством десятичных знаков (scale), равным 3, то вы сможете ввести в это поле 12.345.
Типы данных и их возможные значения разрядности (precision) и количества десятичных знаков (scale) перечислены в расположенной ниже таблице. Использование данной таблицы поможет при выборе типа данных, количества десятичных знаков (scale) и разрядностью (precision) для баз данных или баз геоданных ArcSDE.
Тип данных | Разрядность (длина поля) | Количество десятичных знаков (число знаков после запятой) |
---|---|---|
Короткое целое (Short integer)* | 1–5 (Oracle, SQL Server, PostgreSQL, Netezza); 5 (DB2, Informix) | 0 |
Длинное целое (Long integer) | 6–10 (Oracle и PostgreSQL); 6–9 (DB2, Informix, Netezza и SQL Server) | 0 |
Число с плавающей точкой (Float) | 1–6 | 1–6 |
Двойной точности (Double) | 7+ | 0+ |
*По умолчанию, в ArcGIS for Desktop короткие целые числа создаются с точностью 5. Но в столбцах с короткими целыми можно хранить значения лишь в диапазоне от -32768 до 32767. Соответственно, вы не сможете сохранить там значение больше 32767 или меньше -32768 даже при установленной точности 5. Поэтому, нет смысла задавать точность для столбцов с короткими целыми в ArcGIS for Desktop в любых базах данных, кроме Oracle. Нет смысла указывать точность для столбцов с длинными целыми в ArcGIS for Desktop для баз данных SQL Server или PostgreSQL.
Ниже приведены примеры числовых диапазонов и возможностей их хранения в базе геоданных ArcSDE или базе данных.
Диапазон (Range) | Тип данных (Data type) | Разрядность (Precision) (длина поля) | Количество десятичных знаков (Scale) (число знаков после запятой) |
---|---|---|---|
от 0 до 99 | Короткие целые (Short integer) | 2 | 0 |
от -99 до 99* | Короткие целые (Short integer) | 3 | 0 |
от 0 до 32767* | Короткие целые (Short integer) | 5 | 0 |
от 32,768 до 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 |
*Отрицательные числа требуют наличия дополнительного значащего символа для хранения знака (-) минус.
Компьютеры могут хранить только ограниченное число цифр, что определяется в зависимости от выделенного дискового пространства. Поля с типом данных числа с плавающей точкой двойной точности (double) в базах данных файловой, персональной или базе геоданных ArcSDE могут хранить числа, которые состоят не более чем из 15 цифр, потому что это самое длинное число, которое может быть определено посредством 8 байт дискового пространства. Числа, имеющие более 15 цифр, округляются и хранятся в формате, который похож на экспоненциальное представление, с помощью которого числа определяются приблизительно. Например, если введено 20-разрядное число 12 345 678 901 234 567 890, оно округляется и хранится как 15-разрядное число 1.23456789012346E+19. Кодовое число в конце, E+19, определяет место десятичной точки.
Числа с плавающей точкой (Float) в файловой и персональной базах геоданных могут хранить точно только те числа, которые состоят не более чем из 6 цифр. Например, вы не сможете хранить точно число 123456,7 в поле с типом float, потому что это число содержит больше шести цифр. Вы сможете ввести это число в поле с типом float в файловой или персональной базе геоданных, но оно будет округлено до 123457, т.е. до числа, содержащего разрешенные 6 цифр. Если вам необходимо хранить это число точно, то вы бы могли хранить его в поле с типом double. Поля float в базах геоданных ArcSDE и базах данных не позволят ввести больше цифр, чем значение разрядности поля (precision), так что округление производиться не будет.
Текст (Text)
Текстовое поле представляет набор текстовых символов. Этот текст может включать в себя названия улиц, свойства атрибутов и другие текстовые описания. Альтернативой повтору текстовых атрибутов в базе геоданных является определение кодированного значения. Текстовое описание будет кодироваться с помощью численного значения. Например, вы можете закодировать типы дорог при помощи численных значений путем присвоения значения 1 для усовершенствованных дорог с покрытием, 2 - для гравийных дорог и так далее. Это позволит вам сэкономить используемое дисковое пространство базы геоданных. Однако, кодированные значения должны легко распознаваться пользователем данных. Если вы определяете ваши кодированные значения в домене с кодированными значениями в базе геоданных и связываете этот домен с полем целого типа (integer), в котором хранятся ваши коды, то база геоданных отобразит текстовое описание при просмотре таблицы в приложении ArcMap или ArcCatalog.
Чтобы более подробно познакомиться с подтипами и атрибутивными доменами, можно обратиться к соответствующим разделам.
Символы, которые используются для текстового представления, могут различаться в зависимости от языка. Для обеспечения легкой конвертации текста между языками ArcGIS использует для кодирования символов Unicode.
Даты (Dates)
Тип данных дата (date) позволяет хранить даты, время или даты и время. Форматом по умолчанию для представления информации является mm/dd/yyyy hh:mm:ss (мм/дд/гггг чч:мм:сс) с указанием времени до или после полудня (AM или PM). При вводе полей даты в таблицу с помощью ArcGIS данные преобразуются в этот формат.
BLOBы
Большой двоичный объект (BLOB) представляет собой некоторую часть данных, хранимую в виде длинной последовательности двоичных чисел. ArcGIS хранит в виде больших двоичных объектов (BLOB) аннотации и объекты-размеры (dimension), а также такие элементы, как изображения и мультимедиа. В этом поле также могут храниться биты кода. Вам будет нужно использовать пользовательский загрузчик или вьювер или приложение третьих лиц для загрузки объектов в поле типа BLOB или просмотра его содержания.
Идентификаторы объектов
Поле ObjectID автоматически поддерживается в ArcGIS и гарантирует, что у каждой записи в таблице будет свой уникальный идентификатор. Если открыть таблицу или атрибутивную таблицу слоя, вы увидите поле ObjectID сразу после псевдонимов OID или ObjectID для таблиц и FID для слоев. От наличия этого поля зависят такие ключевые функции, как пролистывание и отображение выбранных наборов.
Следует отметить, что для работы большинства функций ArcGIS for Desktop, таких как инструмент Идентифицировать (Identify), необходимо наличие поля ObjectID с уникальными значениями. Соответственно, с базой данных вне ArcGIS надо работать очень осторожно, чтобы случайно не повредить или не создать повторяющиеся записи в полях типа ObjectID. Например, при создании видов со связями типа один-ко-многим есть вероятность продублировать ObjectID. А это уже приведет к некорректной работе функций ArcGIS for Desktop.
При добавлении таблицы базы данных в ArcMap требуется идентификатор объекта. Если ArcGIS не удается найти ненулевое целое поле для использования в качестве идентификатора объекта, пользователю будет предложено выбрать поле, которое будет использоваться в качестве идентификатора объекта. Более подробно см. Выбор поля уникального идентификатора.
Глобальные идентификаторы
Тип данных global ID, или GUID, хранит реестр строк стилей (registry style strings), состоящий из 36 символов, заключенных в круглые скобки. Эти строки уникально определяют объект или запись таблицы внутри и вне базы геоданных. Так обеспечивается отслеживание объектов при одностороннем или двустороннем создании реплик. Разработчики могут использовать их в отношениях или в любом приложении, для которого требуется наличие глобальных уникальных идентификаторов. В отношении, если поле Global ID является исходным ключом (origin key), то поле GUID должно быть ключом назначения (destination key). Глобальные идентификаторы (global ID) можно добавить в набор данных в базе геоданных, щелкнув его правой кнопкой мыши и выбрав Добавить Global ID (Add Global ID). После этого база геоданных будет поддерживать эти значения автоматически. Вы можете создать поле GUID в ArcCatalog, но обслуживать его значения надо будет вам вручную.
Базы данных с собственным типом данных GUID, например, персональные базы геоданных и Microsoft SQL Server, хранят значения Global ID и GUID в виде 16 байтов. Базы данных, не имеющие «родной» тип данных GUID, хранят их в виде 38 байт.
Некоторые примечания по работе с глобальными идентификаторами (Global ID)
- Поля типа GUID могут быть добавлены в наборы данных базы геоданных с помощью закладки Поля (Fields) диалогового окна Свойства (Properties) объекта или с помощью команды Добавить поле (Add Field) в окне таблицы.
- Команда Добавить Global ID (Add Global ID) доступна для отдельных классов пространственных объектов, таблиц и классов атрибутивных отношений в базах геоданных. Ее нельзя применять к отдельным наборам данных внутри наборов объектов, эта команда может использоваться только со всем набором данных объектов. Ее также нельзя выполнять для таблиц в базе данных.
- Если столбец Global ID уже создан, то при выполнении команды старый столбец останется нетронутым: выполнение команды не приведет к его удалению и созданию нового столбца Global ID.
- Если при добавлении класса пространственных объектов в набор классов объектов в базе геоданных желательно добавить для него столбец глобальных идентификаторов Global ID, то нужно выполнить команду Добавить Global ID (Add Global ID) для набора данных объектов. Это произведет добавление столбца Global ID для нового класса пространственных объектов и для всех классов пространственных объектов, у которых еще нет столбца Global ID. Классы пространственных объектов, которые уже имеют столбец Global ID, останутся нетронутыми.
- Операции копирования и вставки, извлечения данных, экспорта/импорта документов рабочих областей XML не меняют значения Global ID в выходной базе геоданных. При прочих способах экспорта и импорта данных эти значения не сохраняются.
Поля типа растра
В отличие от гиперссылки, которая просто связывает поле объекта с изображением, поле типа raster позволяет хранить растровые данные в рамках или при базе геоданных. Более подробно см. в разделе Добавление наборов растровых данных в качестве атрибутов классов объектов.
Geometry
В ArcGIS тип данных геометрия (geometry) определяет типы геометрии объектов — точка, линия, полигон, мультиточка или мультипатч — которые хранятся в определенной таблице. Поле, хранящееся как тип geometry, при создании из ArcGIS получает имя SHAPE.
Geometry — это тип данных, используемый ArcGIS. Например, если для нового класса объектов выбрано Объекты полигоны (Polygon Features), как показано ниже, поле SHAPE, добавленное по умолчанию, получит тип данных ArcGIS Geometry.
В разделе Свойства поля (Field Properties) диалогового окна Новый класс пространственных объектов (New Feature Class) тип геометрии будет указан как Polygon.
Если бы вы создали класс пространственных объектов с типом объектов — линия, точка, мультиточка, мультипатч, объект-размер (dimension) или аннотация — то тип геометрии для поля SHAPE поменялся бы соответствующим образом — на линия, точка, мультиточка, мультипатч или полигон для объектов-размеров (dimension) или аннотаций.
При создании поля геометрии в классе объектов в базе данных или базе геоданных ArcSDE следует учитывать дополнительный тип данных в базе данных. Способ хранения значения поля SHAPE в СУБД зависит от типа хранения геометрии, используемого СУБД DBMS. При создании класса объектов в базе данных пространственный тип поля определяется в разделе Свойства поля (Field Properties) диалогового окна Новый класс пространственных объектов (New Feature Class). При создании класса объектов в базе геоданных используемый тип хранения геометрии определяется заданным значением параметра GEOMETRY_STORAGE ключевого слова конфигурации.