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

При использовании mapSetFrameTree mapPaintToXImage ничего не рисует

Поиск  Пользователи  Правила  Войти
Форум » Linux » Средства разработки ГИС-приложений для Linux
Страницы: 1
RSS
При использовании mapSetFrameTree mapPaintToXImage ничего не рисует
 
У меня лицензионная версия ГИС Конструктора для Qt Designer x64 версия,
GetMapAccessVersion выдает 0x133ED5B.
При использовании mapSetFrameTree почему-то исчезает изображение,
а вот если закомментировать  вызов mapSetFrameTree в коде приведенном ниже,
все работает правильно. При чем это происходит только для определенной карты (могу выслать приватным email),
для остальных карт вроде работает, хотя конечно я не много карт проверял.

Код
#include <QApplication>
#include <QImage>
#include <cassert>
#include <cmath>
#include <cstdint>
#include <mapapi.h>
#include <qdmcmp.h>

using Pixel = uint32_t;

int main(int argc, char *argv[]) {
  QApplication app(argc, argv);
  QDMapView forProtection;

  mapMessageEnable(1);
  //mapSetFrameTree(1);
  mapSetMaxScreenImageSize(5000, 4000);
  mapSetScreenSizePro(std::sqrt(std::pow(527., 2) + std::pow(296., 2)));
  mapSetScreenPrecisionEx(3840 / 527. * 1000., 2160. / 296. * 1000.);

  qInfo("map access version %lX", GetMapAccessVersion());

  long errcode = 0;
  HMAP hmap = mapOpenAnyData(QString::fromUtf8(argv[1]).utf16(), GENERIC_READ,
                             &errcode);
  assert(hmap != 0);
  long int img_center_x = 0, img_center_y = 0;
  mapSetViewScale(hmap, &img_center_x, &img_center_y, 1000000);

  QImage img(QSize(4608, 3072), QImage::Format_RGB32);

  double x = (55. + 44. / 60.) / 180. * 3.14;
  double y = (37. + 38. / 60.) / 180. * 3.14;
  double h = 0;
  mapGeoWGS84ToGeo3D(hmap, &x, &y, &h);
  mapGeoToPlane(hmap, &x, &y);
  mapPlaneToPicture(hmap, &x, &y);
  int left = static_cast<int>(std::round(x));
  int top = static_cast<int>(std::round(y));

  XIMAGEDESC image_desc{reinterpret_cast<char *>(img.bits()),
                        img.width(),
                        img.height(),
                        sizeof(Pixel) * 8,
                        sizeof(Pixel),
                        img.width() * sizeof(Pixel)};

  RECT all_rect{left, top, left + img.width(), top + img.height()};

  auto ret = mapPaintToXImage(hmap, &image_desc, 0, 0, &all_rect);
  assert(ret != 0);
  bool save_res = img.save("/tmp/res.png");
  assert(save_res);
}
 
Здравствуйте!

Не могли бы Вы прислать на нашу почту (panorama@gisinfo.ru) карту для воспроизведения проблемы. Спасибо!
 
Здравствуйте!

Цитата
Александр Савелов написал:


Не могли бы Вы прислать на нашу почту ( panorama@gisinfo.ru ) карту для воспроизведения проблемы. Спасибо!

Выслал ссылку на карту на указанную почту.
Страницы: 1
Читают тему (гостей: 1)



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

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