Добрый день.
У нас в программе нужно открыть карту любого типа (векторная, растровая) и отобразить ее на глобусе. При этом модуль, отображающий карту на глобусе, предполагает, что карта -- в проекции с кодом EPSG 4326.
Для того, чтобы выполнить его пожелание, после открытия карты выполняются функции из mapapi.h: mapGetParametersForEPSG(4326, ...) и mapSetDocProjection(hMap, ...). И только после этого функция mapPaintToImage(hMap, ...). Полученной image и пользуется модуль отображения на глобусе.
В описании функции mapSetDocProjection() написано:
И действительно, векторные карты отображаются на глобусе нормально, а растровые - или не отображаются совсем, или отображаются и даже в нужном месте, но ужимаются в два раза по горизонтали.
Собственно, вопрос. Как трансформировать растровую карту к нужной проекции?
У нас в программе нужно открыть карту любого типа (векторная, растровая) и отобразить ее на глобусе. При этом модуль, отображающий карту на глобусе, предполагает, что карта -- в проекции с кодом EPSG 4326.
Для того, чтобы выполнить его пожелание, после открытия карты выполняются функции из mapapi.h: mapGetParametersForEPSG(4326, ...) и mapSetDocProjection(hMap, ...). И только после этого функция mapPaintToImage(hMap, ...). Полученной image и пользуется модуль отображения на глобусе.
В описании функции mapSetDocProjection() написано:
Код |
---|
// После установки общих параметров проекции изображение карты формируется // в заданной проекции. Векторные карты, имеющие другие параметры // проекции, трансформируются в процессе отображения. // Матрицы и растры не трансформируются при отображении и должны иметь // те же параметры проекции, что и общие параметры документа |
И действительно, векторные карты отображаются на глобусе нормально, а растровые - или не отображаются совсем, или отображаются и даже в нужном месте, но ужимаются в два раза по горизонтали.
Собственно, вопрос. Как трансформировать растровую карту к нужной проекции?