Здравствуйте господа разработчики ! Имеется Матричная карта (mtw) которая имеет свою проекцию. Карта без проблем открывается в ГИС Карте 2011 (ГИС Операторе) и.т.п (СКАЧАТЬ)
Требуется По координатам WGS84 в радианах, получить высоту в указанной точке.
Решение ... Естественно, что перед вызовом функции идёт mapOpenMTR... проверки на валидность карты и входящих координат
Код
function GetMagVar(mtwMagVar : HMTW; iB,iL : double): variant;
var x,y,H : double;
begin
result := null;
if mtwMagVar<>0 then
begin
x:= iB; y:=iL ; // iB = 0.87703279726 iL = 0.53885586214
mapGeoWgs84ToPlane42(mtwMagVar, x, y); // эта функция корректно срабатывает
H:= mapGetHeightValue(mtwMagVar, x, y); // эта выдаёт -11111, хотя, на карте точка присутсвует
if H>-11110 then result := H;
end;
end;
Почему не срабатывает функция mapGetHeightValue первым параметром которой указатель на открытую матрицу? Особенность ! - матричная карта должна открываться отдельно и не привязана ни к одному SIT/MAP
Не тот глуп кто не знает, а тот, кто не знает где искать.
Ваша матрица скорее всего не в системе координат 42 года. Если на входе координат в WGS84 то надо воспользоваться
// Преобразование из геодезических координат в радианах // (общеземной эллипсоид WGS84) // в метры на местности в проекции карты // (поддерживается не для всех карт !) // hmap - идентификатор открытых данных // Bx,Ly,H - преобразуемые координаты // на входе радианы, на выходе - метры // При ошибке возвращает ноль
_MAPIMP long int _MAPAPI mapGeoWGS84ToPlane3D(HMAP hmap, double *Bx, double *Ly, double * H);