На главную... Продукты | Технологии | Классификаторы | Проекты | Скачать | Цены| Форум | Статьи | Обучение | Контакты

Определение радиусов и центра окружнойстей в мультиполигонах

Поиск  Пользователи  Правила  Войти
Форум » Серверные приложения » GIS WebToolKit
Страницы: 1
RSS
Определение радиусов и центра окружнойстей в мультиполигонах
 
Версия: в GIS WebToolkit SE 6.18.0
Здраствуйте, можно ли если создан мультиполигон с окружностями, получить координаты центра каждой окружности и радиус?

То есть после отрисовки множества окружностей, нам нужно отправить json с их радиусам и центрами окружностей.

Сам список окружностей с координатами насколько я понимаю можно получить при помощи getPointListForDrawing() результатом которого является Vector3D[][], где Vector3D[] это и есть отдельный полигон. Но можно ли получить необходимое по Vector3D[]  
 
Цитата
Михаил написал:
Версия: в GIS WebToolkit SE 6.18.0Здраствуйте, можно ли если создан мультиполигон с окружностями, получить координаты центра каждой окружности и радиус?То есть после отрисовки множества окружностей, нам нужно отправить json с их радиусам и центрами окружностей.Сам список окружностей с координатами насколько я понимаю можно получить при помощи getPointListForDrawing() результатом которого является Vector3D[][], где Vector3D[] это и есть отдельный полигон. Но можно ли получить необходимое по Vector3D[]  
Добрый день!

Для удобного взаимодействия с окружностями рекомендуется хранить их в виде отдельных MapObject.
Для получения всех составляющих геометрии объекта в виде массива MapObject[] можем предложить вот такой вариант:

           const mapObjectsList: MapObject[] = [];
           const tempVectorLayer = VectorLayer.getEmptyInstance(this.map);  
           for (let i = 0; i < circleObject.getObjectSubObjectsCount(); i++){
               const objectContoursCount = circleObject.getObjectContoursCount(i);
               for (let j = 0; j < objectContoursCount; j++) {
                   const pointList = circleObject.getContourPoints(i,j);
                   const object = new MapObject(tempVectorLayer, MapObjectType.Polygon);
                   for (const point of pointList) {
                       object.addPoint(point);
                   }
                   mapObjectsList.push(object);
               }
           }
Где circleObject исходный объект (мультиполигон с окружностями).

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

           for (const object of mapObjectsList) {
               const center = object.getCenter();
               const firstCirclePoint = object.getPoint({});
               let radius_meter = 0;
               if (firstCirclePoint) {
                   radius_meter = center.realDistanceTo(firstCirclePoint);
               }
           }

Где center - MapPoint центральной точки окружности;
radius_meter - радиус окружности в метрах
 
Добрый день!
Если объектов много, то расчёты можно производить на сервисе.
Получить координаты центра объекта/подобъектов  возможно расширив текущий запрос Getfeature, доработав библиотеку ogcwfs.
Для этого необходимо скачать SDK к сервису, дополнить библиотеку ogcwfs и пересобрать её. Ссылка на SDK https://gisinfo.ru/download/?id=202
Также возможно разработать собственную библиотеку и подключить её к сервису.
Изменено: Владимир Железняков - 12.04.2024 16:09:10
Страницы: 1
Читают тему (гостей: 1)



© КБ Панорама, 1991-2025

Регистрируясь или авторизуясь на форуме, Вы соглашаетесь с Политикой конфиденциальности