Какими средствами Вы заполняли элементы матрицы ?
Вот пример создания матрицы качеств (MTQ), формат которой совпадает с форматом MTW.
Различие только в наличии палитры в файле MTQ.
Создание сделано с использованием API-средств (mtrapi.h)
void __fastcall TForm1::Button1Click(TObject *Sender)
{
COLORREF palette[64];
// Заполнение структуры параметров создаваемой матрицы качеств
BUILDMTW MtrParm;
memset(&MtrParm,0,sizeof(MtrParm));
MtrParm.StructSize = sizeof(MtrParm);
MtrParm.BeginX = 6160000; // Начало матрицы (юго-западный угол)
MtrParm.BeginY = 7415000;
MtrParm.Width = 10000; // Размеры матрицы
MtrParm.Height = 5000;
MtrParm.ElemSizeMeters = 20; // Размер элемента в метрах
MtrParm.ElemSizeBytes = 8; // Размер элемента в байтах (тип double)
MtrParm.Scale = 100000; // Масштаб матричной карты
// Создание файла матрицы качеств
HMAP hMtq = mapCreateMtq("Matrix.mtq", &MtrParm, 0, palette, 64);
if (hMtq == 0)
{
::MessageBox(0,"ОШИБКА СОЗДАНИЯ МАТРИЦЫ КАЧЕСТВ","MTQ Creation",MB_OK | MB_TASKMODAL | MB_ICONEXCLAMATION);
return;
}
// Заполнение палитры матрицы
COLORREF firstColor = RGB(255,0,0);
COLORREF mediumColor = RGB(0,255,0);
COLORREF lastColor = RGB(0,0,255);
int rcPalette = mapSetMtqTwoIntervalPalette(hMtq, firstColor, mediumColor, lastColor, 64, 20, 1);
double Elem = MtrParm.ElemSizeMeters; // Размер элемента в метрах
double Value = 0; // Заносимое значение качества
double BegX = MtrParm.BeginX + Elem/2; // Габариты участка местности
double BegY = MtrParm.BeginY + Elem/2;
double EndX = MtrParm.BeginX + MtrParm.Height - Elem/2;
double EndY = MtrParm.BeginY + MtrParm.Width - Elem/2;
int errPutMtqValue = 0;
// Цикл заполнения элементов матрицы качеств
// для участка местности : {BegX,BegY} -> {EndX,EndY}
for (double X = BegX; X <= EndX; X += Elem)
{
for (double Y = BegY; Y <= EndY; Y += Elem)
{
// Вычисление значения качества
Value = Value + 1.0;
// Вывод значения качества в матрицу
if (mapPutMtqValue(hMtq, 1, X, Y, Value) == 0) errPutMtqValue = 1;
}
}
// Установить диапазон отображаемых элементов матрицы качеств
int rcShowRange = mapSetMtqShowRange(hMtq, 1, 0.0, Value);
// Закроем созданную матрицу
mapCloseMtq(hMtq, 1);
if (rcPalette && rcShowRange && errPutMtqValue == 0)
MessageBox(0, "Выполнено", "Построение матрицы качеств", MB_OK);
else
MessageBox(0, "Не выполнено", "Построение матрицы качеств", MB_OK);
}