На пользовательской карте (создана Панорамой-Мини под Астрой 1.6, классификатор operator.rsc, масштаб 1:200000, СК П3-90.11, тип карты широта/долгота, координаты геодезические, остальные параметры по умолчанию) пытаюсь создать объект карты. Последовательность создания - как в документации, т.е. mapCreateObject, затем mapAppendSemanticUn, mapRegisterObject, mapAppendMapPointPlane и наконец mapCommitObject. Объект создаётся, но имеет не те координаты, которые я передаю в mapAppendMapPointPlane. При этом координата Y правильная, а X искажается. Для контроля можно попробовать excode = 101010060, local = LOCAL_VECTOR, точки в метрику (7760118.672902452, 4118821.159351122) и (7760118.672902452, 4118822.159351122), семантика 9 любая строка. После создания флажок оказывается в точке с X = 10975087.493
Сергей Гамов написал: Здравствуйте. На пользовательской карте (создана Панорамой-Мини под Астрой 1.6, классификатор operator.rsc, масштаб 1:200000, СК П3-90.11, тип карты широта/долгота, координаты геодезические, остальные параметры по умолчанию) пытаюсь создать объект карты. Последовательность создания - как в документации, т.е. mapCreateObject, затем mapAppendSemanticUn, mapRegisterObject, mapAppendMapPointPlane и наконец mapCommitObject. Объект создаётся, но имеет не те координаты, которые я передаю в mapAppendMapPointPlane. При этом координата Y правильная, а X искажается.Для контроля можно попробовать excode = 101010060, local = LOCAL_VECTOR, точки в метрику (7760118.672902452, 4118821.159351122) и (7760118.672902452, 4118822.159351122), семантика 9 любая строка. После создания флажок оказывается в точке с X = 10975087.493Никак не могу понять, что я не так делаю?
Добрый день! Что такое СК П3-90.11, тип карты широта/долгота ? Это широта\долгота на эллипсоиде ПЗ-90.11? Зачем задавать хранение геодезических координат, если запись идет в плоских прямоугольных?
Елена Кузнецова написал: ачем задавать хранение геодезических координат, если запись идет в плоских прямоугольных?
Я координаты передаю в функцию в метрах, потому что так написано в документации. Других вариантов не предусмотрено.
Код
// Добавить в конец метрики объекта точку
// в прямоугольной системе в метрах на местности в проекции карты
// info - идентификатор объекта карты в памяти
// x,y - координаты точки в метрах
// subject - номер подобъекта (если = 0, обрабатывается объект)
// Значение координат задано в метрах на местности
// Для изменения координаты Н необходимо далее
// выполнить функцию SetHPlane(...)
// Возвращает номер добавленной точки в подобъекте (с 1)
// При ошибке возвращает ноль
_MAPIMP long int _MAPAPI mapAppendMapPointPlane(HOBJ info, double x, double y, long int subject = 0);
// Добавить в конец метрики объекта точку
// info - идентификатор объекта карты в памяти
// b,l - координаты точки в радианах в системе координат документа
// subject - номер подобъекта (если = 0, обрабатывается объект)
// Значение координат должно соответствовать системе координат,
// проекции и эллипсоиду карты
// Возвращает номер добавленной точки в подобъекте (с 1)
// При ошибке возвращает ноль
_MAPIMP long int _MAPAPI mapAppendPointGeo(HOBJ info, double b, double l, long int subject = 0);
// Добавить в конец метрики объекта точку
// subject - номер подобъекта (если = 0, обрабатывается объект)
// Значение координат задано в радианах на эллипсоиде WGS84
// Возвращает номер добавленной точки в подобъекте (с 1)
// При ошибке возвращает ноль
_MAPIMP long int _MAPAPI mapAppendPointGeoWGS84(HOBJ info, double b, double l, long int subject);
_MAPIMP long int _MAPAPI mapAppendPointGeoWGS843D(HOBJ info, double b, double l, double h, long int subject);
// Вставить в метрику объекта точку
// info - идентификатор объекта карты в памяти
// b,l - координаты точки в радианах
// number - номер точки за которой будет добавлена новая точка
// subject - номер подобъекта (если = 0, обрабатывается объект)
// Значение координат должно соответствовать системе координат,
// проекции и эллипсоиду карты
// Для изменения координаты Н необходимо далее
// выполнить функцию HPlane(...)
// При ошибке возвращает ноль
_MAPIMP long int _MAPAPI mapInsertPointGeo(HOBJ info, double b, double l, long int number, long int subject = 0);
// Изменить координаты точки метрики
// info - идентификатор объекта карты в памяти
// b,l - координаты точки в радианах
// number - номер обновляемой точки
// subject - номер подобъекта (если = 0, обрабатывается объект)
// Значение координат должно соответствовать системе координат,
// проекции и эллипсоиду карты
// При ошибке возвращает ноль
_MAPIMP long int _MAPAPI mapUpdatePointGeo(HOBJ info, double b, double l,
long int number, long int subject = 0);
_MAPIMP long int _MAPAPI mapUpdatePointGeo3D(HOBJ info, double b, double l,
double h, long int number, long int subject = 0);
Ой, действительно. Что-то я протормозил - в руководстве программиста посмотрел, как делать, а заголовочный файл не изучил. Большое спасибо, подберу что-нибудь подходящее.
Сергей Гамов написал: Для контроля можно попробовать excode = 101010060, local = LOCAL_VECTOR, точки в метрику (7760118.672902452, 4118821.159351122) и (7760118.672902452, 4118822.159351122), семантика 9 любая строка. После создания флажок оказывается в точке с X = 10975087.493
Проверили в программе ГИС Панорама Мини Astra Linux 1.6 с нашего сайта, проблемы с координатами не увидели.