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

Как установить толщину объекта линии

Поиск  Пользователи  Правила  Войти
Форум » Linux » Средства разработки ГИС-приложений для Linux
Страницы: 1
RSS
Как установить толщину объекта линии
 
Подскажите пожалуйста как установить толщину простого объекта "линия".
Устанавливал цвет: mapAppendSemantic(obj, 31002, QString::number(line_color).toStdString().c_str(), 32)
Для объекта "линия" есть семантики:
31005: толщина линии в мм
31006: толщина окончания линии в мм

Пробовал оба варианта устанавливать по примеру цвета, не помогло.
Подскажите пожалуйста как установить толщину.
 
Приветствую!

Зависит от того, что такое " простой объект "линия". это знак из классификатора (какой, из какого классификатора), или пользовательский объект? И результат надо смотреть на базовом масштабе карты.

С уважением,
Матвеев П.В.
 
Простой объект "линия" это созданный пользовательский объект для отображения на пользовательском слое.  Результаты смотрел на большинстве масштабов, в том числе и на базовом.
Можете предоставить пример какой-нибудь как правильно установить ширину линии.
 
Приветствую!

Пример создания линии, например тут

С уважением,
Матвеев П.В.
 
Здравствуйте!

Уточните, пожалуйста, какой вид имеет объект (можно посмотреть с помощью задачи "Редактор классификатора", например, в ГИС Панорама Мини для Windows или ГИС Оператор для Linux).
Если на вкладке "Вид" выбрано "Стандартный", то параметры отображения объекта заданы напрямую в классификаторе и толщину линии можно изменить в этом же диалоге.
Если выбрано "Пользовательский", то способ отображения задан в библиотеке iml.

Есть третий вариант, когда вид объекта не привязан к классификатору, а задается отдельно - графические объекты (п.3.6.17 "Создание графических объектов на карте" Руководства программиста ГИС Конструктор - http://gistoolkit.ru/download/doc/gisdesigner_prog.pdf).
В этом случае толщина линии задается при создании объекта.
 
Спасибо за совет. Однако всплыли новые вопросы, касающиеся графических объектов :
1. Как установить не масштабируемость у объекта?
2. При использовании IMGSQUARECROSS непонятно как задавать параметры.
Код:
IMGSQUARECROSS img_square_cross;
img_square_cross.Color = RGB(255,255,255);
img_square_cross.Kind = SC_HORIZONTAL;
img_square_cross.Thick = PIX2MKM(20);
img_square_cross.Blank = PIX2MKM(30);


HOBJ obj = mapCreateSiteObject(map50, site50);
mapRegisterDrawObject(obj, 0, LOCAL_SQUARE);
mapAppendDraw(obj, IMG_SQUARECROSS, (const char*) &img_square_cross);
mapAppendPointGeo(obj b, l, 0);
mapCommitObject(obj);
mapFreeObject(obj);

Получается полностью закрашенный контур.

При этом, например если

img_square_cross.Color = 0x000000F00;
изменяется почему-то толщина линии,

получается заштрихованный контур, но цвет не меняется.
 
Здравствуйте!

2. Привожу пример кода для нанесения графического знака с видом заштрихованного полигона (пример проверялся на карте Ногинска, входящей в инсталляцию):

Код
#include "mapapi.h"

int main()
{
  const char *mapPath = "data/Noginsk.sit";
  HMAP hMap = mapOpenData(mapPath);

  // Создать образ объекта в памяти
  HOBJ hObj = mapCreateSiteObject(hMap, hMap);

  // Зарегистрировать новый объект в 5 слое как линейный
  mapRegisterDrawObject(hObj, 5, LOCAL_SQUARE);

  // Описать внешний вид объекта
  IMGSQUARECROSS parm;
  parm.Color = RGB(250,0,0);
  parm.Kind = SC_HORIZONTAL;
  parm.Thick = PIX2MKM(20);
  parm.Blank = PIX2MKM(5);

  // Добавить описание в объект
  mapAppendDraw(hObj, IMG_SQUARECROSS, (char*)&parm);

  // Присвоить координаты
  mapAppendPointPlane(hObj, 6180000.0, 7475000.0);
  mapAppendPointPlane(hObj, 6185000.0, 7475000.0);
  mapAppendPointPlane(hObj, 6185000.0, 7480000.0);

  mapCommitObject(hObj);
  mapFreeObject(hObj);

  mapCloseData(hMap);
}
 
Здравствуйте!

1. Для установки признака масштабируемости объекта используется функция mapSetObjectScale (mapapi.h):
Код
// Установить/сбросить/запросить масштабируемость объекта
 // Применяется ТОЛЬКО для графических объектов, имеющих внутренний код равный нулю
 // Для объектов из классификатора значение игнорируется
 // scale = 1 для установки масштабируемости при увеличении карты
 //         0 для сброса признака масштабируемости
 // При ошибке возвращает ноль

_MAPIMP long int _MAPAPI mapSetObjectScale(HOBJ info, long int scale);
_MAPIMP long int _MAPAPI mapGetObjectScale(HOBJ info);
Страницы: 1
Читают тему (гостей: 1)



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

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