Спасибо за информацию. Будем решать задачу по другому.
11.12.2012 10:57:19
Спасибо за ответ.
Палитру отображения матрицы выбрал дискретную для каждого из диапазона. Возникла проблема с отображением матрицы: - все что не входит в назначенный диапазон окрашивается цветам нулевого диапазона(белый цвет в результате); - прозрачность не включилась. Может я что-то делаю не правильно? скрытие не нужного решилось просто не внесением значения в матрицу. Пример текста программы: [CODE] ... BUILDMTW parm; MTRPROJECTIONDATA proj; COLORREF palette[10]; double Diapason[10]; //настройка палитры матрицы palette[0]=RGB(255, 255, 255); palette[1]=RGB(255, 0, 255); palette[2]=RGB(235, 0, 235); palette[3]=RGB(215, 0, 215); palette[4]=RGB(195, 0, 195); palette[5]=RGB(175, 0, 175); palette[6]=RGB(155, 0, 155); palette[7]=RGB(135, 0, 135); palette[8]=RGB(115, 0, 115); palette[9]=RGB(95, 0, 95); Diapason[0]=-200; Diapason[1]=-130; Diapason[2]=-120; Diapason[3]=-115; Diapason[4]=-110; Diapason[5]=-105; Diapason[6]=-100; Diapason[7]=-90; Diapason[8]=-80; Diapason[9]=-0; memset(&parm, 0, sizeof(BUILDMTW)); parm.StructSize=sizeof(BUILDMTW); parm.BeginX=X1-Radius; parm.BeginY=Y1-Radius; parm.Width=Radius*2; parm.Height=Radius*2; parm.ElemSizeMeters=Step; parm.ElemSizeBytes=8; parm.Scale=100000; HMAP hm=mapCreateMtq("/*путь к матрице*/", &parm, 0, palette, 10); if(hm==0) { QMessageBox::warning( this, tr("Внимание"),tr("Ошибка создания матрицы"), tr("Выход"), 0, 0, 1 ); return; } double x, y; double BegX, BegY; double EndX, EndY; double Elem; double Value=1.0; Elem=parm.ElemSizeMeters; BegX=parm.BeginX; BegY=parm.BeginY; EndX=parm.BeginX+parm.Height; EndY=parm.BeginY+parm.Width; for(x=BegX; x<=EndX; x+=Elem) { for(y=BegY; y<=EndY; y+=Elem) { ... if(R<Radius) //Значения не входящие в радиус не записываются { ... if(l>Diap) //Значения не удовлетворяющие условию не записываются { mapPutMtqValue(hm, 1, x, y, l); } } } } mapSetMtqShowRange(hm, 1,-100.0, 200.0); mapSetMtqPalette(hm, palette, 10, 1); mapSetMtqPaletteDiapason(hm, Diapason, 10, 1); mapSetMtrView(hm, 1, 5); mapSaveMtqPalette(hm, palette, 10, 1); mapCloseMtq(hm); ... //подключение матрицы к QDMapView ... int num; QDMapView *View; QDMapMtrs *mtq; ... num=View->VarMapMtrs->Append(“/*путь к матрице*/”); mtq=View->VarMapMtrs->GetMapMtrs(num); mtq->SetMtrViewOrder(1); //отображать над картой mtq->SetMtrView(TRUE); ... [/CODE] Результат: http://i52.fastpic.ru/big/2012/1211/cd/6fcb776dcd2105e7738375ed0a5ed7cd.png
Изменено: |
|
|
10.12.2012 14:31:39
Здравствуйте уважаемые разработчики!
Необходимо отобразить на карте матрицу качеств, содержащую в себе ослабления энергетического состояния радиосигнала в каждой точке вокруг объекта (зону радиопокрытия). [I]Требования к отображению: -вывод на экран только определенные состояния, подкрашенные определенным цветом; -вывод на экран поверх карты в полупрозрачном режиме. [/I] Матрица и палитра окраски создаются по средствам функций MAPAPI. После чего название созданной матрицы отправляется в QDMapView. На каком этапе необходимо произвести настройку отображения матрицы для решения поставленных задач? И какие функции для этого использовать? [I]Пример конкретного условия: - ослабление радиоволн в точке ниже -200 ДБ не отображать (значение ослабления отрицательно); - отображенная матрица полупрозрачна.[/I] Матрица радиопокрытия это дополнительный элемент, основная программа для отображения обстановки уже написана и переписывать в MAPAPI не рассматривается из-за сжатых сроков. [I]Разработка производится в «ГИС Конструктор для ПС Конструктора» версия 10 под МСВС 3.0 изм.4[/I]
Изменено: |
|
|
© КБ Панорама, 1991-2024 Регистрируясь или авторизуясь на форуме, Вы соглашаетесь с Политикой конфиденциальности |