Здравствуйте! Ответьте пожалуйста на несколько вопросов.
1) Можно ли сделать так, чтобы растр располагался между картой местности и пользовательскими картами?
2) Как сделать привязку растра по двум точкам с поворотом?
Нашел две функции для этого. Метод TMapRst::SetLocation2 в GisTool и функция AttachRswWithScalingAndRotation в MapAPI.
При вызове SetLocation2 появляется сообщение: "Функция AttachRswWithScalingAndRotation не найдена в библиотеке GISPICEX.DLL". Вызываю таким образом:
AttachRswWithScalingAndRotation выполняется без сообщений об ошибке, но привязку растра не выполняет. Вызываю так:
Что делаю не так? Код обоих примеров отправлен вам электронной почтой.
3) Как сохранить изменения способа отображения и прозрачности растра?
Я изменяю способ отображения и прозрачность растра так:
После этого изображение растра меняется. Но если закрыть растр, а потом открыть снова, он будет непрозрачным и расположенным над картой. То есть, изменения не сохраняются в файл растра. Что сделать, чтобы сохранялись?
4) В файле Mappicex.h объявлена функция LoadJpegToRswAndCompress, которая преобразует jpeg-файл в растр, но в gispictr.dll такой функции нет, в других библиотеках ядра ГИС вроде тоже. Из какой библиотеки ее вызывать?
1) Можно ли сделать так, чтобы растр располагался между картой местности и пользовательскими картами?
2) Как сделать привязку растра по двум точкам с поворотом?
Нашел две функции для этого. Метод TMapRst::SetLocation2 в GisTool и функция AttachRswWithScalingAndRotation в MapAPI.
При вызове SetLocation2 появляется сообщение: "Функция AttachRswWithScalingAndRotation не найдена в библиотеке GISPICEX.DLL". Вызываю таким образом:
Код |
---|
TDOUBLEPOINT old1,new1,old2,new2; old1.X = 0; old1.Y = 0; new1.X = 6050000; new1.Y = 9388287; old2.X = 0; old2.Y = 880; new2.X = 6050000; new2.Y = 9398186; // После вызова функции появляется сообщение об ошибке: // Функция AttachRswWithScalingAndRotation не найдена в библиотеке GISPICEX.DLL. MapView->MapRsts->MapRsts[1]->SetLocation2( old1, new1, old2, new2); MapView->MapRsts->MapRsts[1]->SaveRaster(); MapView->Repaint(); |
AttachRswWithScalingAndRotation выполняется без сообщений об ошибке, но привязку растра не выполняет. Вызываю так:
Код |
---|
typedef struct DOUBLEPOINT // КООРДИНАТЫ ТОЧКИ (ПЛАВАЮЩАЯ МЕТРИКА) { union { double x; double X; }; union { double y; double Y; }; void operator = (double value) { x = value; y = value; } int operator != (double value) { return (x != value || y != value); } int operator == (double value) { return (x == value && y == value); } } DOUBLEPOINT; //--------------------------------------------------------------------------- extern "C" long int _export WINAPI AttachRswWithScalingAndRotation( HMAP hmap, int handle, char* rswname, DOUBLEPOINT *pointmet1, DOUBLEPOINT *pointmetnew1, DOUBLEPOINT *pointmet2, DOUBLEPOINT *pointmetnew2, int message); //--------------------------------------------------------------------------- void __fastcall TForm1::btnAttachRswWithScalingAndRotationClick(TObject *Sender) { DOUBLEPOINT old1,new1,old2,new2; old1.X = 0; old1.Y = 0; new1.X = 6050000; new1.Y = 9388287; old2.X = 0; old2.Y = 880; new2.X = 6050000; new2.Y = 9398186; // Функция возвращает 0 и не выполняет привязку растра. AttachRswWithScalingAndRotation( MapView->FMap, 0, MapView->MapRsts->MapRsts[1]->RstFileName.c_str(), &old1, &new1, &old2, &new2, 0); MapView->MapRsts->MapRsts[1]->SaveRaster(); MapView->Repaint(); } //--------------------------------------------------------------------------- |
Что делаю не так? Код обоих примеров отправлен вам электронной почтой.
3) Как сохранить изменения способа отображения и прозрачности растра?
Я изменяю способ отображения и прозрачность растра так:
Код |
---|
TMapRst *MapRst = MapView->MapRsts->MapRsts[1]; // Делаю растр полупрозрачным и располагаю над картой MapRst->RstView = 3; MapRst->RstViewOrder = 1; MapRst->SaveRaster(); MapView->Repaint(); |
После этого изображение растра меняется. Но если закрыть растр, а потом открыть снова, он будет непрозрачным и расположенным над картой. То есть, изменения не сохраняются в файл растра. Что сделать, чтобы сохранялись?
4) В файле Mappicex.h объявлена функция LoadJpegToRswAndCompress, которая преобразует jpeg-файл в растр, но в gispictr.dll такой функции нет, в других библиотеках ядра ГИС вроде тоже. Из какой библиотеки ее вызывать?