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

KFF (Все сообщения пользователя)

Поиск  Пользователи  Правила  Войти
Форум » Пользователи » KFF
Выбрать дату в календареВыбрать дату в календаре

Страницы: Пред. 1 ... 5 6 7 8 9 10 11 12 13 14 15 ... 327 След.
Вывод PNG Точность координат в пикселях зависит от формы карты?, Какая зависимость пиксельных координат от отношения высоты карты к ширине?
 
[QUOTE]Денис Вицко написал:
Уточните, что значит спозиционировать пиксельную точку?[/QUOTE]
Денис,  судя по нескольким соседним темам, его интересует "разруливание" вот этой  ситуации без знаний геодезии и картографии (чистыми функциями WinAPI)
Так что Вам придётся ещё долго общаться в режиме "немой с глухим" пока до человека не дойдёт что картография и геодезия это не hdc Canvas и MS Paint
[IMG WIDTH=347 HEIGHT=167]http://b.radikal.ru/b38/1802/d4/8ba5df3c71d2.png[/IMG]
Вывод PNG по координатам - Куда исчезает точность пиксельных координат ?, При увеличении карты точка (заданная координатами) убегает вправо по долготе ~ на 1630 метров
 
[QUOTE]Alex Lesnov написал:
PNG выводится там же, где и крестик (нужного мне размера) и где надо  без всяких полушарий.Если нечем заняться PNG у меня был 128x128 - нарисуйте в любом редакторе.и там на прозрачном фоне белый круг с красным ободом.[/QUOTE]
Сейчас так и сделаю и покажу Вам разницу, чем отличается ваше преобразвоания по формуле "пол-палец-потолок" и о, которое должно быть
Вывод PNG по координатам - Куда исчезает точность пиксельных координат ?, При увеличении карты точка (заданная координатами) убегает вправо по долготе ~ на 1630 метров
 
[QUOTE]Поспите - несёте чушь - сказал же заремь - на моих предыдущих картинках видите крестик?[/QUOTE]
Крестик это одномерный объект, а вы работаете с двухмерными объектами

[QUOTE]ПУСТЬ ПРЕДОСТАВИТ ПРАВИЛЬНО СФОРМИРОВАННЫЕ КАРТЫ -[B] ЦИКЛИТЬСЯ НА ФИГНЕ ТОЖЕ НЕ ХОЧУ.СКОРЕЙ ВСЕГО КАКИЕ НИБУДЬ ДАТУМЫ ИЛИ ЕЩЁ ЧТО-НИБУДЬ В САМИХ КАРТАХ [/B]- НЕ МОЯ ЗАДАЧА.[/QUOTE]
Если Вы не собираетесь циклится на том ради чего Вы пришли на этот форум - на геодезии, то лучше передайте проект человеку
который понимает предметную область и хоть отдалённо представляет себе что такое "линейная трансформация" растрового изображения
Изменено: KFF - 20.02.2018 23:09:58
Вывод PNG по координатам - Куда исчезает точность пиксельных координат ?, При увеличении карты точка (заданная координатами) убегает вправо по долготе ~ на 1630 метров
 
[U]Решение проблемы
[/U]Допустим в грубом приближении у нас есть цилиндрическая проекция в которой любой рисунок можно наложить по алгоритму
точка вставки + масштабирование по Х + масштабирование по Y
В таком случае Вам необходимо нарезать (или взять одну неразрезанную картинку PNG) в которой Вы знаете как минимум положение двух точек в геодезии
пусть (верхнего левого и правого нижнего угла) + его реальный размеры в пикселях.

На обработчике маштабирования, Вы сначала переводите точку привязки в пиксели, а потом вторую точку в Пиксели
Ищите разницу dX и  dY и сопоставляете с реальным размером картинки в пикселях (методом деления)
У вас получится 2 коефициента растяжения/сжатия картинки по горизонтали и вертикали
Вот теперь, вы делаете "растягивание" Вашего рисунка по коефициентам методами класса работы с PNG
и только потом рисуете эту картинку поверх карты

Вот так Вы получите реальное масщтабирование Вашего рисунка, а не на глаз подобранная формула которая не раотает в различных масштабах

Как то так =)
[IMG WIDTH=706 HEIGHT=272]http://d.radikal.ru/d18/1802/3d/07365e6aa40f.png[/IMG]
Изменено: KFF - 20.02.2018 22:17:07 (добавил картинку иллюстрирующую алгоритм)
Вывод PNG по координатам - Куда исчезает точность пиксельных координат ?, При увеличении карты точка (заданная координатами) убегает вправо по долготе ~ на 1630 метров
 
[QUOTE]Alex Lesnov написал:
Буду завтра на работе гляну как влияет месиво[/QUOTE]
а не нужно на работу. Киньте пожалуйста свою картинку PNG сюда на форум и я Вам напишу простейший пример на Эмебркадеро XE5
в котором мы с Вами сравним что получится с координатами при корректном масштабировании рисунка и в случае масштабирования
Вашей "экзотической формулой"
Вывод PNG по координатам - Куда исчезает точность пиксельных координат ?, При увеличении карты точка (заданная координатами) убегает вправо по долготе ~ на 1630 метров
 
[QUOTE]Alex Lesnov написал:
А планировалось использовалось для масштабирования PNG в зависимости от масштаба карты[/QUOTE]
Так для начала вы нормально масштабируйте свой рисунок, согласно проекции, координат, Датумов и всех остальных параметров, о которых как Вы написали,что вы не понимаете,
а потом задавайте вопросы о корректности работы ГИС.
По ходу у вас получается масштабирование по формуле "отсебятина" из-за незнания "датумов, проекций и прочего прочего" с наездом на разработчиков ядра ГИС
На рисунке это выглядит вот так... что и приводит к тому, что часть вашего изображения съезжает на 1 минуту...
[IMG WIDTH=594 HEIGHT=308]http://b.radikal.ru/b38/1802/a2/7f95b95b724e.png[/IMG]
Я очень удивлён что всё съехало только на минуту от такого "масштабирования" картинки,
а не на пол полушария.

=================
по сути
Вот теперь возьмите вашу непонятную мне формулу и сделайте засечку 2-х точек на Вашей картинке
Первую точку верхний левый угол (куда Вы привязываете рисунок), а вторую ... например со смещением 100 на 100 пикселей
И переведите координаты в геодезию через указанную функцию (или метод) и сравните с тем, что у вас получится при преобразовании
через вашу "экзотическую" функцию масштабирования рисунка
Изменено: KFF - 20.02.2018 21:54:02
Вывод PNG по координатам - Куда исчезает точность пиксельных координат ?, При увеличении карты точка (заданная координатами) убегает вправо по долготе ~ на 1630 метров
 
[QUOTE]Alex Lesnov написал:
int SIZE_PNG = ( axcMapScreen1.ViewScale <= 7812) ?  36: 18; /* ДЛЯ ИЗМЕНЕНИЯ РАЗМЕРА PNG */         CrossRect = Rectangle.FromLTRB( intX_PRIMORSK - SIZE_PNG, intY_PRIMORSK - SIZE_PNG, intX_PRIMORSK  + SIZE_PNG, intY_PRIMORSK + SIZE_PNG); [/QUOTE]
Алекс, а что это за непонятные преобразования размеров картинки и почему они зависят от отображаемого масштаба?
Может Вы  в этом месте "прессуете" или "растягиваете" картинку по придуманной формуле, что в свою очередь приводит
к пискельному месиву как на холсте так и на самой карте ?
Изменено: KFF - 20.02.2018 21:38:17
Добавление нового контрола PanTask
 
[QUOTE]Дарья Лунченко написал:
HWND hEdit = CreateWindowEx(WS_EX_CLIENTEDGE, L"EDIT", L"",
     WS_CHILD | WS_VISIBLE,
     0, 0, 150, 30, MapWindow->GetHandle(), (HMENU)11110, [B]GetModuleHandle(NULL),[/B] NULL);


  HWND hStatic = CreateWindowEx(WS_EX_CLIENTEDGE,L"STATIC", L"Hello World",
     WS_CHILD | WS_VISIBLE,
     0,0, 50, 20,
     MapWindow->GetHandle(), (HMENU)11111,
     [B]theApp.m_hInstance[/B], NULL);[/QUOTE]
Дарья, а почему отличается предпоследний параметр ?
Не удаляется объект рамка
 
[QUOTE]Александр Канивец написал:
Рамку создаю для того, чтобы объекты далеко не улетали если перепутать координаты, но сам объект "рамка не нужен"[/QUOTE]
так создавайте как я создаю - из СИСТЕМНОГО ЛИНЕЙНОГО ОБЪЕКТА и никто ничего не будет разрезать, отсекать и удалять  :D
и в придачу, системный линейный он фиолетовый (его видно хорошо) и причём на всех масштабах
Изменено: KFF - 14.02.2018 17:33:34
Чтение семантики объекта
 
[QUOTE]Владислав Костылев написал:
Объект по-прежнему не находится. В te (TextEdit) ничего не выводится.Я посмотрел один из примеров кодов работы с mapSeekSiteObject и там объект создавался в одной функции запоминался в глобальной переменной и использовался в другой. Величина указатель на объект (id в нашем случае) было не что-то большое вроде 16799367 а мальнеькое на уровне 2, 3 и так далее. Мне кажется что для поиска нужна не эта функция.[/QUOTE]
Владислав, если не нашло объект значит на Вашей карте нет объекта с номером 16799367
Каждая карта имеет свою нумерацию которая может совпадать а может и нет. Если Вы подключили к основной карте вторую карту, то на неё у объектов другие номера и там вы не найдёте объект с номером 16799367

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

[QUOTE]В ответе приведенном пользователем KFF необходимо заменить вызов функции mapSemanticValueByCode на mapSemanticValueName.[/QUOTE]
По большому счёту, я читаю семантики вот так (пример из рабочего проекта)
[CODE]// выгрузка семантик объекта

 char b[1024];

 for (int i = 1; i <= semcount; i++)
 {
   code = mapSemanticCode(obj, i);
   // берём описание семантики
   mapSemanticDescribeEx(obj, &desc, code);
   // служебную игнорирую.
   if (desc.Service)
      continue;
   b[0] = 0;
   switch (desc.Type)
   {
     // Значение не установлено
     case TUNDEFINED:
          break;

     case TREFER:   // Ссылка на произвольный объект карты  (уникальный номер объекта)
     case TCOLOR:   // Числовое значение цвета в RGB
          ivalue = mapSemanticLongValue(obj, i);
          sprintf(b, "%d", ivalue);
          break;

     // Числовое значение
     case TNUMBER:
          if (desc.Decimal)
          {
             fvalue = mapSemanticDoubleValue(obj, i);
             sprintf(b, "%.*f",desc.Decimal, fvalue);
          }
          else
          {
             ivalue = mapSemanticLongValue(obj, i);
             sprintf(b, "%d", ivalue);
          }
          break;
     // Значение в виде числового кода из классификатора значений
     case TCODE:
           ivalue = mapSemanticLongValue(obj, i);
           ref = (char*) mapGetRscClsKey(hRsc, code, ivalue);
           if (ref)
             strcpy(b, ref);
           else
           {
             //недопустимая перечислимая
             continue;
           }
          break;
     // Угловая величина в радианах
     case TANGLE:
          fvalue = mapSemanticDoubleValue(obj, i);
          sprintf(b, "%.8f", fvalue);
          break;
     default:
        // TSTRING    = 0   Символьная строка
        // TANYFILE   = 9,     // Имя файла зарегистрированного типа
        // TBMPFILE   = 10,    // Имя файла BMP
        // TOLEFILE   = 11,    // Имя файла,обрабатываемого OLE-сервером
        // TMAPFILE   = 13,    // Имя файла-паспорта района
        // TTXTFILE   = 14,    // Имя текстового файла
        // TPCXFILE   = 15,    // Имя файла PCX
        // TFONT      = 20,    // Имя шрифта ("Arial", "Courier"...)
        // TDATE      = 17,    // Значение даты в числовом виде (ГГГГММДД)
        // TTIME      = 19,    // Значение времени в числовом виде (ЧЧММСС)
        mapSemanticValue(obj, i, b, sizebuff);
    }
    // значение семантики в текстовом виде в b
   
  }
[/CODE]
Изменено: KFF - 14.02.2018 17:28:56
Страницы: Пред. 1 ... 5 6 7 8 9 10 11 12 13 14 15 ... 327 След.



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

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