Skip To Content

Работа с полями

Если вы являетесь владельцем размещённого слоя объектов или администратором вашей организации, то вы можете добавлять и удалять поля, а также выполнять вычисления для полей размещённого слоя объектов. Существуют некоторые ограничения; например, вы не можете удалить или вычислить поле OBJECTID. Полный список ограничений смотрите в разделе Ограничения.

Предварительное условие:

Чтобы добавить, удалить или вычислить поля для таблицы, вам требуется вначале отобразить таблицу. Для более полной информации по таблицам см. Отобразить таблицы.

  1. Откройте карту с данными, которые вы хотите увидеть в таблице.
  2. Щелкните Детали и щелкните Ресурсы.
  3. Перейдите к векторному слою и щелкните Показать таблицу. Таблица появится в нижней части вашей карты.

Добавить поле

  1. Щелкните Опции таблицы.
  2. Нажмите кнопку Добавить поле.
    • Имя – имена полей не должны содержать специальные символы, как-то пробелы, дефисы, круглые скобки, квадратные скобки и такие символы, как $, % и #. Избегайте использования имен полей, содержащих слова, которые обычно считаются зарезервированными для базы данных ключевыми словами, например, CHARACTER или DATE. Если вы попытаетесь добавить имя поля со специальными символами или ключевое слово, зарезервированное для базы данных, то вы получите сообщение об ошибке.
    • Псевдоним – альтернативное имя поля, которое является более содержательным и удобным для пользователя, чем настоящее имя. Псевдонимы могут содержать пробелы или специальные зарезервированные для базы данных символы.
    • Тип – один из следующих:
      • Date – данные даты и времени. Смотри описание в разделе Функции даты.
      • Double – числа с десятичными знаками после запятой.
      • Integer – целые числа от -2 147 483 648 до 2 147 483 647 (длинное целое).
      • String – любая последовательность символов.
    • Длина – максимальная длина в символах, которые может хранить строковое поле. Длина требуется для полей типа String. Значение по умолчанию – 256 символов.

Удалить поле

  1. Щелкните столбец, содержащий поле, которое вы хотите удалить.
  2. Нажмите кнопку Удалить. Будет запрошено подтверждение на удаление поля.

Для некоторых полей, например, для OBJECTID, CREATIONDATE, CREATOR, EDITDATE и EDITOR, и полей, используемых вашей картой для условных обозначений и фильтров, опция Удалить недоступна. Однако другие карты могут использовать для условных обозначений и фильтров поля, которые отличаются от полей вашей карты, и команда Удалить будет доступна для этих полей. Соблюдайте осторожность при удалении полей, которые могут быть использованы для условных обозначений и фильтрации в других картах.

Вычислить поле

  1. Щелкните столбец, содержащий поле, значение которого вы хотите вычислить.
  2. Нажмите кнопку Вычислить. Откроется диалоговое окно Конструктор выражений.

Базовые операции

В диалоговом окне Конструктор выражений, вы можете построить простые выражения с использованием таких операторов, как плюс, минус, умножить и разделить.

  • Для умножения всех значений в числовом поле с именем SAMPLE на 100,0, введите выражение SAMPLE * 100,0.
  • Для более сложных выражений вы можете использовать круглые скобки для задания порядка вычислений, например, SAMPLE * (BASELINE – 40).
  • Математические операторы не работают со строковыми полями. Вам потребуется использовать строковые функции, описанные в этом разделе.
  • Если вы вычисляете поле типа double по значениям целочисленного поля, то функция CAST может быть автоматически добавлена в ваше выражение. Например, если вы вычисляете поле типа double с именем POP по значениям целочисленного поля с именем SAMPLE, выражение появится в виде CAST(SAMPLE AS FLOAT). Не удаляйте функцию CAST. Более подробно о функции CAST см. ниже в Числовые функции.
  • Чтобы включить апостроф в строку, используйте два одиночных символа кавычек для апострофа. Например, 'Nightingale''s'. Не используйте символ двойных кавычек.

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

Другие соображения

  • Если у вас установлен фильтр для вашего слоя, то будут рассчитаны только те записи, которые удовлетворяют условию фильтра.
  • Конструктор выражений работает только с именами полей, а не с их псевдонимами. Список Поля отображает имена всех доступных для вычислений полей. Вы можете отфильтровать данный список по полям типов Строковое, Числовое и Дата.
    • Если вы наведёте курсор на имя поля в списке Поля, то будут отображены псевдоним поля и тип поля.
    • Если вы щёлкните имя поля в списке Поля, данное поле будет добавлено в выражение.

Используйте функции

В дополнение к простым выражениям с использованием операторов, вы можете также использовать функции. Функции работают с именами полей, литералами и другими функциями. Предположим, вам нужно вычислить поле двойной точности, равное TOTALPOP поделенному на POP18. Если значение какого-либо из объектов в поле POP18 равно нулю, то такое вычисление приведет к ошибке деления на нуль. Можно защититься от этого, используя описанную ниже функцию NULLIF. Выражение будет TOTALPOP / NULLIF(POP18, 0).

Функции принимают аргументы. В таблицах ниже, любой аргумент может быть следующим:

  • Имя поля, при условии, что тип поля соответствует типу аргумента (строка, число или дата).
  • Строка символов, такая как 'Sailboat' (строка в одинарных кавычках), число 5 или дата в формате ДД/ММ/ГГ чч:мм:сс в одинарных кавычках.
  • Если ваша организация разрешает нестандартные запросы SQL, следует избегать использования в буквенной строке не-английских символов с N (например, N'针叶林').
  • Функция, которая возвращает значение надлежащего типа (строка, число, дата). Например, FLOOR(POWER(SAMP_ERR, 0,5)) возвращает наибольшее целочисленное значение, которое меньше или равно квадратному корню из SAMP_ERR..

Для иллюстрации, примеры в описательном столбце таблиц ниже в основном используют символьные аргументы. Вы можете заменить имя поля или другую функцию для этих аргументов.

Строковые функции

ФункцияОписание

CHAR_LENGTH(строка)

Возвращает количество символов в строке. Результат является целым числом.

Пример:

  • CHAR_LENGTH('Redlands') – результат: 8.

CONCAT(строка1, строка2)

Объединяет две строки.

Могут быть предоставлены только две строки. Чтобы объединить более двух строк, смонтируйте последовательные функции CONCAT как показано в примере ниже.

Пример:

  • CONCAT('A', 'B') – результат: 'AB'.
  • CONCAT('A', CONCAT(':', 'B')) – результат: 'A:B'.

Значения Null конвертируются в пустую строку.

POSITION(подстрока, строка)

Примечание:

*Если хост-сервер портала использует ArcGIS Data Store или управляемую базу данных на PostgreSQL, вместо этого необходимо использовать POSITION(подстрока в строке).

Возвращает позицию первого появления подстроки в строке. Если подстрока не найдена, то результат – 0.

Примеры:

  • POSITION('boat', 'Sailboat') – результат: 5.
  • POSITION('motor', 'Sailboat') – результат: 0.

SUBSTRING(string, start, length)

Возвращает часть строки; начало является целочисленным индексом, который определяет, где начинаются возвращаемые символы, и длина представляет число символов, которые должны быть возвращены.

Пример:

  • SUBSTRING('Sailboat', 5, 4) – результатом будет 'boat'.
  • SUBSTRING('Sailboat', 1, 4) – результат -'Sail'.
  • SUBSTRING('Sailboat', 5, 100) – результат – 'boat'.

TRIM(BOTH | LEADING | TRAILING ' ' FROM string)

Возвращает строку, в которой все начальные и конечные пробелы удалены из string.

Пример:

  • TRIM(BOTH ' ' FROM ' San Bernardino ') – результатом будет 'San Bernardino'.

Обратите внимание, что второй аргумент отделяют два символа одинарных кавычек с пробелом между ними.

UPPER(строка)

Возвращает строку, в которой все символы строки преобразованы в символы верхнего регистра.

Пример:

  • UPPER('Sailboat') – результат – 'SAILBOAT'.

LOWER(строка)

Возвращает строку, в которой все символы строки преобразованы в символы нижнего регистра.

Пример:

  • LOWER('Sailboat') – результат – 'sailboat'.

Числовые функции

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

  1. Щелкните столбец, содержащий поле, для значений которого вы хотите получить статистику.
  2. Щёлкните Статистика. Диалоговое окно отобразит вычисленную статистику.

ФункцияОписание

ABS(число)

Возвращает абсолютное (положительное) значение числа.

CEILING(число)

Возвращает наименьшее целочисленное значение, большее или равное числу.

Пример:

  • CEILING(12.93) – результат – 13.

COS(число)

Возвращает тригонометрический косинус числа, которое должно представлять значение угла в радианах.

CAST(число AS FLOAT | INT)

Конвертирует число в другой тип. FLOAT конвертирует число в значение двойной точности и INT конвертирует в целочисленное значение.

FLOOR(число)

Возвращает наибольшее целое значение, меньшее или равное числу.

Пример:

  • FLOOR(12.93) – результат – 12.

LOG(число)*

Примечание:

*Если хост-сервер портала использует ArcGIS Data Store или управляемую базу данных на PostgreSQL, вместо этого необходимо использовать LN(number, decimal_place).

Натуральный логарифм числа.

LOG10(число)*

Примечание:

*Если хост-сервер портала использует ArcGIS Data Store или управляемую базу данных на PostgreSQL, вместо этого необходимо использовать LOG(number, decimal_place).

Десятичный логарифм числа.

MOD(число, n)

Возвратить остаток от деления n на число. И n и число должны быть целочисленными.

Пример:

  • MOD(10, 4) – результат – 2.
  • MOD(CAST(DBLFIELD AS INT), 4) – поле DBLFIELD является полем двойной точности, поэтому функции CAST требуется преобразование значений двойной точности в целочисленные.

NULLIF(число, значение)

Возвращает null, если число равно значению. NULLIF обычно используется для предотвращения ошибок деления на ноль, посредством установки value to 0.

Каждый раз, когда в вычислении встречается нулевое значение поля в любом из его аргументов, результатом вычисления будет null.

Предположим, вам нужно вычислить поле двойной точности, равное TOTALPOP поделенному на POP18. Если какой-либо объект имеет значение в поле POP18 равным нулю, то вычисление приведет к ошибке деления на ноль. Вы можете создать фильтр для скрытия записей, в которых значением POP18 является ноль и затем выполнить ваше вычисление. Выход – в использовании NULLIF.

  • TOTALPOP / NULLIF(POP18, 0) – возвращает null, если POP18 равно нулю; иначе, возвращается значение TOTALPOP / POP18.

POWER(число , y )

Возвращает значение число, возведенное в степень y.

ROUND(число , длина)

Округляет число до заданной длины.

Если длина является положительным числом, то число округляется до десятичной позиции, определённой длиной. Если длина является отрицательным числом, то число округляется с левой стороны от десятичной точки.

Примеры:

  • ROUND(10.9934,2) – возвращает 10.99.
  • ROUND(10.9964,2) – возвращает 11.00.
  • ROUND(111.0,-2) – возвращает 100.00.

SIN(число)

Возвращает тригонометрический синус числа, которое должно представлять значение угла в радианах.

TAN(число)

Возвращает тангенс числа, которое должно представлять значение угла в радианах.

TRUNCATE(число, decimal_place (десятичный знак))*

Примечание:

*Если хост-сервер портала использует ArcGIS Data Store или управляемую базу данных на PostgreSQL, вместо этого необходимо использовать TRUNC(number, decimal_place).

Сокращает число до указанного decimal_place.

Положительное значение decimal_place сокращает до заданной десятичной позиции. Если decimal_place является отрицательным числом, то число сокращается с левой стороны от десятичной точки.

Примеры:

  • TRUNCATE(111.996,2) – возвращает 10.99.
  • TRUNCATE(111.996,-2) – возвращает 100.00.

Функции дат

Вы можете присвоить дату и время в поле даты. Такие операции, как вычитание двух дат или добавление времени к полю даты, не поддерживаются.

Есть несколько вещей, которые вы должны знать перед началом вычисления полей даты.

Изменение формата отображения полей даты

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

Ввод даты в формате ДД/ММ/ГГ чч:мм:сс

Независимо от того, как даты отображаются в таблице, вы можете вводить даты только в формате ММ/ДД/ГГГГ чч:мм:сс), заключенные в одинарные кавычки. Например, чтобы установить поле даты на 5:00PM on May 27, 2014, вы можете ввести '05/27/2014 05:00:00PM', '05/27/2014 5:00PM' или '05/27/2014 17:00:00' (24 часовой формат). Хранение только одного времени не поддерживается – время всегда должно быть компонентой даты.

Хранение введенных данных в формате времени UTC

Поля даты в таблицах обычно содержат дату и время UTC. UTC означает Всемирное координированное время, и оно эквивалентно текущему времени на нулевом меридиане Земли (ноль градусов долготы), расположенном рядом с Гринвичем в Англии. UTC является более точной версией GMT (Greenwich Mean Time). Даты указываются в формате UTC, так как сервер ваших данных может располагаться в любой точке мира. Хранение даты и времени в местном часовом поясе приводит ко всевозможным проблемам, особенно если вы или сервер ваших данных перемещаетесь в другой часовой пояс.

Всякий раз, когда отображается поле даты, дата преобразуется из времени UTC в местное время. Это выполняется с помощью запроса вашего компьютера для определения его настроек часового пояса. Например, предположим, что ваш компьютер настроен на Тихоокеанское стандартное время (PST). Время PST (Тихоокеанское стандартное время) отстает от времени UTC (Всеми́рное координи́рованное вре́мя) на восемь часов – время по UTC 9:00 утра соответствует 1:00 ночи по PST (или 2:00 ночи с учетом летнего времени).

Любая дата, которую вы вводите в выражение, как предполагается, должна быть в формате времени UTC, а не времени текущего часового пояса. Данное предположение может привести к путанице. Например, если вы вводите '05/27/2014 05:00:00PM', используя компьютер настроенный на PST, то из-за описанного выше преобразования времени, время будет отображаться как 5/27/2014 9:00AM.

Рекомендации для преобразования времени UTC ко времени местного часового пояса:

  • Если вам нужно ввести текущую дату и время, воспользуйтесь одной из функций времени ниже, так как эти функции всегда возвращают время UTC.
  • При вводе даты без компоненты времени, добавьте 12 часов к дате. Например, вместо ввода '5/27/2014', введите '5/27/2014 12:00PM' или '5/27/2014 12:00'. Причина этого смещения состоит в том, что, если дата вводится без временной компоненты, то она вводится как полночь на эту дату (5/27/2014 преобразуется в 5/27/2014 00:00:00) и когда она отображается в вашем часовом поясе, часы добавляются или вычитаются. Например, если вы находитесь в PST и вводите 5/27/2014, то дата отобразится как 5/26/2014 (семь часов вычитается от полночи 27-го).
  • Если вы вводите дату с компонентой времени, примените ко времени смещение для вашего часового пояса. Например, если вам требуется ввести 5/27/2014 12PM PST, примените восьми-часовую разницу и введите '5/27/2014 8:00PM'. Чтобы найти смещение вашего часового пояса, вы можете в Интернет выполнить поиск Калькулятора разницы времени с UTC.
  • Чтобы просмотреть содержание вашего поля даты во времени UTC, вы можете добавить строковое поле в таблицу и вычислить его равным вашему полю даты. Дата будет преобразована в строку без учёта смещения часового пояса. Данная строка будет также содержать миллисекунды.

Функции дат

ФункцияОписание

CURRENT_DATE()*

Примечание:

*Если хост-сервер портала использует ArcGIS Data Store или управляемую базу данных на PostgreSQL, вместо этого необходимо использовать CURRENT_DATE.

Возвращает текущую дату в формате времени UTC.

CURRENT_TIME()*

Примечание:

*Если хост-сервер портала использует ArcGIS Data Store или управляемую базу данных на PostgreSQL, вместо этого необходимо использовать CURRENT_TIME.

Возвращает текущие дату и время в формате UTC (часы, минуты, секунды).

CURRENT_TIMESTAMP()*

Примечание:

*Если хост-сервер портала использует ArcGIS Data Store или управляемую базу данных на PostgreSQL, вместо этого необходимо использовать CURRENT_TIMESTAMP.

Возвращает текущие дату и время в формате UTC (часы, минуты, секунды, миллисекунды).

Ограничения

  • Команда Удалить недоступна для поля OBJECTID или полей, которые используются для условных обозначений, бегунка времени, фильтра, подписей или отслеживания изменений. Однако другие карты могут использовать для условных обозначений и фильтров поля, которые отличаются от полей вашей карты, и команда Удалить будет доступна для этих полей. Соблюдайте осторожность при удалении полей, которые могут быть использованы для условных обозначений и фильтрации в других картах.
  • Добавление, удаление и вычисление значений не доступно для копий слоев.
  • Добавить, Удалить и Вычислить доступны только для размещенных векторных слоев. Вы должны быть владельцем размещённого сервиса объектов или администратором вашей организации.
  • Вычислить доступно только в том случае, если хост-сервер портала использует ArcGIS Data Store.
  • Поддерживаются только стандартизированные запросы SQL.