Цитата |
---|
Спасибо. Подскажите аналогичные функции для векторных карт. |
Код |
---|
// Трансформировать векторную карту в заданную систему координат
// hMap - идентификатор открытого документа
// hSite - идентификатор открытой пользовательской карты в документе
// mapname - имя создаваемой карты
// mapreg - адрес структуры, описанной в mapcreat.h
// ellparam - параметры эллипсоида (необязательный параметр)
// datum - параметры DATUM для карты (необязательный параметр)
// ttype - тип локального преобразования координат (см. TRANSFORMTYPE в mapcreat.h) или 0
// tparm - параметры локального преобразования координат или 0
// issavecopy - признак создания копии исходной карты в поддиректории ИМЯКАРТЫ.YYYYMMDD.HHMMSS
// error - код ошибки при выполнении трансформирования
// callevent - адрес функции обратного вызова для уведомления о проценте обработанных наборов данных (см. maptype.h)
// parm - адрес параметров, которые будут переданы при вызове функции (обычно адрес класса управляющей программы),
// вторым параметром в вызываемой функции передается процент от 0 до 100
// При ошибке возвращает ноль
_MAPIMP long int _MAPAPI mapTransformationMapEx(HMAP hMap, HSITE hSite, HMESSAGE hmessage, MAPREGISTEREX * mapreg, DATUMPARAM * datum,
ELLIPSOIDPARAM * ellparam, long int ttype, LOCALTRANSFORM * tparm,
long int issavecopy, long int * error, EVENTSTATE callevent, void * callparm);
// Трансформировать векторную карту в заданную систему координат по заданному пути
// hMap - идентификатор открытого документа
// hSite - идентификатор открытой пользовательской карты в документе
// mapname - имя создаваемой карты в заданной системе координат
// mapreg - адрес структуры, описанной в mapcreat.h
// ellparam - параметры эллипсоида (необязательный параметр)
// datum - параметры DATUM для карты (необязательный параметр)
// При ошибке возвращает ноль
_MAPIMP long int _MAPAPI mapTransformationMap(HMAP hMap, HSITE hSite, const WCHAR * mapname,
MAPREGISTEREX * mapreg, DATUMPARAM * datum, ELLIPSOIDPARAM * ellparam);
|
Существует другой подход.
Если проекция добавляемых данных отличается от проекции документа, то возможно преобразовывать карту "на лету" при отображении.
При добавлении данных в документ возможно управлять трансформированием карт, если их проекция отличается от проекции документа.
В функции mapAppendAnyData предусмотрен входной параметр transform, который позволяет физически трансформировать карту, или не модифицируя файл карты преобразовывать её "на лету" при отображении.
Код |
---|
// Добавить данные к открытой карте (карту, растр, матрицу)
// hMap - идентификатор открытых данных
// name - имя открываемого файла (MAP, SITX, SIT, MTW, MTQ, RSW, MPT) в кодировке UNICODE
// mode - режим чтения/записи (GENERIC_READ, GENERIC_WRITE или 0)
// transform - признак трансформирования пользовательской карты
// к ранее открытым данным (если проекции разные):
// 0 - не трансформировать данные (преобразовывать "на лету"),
// 1 - трансформировать данные при открытии и сохранить карту
// в новой проекции,
// -1 - задать вопрос пользователю.
// В серверной версии (-1) обрабатывается, как 0.
// password - пароль доступа к данным из которого формируется 256-битный код
// для шифрования данных (при утрате данные не восстанавливаются)
// size - длина пароля в байтах !!!
// Передача пароля необходима, если при создании карты он был указан.
// Если пароль не передан, а он был указан при создании,
// то автоматически вызывается диалог scnGetMapPassword из mapscena.dll (gis64dlgs.dll)
// Если выдача сообщений запрещена (mapIsMessageEnable()), то диалог
// не вызывается, а при отсутствии пароля происходит отказ открытия данных
// Возвращает идентификатор типа данных (FILE_MAP - для векторной
// карты, FILE_RSW - для растра, FILE_MTW - для матрицы, FILE_MTL - для
// матрицы слоев, FILE_MTQ - для матрицы качеств), данные добавляются в
// список последними, если данные уже были открыты, число открытых данных
// (карт, растров, матриц) не меняется
// При ошибке возвращает ноль
_MAPIMP long int _MAPAPI mapAppendAnyDataPro(HMAP hMap, const WCHAR *name, long int mode = 0, long int transform = -1,
const WCHAR *password = 0, long int size = 0);
_MAPIMP long int _MAPAPI mapAppendAnyData(HMAP hMap, const WCHAR *name, long int mode = 0, long int transform = -1);
|