На главную... Продукты | Технологии | Классификаторы | Проекты | Скачать | Цены| Форум | Статьи | Обучение | Контакты

Настройка карты для работы в определенной системе координат

Поиск  Пользователи  Правила  Войти
Форум » Настольные приложения » GIS ToolKit, GIS ToolKit Active, ГИС Конструктор для Windows
Страницы: 1
RSS
Настройка карты для работы в определенной системе координат
 
Здравствуйте!
В приложении открываются различные карты - в разных системах координат. Нам хотелось бы всегда оперировать координатами в одной системе координат(wgs84). Можно ли при открытии карты, так ее настраивать, чтобы при запросе geo-координат(mapGetMapGeoPoint(),mapPlaneToGeo()...) выдавались бы всегда координаты в wgs84, и соответственно при установке объектам координат(mapAppendPointGeo()...), они воспринимались бы как wgs84?
 
Вне зависимости от системы координат конкретной карты Вы можете использовать функции, которые однозначно работают с wgs84, например, для чтения
// Запросить геодезические координаты точки в радианах на эллипсоиде WGS84
// number - номер точки (начинается с 1)
// subject - номер подобъекта (если = 0, обрабатывается объект)
// При ошибке возвращает ноль

_MAPIMP long int _MAPAPI mapGetGeoPointWGS84(HOBJ info, DOUBLEPOINT *point,
                                            long int number, long int subject);

_MAPIMP long int _MAPAPI mapGetGeoPointWGS843D(HOBJ info, DOUBLEPOINT *point,
                                              double *heigth, long int number,
                                              long int subject);
 
Это понятно. Но вопрос, можно ли настроить карту так, чтобы geo всегда было в wgs84?  
 
Уточняющий вопрос: требуется, чтобы координаты в карте были в WGS84 физически или преобразования выполнялись на лету?
 
Затрудняюсь ответвить. Не понятно, что значит физически.
Хочу, чтобы при вызове вот таких функций mapGetGeoPoint, mapPlaneToGeo, mapAppendPointGeo, mapGeoToPlane и т.д.  координаты в geo были в gws84.
 
Цитата

// Установить общие параметры проекции документа для отображения,
// печати и расчета координат
// hmap  - идентификатор открытых данных (документа)
// Структуры MAPREGISTER, DATUMPARAM и ELLIPSOIDPARAM описаны в mapcreat.h
// type  - тип локального преобразования координат (см. TRANSFORMTYPE в mapcreat.h) или 0
// parm - параметры локального преобразования координат (см. mapcreat.h)
// Устанавливать общие параметры проекции можно для документа
// поддерживающего пересчет геодезических координат (mapIsGeoSupported() != 0)
// После установки общих параметров проекции изображение карты формируется
// в заданной проекции. Векторные карты, матрицы и растры, имеющие другие параметры
// трансформируются в процессе отображения.
// Все операции с координатами (mapPlaneToGeo, mapGeoToPlane,
// mapPlaneToGeoWGS84, mapAppendPointPlane, mapInsertPointPlane,
// mapUpdatePointPlane, mapAppendPointGeo и другие) выполняются
// в системе координат документа, определяемой общими параметрами проекции
// При чтении\записи координат в конкретной карте выполняется пересчет
// из системы координат документа
// Например, при записи координат из WGS84 на карту в СК-42 можно
// установить общие параметры документа, как "Широта/Долгота на WGS84"
// и выполнить запись координат функцией mapAppendPointGeo, не заботясь
// о дополнительном пересчете координат, или считать координаты функцией
// mapGetGeoPoint (или функцией mapGetGeoPointWGS84, игнорирующей параметры
// документа).

// Чтобы установить текущие параметры проекции и системы координат, как у первой
// карты в документе можно передать в качестве параметров (кроме hMap) нули,
// или вызвать mapClearDocProjection.
// При ошибке возвращает ноль

_MAPIMP long int _MAPAPI mapSetDocProjectionPro(HMAP hMap, MAPREGISTEREX * mapreg, DATUMPARAM * datum,
                                               ELLIPSOIDPARAM * ellparm, long int ttype, LOCALTRANSFORM * tparm);

_MAPIMP long int _MAPAPI mapSetDocProjection(HMAP hMap, MAPREGISTEREX * map, DATUMPARAM * datum, ELLIPSOIDPARAM * ellparm);


// Сбросить параметры проекции документа
_MAPIMP long int _MAPAPI mapClearDocProjection(HMAP hMap);


Заполнить структуры параметров проекции по коду EPSG (для WGS-84 = 4326):

Цитата

 // Запросить параметры проекции и системы координат по коду EPSG
 // Если код EPSG задает геодезическую или геоцентрическую систему координат,
 // то устанавливается проекция Широта\Долгота и соответствующие
 // параметры эллипсоида и датум
 // Если код EPSG задает плоскую прямоугольную систему координат,
 // то все параметры устанавливаются из базы EPSG
 // epsgcode  - код EPSG, для СК-42 зоны 2-32 : 28402-28432, для СК-95 зоны 4-32: 20004-20032
 // mapreg    - параметры системы координат и проекции
 // datum     - параметры пересчета с эллипсоида рабочей системы координат к WGS84
 // ellipsoid - параметры пользовательского эллипсоида для рабочей системы координат
 // Для геодезических систем координат возвращает 2, для геоцентрических - 3,
 // для плоских прямоугольных - 1
 // При ошибке возвращает ноль

_MAPIMP long int _MAPAPI mapGetParametersForEPSG(long int epsgcode, MAPREGISTEREX * mapreg,DATUMPARAM * datum, ELLIPSOIDPARAM * ellipsoid);
 
Спасибо
Страницы: 1
Читают тему (гостей: 1)



© КБ Панорама, 1991-2024

Регистрируясь или авторизуясь на форуме, Вы соглашаетесь с Политикой конфиденциальности