На главную... Продукты | Технологии | Классификаторы | Проекты | Скачать | Цены| Форум | Статьи | Обучение | Контакты
АРХИВ ФОРУМА...
здесь вы можете ознакомиться с материалами форума до 08.06.2008

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

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

Страницы: 1 2 3 4 5 6 7 8 9 10 11 ... 399 След.
Поворот объекта добавленного в классификатор?
 
Нулевое значение означает, что поворот не выполняется. Это относительное значение для поворота от текущего положения, а не азимут или дирекционный угол.
Поворот объекта добавленного в классификатор?
 
Вопрос:
ПО документации написано, что поворот будет по часовой стрелке, по картинкам же мы видим, что поворот против часовой стрелки.
Подскажите, что мы делаем не так? Или как повернуть изображение корректно на заданный угол?

Ответ:
Повороты выполняются против часовой стрелки. Для поворота по часовой стрелке можно задать отрицательное значение угла.


Векторный объект обычно рисуется по направлению второй точки. Применять функции поворота не обязательно, можно управлять второй точкой.
Поворот объекта добавленного в классификатор?
 
В более новой версии файла mapapi.h комментарий уже поправлен и имеет вид:
[CODE] // Повернуть объект вокруг заданной в прямоугольной системе точки
// на заданный угол
// info   - идентификатор объекта карты в памяти
// center - координаты точки, вокруг которой поворачивается объект (метры)
// angle  - угол поворота против часовой стрелки (радианы, от -PI до +PI)
// При ошибке возвращает 0

_MAPIMP long int _MAPAPI mapRotateObject(HOBJ info, DOUBLEPOINT *center, double *angle);
[/CODE]Повороты выполняются против часовой стрелки. Для поворота по часовой стрелке можно задать отрицательное значение угла.
Извините за неточность.
Размер изображения при добавлении из классификатора имеет не корректный размер, Масштабирование объектов на карте
 
Размеры знака, строго говоря, задаются в микронах.
Разрешение экрана может быть установлено любое.
Пересчет PIX2MKM - это приблизительный пересчет для 96 dpi.
Размер картинки в пикселах на разных устройствах\экранах (при разных разрешениях) может несколько отличаться,
но размер в микронах будет достаточно точным при правильно заданных параметрах монитора (для принтера параметры определяются автоматически).
Размер в пикселах, таким образом, не фиксируется в условном знаке.
[CODE] // Установить расчетные размеры буфера изображения (влияет на расчет разрешения экрана)
 // Функция должна вызываться до открытия данных
 // Чтобы оставить ширину или высоту без изменения соответствующий параметр
 // должен быть равен 0
 // Если экран компьютера, на котором выполняется программа, имеет размеры
 // больше заданных, то установленные значения будут автоматически увеличены до
 // размеров экрана
 // При ошибке возвращает ноль

_MAPIMP long int _MAPAPI mapSetScreenImageSize(long int width, long int height);

 // Запросить/Установить размер диагонали видимого изображения
 // экрана в миллиметрах (50 - 4000). При установке возвращает
 // старое значение
 // hdc - контекст главного окна для запроса текущих размеров
 // экрана в пикселах
 // При ошибке возвращает ноль

_MAPIMP double _MAPAPI mapGetScreenSizeEx();
_MAPIMP double _MAPAPI mapSetScreenSizePro(double size);

 // Запросить/Установить коэффициент масштабирования изображения
 // экрана в процентах (50 - 200). При установке возвращает
 // старое значение и пересчитывает точность текущего режима экрана
 // При ошибке возвращает ноль

_MAPIMP double _MAPAPI mapGetScreenScaleEx();
_MAPIMP double _MAPAPI mapSetScreenScaleEx(double scale);

 // Запросить/Установить точность текущего режима экрана в точках
 // на метр (1000 - 100000). При установке возвращает старое
 // значение и пересчитывает коэффициент масштабирования экрана
 // При ошибке возвращает ноль

_MAPIMP void _MAPAPI mapSetScreenPrecisionEx(double valueHor, double valueVer);
_MAPIMP double _MAPAPI mapGetHorizontalScreenPrecision();
_MAPIMP double _MAPAPI mapGetVerticalScreenPrecision();

 // Пересчет через текущие параметры экрана
 // из метров экрана в пикселы и обратно

_MAPIMP long int _MAPAPI mapScreenMeter2Pixel(double metric);
_MAPIMP double _MAPAPI mapScreenPixel2Meter(long int pixel);[/CODE]Классификатор - это аналог структуры базы данных.
Предполагается, что при работе с базой данных программа не меняет на лету структуру базы данных, хотя для этого есть API-интерфейс.
Классификатор и библиотека условных знаков настраиваются интерактивными средствами и затем используются в программах.

Вы можете создать требуемый объект в Редакторе классификатора и оценить его поведение на карте.
Затем считать его описание в программе и сравнить с тем, что Вы заполняете - это как вариант отладки подобной задачи.
SIGFPE для mapcomponents скомпилированного под x64, При добавлении объекта на карту приложение падает с SIGFPE
 
Если Вы решаете производственную задачу, а не исследуете опции компилятора для проектов Qt под Windows, то советуем сразу вести разработку на целевой Linux-платформе.
TMapView добавление множества объектов, Оптимизация отрисовки
 
При включении потоковой загрузки система выполняет буферизацию записи на диск в оперативной памяти.
До закрытия приложения данные корректны и поиск работает.
При завершении приложения без корректного закрытия/сохранения карты (это предположение),
данные в буфере не дописываются на диск и при последующем открытии карта работает с ошибками.

Попробуйте после завершения обработки вызвать явно функцию "Save" для карты.
[CODE] // Сохранить текущее состояние карты на диск
 // hMap - идентификатор основной векторной карты
 // hSite - идентификатор открытой пользовательской карты
 // force - сохранять всегда, если не 0, или только при редактировании
 // При выполнении редактирования карты с отключенным
 // журналом транзакций состояние карты в памяти и
 // на диске может отличаться, в этом случае можно
 // вызвать mapSaveSite

_MAPIMP void _MAPAPI mapSaveSite(HMAP hMap, HSITE hSite, long int force);[/CODE]Обычное закрытие карты должно само вызывать эту функцию.
ГИС Оператор, прикладные задачи и потоки
 
А как Вы из потока будете управлять ГИС Оператором или картой?

Если Вам нужно управлять картой, чтобы в ГИС Операторе были видны изменения,
то Вы можете из автономного приложения, написанного в ГИС Конструкторе, подключиться к карте, открытой на ГИС Сервере, и менять ее через MAPAPI-интерфейс.
ГИС Операторы, открывшие эту же карту на ГИС Сервере по сети TCP\IP (удаленно), будут автоматически отображать все изменения
с заданной в их настройках периодичностью обновления.

Если Вам нужно управлять конкретным экземпляром ГИС Оператора, то Вы можете написать прикладную задачу на PANAPI-интерфейсе.
Она будет получать уведомления о действиях Оператора, управлять окном карты и может иметь фоновый поток для неких действий.
Это более сложная в реализации архитектура.

Аварийное завершение Вашего примера может быть связано, например, с тем, что Вы запускаете поток,
который возможно висит в памяти и завершаете функцию, вместе с которой библиотека выгружается из памяти.
Задача на PANAPI работает по другому. Создается пользовательский класс (объект), который существует до принудительного завершения задачи
или закрытия всех окон карт.
Некорректное назначение проекции при экспорте в shp
 
[QUOTE]ciandr написал:
Здравствуйте, Роман.
То что у Вас все работает это хорошо, но что делать мне? Почему не работает у меня?
Переустановил Панораму, взял последний вариант от 25 февраля, но и это не помогло
Вы ведь работаете в версии 12.7.1, а я в 12.7.0. Быть может дело в этом?[/QUOTE]
Спасибо за сообщение!
Ошибка исправлена, версия обновлена -
[URL=http://gisinfo.ru/download?id=215]http://gisinfo.ru/download?id=215[/URL]
Проброс USB-ключа., Как пробросить USB-ключ из OS Windows в Astra Linux
 
В виртуальных машинах может применяться сетевой ключ. В этом случае драйвер ключа обращается по заданному ip-адресу, где стоит сервер ключа и физический ключ.
Рисование эллипса на карте
 
В новую версию добавлена функция:
[CODE] // Построить эллипс по двум точкам и параметрам полуосей
// Координаты точек в метрах в системе документа
// centre - координаты центра эллипсоид в метрах на местности
// bigaxis - большая полуось в метрах на местности
// littleaxis - малая полуось в метрах на местности
// angle - угол поворота большой полуоси в радианах против часовой стрелки
//         от направления на восток
// count - число точек метрики (от 16 до 128)
// Создаваемому объекту присваивается признак отображения сплайном,
// что позволяет минимизировать число точек метрики
// При ошибке возвращает ноль

_MAPIMP long int _MAPAPI mapBuildEllpse(HOBJ info, DOUBLEPOINT * center, double bigaxis, double littleaxis,
                                       double angle, long int count);[/CODE]
Кроме того, отображение эллипса встроено элементом в векторные знаки.
Страницы: 1 2 3 4 5 6 7 8 9 10 11 ... 399 След.



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