Если функция вернула нулевые значения габаритов в метрах, значит они нулевые.
Подбирать единицы измерения и пересчитывать не нужно.
Функция примерно такая:
[CODE] TMap * map = mapGetMap(hMap, hSite);
frame.X1 = map->X1m();
frame.Y1 = map->Y1m();
frame.X2 = map->X2m();
frame.Y2 = map->Y2m();
if (map->NeedTranslate() != 0)
{
// Пересчитать габариты в рабочую проекцию
((TMapAccess*)hMap)->TranslateFrameFromMap(frame, map->GetTranslate());
}
[/CODE]
Например, если карта создана программно в сеансе работы приложения, запись с отключением журнала транзакций (ускоренно),
отображения не было, вызова функций типа mapSaveSite не было, то габариты еще нулевые, хотя объекты уже записывались.
Или карта создана программно с ограничением территории рамкой, но координаты рамки не были установлены - они нулевые. И т.п.
Но, скорее всего, открыты совместно карты и растры с ошибочными или несовместимыми параметрами систем координат. Пример ошибочных параметров системы координат: имеем топокарту (UTM/Гаусса-Крюгера) с координатой Y в 7-ой зоне (с 7 000 000), а в паспорте указана 1-я зона и осевой меридиан - 3 градуса или 0.
Пример несовместимых систем координат: первая фоновая топокарта карта в 7-ой зоне, а другая - в 15-ой. А система координат документа автоматически установлена по первой открытой карте.
Преобразования координат за границами 3-ех зон от зоны документа (на самом деле дальше, но это уже ошибка) будут давать линию меридиана по границе крайней допустимой зоны, а габариты соответственно будут нулевыми.
Если работа (речь только о топокартах!) ведется на территории в пределах 3-ех зон (ширина зоны условно около 500 км), но проявляются такие ошибки, то скорее всего в паспорте карты мусор.
Тогда нужно вбить правильные параметры и забыть про лишние пересчеты.
Проверьте каждый набор данных, открыв его совместно с любым геопорталом - не сидит, значит ошибка в данных. Подбор пересчетов не поможет.
Подбирать единицы измерения и пересчитывать не нужно.
Функция примерно такая:
[CODE] TMap * map = mapGetMap(hMap, hSite);
frame.X1 = map->X1m();
frame.Y1 = map->Y1m();
frame.X2 = map->X2m();
frame.Y2 = map->Y2m();
if (map->NeedTranslate() != 0)
{
// Пересчитать габариты в рабочую проекцию
((TMapAccess*)hMap)->TranslateFrameFromMap(frame, map->GetTranslate());
}
[/CODE]
Например, если карта создана программно в сеансе работы приложения, запись с отключением журнала транзакций (ускоренно),
отображения не было, вызова функций типа mapSaveSite не было, то габариты еще нулевые, хотя объекты уже записывались.
Или карта создана программно с ограничением территории рамкой, но координаты рамки не были установлены - они нулевые. И т.п.
Но, скорее всего, открыты совместно карты и растры с ошибочными или несовместимыми параметрами систем координат. Пример ошибочных параметров системы координат: имеем топокарту (UTM/Гаусса-Крюгера) с координатой Y в 7-ой зоне (с 7 000 000), а в паспорте указана 1-я зона и осевой меридиан - 3 градуса или 0.
Пример несовместимых систем координат: первая фоновая топокарта карта в 7-ой зоне, а другая - в 15-ой. А система координат документа автоматически установлена по первой открытой карте.
Преобразования координат за границами 3-ех зон от зоны документа (на самом деле дальше, но это уже ошибка) будут давать линию меридиана по границе крайней допустимой зоны, а габариты соответственно будут нулевыми.
Если работа (речь только о топокартах!) ведется на территории в пределах 3-ех зон (ширина зоны условно около 500 км), но проявляются такие ошибки, то скорее всего в паспорте карты мусор.
Тогда нужно вбить правильные параметры и забыть про лишние пересчеты.
Проверьте каждый набор данных, открыв его совместно с любым геопорталом - не сидит, значит ошибка в данных. Подбор пересчетов не поможет.