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

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

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

Страницы: Пред. 1 ... 3 4 5 6 7 8 9 10 11 12 13 ... 54 След.
Странные надписи на "Флагах"
 
Приветствую!

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

В новой версии "сломалось" рисование флагов и ряда других знаков: подписи, рисуемые для флагов по умолчанию стали нечитаемы.

[CODE]#include <QString>
#include <QDebug>
#include <QImage>
#include "mapapi.h"
#include "sitapi.h"
#include "rscapi.h"
#include "mapcreat.h"
#include "maptype.h"

HOBJ createObjectByKeyOnePoint(HMAP hmap, const char * key) {
HOBJ hobj = mapCreateObject(hmap, IDDOUBLE2, 0);
double x = 6166598.10;
double y = 7412695.27;
if (hobj != 0) {
if (mapRegisterObjectByKey(hobj, key) != 0) {
mapAppendPointPlane(hobj, x, y, 0);
mapCommitObject(hobj);
} else {
qDebug() << "mapRegisterObjectByKey error";
}
} else {
qDebug() << "mapCreateObject error";
}
return hobj;
}


void paintMapObj(HMAP hmap, HOBJ hobj) {
DFRAME frame;
mapGetTotalBorder(hmap, &frame, PP_PICTURE);
RECT rect;
rect.left = frame.X1;
rect.right = frame.X2;
rect.top = frame.Y1;
rect.bottom = frame.Y2;
XIMAGEDESC desc;
memset((void*) &desc, 0, sizeof(desc));
desc.Width = rect.right - rect.left;
desc.Height = rect.bottom - rect.top;
desc.Depth = 32;
desc.CellSize = desc.Depth / 8;
desc.RowSize = desc.Width * desc.CellSize;
desc.Point = (char*) malloc(desc.Height * desc.RowSize);
memset((void*) desc.Point, 0, desc.Height * desc.RowSize);
qDebug()
<< mapPaintMapObjectToDib(hmap, desc.Point, desc.Width, desc.Height,
&rect, 0, hobj);
QImage im((const uchar*) desc.Point, desc.Width, desc.Height, desc.RowSize,
QImage::Format_RGB32);
QString fileName("/tmp/obj");
fileName += QString::number(mapGetObjectNumber(hobj));
fileName += ".png";
if (!im.save(fileName, "PNG")) {
qDebug() << "image save error";
}
free((void*) desc.Point);

}

// тест рисования флагов
int main(int argc, char ** argv) {
QString* siteName = new QString("/home/user/temp/testDrawFlags.sitx");
QString* rscName = new QString("/home/user/temp/operator.rsc");
CREATESITEUN cs;
memset((void*) &cs, 0, sizeof(cs));
cs.Length = sizeof(CREATESITEUN);
cs.EllipsoideKind = 9;
cs.MapType = 16;
cs.Reserve = 0;
cs.Scale = 100000;
HMAP hmap = mapCreateSiteUn((const WCHAR*) siteName->constData(),
(const WCHAR*) rscName->constData(), &cs);
if (hmap != 0) {
mapSetRealShowScale(hmap, 10000.);

HOBJ hobj = createObjectByKeyOnePoint(hmap, "009991001001");
if (hobj != 0) {
//освобождаем объект
mapFreeObject(hobj);
} else {
qDebug() << "createObjectByKeyOnePoint error";
}
mapCloseMap(hmap);
} else {
qDebug() << "mapCreateSiteUn error";
}

//переоткрываем карту
hmap = mapOpenAnyData((const WCHAR*) siteName->constData());
if (hmap != 0) {
mapSetRealShowScale(hmap, 25000.);
HOBJ hobj = mapCreateObject(hmap, IDDOUBLE2, 0);
mapReadObjectByNumber(hmap, 0, hobj, 1, 1);
paintMapObj(hmap, hobj);

//освобождаем объект
mapFreeObject(hobj);
mapCloseMap(hmap);
} else {
qDebug() << "mapOpenAnyData error";
}

}

[/CODE]
[URL=https://drive.google.com/open?id=1vVwDmpypQxzBDf7w-XUD4-aqUAOOkiE_]Результат для 12.6.0[/URL]
[URL=https://drive.google.com/open?id=1JuU88QfsMIOTc5_w7C1F1XY_lfORRxLg]Результат для 12.5.0[/URL]

С уважением,
Матвеев П.В.
Не открываются WMTS карты?
 
Приветствую!

[CODE]//тест открытия карты и запроса параметров
int main(int argc, char ** argv) {
if (!QApplication::instance()) {
static int argc = 1;
static char arg[] = "test17";
static char *argv[1] = { arg };
QApplication::setGraphicsSystem("native");
new QApplication(argc, argv);
}

QString mapName(
"WMTS#IP=http://127.0.0.1/GISWebServiceSE/service.php&ID1=0003&Name1=MyMap&Format=image/png&Matrix=GoogleMapsC­ompatible");

long int err;
mapSetPathShell("/home/user/temp/");
HMAP hmap = mapOpenAnyData((const WCHAR*) mapName.constData(), 0, &err);
if (hmap == 0) {
qDebug() << err;
} else {
DFRAME frame;
mapGetTotalBorder(hmap, &frame, 3);
qDebug() << frame.X1 << " " << frame.Y1 << " " << frame.X2 << " " << frame.Y2 << " ";
qDebug() << mapScaleToRoundScaleReal(hmap, 250000);
mapCloseData(hmap);

}
}

[/CODE]Результаты работы:
[B]12.5.0:[/B]
[I]-1.99769e+07 -2.00425e+07 1.99769e+07 2.00425e+07 [/I]
[I]202788[/I]

[B]12.6.0:[/B]
[I]-50[/I][I]00 -5000 5000 5000 [/I]
[I]0.1[/I]

С уважением,
Матвеев П.В.
Не открываются WMTS карты?
 
Приветствую!

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

При работе с WMTS картами столкнулся с проблемой: несмотря на успешное открытие карты, дальнейшие вызовы методов (mapGetTotalBorder, mapScaleToRoundScaleReal..) возвращают какие-то значений по умолчанию, которые не соответствуют действительности.

В 12.5.0 работало без замечаний.

ЗЫ: в процесе перехода на новую версию обнаружил методы, которые есть в заголовочных файлах, но, вероятно, отсутсвуют в библиотеках:
[LIST]
[*][B]mapIsVectorActive[/B]
[*][B]mapGetMapPalette[/B]
[/LIST][B]
[/B]ЗЫЗЫ: для запуска под Астра 1.6 пришлось создать симлинк для libisc.so.84

С уважением,
Матвеев П.В.
Поворот знаков на карте мира
 
Приветствую!

[URL=http://www.gisweb.ru/forum/forum7/9597-povorot-obekta-dobavlennogo-v-klassifikator]http://www.gisweb.ru/forum/forum7/9597-povorot-obekta-dobavlennogo-v-klassifikator[/URL]

С уважением,
Матвеев П.В.
[MAPAPI] Получение семантик, относящихся к конкретному объекту, Как получить список семантик объекта идентичный списку из редактора классификатора с помощью mapapi
 
Приветствую!

У меня в версии 12.5.0 в  maptype.h строка 2940:

#define SEMHIDEFIRST 32798

С уважением,
Матвеев П.В.
[MAPAPI] Получение семантик, относящихся к конкретному объекту, Как получить список семантик объекта идентичный списку из редактора классификатора с помощью mapapi
 
Приветствую!

Вопрос не совсем понятен, но..
Введем набор определений, чтобы не путаться:[B]
[/B]
[B]Объект карты[/B] - существующий объект на карте
[B]Объект классификатора[/B] - описанный в классификаторе объект

Вопрос: Какие семантики относятся к[B] Объекту карты[/B]?
Ответ: Те, которые для него установлены. Странный ответ, но справедливый) Никто не запрещает добавлять к[B] Объекту карты[/B]любые семантики с любым кодом. Просто на рисование, поведение знаков (объектов карты) они не будут влиять. Сталкивался с этим, когда приходилось работать с картами доставшимися извне. Поэтому надеяться на то, что в объекте будут только те семантики, которые для него допустимы не приходится.

Вопрос: Как получить семантики, которые указаны для[B] Объекта классификатора[/B]?
Ответ: я использую [I]mapGetRscSemanticObjectCount + [/I][I]mapGetRscSemanticObjectCodeList. [/I]далее отбираются те, у которых код семантики меньше чем код начала диапазона служебных семантик.

Вопрос:  Как получить семантики, которые допустимы для всех объектов, в т.ч. не являющимися [B]объектами классификатора [/B](не привязанные к коду[B] объекта классификатора[/B])
Ответ: Как-то так сложилось, что у себя я этот список единожды определяю для конкретного классификатора при помощи [I]mapGetRscSemanticCount [/I]+ [I]mapGetRscSemanticCodeByNumber [/I]+ [I]mapGetRscSemanticExByCode [/I]с фильтрацией по Service в RSCSEMANTICEX

Вопрос: Почему списки семантик в Оператор отличатся от списков полученных в Конструктор?
Ответ: Насколько я понимаю, Оператор использует более старые библиотеки (возможно аналог ГИС Конструктор 11.х.х).


С уважением,
Матвеев П.В.
Изменено: Павел Матвеев - 25.02.2019 15:44:10 (всё та же..)
[MAPAPI] Добавление точки в метрику площадного объекта, [MAPAPI] Добавление точки в метрику площадного объекта
 
Приветствую!

Да, для площадных объектов так и есть. Поэтому для них удобнее точку не в конец добавлять, а предпоследней при редактировании.

В документации где-то косвенно вроде было, но точно, наверно, разработчики могут сказать.

С уважением,
Матвеев П.В.
Отрисовка масштабируемого условного знака без hdc, Отрисовка масштабируемого условного знака без hdc
 
Приветствую!

Если не вдаваться в подробности - нет)
Тут неоднократно уже вопрос габаритов объектов поднимался..
[URL=http://www.gisweb.ru/forum/forum7/9770-mapapi_-ramka-otobrazhaemogo-znaka-obekta]например, тут[/URL] или [URL=http://www.gisweb.ru/forum/messages/forum7/topic9791/message74209/9791-problemy-s-mapgetobjectcontour#message74209]тут[/URL]

С уважением,
Матвеев П.В.
Отрисовка масштабируемого условного знака без hdc, Отрисовка масштабируемого условного знака без hdc
 
Приветствую!

[B]mapPaintMapObjectToDib. [/B]Пример [URL=http://www.gisweb.ru/forum/messages/forum7/topic7994/message58468/7994#message58468]тут[/URL].


С уважением,
Матвеев П.В.
Два независимых HMAP для одной и той же карты
 
Приветствую!

Вы же все еще с объединенной картой Москвы и МО экспериментируете? Может выложите ее куда-нибудь в общедоступное место, тоже хочется посмотреть на то как рисуется..

С уважением,
Матвеев П.В.
Страницы: Пред. 1 ... 3 4 5 6 7 8 9 10 11 12 13 ... 54 След.



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

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