Добрый день! С GTK Вы получите тоже результат, т.к. ГИС-ядро одно и тоже. Вам необходимо в Гис - вьювере сохранить в sxf. Потом этот sxf открыть в новой версии ГИС Карта.
На картинке 2 объекта, созданные по Вашим координатам в ГИС Карта. [IMG]http://s017.radikal.ru/i402/1508/ae/23f27c4ef3b1.png[/IMG] Матрицы в этих точках нет.
Вы запрашиваете координату за пределами матрицы. Для проверки откройте матрицу в ГИС Карта 2011 и посмотрите значения матрицы по Вашим координатам. Проверьте в Вашем приложении алгоритм работы с координатами.
При пересылке карты, лучше присылать sxf и rsc, а не просто файл с расширением *.map
Между клиентом и сервером передаются двоичные данные – координаты объектов, атрибуты, блоки данных растров и матриц. Для быстрого доступа к данным при первом открытии требуется высокоскоростное соединение клиента и сервера, например, по сети Ethernet 100 Мбит\сек или выше. Открытые данные кэшируются на клиенте, а при обновлении данных автоматически передаются только измененные объекты, что обеспечивает дальнейшую комфортную работу и при низкой пропускной способности соединений.
Здравствуйте! В GTK готового механизма кеширования и синхронизации нет. Для решения Вашей задачи рекомендуем использовать ГИС Сервер. Кроме кеширования, с помощью него Вы также сможете организовать разграничение правд доступа к данным.
Здравствуйте! Если Вы используете карту и матрицу Подольска из примера, то это, возможно, связано с тем, что запрашиваете высоту с координатами за пределами рамки листа. Повторить Вашу ошибку не удалось. Можете прислать Ваши данные и приложение.
Например, можете посмотреть с помощью функции // Запросить общие параметры проекции документа для отображения, // печати и расчета координат // hmap - идентификатор открытых данных (документа) // Структуры MAPREGISTER, DATUMPARAM и ELLIPSOIDPARAM описаны в mapcreat.h // Если параметры не устанавливались функцией mapSetMapInfoEx, // то они соответствуют параметрам карты, открытой в документе первой // При ошибке возвращает ноль
_MAPIMP long int _MAPAPI mapGetDocProjection(HMAP hMap, MAPREGISTEREX * map, DATUMPARAM * datum, ELLIPSOIDPARAM * ellparm);
или
// Запросить паспортные данные векторной карты // Структуры MAPREGISTER и LISTREGISTER описаны в mapcreat.h // hmap - идентификатор открытых данных // sheetnumber - номер листа карты для // которого запрашиваются паспортные данные // При ошибке возвращает ноль
_MAPIMP long int _MAPAPI mapGetMapInfo(HMAP hmap, long int sheetnumber, MAPREGISTER *map, LISTREGISTER *sheet); _MAPIMP long int _MAPAPI mapGetMapInfoEx(HMAP hmap, long int sheetnumber, MAPREGISTEREX *map, LISTREGISTER *sheet); _MAPIMP long int _MAPAPI mapGetMapInfoPro(HMAP hmap, long int sheetnumber, MAPREGISTEREX *map, LISTREGISTER *sheet, SHEETNAMES * sheetnames);
Для преобразования координат посмотрите mapapi.h, который содержит множество функций преобразования координат из одной системы в другую.
Попробуйте для вычисление площади воспользоваться вариантом предложенным KFF. Только вместо mapLength использовать mapSquare. Еще при вычислении и длины, и площади стоит учитывать, как выполняются эти вычисления: в проекции карты или на местности. Устанавливается с помощью функции mapSetCalculationConventional. Если в Вашем приложении и, например, в ГИС Карта, у Вас разные условия выполнения вычислений по карте, то и значения будут отличаться.