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

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

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

Страницы: Пред. 1 ... 4 5 6 7 8 9 10 11 12 13 14 ... 38 След.
Создание матрицы качеств с двухинтервальной палитрой
 
Присваивать ноль. Или до начала заполнения структуры MtrParm - обнулить её всю целиком.
Изменено: Александр Горбунов - 17.05.2017 16:14:51
Создание матрицы качеств с двухинтервальной палитрой
 
После создания матрицы функцией mtrBuildMatrixSurface нужно выполнить следующее :

// Открыть матрицу качеств
// Возвращает идентификатор открытой матричной карты
// mtqname - имя открываемого файла

HMAP hMtq := mapOpenMtq(mtqname, 0);

 firstColor :COLORREF;
 mediumColor: COLORREF;
 lastColor  :COLORREF;
 rcPalette: Integer;

// Заполнение палитры матрицы
firstColor   := RGB(255,0,0);
mediumColor  := RGB(0,255,0);
lastColor    := RGB(0,0,255);

// Установка палитры матрицы
rcPalette := mapSetMtqTwoIntervalPalette(hMtq, firstColor, mediumColor, lastColor, 64, 20, 1);
Изменено: Александр Горбунов - 17.05.2017 10:39:43
Экспорт матрицы высот
 
Меню Файл-Экспорт в ... Матрицы высот (TXT,TIFF) и выбрать расширение TXT
Второй вариант экспорта в TXT : Комплекс 3D анализа
[URL=http://gisinfo.ru/download?id=226]http://gisinfo.ru/download?id=226[/URL]
панель "Импорт и экспорт" - кнопка "Экспорт матриц высот в TXT" и кнопка  "Экспорт матриц качеств в TXT" (выбрать Тип матриц = MTW).
Изменено: Александр Горбунов - 27.04.2017 10:24:38
Delphi XE5. ToolKit 12. При формировании матрицы высот не учитывается рамка листа.
 
Для построения матрицы высот внутри объекта карты (в частности - внутри рамки листа) используется параметр

HOBJ Border;        // Идентификатор замкнутого объекта при создании
                     // матрицы высот MTW по векторной карте функцией mapBuildMtw.
                     // По данному объекту устанавливается рамка создаваемой матрицы
Создание матрицы качеств, занесение значений качеств, GISToolKit Active С#
 
Это значит, что mapSaveMtq выполнилась без ошибки (судя по её описанию)

 // Записать изменения матрицы в файл
 // hMap       - идентификатор открытой карты
 // number     - номер файла в цепочке
 // При ошибке возвращает ноль

_MAPIMP long int _MAPAPI mapSaveMtq(HMAP hMap, long int number);

Предлагаю проверить - вообще воспринимается ли задаваемая палитра ?

Для этого можно задать какие-то простые цвета (2 цвета - чёрный и белый):

Pallete[0] = Program.frm1.GetBGR(0, 0, 0);
Pallete[1] = Program.frm1.GetBGR(255, 255, 255);

PalleteCount = 2;

Затем 2 цвета - красный и синий

Pallete[0] = Program.frm1.GetBGR(0, 0, 255);
Pallete[1] = Program.frm1.GetBGR(255, 0, 0);

Может быть что-то станет яснее ?
Изменено: Александр Горбунов - 09.12.2016 12:21:43
Создание матрицы качеств, занесение значений качеств, GISToolKit Active С#
 
Попробуйте перед вызовом mapCloseData вызвать дополнительно mapSaveMtq() - сохранить изменения матрицы в файле.
А в остальном вроде бы всё правильно написано.
Создание матрицы качеств, занесение значений качеств, GISToolKit Active С#
 
Сообщаю результаты проверки создания MTQ по Вашей карте.
Проверка выполнялась путём вызова API-функций, без применения GIS ToolKit.
Проверка выполнена успешно, матрица качеств создаётся.
Предлагаем обновить библиотеки GIS ToolKit (если это необходимо) и повторно проверить построение.

Далее - текст примера вызова функции mtrBuildMatrixSurface.

void __fastcall TForm1::Button1Click(TObject *Sender)
{
// Открыть векторную карту
HMAP hMap = mapOpenMap("D:\\1\\Agro.sit", 0);

if (hMap == 0)
{
  ShowMessage("hMap (Agro.sit) == 0 !!!");
  return;
}

double X1 = mapGetMapX1(hMap);
double X2 = mapGetMapX2(hMap);

double Y1 = mapGetMapY1(hMap);
double Y2 = mapGetMapY2(hMap);
// Заполнение структуры параметров создаваемой матрицы MTQ

BUILDSURFACE MtrParm;

memset(&MtrParm,0,sizeof(MtrParm));

MtrParm.StructSize = sizeof(MtrParm);

MtrParm.FileMtw = 0;

// Начало матрицы  (юго-западный угол)
MtrParm.BeginX = X1;
MtrParm.BeginY = Y1;

// Размеры матрицы
MtrParm.Width  = Y2 - MtrParm.BeginY;
MtrParm.Height = X2 - MtrParm.BeginX;

MtrParm.MinValue = 2.0;
MtrParm.MaxValue = 8.0;

MtrParm.SearchSectorCount = 8;

// Размер элемента
MtrParm.ElemSizeMeters = 10;

// Палитра
COLORREF Palet[15];
Palet[0] = RGB(255, 0, 0);
Palet[1] = RGB(230, 55, 7);
Palet[2] = RGB(230, 152, 7);
Palet[3] = RGB(230, 185, 7);
Palet[4] = RGB(255, 255, 0);
Palet[5] = RGB(232, 255, 26);
Palet[6] = RGB(194, 255, 26);
Palet[7] = RGB(152, 255, 26);
Palet[8] = RGB(0, 255, 0);
Palet[9] = RGB(3, 255, 192);
Palet[10] = RGB(3, 255, 154);
Palet[11] = RGB(3, 255, 226);
Palet[12] = RGB(3, 238, 255);
Palet[13] = RGB(3, 104, 255);
Palet[14] = RGB(0, 0, 255);

MtrParm.Palette = Palet;
MtrParm.PaletteCount = 15;

// Метод построения (Логарифмическая интерполяция)
MtrParm.Method = 9;

// Код семантики моделируемой характеристики
MtrParm.SemanticCode = 540;

MtrParm.LocalSurfacePointCount = 32;
MtrParm.MaxMetricCutLength = 50;
MtrParm.IsMetricCutLength = 1;
MtrParm.DistBeforePointsInEmptyRegion = 100;
MtrParm.LimitOffset = 10;


// Построение матрицы качеств по данным векторной карты
//-------------------------------------------------------------------------
int rc = mtrBuildMatrixSurface(hMap, "AGRO.MTQ", &MtrParm);
//-------------------------------------------------------------------------


if (rc)
  MessageBox(0, "СОЗДАНИЕ МАТРИЦЫ", "       ВЫПОЛНЕНО        ", ID_OK);
else
  MessageBox(0, "СОЗДАНИЕ МАТРИЦЫ", "       НЕ ВЫПОЛНЕНО  ...      ", ID_OK);

// Закрыть векторную карту
mapCloseData(hMap);
}
Изменено: Александр Горбунов - 02.12.2016 18:52:25
Создание матрицы качеств, занесение значений качеств, GISToolKit Active С#
 
Причину сообщения "Ошибка моделирования поверхности" трудно выяснить "заочно" - без данных.
Просим выслать карту (или её фрагмент), по которой выполняется построение MTQ
[URL=mailto:panorama@gisinfo.ru]panorama@gisinfo.ru[/URL]
Изменено: Александр Горбунов - 30.11.2016 15:44:22
Создание матрицы качеств, занесение значений качеств, GISToolKit Active С#
 
Создавать пустую матрицу для данной функции не нужно, функция сама должна создавать файл mtq.
Попробуйте пожалуйста вот такой вариант:
1) обнулите всю структуру surface перед заполнением,
2) задайте метод surface.Method = 9; (Логарифмическая интерполяция).
Создание матрицы качеств, занесение значений качеств, GISToolKit Active С#
 
Функция mtrCalcCharacteristic  выполняет
вычисление характеристики по найденным ближайшим значениям.
Значения характеристики для вычисления результата берутся из объектов карты (карта - 1-ый параметр).
Поиск объектов карты выполняется по 8 секторам (центр секторов - в заданной точке).
Используются только разные ближайшие значения. Метод вычисления результата - средневзвешенная интерполяция.

// Вычисление значения характеристики в заданной точке
// по данным векторной карты.
// Характеристика задается кодом семантики - semanticCode.
// Координаты точки (point->X,point->Y) задаются в метрах в
// системе координат векторной карты.
// Вычисленное значение характеристики заносится в value.
// flagSelect - флаг использования условий отбора объектов карты.
// Если flagSelect = 0, то выполняется поиск заданной характеристики
// по всем объектам векторной карты.
// Если flagSelect = 1, то поиск заданной характеристики выполняется
// только по объектам, удовлетворяющим условиям отбора (HSELECT),
// установленным для векторной карты.
// В случае ошибки возвращает 0

long int MTREXPORT mtrCalcCharacteristic(HMAP hMap,
                                                                       DOUBLEPOINT* point,
                                                                       long int semanticCode,
                                                                       long int flagSelect,
                                                                       double*  value);
Изменено: Александр Горбунов - 29.11.2016 17:17:12
Страницы: Пред. 1 ... 4 5 6 7 8 9 10 11 12 13 14 ... 38 След.



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

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