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

Объект создаётся с неправильными координатами

Поиск  Пользователи  Правила  Войти
Форум » Linux » Средства разработки ГИС-приложений для Linux
Страницы: 1
RSS
Объект создаётся с неправильными координатами
 
Здравствуйте.

На пользовательской карте (создана Панорамой-Мини под Астрой 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

Никак не могу понять, что я не так делаю?
Изменено: Сергей Гамов - 04.03.2022 09:47:45
 
Цитата
Сергей Гамов написал:
Здравствуйте. На пользовательской карте (создана Панорамой-Мини под Астрой 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?
Зачем задавать хранение геодезических координат, если запись идет в плоских прямоугольных?
Изменено: Елена Кузнецова - 04.03.2022 10:26:47
 
Да, эллипсоид. А тип карты - на диалоге "Создание карты" есть такой комбобокс, выбираю значение "Широта/Долгота"

Сюда как-то можно скриншот загрузить?
Изменено: Сергей Гамов - 04.03.2022 10:34:06
 
Цитата
Елена Кузнецова написал:
ачем задавать хранение геодезических координат, если запись идет в плоских прямоугольных?
Я координаты передаю в функцию в метрах, потому что так написано в документации. Других вариантов не предусмотрено.

Код
// Добавить в конец метрики объекта точку
 // в прямоугольной системе в метрах на местности в проекции карты
 // info    - идентификатор объекта карты в памяти
 // x,y     - координаты точки в метрах
 // subject - номер подобъекта (если = 0, обрабатывается объект)
 // Значение координат задано в метрах на местности
 // Для изменения координаты Н необходимо далее
 // выполнить функцию SetHPlane(...)
 // Возвращает номер добавленной точки в подобъекте (с 1)
 // При ошибке возвращает ноль


_MAPIMP long int _MAPAPI mapAppendMapPointPlane(HOBJ info, double x, double y, long int subject = 0);

Изменено: Сергей Гамов - 04.03.2022 10:43:22
 
Есть много функций:
Код
 // Добавить в конец метрики объекта точку
 // 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 с нашего сайта, проблемы с координатами не увидели.
Изменено: Елена Кузнецова - 04.03.2022 14:00:34
 
Цитата
Елена Кузнецова написал:
проблемы с координатами не увидели.
Странно. Впрочем, это уже неважно, потому что вызов mapAppendPointGeo решил все проблемы.

Спасибо.
Страницы: 1
Читают тему (гостей: 1)



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

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