Skip To Content

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

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

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

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

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

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

Удалить поле

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

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

Вычисление поля

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

    Откроется диалоговое окно Конструктор выражений.

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

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

  • Для умножения всех значений в числовом поле с именем 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(string1, string2)

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

Могут быть предоставлены только две строки. Чтобы объединить более двух строк, смонтируйте последовательные функции 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(строка, start, длина)

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

Пример:

  • SUBSTRING('Sailboat', 5, 4)—результат 'boat'.
  • SUBSTRING('Sailboat', 1, 4)—результат 'Sail'.
  • SUBSTRING('Sailboat', 5, 100)—результат 'boat'.

TRIM(BOTH | LEADING | TRAILING ' ' FROMстрока)

Возвращает строку, в которой все начальные и конечные пробелы удалены из 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(число, с десятичным знаком (decimal_place)).

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

LOG10(число)*

Примечание:

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

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

MOD(число, n)

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

Пример:

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

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

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

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

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

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

POWER(число , y)

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

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

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

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

Примеры

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

SIN(число)

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

TAN(число)

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

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

Примечание:

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

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

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

Примеры

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

Функции дат

Для полей с типом дата доступно несколько функций. Более подробную информацию о списке функций для поля дата и о том, как работать с такими полям в атрибутивной таблице, см. Работа с полями дат.

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

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

Функции дат

Доступны следующие функции дат:

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

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 (часы, минуты, секунды, миллисекунды).

EXTRACT(unit FROM date)*

Примечание:

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

Возвращает одну из частей даты/времени, например год, месяц, день, час, минута и т.д.

Например:

  • EXTRACT(MONTH FROM 12/21/2016)—возвращает 12.
  • EXTRACT(DAY FROM 12/21/2016 12:00)—возвращает 21.
  • EXTRACT(HOUR FROM 12/21/2016 15:00)—возвращает 15.

Вычисление полей дат

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

Добавление времени или выделение времени из даты

Может понадобиться добавить время или выделить время из поля дат или из поддерживающего SQL литерала дат, чтобы создать новое поле типа дата. Например, если нужно вычислить будущую дату инспекции или осмотра, добавив к дате значение времени.

Следующие вычисления можно использовать, чтобы добавить время или выделить время из поля дат. Первое использует поля дат, а второе – значения литералов дат. Также можно использовать числовые поля и числовые литералы. Поддерживается любая комбинация полей и литералов, как это показано в третьем и четвертом вычислениях.

<DateField> + / - <NumberField> = updated date
DATE'<SQL-supported Date Literal>'  + / - <Number of Days> = updated date
<DateField> +/- <Number of Days> = updated date
DATE'<SQL-supported Date Literal >'  + / - <NumberField> = updated date

Вычисленное поле дат является исходным полем дат плюс/минус количество дней, которое необходимо добавить или вычесть. Количество дней может быть целым числом, а также может включать дробную часть. например, 1.5 – это полтора дня или 36 часов.

В следующем примере механизм установлен 6/14/2016 в 10:00. Можно использовать одно из следующих вычислений, чтобы получить дату инспекции через месяц (30 дней) после даты установки. Первое вычисление использует поле дат со значением 6/14/2016 и числовое поле со значением 30, а второе использует литерал дат и литерал числа.

<MyDateField> + <MyNumberField> = 7/14/2016 10:00 AM
DATE'6/14/2016' + 30 = 7/14/2016 10:00 AM

Вычисление разницы между двумя датами

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

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

<DateField1> - <DateField2> = number of days in between
DATE'<SQL-supported Date Literal>' - DATE'< SQL-supported Date Literal>' = number of days in between
<DateField1> - DATE'<SQL-supported Date Literal>' = number of days in between
DATE'<SQL-supported Date Literal>' - <DateField2>  = number of days in between

В результате получается числовое поле, которое вычисляется путем выделения одного поля/литерала дат из другого поля/литерала дат. Результат (количество дней) может быть целым числом, а также может включать дробную часть. например, 1.5 – это полтора дня или 36 часов.

В описанном ранее примере с проверками установленного механизма можно использовать любые из следующих вычислений, чтобы получить диапазон времени между датой установки 6/1/2015 и датой проверки 10/1/2015. Первое вычисление использует поля дат, второй – литералы дат, а третье и четвертое использует и те, и другие.

<InspectionDateField> - <InstallationDateField> = 122 (days)
DATE'10/1/2015' - DATE'6/1/2015' = 122 (days)
<InspectionDateField> - DATE'6/1/2015' = 122 (days)
DATE'10/1/2015' - <InstallationDateField> = 122 (days)

О полях дат

Примите во внимание следующие важные сведения при работе с полями дат.

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

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

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

Независимо от того, как даты отображаются в таблице, вы можете вводить даты только в формате ММ/ДД/ГГГГ чч:мм:сс), заключенные в одинарные кавычки. Например, чтобы задать полю дат 5:00 PM 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 на восемь часов – 9:00 часов утра по UTC соответствует 1:00 часу ночи по PST. 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 (7 часов вычитается от полночи 27-го).
  • Если вы вводите дату с компонентой времени, примените ко времени смещение для вашего часового пояса. Например, если вам требуется ввести 5/27/2014 12 PM PST, примените 8-часовую разницу и введите '5/27/2014 8:00PM'. Чтобы найти смещение вашего часового пояса, вы можете в Интернет выполнить поиск Калькулятора разницы времени с UTC.
  • Чтобы просмотреть содержание вашего поля даты во времени UTC, вы можете добавить строковое поле в таблицу и вычислить его равным вашему полю даты. Дата будет преобразована в строку без учёта смещения часового пояса. Данная строка будет также содержать миллисекунды.

Ограничения

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