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

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

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

Страницы: 1 2 3 4 5 След.
Обновление существующей карты из SXF происходит со смещением
 
Здравствуйте!

Данные sxf файлы ко мне приходят из внешних систем и я не могу их пересохранить.
Прошу подсказать как с помощью API текущей сертифицированной версии:
1. Определить, что sxf файл является "валидным" по составу данных, чтобы перезапросить данные из внешней системы.
2. Как обойти данную проблему без исходного файла?

С уважением, Попов Александр.
Обновление существующей карты из SXF происходит со смещением
 
Здравствуйте!

 Файлы отправил.

С уважением, Александр Попов.
Обновление существующей карты из SXF происходит со смещением
 
В дополнение ссылки на файлы в лучшем разрешении [URL=https://drive.google.com/file/d/1lHARVC8N4gR51P39R0W-yyg-PRVRQB8a/view?usp=sharing]UpdateFromAnySxf[/URL] [URL=https://drive.google.com/file/d/1Wl9jzQZ2F8pHswW51fklmzJjCFtuHRpX/view?usp=sharing]ImportFromAnySxfEx[/URL]
Обновление существующей карты из SXF происходит со смещением
 
Приветствую!
Используем ГИС Конструктор для Qt Designer x64 (версия 12.6.1), ОС Astra Linux

Появилась необходимость объединить несколько sxf-файлов в один sitx. Однако, если сначала импортировать карту с помощью [B][I]ImportFromAnySxfEx[/I][/B], а затем добавить ее с помощью [I][B]UpdateFromAnySxf, [/B][/I]то импортированные знаки не совпадают.

[IMG WIDTH=220 HEIGHT=112]https://drive.google.com/thumbnail?id=1Wl9jzQZ2F8pHswW51fklmzJjCFtuHRpX[/IMG] [IMG WIDTH=220 HEIGHT=112]https://drive.google.com/thumbnail?id=1lHARVC8N4gR51P39R0W-yyg-PRVRQB8a[/IMG]

Код для воспроизведения:[CODE]#include <QString>
#include <QDebug>
#include <QImage>
#include "mapapi.h"
#include "sitapi.h"
#include "rscapi.h"
#include "mapcreat.h"
#include "maptype.h"
#include "vecexapi.h"

long int msgHangler(long int hwnd, long int code, long int p1, long int p2,
                   long int typemsg){
   return 0;
}

void saveMap(HMAP hsite, QString filename) {
   XIMAGEDESC desc;
   DFRAME frame;
   mapGetTotalBorder(hsite, &frame, PP_PICTURE);
   RECT rect;
   rect.left = frame.X1 + 1300 ;
   rect.right = frame.X2/10;
   rect.top = frame.Y1 + 2000;
   rect.bottom = frame.Y2/10;

   memset((void*) &desc, 0, sizeof(desc));
   desc.Width = rect.right - rect.left;
   desc.Height = rect.bottom - rect.top;
   desc.Depth = mapGetMapScreenDepth();
   desc.CellSize = desc.Depth / 8;
   desc.RowSize = desc.Width * desc.CellSize;
   desc.Point = (char*) malloc(desc.Height * desc.RowSize);

   mapPaintToXImage(hsite, &desc, 0,0, &rect);
   QImage im2((const uchar*) desc.Point, desc.Width,
              desc.Height, desc.RowSize,
              QImage::Format_RGB32);
   if (!im2.save("/tmp/" + filename, "PNG")) {
       qDebug() << "file 2 save error";
   }
   free(desc.Point);
}

int main() {
   QString sxfName("/tmp/sxf/G-44-12.SXF");
   QString mapName("/tmp/sxf/G-44-12.sitx");
   QString rscName("/tmp/sxf/200t05g.rsc");
   long rc = ImportFromAnySxfEx(0, sxfName.toLatin1().constData(), rscName.toLatin1().constData(),
                      mapName.toLatin1().data(), mapName.length()-2,&msgHangler,0, 0);
   if(rc == 0) {
       qDebug() << " ==== Import Error";
       return 0;
   }
   HSITE hsite = mapOpenAnyData((const WCHAR*) mapName.constData());
   mapSetRealShowScale(hsite, 10000);
   saveMap(hsite, "1.png");
   rc = UpdateFromAnySxf(hsite, sxfName.toLatin1().constData(), mapName.toLatin1().data(), mapName.length(), &msgHangler, 0,2);
   if(rc == 0 ) {
       qDebug() << " ==== Update Sxf Error";
       return 0;
   }
   saveMap(hsite, "2.png");
   mapCloseData(hsite);
}

[/CODE]
С уважением,
Александр Попов
Работа с WMTS, который находится на web-сервере c аутентификацией через ALD (Astra Linux Directory)
 
Здравствуйте!

Хотелось бы уточнить состояние заданного вопроса!

С уважением,
Александр.
Некорректное поведение метода mapRegisterObjectByKey на некоторых знаках
 
Здравствуйте!

В 12.6.1 метод работает корректно, спасибо!

С уважением,
Александр.
Некорректное поведение метода mapRegisterObjectByKey на некоторых знаках
 
Приветствую!

Используем:
[LIST]
[*]ГИС Конструктор для Qt Designer x64 (версия 12.5.0), ОС Astra Linux,
[*]Классификатор operator.rsc из состава ГИС Оператор 12, ОС Astra Linux
[/LIST]При создании знака "Противонанк. мин. поле дист (312625003141)" через вызов mapRegisterObjectByKey на карте создается знак "Смеш. мин. поле дист (3126250031412)".
Код для воспроизведения:
[CODE]#include <QString>
#include <QDebug>
#include "mapapi.h"
#include "sitapi.h"

int main() {

   QString siteName("/tmp/test.sitx");
   QString rscName("/usr/Operator12/operator.rsc");

   CREATESITEUN cs;
   memset((void*) &cs, 0, sizeof(cs));
   cs.Length = sizeof(CREATESITEUN);
   cs.EllipsoideKind = 9;
   cs.MapType = 16;

   HMAP hsite = mapCreateSiteUn((const WCHAR*) siteName.constData(),
       (const WCHAR*) rscName.constData(), &cs);
   mapSetRealShowScale(hsite, mapScaleToRoundScaleEx(hsite,200000.));
   if (hsite !=0) {
       double x = 6170046;
       double y = 7409328;
       HOBJ hobj = mapCreateSiteObject(hsite, hsite, IDDOUBLE2, 0);
       const char* original = "312625003141";
        if (mapRegisterObjectByKey(hobj, original) != 0) {
            int size = 3000;
            mapAppendPointPlane(hobj,x,y,0);
            mapAppendPointPlane(hobj,x - size,y,0);
            mapCommitObject(hobj);
        } else {
            qDebug() << "No sign ";
        }
        const char * key = mapObjectRscKey(hobj);
        if(strcmp(key, original)) {
            qDebug() << "The original key " << original << " is not equals " << key;
        }
       mapFreeObject(hobj);
       mapCloseData(hsite);
   } else {
       qDebug() << "Wrong site";
   }
}
[/CODE]P.S. Изменение ключа нанесенного знака также наблюдается еще на 64 знаках.

С уважением,
Александр.
Работа с WMTS, который находится на web-сервере c аутентификацией через ALD (Astra Linux Directory)
 
Здравствуйте!

Хотелось бы уточнить состояние заданного вопроса.

С уважением,
Александр.
Работа с WMTS, который находится на web-сервере c аутентификацией через ALD (Astra Linux Directory)
 
Приветствую!

ГИС Конструктор для Qt Designer x64 (версия 12.5.0), ОС Astra Linux

Подскажите пожалуйста как открыть карту WMTS, которая находится на web-сервере c аутентификацией через ALD (Astra Linux Directory). На сколько я понял, сейчас доступна только basic-аутентификация.

С уважением,
Александр.
Вопросы по методу mathGetRuleSheetName, Прошу объяснить что закодировано в выводе
 
Добрый день.
 Незначительный недостаток с падением устранен. Возвращаясь к теме топика, возвращаемый результат (для тестовых данных) все еще не соответствует ожидаемому. Либо 0.R-36, либо 0.R-35, что не похоже на R-35,36. И, очевидно, первый вопрос из первого сообщения все еще актуален.

С уважением,
Попов Александр.
Страницы: 1 2 3 4 5 След.



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

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