// Запросить параметры проекции и системы координат по коду EPSG
// Если код EPSG задает геодезическую систему координат,
// то устанавливается проекция Широта\Долгота и соответствующие
// параметры эллипсоида и датум
// Если код EPSG задает плоскую прямоугольную систему координат,
// то все параметры устанавливаются из базы EPSG
// parm - параметры системы координат и проекции
// datum - параметры пересчета с эллипсоида рабочей системы координат
// к WGS-84
// ellipsoid - параметры пользовательского эллипсоида для рабочей
// системы координат
// При ошибке возвращает 0
_MAPIMP long int _MAPAPI mapGetParametersForEPSG(long int epsgcode,
MAPREGISTEREX *mapreg,
DATUMPARAM *datum,
ELLIPSOIDPARAM *ellipsoid);
Да, прошу прощения. Не принял во внимание, что речь о ГСК-2011. В БД EPSG ее нет.
Оставшиеся параметры Вы можете получить следующим образом.
MAPREGISTEREX - запросить с помощью функции mapRegisterFromMapType (описана в mapapi.h). Значение флага "Тип карты" для ГСК-2011 (см. mapcreate.h): GCK_2011 = 21, // Система координат ГСК-2011, требует осевой меридиан
Скрытый текст
Код
// Типы флага "Тип карты"
typedef enum MAPTYPE
{
// UNDEFINED = -1, // Не установлено
TOPOGRAPHIC = 1, // Топографическая (СК42), требует осевой меридиан
CK_42 = 1, // Система координат 42 года, требует осевой меридиан
GEOGRAPHIC = 2, // Обзорно-географическая (тип и эллипсоид зависят от параметров)
GLOBE = 3, // Космонавигационная (ГЛОБУС, цилиндрическая на эллипсоиде Красовского)
CITYPLAN = 4, // Топографический план города (СК42 с произвольными номенклатурами)
LARGESCALE = 5, // Крупномасштабный план местности
AERONAUTIC = 6, // Аэронавигационная
SEANAUTICOLD = 7, // Цилиндрическая Меркатора, имеет нестандартные коэффициенты пересчета
// плоских координат
AVIATION = 8, // Авиационная (Цилиндрическая на эллипсоиде Красовского)
BLANK = 9, // Бланковка (Цилиндрическая на эллипсоиде Красовского)
UTMNAD27 = 10, // UTM на North American Datum 1927, требует осевой меридиан
UTMWGS84 = 11, // UTM на WGS84, требует осевой меридиан
UTMTYPE = 12, // UTM, требует осевой меридиан
CK_63 = 13, // Система координат 63 года, требует осевой меридиан
CK_95 = 14, // Система координат 95 года, требует осевой меридиан
TOPOLOCAL = 15, // Топографическая с произвольной главной точкой, требует осевой меридиан
MAPSPHERE = 16, // Обзорно-географическая Широта/Долгота на "шаре",
// можно выбрать эллипсоид
WORLDMAP = 17, // Карта Мира (Цилиндрическая Миллера), можно выбрать эллипсоид
MCK_CK63 = 18, // Местная система координат на базе СК-63
MERCATOR = 19, // Цилиндрическая Меркатора на шаре "World Mercator" (EPSG:3857, EPSG:3395)
//(аналог Google), можно выбрать эллипсоид
SEANAUTIC = 20, // Морская навигационная (Mercator_2SP), можно выбрать эллипсоид
// (Цилиндрическая равноугольная Меркатора на эллипсоиде WGS84)
GCK_2011 = 21, // Система координат ГСК-2011, требует осевой меридиан
MAPTYPELIMIT = 21, // Крайнее значение типа карты // 12/01/12
}
MAPTYPE;
поля структуры DATUMPARAM определены для ГСК-2011 в mapcreate.h в виде констант:
Скрытый текст
Код
typedef struct DATUMPARAM
{
double DX; // Сдвиги по осям в метрах
double DY;
double DZ;
double RX; // Угловые поправки в секундах
double RY;
double RZ;
double M; // Поправка масштаба
int Count; // 3 или 7 (14 - признак пересчета через ПЗ-90.02 для СК42\95)
int Reserve; // Равно 0
}
DATUMPARAM;
// ГСК-2011 -> WGS-84
#define DX_GCK2011_WGS84 0.01
#define DY_GCK2011_WGS84 -0.12
#define DZ_GCK2011_WGS84 -0.03
#define RX_GCK2011_WGS84 0.001738
#define RY_GCK2011_WGS84 -0.003559
#define RZ_GCK2011_WGS84 0.004263
#define M_GCK2011_WGS84 0.0000000074
Осевой меридиан в структуре MAPREGISTEREX необходимо установить вручную.
В наших константах, как Вы сами можете видеть, содержаться угловые значения параметров трансформирования WGS к ГСК-2011, соответствующие коэффициентам трансформирования из ПЗ-90.02. Если Вы желаете полностью соблюсти Приказ Росреестра, то можете задать эти коэффициенты самостоятельно (см. угловые поправки в секундах - RX_GCK2011_WGS84, RY_GCK2011_WGS84, RZ_GCK2011_WGS84 и поправку масштаба - M_GCK2011_WGS84). Но тогда Вы получите расхождение при пересчете в другие СК.
При этом расхождение в результатах трансформирования к ГСК-2011 из WGS с текущими коэффициентами или с приведенными в Приказе составляет единицы сантиметров.
Скрытый текст
Цитата
Для справки - погрешности, заложенные в самом Приказе: Погрешность привязки ГСК-2011 к центру Земли и разворотов относительно Международной земной системы координат характеризуется величиной 0,1 м. Погрешность относительной привязки постоянно действующих пунктов ФАГС составляет 0,02 м. Погрешность ГСК-2011, реализуемой системой ГЛОНАСС, характеризуется величиной 0,1 м. Погрешность определения высот квазигеоида составляет 0,2 м.
Мизерную, но все же погрешность можно получить из-за преобразований градусов к радианам и обратно.