Работа с пользовательскими системами координат в Web AppBuilder на Portal for ArcGIS

Довольно часто требуется создавать веб-приложения на Portal for ArcGIS, в которых будут использоваться сервисы с проекциями и системами координат, которые не включены в ядро ArcGIS. При работе с такими веб-слоями, веб-картами у Portal for ArcGIS возникают различного рода сложности. В данной статье мы расскажем, как можно обходить такие сложности.

Если пользовательская СК основана на «встроенном» в ядро ArcGIS датуме, то её достаточно описать в нужных файлах. Для этого следует отредактировать ряд файлов в папке WebAppBuider\stemapp\jimu.js\SpatialReference\:

  • cs.json
  • transform.json
  • wkid.json
  • wkidDetails.json
  • wkidUtils.js

Каждый конкретный виджет, возможно, также потребует правки. Как, например, виджет Coordinate: WebAppBuider\stemapp\widgets\Coordinate\setting\transform.json

Аналогично файлы необходимо отредактировать и во вьювере, то есть в папке WebAppViewer.

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

Приложения, построенные на WebAppViewer, по возможности выполняют геометрические преобразования прямо в браузере, используя JSAPI (*.js) и встроенные параметры трансформации в бинарном файле (*.wasm): jsapi/jsapi/esri/geometry/support/pe-wasm.js и jsapi/jsapi/esri/geometry/support/pe-wasm.wasm

Если в бинарном файле (*.wasm) нужных параметров нет, то приложение пытается обратиться к сервису геометрии. Сервис геометрии по-умолчанию берётся c сайта ArcGIS Online: http://tasks.arcgisonline.com/ArcGIS/rest/services/Geometry/GeometryServer

Для ускорения обработки WebAppBulder и WebAppViewer можно настроить на использование «своего» сервиса геометрии — см. https://enterprise.arcgis.com/ru/portal/latest/administer/windows/configure-services.htm

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

Материал по пользовательским системам координат и трансформациям можно взять из статей:

https://blogs.esri-cis.ru/2018/10/22/custom_projections_arcgis/, https://blogs.esri-cis.ru/2018/02/14/geo-transformations/

При желании с помощью редактирования соответствующих файлов можно описать свои собственные системы координат, трансформации и др. Эти дополнительные сфероиды, датумы, СК и трансформации становятся «родными» для ArcGIS Server и имеют свой Custom WKID, который можно потом использовать в сервисах и приложениях.

Если веб-приложение использует проекцию по умолчанию (Web Mercator), можно добавить виджет «Координаты» (https://enterprise.arcgis.com/ru/portal/latest/use/widget-coordinates.htm), который будет отображать координаты курсора.

Если СК виджета совпадает, с картой, то сразу показываются координаты.

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

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