Ниже приведены примеры выражений отчета для вопросов к картам.
Все вопросы, которые используют карту - включая вопросы типа геоточка, геотрассировка и геоформа - имеют одинаковые методы и параметры, которые применяются для изменения их представления в отчете.
По умолчанию карта в отчете будет использовать веб-карту, заданную для вопроса. Если масштаб карты установлен на 0 или параметр опущен, масштаб карты определяется объектами на карте следующим образом:
- Если на карте только один точечный объект, масштаб карты соответствует масштабу, заданному для вопроса.
- Если на карте есть только один линейный или полигональный объект, масштаб карты определяется экстентом объекта.
- Если на карте несколько объектов, масштаб определяется экстентом всех объектов.
Вопросы типа Карта поддерживают настройку ID элемента веб-карты и масштаба карты в виде дополнительных параметров. В следующем примере используется масштаб карты 1:100000:
${location | map:"7e2b9be8a9c94e45b7f87857d8d168d6" | mapScale:100000}
Для всех вопросов по карте метод rotate может использоваться для поворота по часовой стрелке на север по отношению к виду. Принимает значения от 0 до 360.
${location | map:"7e2b9be8a9c94e45b7f87857d8d168d6" | mapScale:100000 | rotate:90}
Если в качестве ID элемента веб-карты вы оставите пустую строку, для вопроса будет использована базовая карта по умолчанию. Если вы установите масштаб карты равным 0 или опустите этот параметр, карта будет использовать экстент, заданный по умолчанию для вопроса.
Метод mapExtent можно использовать для точного задания экстента карты в отчеты. В следующем примере показан фиксированный экстент Токио, Япония:
${location | mapExtent:139.7:35.6:139.9:35.8:4326}
Вопросы по карте также поддерживают выражение размера, доступное для вопросов типа Изображение. Вы можете использовать это выражение для управления разрешением карты, отображаемой в отчете, как показано на следующем примере:
${location | size:400:400}
Выражения map, mapScale и size могут использоваться вместе для задания ID веб-карты и масштаба, а также разрешения изображения карты, как показано в следующем примере:
${location | map:"7e2b9be8a9c94e45b7f87857d8d168d6" | mapScale:100000 | size:400:400}
Примечание:
При настройке размера карты, наряду с использованием любого другого методы, size нужно разместить в конце выражения.
Если карта содержит большое количество записей вы можете использовать метод mapFilters, чтобы ограничить количество отображаемых записей. В следующем примере параметр where используется для фильтрации веб-карты, которая имеет только один слой, для отображения записей с POP2000 больше 999999:
${location | map:"7e2b9be8a9c94e45b7f87857d8d168d6" | mapFilters:"where=POP2000>999999"}
В следующем примере mapFilters первый параметр фильтрует слой городов (с ID слоя 18ece64a1fc-layer-5), чтобы показать только первые три записи, с наибольшей численностью населения в штате Калифорния. Второй параметр, отделенный от первого параметра двоеточием, фильтрует слой штатов (с ID слоя 18ece64a1fc-layer-6), чтобы отобразить только штат Калифорния:
${$map | map:"7e2b9be8a9c94e45b7f87857d8d168d6" | mapFilters:"'18ece64a1fc-layer-5':where=ST='CA'&orderByFields=POP2000 ASC&resultRecordCount=3":"'18ece64a1fc-layer-6':where=stateName='California'"}
Примечание:
ID слоя — свойство объекта слой объектов JSON веб-карты.
По умолчанию вопрос по карте будет отображаться с использованием символов карты по умолчанию, независимо от символов, заданных на слое объектов. Можно использовать метод drawingInfo для извлечения информации об отображении, хранящейся в определенном слое объектов, включая символы, надписи и прозрачность. Вы можете использовать эту информацию из текущего слоя или из любого другого, указав URL.
${location | drawingInfo:"currentLayer"}
${location | drawingInfo:"https://.../FeatureServer/0"}
Если в опросе нет вопроса типа карта или если вы создаете отчеты для сервисов объектов без связанных опросов, то геометрию записи по-прежнему можно будет возвращать с помощью заполнителя ${$shape}.
В разделе итоговой информации выражение для вопроса карты отображает несколько геометрий во входных данных для вопроса. Чтобы включить другие ресурсы для отдельного отчета, введите выражение where с тегом !important. Более подробно см. в разделе Дополнительный синтаксис. Следующее выражение отображает всю геометрию в слое, у которой значение в поле статуса равно 'broken':
${location | where:"status='broken' !important" | map:"<itemID>" | size:400:300}
Примечание:
В приведенном выше примере масштаб карты опущен. Если вы установите масштаб карты равным 0 или опустите параметр, а карта содержит несколько записей, карта будет использовать объединенный экстент всех записей.
Вы можете задать, чтобы выражение where всегда было равным true, чтобы отображалась вся геометрия карты:
${location | where:"1=1 !important"}
Это также можно использовать для отображения всех точек в повторе:
${repeat1.repeatLocation | where:"inspectionId=123 !important" | size:400:300}
Ключевое слово $shape также можно использовать для возвращения множества геометрий карты:
${$shape | where:"1=1 !important" | drawingInfo:"currentLayer" | size:400:300}
Ключевое слово $map можно использовать для печати карты, не ссылающейся на вопрос опроса:
${$map | map:"7e2b9be8a9c94e45b7f87857d8d168d6" | mapScale:100000 | size:400:400}
Геоточка
Для вопросов типа геоточка выражения можно использовать для отображения значений широты и долготы из вопросов:
${location | getValue:"x"}
${location | getValue:"y"}
Одним выражением нельзя отобразить оба значения; если требуются оба значения, следует использовать два выражения.
Подсказка:
Также возможно отобразить значение высоты через простое выражение, но только если базовый векторный слой поддерживает z-значения:
${location | getValue:"z"}
По умолчанию, значения широты, долготы и высоты возвращаются в том же виде, как в ответах, без сокращения. Часто эти значения более длинные, чем необходимо, можно применить выражения round или toFixed для округления десятичных знаков:
${location | getValue:"x" | round:3}
${location | getValue:"x" | toFixed:3}
По умолчанию эти значения являются выходными данными в системе координат, которая использовалась в векторном слое опроса: Вы можете указать другую пространственную привязку, как дополнительный параметр, указав ее WKID:
${location | getValue:"x":4326}
Геотрассировка и геоформа
Для вопросов геотрассировки и геоформы, выражение getValue можно использовать для отображения длины линии или периметра полигона соответственно:
${polyline1 | getValue:"length":"meters":"planar"}
Для вопросов геоформы, выражение getValue также можно использовать для отображения площади полигона:
${polygon1 | getValue:"area":"hectares":"geodesic"}
Единицы измерения и метод вычисления являются дополнительными параметрами. Для единиц измерения длины используются следующие единицы измерения:
- feet
- kilometers
- meters
- miles
- nautical-miles
- yards
Для единиц измерения площади используются следующие единицы измерения:
- acres
- hectares
- square-miles
- square-kilometers
- square-meters
- square-feet
- square-yards
Или вы можете использовать любые из констант esriSRUnitType или констант esriSRUnit2Type, которые поддерживаются ArcGIS REST API. В выражении используйте числовой код для постоянной в кавычках:
${polyline1 | getValue:"length":109002:"geodesic"}
Если единицы измерения не указаны, то значением для длины по умолчанию будет kilometers, а для площади - square-kilometers.
Методом может быть либо geodesic, либо planar. Если ни один метод не выбран, по умолчанию будет использоваться geodesic.