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

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

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

Страницы: 1 2 3 4 5 6 7 8 9 10 11 ... 148 След.
Вывод карты на печать из редактора отчета
 
Добрый день!
Предлагаю временное решение:
1. Средствами ГИС "Панорама" загрузить картинки (JPG, PNG) в формат RSW.
2. В Редакторе отчётов через меню: Добавить - Карту - Из файла... - выбрать RSW-файл.
RSW-файлы не обрезаются.
Изменено: Александр Кружков - 28.03.2024 11:10:00
Сохранить как
 
Проверил в версии 15.1.4.15 (текущей установленной) - замыкание контуров происходит в масштабах 1:25000 и крупнее. Возможно, это связано с превышением габаритов области вывода. При выводе в масштабе 1:50000 такого не происходит.
В масштабе 1:10000 замыкаются все линии из Вашего примера.
В масштабе 1:25000 замыкаются линии, находящиеся ниже середины листа.

Есть альтернативный способ сохранения в PDF:
1. Установить драйвер PDF-принтера: http://download.pdfforge.org/download/pdfcreator/PDFCreator-stable
2. В ГИС Панорама: Файл - Печать
3. Выбрать принтер PDFCreator, режим Векторный, формат страницы A0, разбить постранично.
4. Выбрать область печати по объекту.
5. Нажать кнопку "Печать" и выбрать имя файла PDF.

Когда я выбрал область печати, то увидел, что в масштабе 1:10000 область печати занимает более ТЫСЯЧИ листов формата A0 - это перебор!
Изменено: Александр Кружков - 26.03.2024 10:52:05
Нарезка и сшивка
 
В редакторе карты: группа "Обработка выделенных" - кнопки 8 (Сшивка площадных) и 9 (Сшивка линейных).
Изменено: Александр Кружков - 01.02.2024 15:44:12
Матрица
 
[QUOTE]Андрей Николаевич написал:
при экспорте матрицы в формат tif с параметрами по умолчанию, результат получается с округлением до метра.[/QUOTE]

В старой версии программы при экспорте 32-битной матрицы высот (с хранением значений высот с точностью в 1 миллиметр) матрица TIF всегда сохранялась с записью высот в вещественном формате 32 бита (FLOAT32).
После обращения пользователя, программное обеспечение которого не поддерживало формат FLOAT32, экспорт матрицы в TIF был доработан - добавлена возможность выбора формата записи высот в TIF:
BYTE, INT16, INT32, FLOAT32, FLOAT64. При выборе форматов INT16 и INT32 значения высот округляются до целых метров (в большую сторону). На странице помощи подробное описание: https://help.gisserver.ru/v15/russian/panorama/index.html?savemtwastiff.html
Для сохранения точности значений до миллиметров необходимо выбрать формат высоты "Вещественное число размером 32 бит" (FLOAT32).
Как отрисовать свой графический объект на карте
 
Бонус:
[CODE]// --------------------------------------------------------------
// Инициализация векторного описания (заполненный цветом кружок)
// --------------------------------------------------------------
int TUserViewItem::InitVectorDraw()
{
 struct VECTORCHAIN
 {
   VECTORCHAIN()
   {
     memset(this, 0, sizeof(VECTORCHAIN));
   }

   IMGVECTOREX vector;
   IMGVECTPOINT point;
 }
 vector;

 COLORREF color = 0x77;

 vector.vector.Length = sizeof(vector);
 vector.vector.PosH = PIX2MKM(5);
 vector.vector.PosV = PIX2MKM(5);
 vector.vector.Base = PIX2MKM(5);
 vector.vector.VSize = PIX2MKM(10);
 vector.vector.HSize = PIX2MKM(10);
 vector.vector.Count = 1;
 vector.vector.Desc.Count = 2;
 vector.vector.Desc.Type = VT_ROUND;
 vector.vector.Desc.Length = sizeof(IMGSQUARE);
 vector.vector.Desc.Image = IMG_SQUARE;
 vector.vector.Desc.Parm = color; // Внимание! Параметр "Parm" бывает разной длины. Только для функции IMG_SQUARE "Parm" занимает 4 байта (цвет). Для линии (IMG_LINE) "Parm" занимает 8 байт. Другие типы заполнять вручную не рекомендуется! Для этого есть диалог редактирования векторного знака.
 vector.vector.Desc.Point->Hor = PIX2MKM(5);  // Координаты центра круга
 vector.vector.Desc.Point->Ver = PIX2MKM(5);
 vector.point.Hor = PIX2MKM(5);  // Радиус круга по горизонтали
 vector.point.Ver = PIX2MKM(5);  // Радиус круга по вертикали
 
 return mapAppendElementDraw(VectorDraw, IMG_VECTOREX, (const char*)&vector);
}[/CODE]
Как отрисовать свой графический объект на карте
 
Привожу пример рабочей функции для варианта 2 (маленькая окружность одного цвета):[CODE]// --------------------------------------------------------------
// Инициализация точечного описания
// --------------------------------------------------------------
int TUserViewItem::InitPointDraw()
{
 struct MARKCHAIN
 {
   MARKCHAIN()
   {
     memset(this, 0, sizeof(MARKCHAIN));
   }

   IMGMULTIMARK imgmultimark;
   IMGMARKCHAIN part;
 }
 mark;

 unsigned char* bits = &(mark.part.Bits[0]);
 bits[0] = 14 << 3;   // 01110000 (первый байт строки 0 в двоичном виде)
 bits[4] = 17 << 3;   // 10001000 (первый байт строки 1)
 bits[8] = 17 << 3;   // 10001000 (первый байт строки 2)
 bits[12] = 17 << 3;  // 10001000 (первый байт строки 3)
 bits[16] = 14 << 3;  // 01110000 (первый байт строки 4)

 mark.imgmultimark.Length = sizeof(IMGMULTIMARK) + sizeof(IMGMARKCHAIN);
 mark.imgmultimark.Count = 1;
 mark.imgmultimark.Size = PIX2MKM(32);   // Примерно 32 [pix] * 250 [mkm / pix] = 8000 mkm = 8 mm
 mark.imgmultimark.PosH = PIX2MKM(2);
 mark.imgmultimark.PosV = PIX2MKM(2);
 mark.part.Color = 0x77;
 
 return mapAppendElementDraw(PointDraw, IMG_MULTIMARK, (const char*)&mark);
}[/CODE]
Изменено: Александр Кружков - 08.11.2023 14:57:14
Как отрисовать свой графический объект на карте
 
[CODE]typedef struct IMGMARK // (137) ТОЧЕЧНЫЙ РАСТРОВЫЙ ОБ'ЕКТ
{                                //      (size = 16 + 128 = 144)
 unsigned int  Color    ;       // Цвет знака
 unsigned int  Size     ;       // Размер в микронах (для печати)
 unsigned int  PosV     ;       // Точка привязки знака PosV,PosH < Size
 unsigned int  PosH     ;       //  (для IMGSQUAREMARK - шаг сетки >= Size
 unsigned char Bits[128];       // Растровое изображение 32x32 с верхнего угла
}
 IMGMARK;[/CODE]
parm.Size = 164;  // 164 мкм = 0.164 мм - такой знак сложно разглядеть

// Смещение относительно левого верхнего угла
  parm.PosH = 32;  // 0.032 мм
  parm.PosV = 32;  // 0.032 мм
Изменено: Александр Кружков - 08.11.2023 14:45:25
Как отрисовать свой графический объект на карте
 
unsigned char Bits[128]; - содержит битовое изображение матрицы 32x32

Это значит, что первая строка содержится в 4 байтах (128 / 32).
4 байта по 8 бит = 32 бита - каждый бит соответствует одной точке.

Полная заливка цветом:
memset(parm.Bits, 0xFF, sizeof(chain->Bits));
или
memset(parm.Bits, 255, sizeof(chain->Bits));
или[CODE]for (int i = 0; i < 128; ++i) {
     parm.Bits[i] = 255;
}[/CODE]
Изменено: Александр Кружков - 08.11.2023 14:11:41
Как отрисовать свой графический объект на карте
 
Если функция IMG_MARK, то и структура должна быть IMGMARK[CODE]typedef struct IMGMARK // (137) ТОЧЕЧНЫЙ РАСТРОВЫЙ ОБ'ЕКТ
{                                //      (size = 16 + 128 = 144)
 unsigned int  Color    ;       // Цвет знака
 unsigned int  Size     ;       // Размер в микронах (для печати)
 unsigned int  PosV     ;       // Точка привязки знака PosV,PosH < Size
 unsigned int  PosH     ;       //  (для IMGSQUAREMARK - шаг сетки >= Size
 unsigned char Bits[128];       // Растровое изображение 32x32 с верхнего угла
}
 IMGMARK;[/CODE]IMGMARK parm;
...
mapAppendDraw(objectId, IMG_MARK, (char*)&parm);

Вариант 2:
[CODE]// Выделить буфер с запасом (4 Кбайт)
char* buffer = new ...

IMGMULTIMARK* parm = (IMGMULTIMARK*)buffer;  // Структура переменной длины
... // Заполнить параметры

IMGMARKCHAIN* chain = (IMGMARKCHAIN*)(parm + 1);
chain->Color =
... // Заполнить параметры для первого цвета

chain++;
chain->Color =
... // Заполнить параметры для второго цвета

...
mapAppendDraw(objectId, IMG_MULTIMARK, (char*)&parm);[/CODE]
Объединение и доработка окна "Добавление семантики объекта"
 
[QUOTE]Андрей Ильин написал:
так то оно так, да вот когда объект один, то это 2 клика, а когда разных видов объектов очень много, то они превращаются в 50% экономии.[/QUOTE]
1. Объединение диалогов нецелесообразно - диалог "Выбор семантики" вызывается и в других диалогах.
2. Доработка диалога "Выбор семантики" возможна (несколько позднее).
Страницы: 1 2 3 4 5 6 7 8 9 10 11 ... 148 След.



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

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