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

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

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

Страницы: Пред. 1 2 3 4 5 6 7 8 9 10 11 12 ... 409 След.
Отображение матрицы высот при добавлении к карте
 
mtrapi.h[CODE] // Запросить/Установить порядок отображения матрицы
 // hMap -  идентификатор открытых данных
 // number - номер матрицы в списке открытых матриц
 // order  - порядок (0 - под картой, 1 - над картой)
 // При ошибке возвращает ноль

_MAPIMP long int _MAPAPI mapSetMtrViewOrder(HMAP hMap, long int number, long int order);
_MAPIMP long int _MAPAPI mapGetMtrViewOrder(HMAP hMap, long int number);[/CODE]
Древние классификаторы, Классификаторы старых годов выпуска (до 1997 года)
 
В разделе Скачать для этого есть версия -
[URL=https://gisinfo.ru/download/?id=22]https://gisinfo.ru/download/?id=22[/URL]
Объект "Занимает район" не меняет цвет
 
operator.rscz сформировали по ошибке. Классификатор rsc общий для разных версий, начиная с 11, где нет поддержки rscz.
Поиск объекта, ближайшего к заданному
 
[QUOTE]Есть ли функция mapapi проверки карт и их восстановления?[/QUOTE]
Есть функции, описанные в cntapi.h

Например:
[CODE]//*****************************************************************
//     ФУНКЦИИ ИСПРАВЛЕНИЯ МЕТРИКИ ОБЪЕКТОВ ВЕКТОРНОЙ КАРТЫ
//*****************************************************************
//
//  Данные функции предназначены для упрощения метрики объектов:
//   - удаление двойных точек, выбросов, самопересечений;
//   - преобразование мультилиний в простые линейные;
//   - преобразование мультиполигонов в простые площадные объекты;
//
//*****************************************************************

// Исправить объект
//   obj  - обрабатывемый объект
//   parm - параметры обработки
// Если Site2 = Site и Map2 = Map - обработанные объекты записываются в ИСХОДНУЮ карту,
//                          иначе - в НОВУЮ карту (Map2, Site2) с нарезкой на листы
// Если Site3 = Site и Map3 = Map - ошибочные объекты записываются в ИСХОДНУЮ карту,
//                          иначе - в карту ОШИБОЧНЫХ объектов (Map3, Site3)
// При обработке линейного объекта выполняется:
//   1) удаление двойных точек в указанном допуске (parm.Precision);
//   2) преобразование мультилиний в простые линейные (с добавлением новых объектов);
//   3) разрезание контуров в точках примыкания (с добавлением новых объектов);
//   4) удаление выбросов;
//   5) удаление начальных и конечных совпадающих отрезков.
// При обработке площадного объекта выполняется:
//   1) удаление двойных точек в указанном допуске (parm.Precision);
//   2) удаление выбросов;
//   3) смещение точек близких и примыкающих отрезков;
//   4) разрезание контуров в точках примыкания и самопересечения (с добавлением новых подобъектов);
//   5) преобразование мультиполигонов в простые площадные объекты (с добавлением новых объектов).
// Состояние обработки записывается в поле parm->Status (см. PROCESSING_STATUS)
// Код ошибки записывается в поле parm->Error: от OVL_ERR_NONE до OVL_ERR_END
// Если объект обновлен на своей карте, то возвращает -1
// При ошибке возвращает 0

_VECIMP long int _VECAPI cntCorrectTheObject(HOBJ obj, PROCESSPARM * parm);

// Исправление метрики объектов
//   parm - параметры обработки
// Если parm.Site = 0             - обрабатывает все карты
// Если parm.SheetNumber = 0      - обрабатываются все листы
// Если Site2 = Site и Map2 = Map - обработанные объекты записываются в ИСХОДНУЮ карту,
//                          иначе - в НОВУЮ карту (Map2, Site2) с нарезкой на листы
// Если Site3 = Site и Map3 = Map - ошибочные объекты записываются в ИСХОДНУЮ карту,
//                          иначе - в карту ОШИБОЧНЫХ объектов (Map3, Site3)
// Состояние обработки записывается в поле parm->Status (см. PROCESSING_STATUS)
// При ошибке возвращает 0

_VECIMP long int _VECAPI cntCorrection(PROCESSPARM * parm);[/CODE]
Как в QDMapView можно выбрать карту из ресурсов проекта ?
 
Карту можно сохранить в формате SITX с паролем. Пароль можно закодировать в программе. Файл можно переименовать в любое расширение - .so или .dll.
Внешне это не будет отличаться от библиотеки и открыть ее сможет только Ваша программа.
ГИС Панорама\Оператор создает такую карту в задаче Сортировка. Можно сформировать карту и без пароля.
Контроль качества векторной карты
 
Проблема была в том, что ключ задан числом. Число воспринималось, как код. Обычно идентификаторы объектов (в широком смысле) не должны начинаться с числа.
В наших классификаторах это правило соблюдается.
Добавили дополнительную проверку на то, что числовое значение не совпадает с ключом (идентификатор значения в классификаторе).
Это будет действовать для любых форматов. Но, теоретически, для коротких ключей возможна ошибка распознавания ключа вместо кода.
как отобразить на пользовательской карте эллипс?
 
Можно заменить. Можно добавить раньше, чтобы был полигон с контуром.
как отобразить на пользовательской карте эллипс?
 
Можно добавить площадной примитив типа IMGSQUARE.
как отобразить на пользовательской карте эллипс?
 
Создана пустая карта (EPSG:3395)
Собрана DLL из следующего кода:
[CODE]#include "mapapi.h"

// --------------------------------------------------------------
//  Обязательная подпрограмма
// --------------------------------------------------------------
extern "C"
{
__declspec(dllexport) long int WINAPI GetInterfaceVersion()
{
   return 0;
}
}

// --------------------------------------------------------------
//  Точка входа в задачу
// --------------------------------------------------------------
extern "C"
{
__declspec(dllexport) long int WINAPI CallMapFunctionEx(HMAP hmap, TASKPARMEX * parm)
{
 HOBJ info = mapCreateObject(hmap);

 mapDescribeObject(info, SQUARESERVINCODE);

 DOUBLEPOINT center = { 6197830, 7442044 };

 mapBuildEllipse(info, & center, 2000, 1000, 20.*M_PI/180., 32);

 mapCommitObject(info);

 mapFreeObject(info);

 return 0;
}
}[/CODE]
Запущена из меню Задачи\Запуск приложений. Тест выполняется и в Windows и в Linux при каждой сборке.
Вид задается через классификатор - mapDescribeObject(info, SQUARESERVINCODE); // Обычно фиолетовый полигон
Если объект не виден, его можно попробовать найти поиском.

[IMG WIDTH=504 HEIGHT=273]https://public.gisinfo.ru/Forum/ellipse.png[/IMG]
как отобразить на пользовательской карте эллипс?
 
В стандартных тестах есть такой:
[CODE] #define PANASSERT(condition, testname) if (!(condition)) { mapErrorMessage(IDS_DOERROR, testname); return 0; }
#define PANASSERTCOMPLETED(testname) return 1;
#define TESTNAME "GeodeticEllipse"

// --------------------------------------------------------------
//  Check building ellipse
// --------------------------------------------------------------
int test_GeodeticEllipse()
{
 MAPREGISTEREX  mapreg;
 DATUMPARAM     datum;
 ELLIPSOIDPARAM ellipsoid;

 PANASSERT(mapGetParametersForEPSG(3395, &mapreg, &datum, &ellipsoid),TESTNAME);

 TEMPHMAP hmap = mapCreateTempSitePro(WS("service.rsc"), &mapreg, &datum, &ellipsoid, 1);
 PANASSERT(hmap, TESTNAME);

 TEMPHOBJ hobj = mapCreateSiteObject(hmap, hmap);
 PANASSERT(hobj, TESTNAME);

 PANASSERT(mapDescribeObject(hobj, SQUARESERVINCODE), TESTNAME);

 DOUBLEPOINT center(6197830, 7442044);

 PANASSERT(mapBuildEllipse(hobj, & center, 2000, 1000, 20.*M_PI/180., 32), TESTNAME);

 PANASSERT(mapCommitObject(hobj), TESTNAME);

 int count = mapPointCount(hobj, 0);
 PANASSERT(count == 33, TESTNAME);

 // Correct result: distance = 9 672.8923824823
 double distance = mapLengthInMap(hobj);
 PANASSERT(Compare(distance, 9672.8923824823) == 0, TESTNAME);

 // Correct result on ellipsoid: distance = 6 391.82228430545
 distance = mapLength(hobj);
 PANASSERT(Compare(distance, 6391.82228430545) == 0, TESTNAME);

 // Correct result: distance = 6 242 890.30451456
 double square = mapSquareInMap(hobj);
 PANASSERT(Compare(square, 6242890.30451456, 0.00001) == 0, TESTNAME);

 // Correct result: distance = 2 725 978.21426187
 square = mapSquare(hobj);
 PANASSERT(Compare(square, 2725978.21426187, 0.00001) == 0, TESTNAME);

 PANASSERTCOMPLETED(TESTNAME);
}[/CODE]
Если создать не временную карту, то после теста ее можно открыть и посмотреть результат.
Страницы: Пред. 1 2 3 4 5 6 7 8 9 10 11 12 ... 409 След.



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

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