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

Направление и угол поворота значков

Поиск  Пользователи  Правила  Войти
Форум » Настольные приложения » GIS ToolKit, GIS ToolKit Active, ГИС Конструктор для Windows
Страницы: 1
RSS
Направление и угол поворота значков, Направление и угол поворота значков
 
Добрый день.
Мне необходимо реализовать следующий функционал : допустим есть дорога от точки А до точки Б и на этом маршруте необходимо нарисовать значок направления движения колонны вдоль этого маршрута. Я это все реализовал, но проблема в том, что дорога может быть отображены под разнами направлениями (вверх, вниз, по диагонали и т.д.) следовательно значок тоже должен быть по направлению маршрута. Как реализовать, чтобы значок был повернуть на нужный угол?  
 
Цитата
Александр Махин написал:
Добрый день.
Мне необходимо реализовать следующий функционал : допустим есть дорога от точки А до точки Б и на этом маршруте необходимо нарисовать значок направления движения колонны вдоль этого маршрута. Я это все реализовал, но проблема в том, что дорога может быть отображены под разнами направлениями (вверх, вниз, по диагонали и т.д.) следовательно значок тоже должен быть по направлению маршрута. Как реализовать, чтобы значок был повернуть на нужный угол?
Цитата
Если я правильно понял, то заначку можно передать значение дирекционного угла той точки, возле которой будет стоять значок.
Цитата
Вопрос: как получить значение дирекционного угла точки?
 
Получить угол участка объекта - mapSideAzimuthEx.


Когда известен угол, варианты нанесения значка следующие:

1. В библиотеке пользовательских условных знаков SHAPE.IML имеется примитив "Знак с поворотом по семантике". Можно использовать его и устанавливать угол поворота меняя значение семантики.

2. Самостоятельно рассчитать положение второй точки в прямоугольных координатах (тригонометрия). Для Вашей задачи этого вполне достаточно. Для небольших расстояний между точками искажения, накладываемые той или иной проекцией будут незначительными.

3. Создать векторный объект на карте задав ему вертикальное или горизонтальное направление, затем повернуть его вокруг первой точки на нужный угол от первоначального положения с помощью функции mapRotateObject

4. Если нужна высокая точность определения положения второй точки по углу и расстоянию именно на эллипсоиде - то это прямая геодезическая задача (см. mapDirectPositionComputation). Но для простого поворота знака это излишне.
 
Подскажите, а как получить значение дирекционного угла точки и как его изменить? (get; set)  
 
Цитата
Александр Махин написал:
Подскажите, а как получить значение дирекционного угла точки и как его изменить? (get; set)  

Вычисление азимута участка объекта (стороны) - mapSideAzimuthEx

Обратная геодезическая задача на эллипсоиде - mapInversePositionComputation

Установить - это рассчитать новые координаты точки и записать их в объект. Как это сделать, имея угол, я написал выше.
 
Вообще можно реализовать все гораздо проще.

1. Если значок направления надо указывать на каждый отрезок маршрута, то можно использовать условный знак маршрута с оформлением векторными объектами (например, стрелка). Тогда дополнительно создавать объект для указания направления не придется.

2. Если нужен именно векторный знак с направлением, то можно ему задать метрику того участка, к которому он относится. Чтобы при этом он не растягивался по двум точкам, надо в свойствах значка запретить ему растягиваться по метрике.  Чтобы значок не накладывался на сам маршрут, можно сместить обе точки на пару метров по обеим осям.
 
Вот меня интересует вариант 2.
У меня есть дорога, далее я получаю координаты точки номер 53 а как получить значение дирекционного угла у этой точки (D, A', A") и затем эти значения записать в метрику значка? Ни как не могу понять пробую MapObj. SideDirection(0, 1) получаю в радианах как перевести в метры?  
 
Мне необходимо получить значение, которое я указал на скрине и изменить это значение в другом объекте. Какой функцией это можно реализовать?
1. Получить значение
2. Записать значение
 
Цитата
Александр Махин написал:
Ни как не могу понять пробую MapObj. SideDirection(0, 1) получаю в радианах как перевести в метры?  

Свойство MapObj.SideDirection возвращает дирекционный угол участка объекта (стороны) в радианах.
Углы измеряются в радианах или в градусах (но не в метрах).
В градусах значение может быть представлено как градусы с долями, градусы и минуты с долями, градусы минуты и секунды с долями.
На картинке, что вы приложили дирекционный угол представлен как градусы минуты и секунды с долями.

 
Цитата
Александр Махин написал:
Мне необходимо получить значение, которое я указал на скрине и изменить это значение в другом объекте. Какой функцией это можно реализовать?
1. Получить значение
2. Записать значение

Получить - MapObj.SideDirection

Записать угол направления на точку нельзя. Можно установить необходимые координаты точки.
Определить координаты по углу и расстоянию - прямая геодезическая задача (функция выше).
Страницы: 1
Читают тему (гостей: 1)



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

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