МСК в ArcGIS Server и WAB

0 голосов
спросил 31 Июль от giser (360 баллов) в категории Программные продукты Esri
редактировать 31 Июль от giser
Добрый день! Подскажите, пожалуйста.

Исходные данные:

- имеется опубликованный сервис в местной системе координат с использованием пользовательских параметров трансформации к WGS 1984;

- в портале создана веб-карта в МСК (базовая карта - сервис в МСК), включающая опубликованный сервис;

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

Проблемы/вопросы:

1. Виджет "Координаты" отображает координаты в футах. Хотелось бы в метрах. Возможно ли это?

В настройках виджета можно указать любую известную систему координат (точнее, ее WKID), а также трансформацию (TFWKID). Я попробовал создать собственный WKID, добавив записи в файлы cs.json, wkid.json, wkidDetails.json, расположенные в папке \WebAppBuilderForArcGIS\client\stemapp\jimu.js\SpatialReference. В итоге виджет стал понимать мой пользовательский WKID. При этом требуется также указать TFWKID трансформации, который указан в файле transform.json. К сожалению, именно в этом файле можно указать лишь tfwkid и название, но не строку параметров трансформации в WKT (GEOGTRAN).

2. В WAB существует возожность запуска веб-приложений с использованием URL-параметров. Меня интересует возможность передачи координат центра и позиционирование в местной системе координат. По умолчанию без указания третьего параметра (wkid) введенные значения координат воспринимаются как градусы в WGS1984. Использование пользовательского WKID ожидаемо вызывает ошибку. При этом, в отличие от center параметр extent может принимать в качестве системы координат строку wkt. Реально ли успешно передавать в качестве параметра center координаты в МСК?

2 Ответы

0 голосов
ответил 01 Авг от giser (360 баллов)
редактировать 01 Авг от giser

Удалось частично разобраться с первой проблемой. Создал в десктопе систему координат с пользовательским wkid, после чего опубликовал карту. Соответственно, в сервисах появился пользовательский wkid. После того, как я добавил его же в девелоперский WAB, виджет "Координаты" стал по умолчанию понимать, в какой системе координат (а именно, пользовательской) находится веб-карта. Теперь координаты отображаются в метрах.

Со вторым вопросом тоже разобрался. Теперь переход по координатам с пользовательским wkid стал работать отлично.

А вот с преобразованием остается проблема (хотя не очень критичная для меня сейчас). Не могу при желании выводить координаты в WGS1984 в виджете "Координаты", поскольку требуется указать tfwkid. При этом сервис сам по себе уже опубликован с преобразованием. Также теперь не могу перейти по URL с другим WKID (например, 4326). Наверное, слишком много хочу :)

Если правильно понимаю, то за трансформацией мое приложение сейчас ходит по адресу https://utility.arcgisonline.com/arcgis/rest/services/Geometry/GeometryServer/findTransformations Не может ее там найти, потому что она пользовательская. Соответственно, нужно будет опубликовать трансформацию (как GeometryService) на своем сервере и обращаться к ней.

+1 голос
ответил 02 Авг от Grigoriy (123,100 баллов)

Приложения, построенные на WAB выполняют по возможности геометрические преобразования прямо в браузере, используя встроенные в jsapi/jsapi/esri/geometry/support/pe-wasm.js и jsapi/jsapi/esri/geometry/support/pe-wasm.wasm параметры.

Если там нужных параметров нет, то приложение пытается обратиться к сервису геометрии.

Сервис геометрии, по-умолчанию, берётся отсюда:

http://tasks.arcgisonline.com/ArcGIS/rest/services/Geometry/GeometryServer

WebAppBulder и WebAppVewer можно настроить на использование "своего" сервиса геометрии - см. config.json

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

Для этого идёте сюда:

https://blogs.esri-cis.ru/2018/10/22/custom_projections_arcgis/

Читаете, скачиваете и устанавливаете дополнительные "СК" и трансформации.

Всё, что лежит в этом архиве - это текстовые файлы.

И при желании их можно отредактировать.

Все дополнительные сфероиды, датумы, СК и трансформации становятся "родными" для ArcGIS Server и имеют свой custom WKID, который можно потом использовать в сервисах и приложениях.

оставил комментарий 05 Авг от giser (360 баллов)
Спасибо за предельно подробный ответ! Почти все получилось.
Единственное, что у меня пока что не удалось сделать - настроить WAB на использование моего GeometryService по умолчанию при создании приложения (замена в конфиге созданного приложения - ок).
Пытался заменять в \WebAppBuilderForArcGIS\client\stemapp\config.json, предполагая что это своего рода инициальный конфиг, "http://tasks.arcgisonline.com/ArcGIS/rest/services/Geometry/GeometryServer" на свой. Также очищал эту настройку для использования GeometryService из Портала. Эти действия результатов не принесли. В новых приложениях используется "https://utility.arcgisonline.com/arcgis/rest/services/Geometry/GeometryServer".
Можно ли настроить?
оставил комментарий 05 Авг от Grigoriy (123,100 баллов)
И в билдере, и во вьювере:
stemapp\jimu.js\main.js
stemapp\jimu.js\utils.js

Ну и не забывайте, что нужно создавать новые приложения после изменения конфигов.
В старых приложениях этих настройки уже сохранены в явном виде.
оставил комментарий 05 Авг от giser (360 баллов)
редактировать 05 Авг от giser
Как я понимаю, вьювер - это к порталу. Я использую девелоперский WAB.
Я заменил geometryService в двух файлах (в которых нашел):
client/builder/main.js
stemapp/jimu.js/utils.js,
но пока что результат остался прежним.
Про старые приложения понимаю, только руками подправлять конфиг.
Похоже, что и с новыми будет так проще делать :) Хотя минус в том, что после каждого изменения в приложении, конфиг перезаписывается.
оставил комментарий 09 Авг от giser (360 баллов)
Снова здравствуйте!
Я разобрался с тем, как настроить webappbuilder и webappviewer для работы с моим сервисом геометрии по умолчанию. Все оказалось просто: нужно было в настройках портала указать пользовательский сервис геометрии. После этого в конфиг приложений прописывается нужный сервис геометрии.
У меня остались проблемы в двух ситуациях:
1. Я добавил базу СК и проекций, ссылку на которую Вы мне скинули. Она меня устраивает, поскольку я работаю с МСК77, которая там тоже имеется. Сервер стал понимать все WKIDs. Проблема появляется при добавлении сервиса в веб-карту в качестве базовой карты. Масштаб карты становится неадекватным (очень мелким, цифры огромные). Естественно, далее это имеет последствия, начиная от измерений на карте. Как решить данную проблему? Раньше, при работе с сервисом, описанным обычной wkt-строкой, такой ситуации не было.
2. Как я сказал, моя карта в МСК. Но возможны такие ситуации, когда мне требуется спозиционироваться по координатным URL-параметрам по WKID, например, 4326. То есть необходима трансформация. Сейчас переход по WKID работает, но перепроецирование не используется (пустой параметр), что можно наблюдать в Network. Это ожидаемо, поскольку трансформация в явном виде нигде не задавалась, как, например, в виджете "Координаты" (он работает корректно). Можно ли настроить трансформацию при переходе по координатным url-параметрам?
Добро пожаловать на сайт Вопросов и Ответов, где вы можете задавать вопросы по GIS тематике и получать ответы от других членов сообщества.
...