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

Вывод PNG на axaxcMapScreen по координатам wgs84

Поиск  Пользователи  Правила  Войти
Форум » Настольные приложения » GIS ToolKit, GIS ToolKit Active, ГИС Конструктор для Windows
Страницы: 1
RSS
Вывод PNG на axaxcMapScreen по координатам wgs84, Преобразование координат public static extern void mapMapToPicture(int hmap, ref double x, ref double y);
 
// Как нарисовать PNG на axaxcMapScreen по заданным в WGS_84 координатам
// КАК ПОЛУЧИТЬ КООРДИНАТЫ В ПИКСЕЛЯХ ?
// ФУНКЦИЯ mapMapToPicture ОТРАБАТЫВАЕТ - КАК ИНТЕРПРЕТИРОВАТЬ РЕЗУЛЬТАТ ?
// КАК ПРАВИЛЬНО НАЙТИ  iCrossLeftM  iCrossTopM  : КООРДИНАТЫ В ПИКСЕЛЯХ
// ДЛЯ ОТОБРАЖЕНИЯ PNG НА КАРТЕ ПРИ ПОМОЩИ DrawImage

       Rectangle CrossRect;
       Bitmap      ico_place;

       ico_place = new Bitmap(@"C:\MAPS_OBJECT\BMP\ZNACHEK.png");

           CrossRect = Rectangle.FromLTRB(  iCrossLeftM - mash, /* КООРДИНАТА В ПИКСЕЛЯХ */ iCrossTopM - mash, /* КООРДИНАТА В ПИКСЕЛЯХ */iCrossLeftM + mash, /* КООРДИНАТА В ПИКСЕЛЯХ */iCrossTopM + mash);
           Graphics graph  = Graphics.FromHwnd(axaxcMapScreen1.Handle);
           graph.DrawImage( ico_place, CrossRect );  
           graph.Dispose();

// ОСТАЛСЯ ВОПРОС КАК  ВЫВОДИТЬ PNG КОГДА КАРТА УВЕЛИЧЕНА И В ОКНЕ РАЗМЕЩЕНА НЕ ВСЯ

// ТАК ЧТО КООРДИНАТЫ СОВПАДАЮТ С ТОЧКОЙ НА ЭКРАНЕ ТОЛЬКО КОГДА ВСЯ КАРТА ВЛЕЗАЕТ В ОКНО
Изменено: Alex Lesnov - 14.02.2018 15:28:35 (Второй вопрос как учитывать пиксельные координаты когда карта увеличена)
 
Не дождался ответа -> Сам себе ответил: преобразовал градусы в радианы, затем в метры, из метров в пиксели
и нарисовал PNG в нужном месте.
Но такая штука работает только когда вся карта помещается в окно.
А когда карта увеличена и показывается частями -> Как учитывать масштаб и положение карты в окне
Остался вопрос -> Что пересчитывать: положение , разрешение пикселей или неверная работа функции
преобразования метровых координат в пиксели ?
 
Опять сам себе ответил -> учитываю .MapTop и .MapLeft и попадаю и рисую.
Больше на форумы не ходок - всем пока.
 
Функция mapMapToPicture  - это пересчет из дискретов карты к писселям экрана.
Вам нужно пересчитывать между WGS84 и пикселами.
Рекомендую использовать метод самого компонента MapView или MapScreen - ConvertMetric, в Вашем случае - из PP_GEOWGS84 в PP_PICTURE.

Переведенные в пиксели координаты имеют точку отсчета от верхнего левого угла карты и уже учитывают масштаб отображения. Поэтому, чтобы Вам отсчитывать координаты от угла окна отображения карты, необходимо вычесть смещение от угла карты. Это свойства MapLeft и MapTop.

Цитата
преобразовал градусы в радианы, затем в метры, из метров в пиксели
Такое сработает только если у Вас карта на эллипсоиде WGS84.
Просто преобразование из градусов/радианов (функциями без указания WGS84) выполняется в системе карты!
 
Цитата
Alex Lesnov написал:
Опять сам себе ответил -> учитываю .MapTop и .MapLeft и попадаю и рисую.Больше на форумы не ходок - всем пока.
Код
aPlaceInp = axGisToolKit.TxPPLACE.PP_GEOWGS84;
aPlaceOut = axGisToolKit.TxPPLACE.PP_PICTURE;

aX = M_PI*48.00/180.0; 
aY = M_PI*35.00/180.0;
axcMapScreen.ConvertMetric(aX, aY, aPlaceInp,  aPlaceOut);

в этом месте  aX и aY будут в координата отображения.
Изменено: KFF - 23.02.2018 10:59:48
Не тот глуп кто не знает, а тот, кто не знает где искать.
Страницы: 1
Читают тему (гостей: 1)



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

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