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

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

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

Страницы: Пред. 1 2 3 4 5 6 7 8 9 10 11 ... 53 След.
Размер шрифта в диалоговых окнах Конструктора
 
Здравствуйте!

Данные проблемы с отображением возникают из-за того, что часть диалогов из состава ГИС Конструктор написано без применения элементов компоновки Qt.
Такие диалоги мы постепенно будем дорабатывать.

Изменить размер шрифта в диалоге без его модификации можно одним из двух способов:
[LIST]
[*]изменением свойств темы операционной системы;
[*]изменением шрифта в ГИС-приложении средствами Qt.
[/LIST]
получение изображения объекта из классификатора
 
Здравствуйте!

Уточните, пожалуйста, работает ли у Вас приведенный выше пример (одна функция в main()) с классификатором operator.rsc и картой battalion red (входят в состав инсталляции ГИС Конструктор) - чтобы можно было уточнить причину некорректного поведения.
Не открывается карта с русскими символами, Пу
 
Здравствуйте!

На данной версии ГИС Конструктор отсутствует возможность открывать карту с русскими символами в пути - для использования данного функционала необходимо обновить версию.
Проблема с созданием RSW
 
Здравствуйте!

Прошу прощения за доставленные неудобства - функция работает некорректно в текущей версии, мы планируем внести и протестировать исправления и включить их в состав следующей версии ГИС Конструктор.
Если возможно, воспользуйтесь, пожалуйста, на данный момент описанной выше функцией picexLoadGdalFileToRswUn для реализации Вашей задачи.

Спасибо!
получение изображения объекта из классификатора
 
Здравствуйте!

Привожу пример отображения образцов объектов из классификатора перебором:
[CODE]#include <assert.h>
#include <iostream>

#include <QImage>

#include "mapapi.h"
#include "rscapi.h"

void PaintObject(HMAP mapHandle, HRSC rscHandle, long rscIncode)
{
 // Получить информацию по объекту из классификатора
 RSCOBJECT rscObject;
 mapGetRscObject(rscHandle, rscIncode, &rscObject);

 // Получить номер функции отображения и параметры из классификатора
 long rscObjectFunctionNumber = mapGetRscObjectFunction(rscHandle, rscIncode);
 assert(rscObjectFunctionNumber);

 const char *rscObjectParameters = mapGetRscObjectParameters(rscHandle, rscIncode);
 assert(rscObjectParameters);

 // Запросить параметры палитры карты (для отображения объекта)
 COLORREF palette[256];
 long colorCount = mapGetSiteColorsCount(mapHandle, mapHandle);
 mapGetSitePalette(mapHandle, mapHandle, palette, colorCount);

 // Выделить память для отрисовки объекта
 const int ICON_SIZE = 32;
 XIMAGEDESC ximageDesc;
 ximageDesc.Width = ICON_SIZE;
 ximageDesc.Height = ICON_SIZE;
 ximageDesc.Depth = 32;
 ximageDesc.CellSize = ximageDesc.Depth / 8;
 ximageDesc.RowSize = ximageDesc.Width * ximageDesc.CellSize;

 char *paintMemory = new char[ximageDesc.Width * ximageDesc.Height * ximageDesc.CellSize];
 ximageDesc.Point = paintMemory;
 assert(paintMemory);

 // Отрисовать образец объекта
 RECT rectDraw;
 rectDraw.left = 0;
 rectDraw.top = 0;
 rectDraw.right = ICON_SIZE;
 rectDraw.bottom = ICON_SIZE;

 char *objectText = NULL;
 long isPainted = mapPaintExampleObjectByFuncToXImage(mapHandle, &ximageDesc, &rectDraw, rscObjectFunctionNumber, (char *) rscObjectParameters, colorCount, palette, objectText, rscObject.Local);
 assert(isPainted);

 // Вывести картинку в файл
 QImage image((uchar *) (ximageDesc.Point), ximageDesc.Width, ximageDesc.Height, QImage::Format_ARGB32);
 image.save("/tmp/rsc-images/" + QString::number(rscIncode) + ".png");
}


int main()
{
 // Открыть карту
 WCHAR mapPath[MAX_PATH_LONG];
 mapPath[0] = 0;
 WcsCopy(mapPath, L"/usr/share/gisdesigner/examples/Data/Специальные\ карты/Оперативная\ обстановка/RedExample/battalion\ red/BattalionRed.sitx", sizeof(mapPath));

 HMAP mapHandle = mapOpenDataUn(mapPath);
 assert(mapHandle);

 // Открыть классификатор
 WCHAR rscPath[MAX_PATH_LONG];
 rscPath[0] = 0;
 WcsCopy(rscPath, L"/usr/share/gisdesigner/examples/Data/Специальные\ карты/Оперативная\ обстановка/RedExample/battalion\ red/operator.rsc", sizeof(rscPath));

 HRSC rscHandle = mapOpenRscUn(rscPath);
 assert(rscHandle);

 // Отрисовать образцы всех объектов в классификаторе
 for (int objectNumber = 1; objectNumber <= mapGetRscObjectCount(rscHandle); objectNumber++)
   PaintObject(mapHandle, rscHandle, objectNumber);

 mapCloseData(mapHandle);
 mapCloseMapAccess();

 return 0;
}[/CODE]
Зарамочное оформление карты через gisapi
 
Здравствуйте!

[QUOTE]Андрей Сычев написал:
1. Нет ли у вас шаблона  для 500 000 карты? В поставке Оператора для Астры он отсутствует.[/QUOTE]
На данный момент шаблон для карт масштаба 1 : 500 000 отсутствует в составе инсталляции ГИС Оператор SE для Astra Linux - мы дополним его в следующей версии.
Поскольку форматы файлов frm и rsc кроссплатформенны, то при возможности Вы можете использовать их из состава ГИС Оператор для Windows.
Если такой возможности нет, то мы можем скопировать Вам их в рабочем порядке.

[QUOTE]Андрей Сычев написал:
2. В коде диалога формирования рамки есть флажок формирования рамки для региона (из нескольких листов). Но в Operator11 для Астры я так и не смог добиться чтобы он показывался. Это вообще возможно?[/QUOTE]
Для этого необходимо создать многолистовую карту формата map - например, с помощью импорта набора файлов sxf.
Печать карть программным способом под операционной системой МСВС
 
Здравствуйте!

Значения CutListFlag и FormatPage структуры SCRIPTPARAM в процессе непосредственной печати карты участия не принимают (используются в служебных целях при работе с диалогом).
Формат печати необходимо указывать непосредственно в классе QPrinter. Например:
[CODE]printer->setPaperSize(QPrinter::A5);[/CODE]Прикрепляю модифицированный пример с учетом данных правок:
[CODE]#include <QApplication>#include <QPrinter>

#include "qdmcmp.h"

#include "mapapi.h"
#include "struct.h"

struct BORDER
{
 DOUBLEPOINT UpLeft;
 DOUBLEPOINT UpRight;
 DOUBLEPOINT DownRight;
 DOUBLEPOINT DownLeft;
 DOUBLEPOINT UpLeftLast;
};

extern "C" {
void WINAPI SetupParam(HMAP hmap, SCRIPTPARAM *ScriptParam, DFRAME *FrameTrap);
void msInitPrintParam(MAPPRINTPARMEX *printParam, BORDER border, double frameAngle, bool isClockWise);
long int msPrintMap(HMAP hMap, SCRIPTPARAM *scriptparam, MAPPRINTPARMEX *printparam, QPrinter *printer);
}

int main(int argc, char **argv)
{
 QApplication app(argc, argv);
 QDMapView mapView;

 mapSetScreenImageSize(4096, 4096);  
 HMAP mapHandle = mapOpenData("/tmp/Noginsk/Noginsk.sit");

 struct BORDER border;
 memset(&border, 0, sizeof(border));

 DFRAME FrameTrap;
 mapGetTotalBorder(mapHandle, &FrameTrap, PP_PLANE);

 SCRIPTPARAM ScriptParam;
 memset(&ScriptParam, 0, sizeof(ScriptParam));
 strncpy(ScriptParam.NameInputPost, "/tmp/mapprint.pdf", sizeof(ScriptParam.NameInputPost));
 ScriptParam.Scale = mapGetShowScale(mapHandle);
 ScriptParam.Resolution = 300;

 MAPPRINTPARMEX printParm;
 memset(&printParm, 0, sizeof(printParm));
 printParm.PlaneFrame = FrameTrap;
 printParm.Scale = mapGetShowScale(mapHandle);

 FRAMEPRINTPARAM frameprnpar;
 memset(&frameprnpar, 0, sizeof(frameprnpar));
 frameprnpar.PlaneFrame = FrameTrap;
 frameprnpar.ExpandFrame = FrameTrap;

 QPrinter *printer = new QPrinter(QPrinter::HighResolution);
 printer->setColorMode(QPrinter::Color);
 printer->setPaperSize(QPrinter::A5);

 // Подготовить параметры к печати
 msInitPrintParam(&printParm, border, 0, true);

 // Отправить на печать на выбранный принтер
 msPrintMap(mapHandle, &ScriptParam, &printParm, printer);

 mapCloseData(mapHandle);

 return 0;
}[/CODE]
Зарамочное оформление карты через gisapi
 
Здравствуйте!

Попробуйте в скрипт запуска ГИС Оператор (/usr/Operator11/startgis.bat) добавить строку с содержимым:
[CODE]export LC_NUMERIC="C"[/CODE]Пример части итогового скрипта запуска:
[CODE]PANPATH=/usr/Operator11
export LD_LIBRARY_PATH=$PANPATH:$LD_LIBRARY_PATH
export LC_NUMERIC="C"

cd $PANPATH
/usr/Operator11/operator.exe[/CODE]
получение изображения объекта из классификатора
 
Вы не могли бы привести код заполнения значения desc.Incode - просто такое поле отсутствует в структуре RSCOBJECT, заполняемой функцией mapGetRscObject:
 [CODE] // Заполнить структуру описания объекта
 // RSCOBJECT -  структура входных данных  (см. maptype.h)
 // hRsc - идентификатор классификатора карты
 // incode - порядковый номер объекта (с 1)
 // При ошибке возвращает ноль , иначе порядковый номер объекта

_MAPIMP  long int  _MAPAPI mapGetRscObject(HRSC hRsc,long int incode,
                                   RSCOBJECT * object);[/CODE][CODE]typedef struct RSCOBJECT
{
 unsigned long Length   ; // РАЗМЕР СТРУКТУРЫ
 unsigned long Code     ; // КЛАССИФИКАЦИОННЫЙ КОД
 unsigned long Local    ; // ХАРАКТЕР ЛОКАЛИЗАЦИИ  (OBJECT_LOCAL)
 unsigned long Segment  ; // НОМЕР СЛОЯ ( НЕ БОЛЕЕ 255)
 unsigned long Scale    ; // 1 - ОБ'ЕКТ МАСШТАБИРУЕТСЯ
                          // 0 - ОБ'ЕКТ НЕ МАСШТАБИРУЕТСЯ
 unsigned long Direct   ; // НАПРАВЛЕНИЕ ЦИФРОВАНИЯ ОБ'ЕКТА (OBJECT_DIRECT)
 unsigned long Bot      ; // НИЖНЯЯ ГРАНИЦА ВИДИМОСТИ (ЗНАМЕНАТЕЛЬ МАСШТАБА)
 unsigned long Top      ; // ВЕРХНЯЯ ГРАНИЦА ВИДИМОСТИ (ЗНАМЕНАТЕЛЬ МАСШТАБА)
          char Name[32] ; // НАЗВАНИЕ ( НЕ БОЛЕЕ 30)
}
 RSCOBJECT;[/CODE]
получение изображения объекта из классификатора
 
Здравствуйте!

Уточните, пожалуйста, каким способом получается значение поля desc.Incode?
Страницы: Пред. 1 2 3 4 5 6 7 8 9 10 11 ... 53 След.



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

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