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

Денис Подчерняев (Все сообщения пользователя)

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

Страницы: 1 2 3 4 5 6 7 8 9 10 11 ... 14 След.
Идентичность результатов mapPaintToXImage, В рамках 2 процессов результаты вызова функции mapPaintToXImage не идентичны
 
Добрый день, уважаемые коллеги.

Во время тестирования нашего программного продукта обнаружили, что на некоторых картах 2 запуска функции mapPaintToXImage в рамках разных процессов с одними и теми же параметрами дают разные результаты.

Изображения после первого запуска (https://forsys.ru/nextcloud/index.php/s/N7JKXjjbZemrmTS):
Изображение после второго запуска (https://forsys.ru/nextcloud/index.php/s/JMSnj9BxAPJWdb9):


Масштаб, смещение и размер изображения полностью совпадают. Красным подсвечены пиксели, которые не совпадают с первым запуском.

Отсюда вопрос: что необходимо сделать, что бы 2 запуска mapPaintToXImage в рамках разных процессов давали одинаковый результат?


Изображение формирует так:
Код
func(int mapX, int mapY, int w, int h)
{
  int newW = w;
  int newH = h;
 
  RECT rect;
  rect.left = mapX;
  rect.top = mapY;
  rect.right = mapX + newW;
  rect.bottom = mapY + newH;

  const int mapDepth = 32;
  XIMAGEDESC xImagedesc;
  long allignWidth = newW * (mapDepth / 8);
  long size = allignWidth * newH;
  char* lpBits = NULL;
  lpBits = new char[size];
  memset(lpBits, 0x0, size);

  xImagedesc.Point = lpBits;  // Address of pixels area
  xImagedesc.Width = newW;        // String width in pixels
  xImagedesc.Height = newH;       // String amount
  xImagedesc.Depth = mapDepth;// Element size in bits (8, 15, 16, 24, 32)
  xImagedesc.CellSize = mapDepth / 8;// Element size in bytes
  xImagedesc.RowSize = newW * xImagedesc.CellSize;// String width in bytes


  long int res = wrapper->mapPaintToXImage(hMap, &xImagedesc, 0, 0, &rect);
....
}
Тормозит генерация тайлов в версии библиотек 11.12, Тормозит генерация тайлов.
 
Добрый день уважаемые форумчане.
Столкнулся с такой проблемой.
Мы используем функцию для генерации тайлов - mapPaitToDib
Примерно так:
Код
//   выделение памяти под изображение
   long size = newW * newH * 4;
   char* lpImage = new char[size];
   memset(lpImage, 0xff, size);

   //   заполняются информационные поля
   BITMAPINFOHEADER lpDibInfo;
   lpDibInfo.biSize            = sizeof(BITMAPINFOHEADER);
   lpDibInfo.biWidth            = newW;
   lpDibInfo.biHeight            = newH;
   lpDibInfo.biPlanes            = 1;
   lpDibInfo.biBitCount         = (unsigned short)(8 * 4);
   lpDibInfo.biCompression         = BI_RGB;
   lpDibInfo.biSizeImage         = size;
   lpDibInfo.biXPelsPerMeter      = 0;
   lpDibInfo.biYPelsPerMeter      = 0;
   lpDibInfo.biClrUsed            = 256;
   lpDibInfo.biClrImportant      = 0;

   char *lpBits = lpImage;
   wrapper->mapPaintToDib(hMap, &lpDibInfo, lpBits, &rect);

   //   переворачиваем изображение
   //   (в MAPAPI карты отрисовываются кверх ногами поэтому
   //   их следует переворачивать)
   char *string = (char*) AllocateTheMemory(newW * 4);
   for (int i = 0; i < newH / 2; i++)
   {
      char *pointE;
      char *pointB;
      pointE = lpBits + (newH - i - 1) * newW * 4;
      pointB = lpBits + i * newW * 4;
      memcpy(string, pointB, newW * 4);
      memcpy(pointB, pointE, newW * 4);
      memcpy(pointE, string, newW * 4);
   }
   FreeTheMemory(string);

   //создаем графическую переменную и записываем туда карту
   QImage* img = new QImage((uchar *)lpBits, newW, newH, QImage::Format_RGB32);
   int mSecs = t.elapsed();
   qDebug() << "Image created in" << mSecs << "mSecs";
   return img;



Ранее использовались библиотеки версии 11.0 и проблем никаких не было. Картинка размера 800:800 формировалась порядка 100-200мс.
При переходе на версию 11.12 - таже самая картинка, того же размера стала формироваться порядка 2-3сек!!!!

1. В чем может быть причина?
2. Может мы используем устаревшую функцию или не так ее используем?
3. Какой метод формирования изображения под win еще можно использовать, что бы работало быстрее?

Спасибо.
Открытие карты RU_MOW.sxf, Проблемы с координатами при открытии карты RU_MOW.sxf
 
Цитата
Анастасия пишет:
Здравствуйте! Открыли карту RU_MOW.sxf, скаченную с нашего сайта, в последней версии ГИС Карта 2011. Координаты центра Москвы в WGS 84:

55.44.59

37.37.28

Да. Действительно в ГИС Карта 2011 Версия 11.12 этой ошибки нет.
Проявляется на ГИС Карта 2011 Версия 11.11.

Спасибо.
Открытие карты RU_MOW.sxf, Проблемы с координатами при открытии карты RU_MOW.sxf
 
Добрый день уважаемые разработчики.
Столкнулся с такой проблемой.
Беру ГИС Карта 2011 (под windows, это важно!!!), открываю карту RU_MOW.sxf благополучно скаченную с офф-сайта. В качестве классификатора использую OSM.rsc c сайта Панорама.
Карта благополучно преобразуется в sit формат.

1. Далее навожу мышкой на центр москвы и смотрю координаты, вижу:
55.55.42
37.37.35.
Это же совсем не центр, а скорее самый север Москвы!?!?!?!

2. Далее смотрю туже карту (sxf) под linux (открытую при помощи gistoolkit) и вуаля, там координаты:
55.44.59
37.37.28
Далее проверяю все по яндексу, там точка совпадает с координатами под linux.
В качестве теста запустил тот же самый код (подготовленный в пункте 2) под linux. И вижу, что координаты такие же, как в пункте 1.

Поясню задачу. Мне надо отображать маршрута движения автотранспорта на карте панорама и по этому погрешность в 20 метров ощутима, а тем более в 20 КМ!!!!

Подскажите, почему на разных ОС, я получаю различные карты?
Может я пропускаю какой-то шаг?


Открываю карту для win просто:
Код
wrapper->mapOpenData("d:/tmp/mos/mos.sit", GENERIC_READ);

Для linux:
Код
wrapper->mapOpenData("/home/denis/tmp/mos.sit", GENERIC_READ);


*.sit файл один и тот-же. А координаты центра разные.
LoadSxfToMap, Функция возвращает 0 при попытке преобразовать sxf2sit
 
Цитата
gislinux пишет:
Опечатка -  конвертирование . Прошу проверить конвертирование данных карт через пример myfirst, пример должен быть собран согласно README для FREE-версии.
Извините за глупый вопрос, что за пример myfirst? Вы имеете в виду собственный контрольный пример?
LoadSxfToMap, Функция возвращает 0 при попытке преобразовать sxf2sit
 
Цитата
gislinux пишет:
Программа, в которой вызывает функцию - безключевая? Должна быть обязательно. Пожалуйста, проверьте консервирование через компонент QDMapConverter, допустим примера myfirst
Не очень понял, что Вы имеете в виду.
Что такое консервирование?

Используем ГИС конструктор FREE, без ключа.
LoadSxfToMap, Функция возвращает 0 при попытке преобразовать sxf2sit
 
Цитата
gislinux пишет:
Для начала прошу посмотреть, как установить 4 параметр - http://gisweb.ru/forum/messages/forum...ssage10438

Последний параметр - "Параметр handle содержит идентификатор окна, которому будут посылаться
сообщения о ходе процесса с кодом 0х585".
А если мне окно не требуется, да и нету у меня его? Нужно просто сконвертировать. Да и потом, под win работает же.
LoadSxfToMap, Функция возвращает 0 при попытке преобразовать sxf2sit
 
Добрый день уважаемые разработчики.
Столкнулся с проблемой конвертации карт.
Имеются 2 файла скаченные с Вашего сайта - ru-kk.sxf и osm.rsc.
Подаю их напрямую на вход LoadSxfToMap("ru-kk.sxf", "ru-kk.sit", "osm.rsc", NUL);
В результате получаю "ШИШ" = 0. Запускаю на AstraLinux 1.3 (ГИС Конструктор для Qt Designer Free версия 11).
Странно то, что в windows тот же самый код работает.

Может нужно сделать некоторые предварительные операции, перед тем, как вызывать LoadSxfToMap в linux?

В чем может быть причина?
Различная оконтовка текста на разных РС, на различных РС оконтовка текста отличается.
 
Цитата
Александр Кружков пишет:
Вероятно под словом "стиль" подразумевается и сглаживание шрифта, который находится под иконками или на кнопках. Чтобы обычным пользователям (не программистам) было понятнее. :D
меня смущают не "стили", а  "при отображении кнопок и окон". Конечно можно догадаться, что в этот параметр входит параметр сглаживания шрифта, но с БОЛЬШООООООЙ натяжкой!  :D
Различная оконтовка текста на разных РС, на различных РС оконтовка текста отличается.
 
Все заработало. Все участникам обсуждения спасибо!
Как ни странно дело было в параметре оптимизации:
"использования стилей при отображении кнопок и окон".
Только не понятно, как он может влиять вывод текста средствами mapapi ?!?!?!?!?!
Страницы: 1 2 3 4 5 6 7 8 9 10 11 ... 14 След.



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

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