Skip To Content

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

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

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

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

Добавление поля

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

        Хотя ваш портал хранит все значения в UTC, обычно вы можете видеть и редактировать даты в своем часовом поясе, так как большинство приложений поддерживают автоматическую конвертацию из UTC. Тем не менее, вам необходимо указать корректный часовой пояс при загрузке данных – например, файлов CSV или шейп-файлов, иначе ваши данные будут сохранены в UTC.

      • Double – числа с десятичными знаками после запятой.
      • Integer – целые числа от -2 147 483 648 до 2 147 483 647 (длинное целое).
      • String – любая последовательность символов.
    • Длина – максимальная длина в символах, которые может хранить строковое поле. Длина требуется для полей типа String. Значение по умолчанию – 256 символов.
  4. Щелкните Добавить новое поле.

Подсказка:

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

Добавьте поле к размещённому пространственно-временному векторному слою

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

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

        Хотя ваш портал хранит все значения в UTC, обычно вы можете видеть и редактировать даты в своем часовом поясе, так как большинство приложений поддерживают автоматическую конвертацию из UTC. Тем не менее, вам необходимо указать корректный часовой пояс при загрузке данных – например, файлов CSV или шейп-файлов, иначе ваши данные будут сохранены в UTC.

      • Double – числа с десятичными знаками после запятой.
      • Integer (Целочисленное) – Целые числа от -2 147 483 648 до 2 147 483 647 (длинное целое).
      • String – любая последовательность символов.
    • Длина – максимальная длина в символах, которые может хранить строковое поле. Длина требуется для полей типа String. Значение по умолчанию – 256 символов.
  5. Щелкните Добавить новое поле.

Подсказка:

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

Удалить поле

  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'. Не используйте символ двойных кавычек.

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

Ниже приведены дополнительные рекомендации:

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

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

В дополнение к простым выражениям с использованием операторов, вы можете также использовать функции. Функции работают с именами полей, литералами и другими функциями. Предположим, вам нужно вычислить поле double, как 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(подстрока в строке)

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

Примеры

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

SUBSTRING(строка, начало, длина)

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

Пример

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

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

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

Пример

  • TRIM(BOTH ' ' FROM ' San Bernardino ') – результат равен 'San Bernardino'.

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

UPPER(строка)

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

Пример

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

LOWER(строка)

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

Пример

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

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

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

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

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

ABS(число)

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

CEILING(число)

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

Пример

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

COS(число)

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

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

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

FLOOR(число)

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

Пример

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

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

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

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

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

MOD(число, n)

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

Пример

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

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

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

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

Предположим, вам нужно вычислить поле double, как 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(число)

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

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

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

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

Примеры

  • TRUNCATE(111.996,2) – возвращает 111,99.
  • TRUNCATE(111.996,-2)—возвращает 100,00.

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

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

Функции дат

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

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

CURRENT_DATE

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

CURRENT_DATE

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

CURRENT_DATE

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

EXTRACT(unit FROM '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:44') – возвращает 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 является более точной версией GMT (Greenwich Mean Time). Поля даты в таблицах, добавленные в ваш портал как элементы, должны либо содержать даты в локальном часовом поясе, или даты в UTC. Если поле даты содержит информацию в локальном часовом поясе, местное время конвертируется в UTC перед сохранением в базе данных. Даты конвертируются в формат UTC, так как сервер ваших данных может располагаться в любой точке мира. Хранение даты и времени в местном часовом поясе приводит к всевозможным проблемам, особенно если вы или сервер ваших данных перемещаетесь в другой часовой пояс. Если информация о локальном часовом поясе не указывается в таблицах, добавленных как элементы, поля даты должны быть в UTC.

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

Любая дата, которую вы вводите в выражение SQL, как предполагается, должна быть в формате 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 и для полей, которые используются для условных обозначений, бегунка времени, фильтра, надписей или отслеживания изменений. Однако другие карты могут использовать для условных обозначений и фильтров поля, которые отличаются от полей вашей карты, и команда Удалить будет доступна для этих полей. Соблюдайте осторожность при удалении полей, которые могут быть использованы для условных обозначений и фильтрации в других картах.
  • При добавлении поля в размещенный векторный слой, содержащий зависимые виды размещенного векторного слоя, необходимо выполнить обновление определения каждого из видов, в которых вы желаете, чтобы появились эти новые поля.
  • Вычислить поддерживается только для полей с типами string, integer, double или date.
  • При вычислении поддерживаются только стандартизированные запросы SQL.
  • Вычисления полей отменить нельзя.