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

Владимир Егоров (Все сообщения пользователя)

Поиск  Пользователи  Правила  Войти
Форум » Пользователи » Владимир Егоров
Выбрать дату в календареВыбрать дату в календаре

Страницы: Пред. 1 ... 6 7 8 9 10 11 12 13 14 15 16 ... 21 След.
Поворот объекта добавленного в классификатор?
 
То есть когда есть первая точка, если вы зададите расстояние до второй и азимут на неё, то сможете вычислить вторую точку, используя функцию:

[CODE] // Прямая геодезическая задача на эллипсоиде
// Для расстояния не более 250 км координаты определяются с ошибкой до 0,0001",
// а обратный азимут - до 0,001", что соответствует триангуляции 1 класса
// Способ вспомогательной точки по методу Красовского
// Метод предназначен для расстояний меньше радиуса Земли
// Вычисления выполняются на текущем эллипсоиде, установленном
// в документе - mapSetDocProjection
// Если hmap равен 0, то вычисления выполняются на эллипсоиде WGS-84
// hmap     - идентификатор открытых данных
// b1,l1    - геодезические координаты исходной точки
// angle1   - азимут на вторую точку
// distance - расстояние до второй точки
// b2,l2    - рассчитанные координаты второй точки
// angle2   - рассчитанный азимут со второй точки на первую
//            (если angle2 равен 0, то обратный азимут не вычисляется)
// При ошибке в параметрах возвращает 0

_MAPIMP long int _MAPAPI mapDirectPositionComputation(HMAP hmap,
                                                     double b1, double l1, double angle1,
                                                     double distance,
                                                     double *b2, double *l2, double *angle2);
[/CODE]После чего необходимо добавить вторую точку в метрику, ну либо изменить уже существующую там вторую точку на вновь вычисленную.
[MAPAPI] Баг при отрисовке, Странный баг при отрисовке, никто не сталкивался ?
 
Спасибо за наводки =)
[MAPAPI] Баг при отрисовке, Странный баг при отрисовке, никто не сталкивался ?
 
Странный баг при отрисовке.
При отдалении карты ( увеличении масштаба) некоторые цифры становятся очень большими:
[URL=https://drive.google.com/open?id=1dGV1C_NttKRaC3EezxepIHb2W729Mt0Z]Пример[/URL]

Может по внешним признакам кто-то уже сталкивался ?

Воспроизвести пока не получается, при повторном открытии той же карты нормально всё отрисовалось.
Изменено: Владимир Егоров - 03.09.2018 11:17:09
Несоответствие в списке семантики "Признак цвета объекта" и реального отображения
 
[CODE] /**
    * @brief Запросить список значений и имён для семантики,
    * являющейся перечислением (SemanticValueType::TCODE = 16)
    * @param semInfo семантика, для которой производится вычисление
    * @return пустой объект, если тип значения семантики не соответствует
    * SemanticValueType::TCODE или если произошла внутренняя ошибка
    */
   virtual QMap<long int, QString> calcSemanticValueMapForTCODE(const RscSemanticInfo& semInfo) const = 0


QMap<long, QString> VMapClassifier::calcSemanticValueMapForTCODE(const RscSemanticInfo &semInfo) const
{
   if (semInfo.getValueType() != gis::common::SemanticValueType::TCODE){
       return {};
   }
   long rc = mapGetRscSemanticClassificatorCount(m_rsc, semInfo.getExCode());
   if (rc == 0){
       return {};
   }
   QMap<long, QString> ret{};
   for (long number = 1; number <= rc; number++){
       QString name = gis::common::parseStringFromKOI8_R(
                       mapGetRscSemanticClassificatorName(m_rsc,
                                                          semInfo.getExCode(),
                                                          number));
       long int value = mapGetRscSemanticClassificatorCode(m_rsc,
                                                           semInfo.getExCode(),
                                                           number);
       if ((value == 0) || (name.isEmpty())){
               continue;
       }
       ret.insert(value, name);
   }
   return ret;
}
[/CODE]
Несоответствие в списке семантики "Признак цвета объекта" и реального отображения
 
[QUOTE]Александр Савелов написал:
Вы несете ответственность за достоверность предоставляемой информации?[/QUOTE]
Не несу, приношу свои извинения.
Несоответствие в списке семантики "Признак цвета объекта" и реального отображения
 
Тут было не очень корректное сообщение
Изменено: Владимир Егоров - 22.08.2018 15:39:36
[MAPAPI] Импорт SXF - обработка EPSG кода из паспорта SXF, Обработка ситуации, когда EPSG код равен 0 или 1 в паспорте SXF.
 
[QUOTE]O - означает, что код EPSG не задан.[/QUOTE]
То есть если я получаю ноль, то мне нужно создавать пользовательскую систему координат не на основе EPSG, а с помощью параметров?
[CODE]_MAPIMP HANDLE _MAPAPI mapCreateUserSystemParameters(MAPREGISTEREX *parm,
                                                    DATUMPARAM *datum,
                                                    ELLIPSOIDPARAM *ellipsoid);
[/CODE]А если получил единицу - считать данный SXF файл некорректным ? Или также попытаться создать пользовательскую систему координат на основе параметров как в случае с нулём ?
Несоответствие в списке семантики "Признак цвета объекта" и реального отображения
 
[QUOTE]Если честно, я в [S]ах-е[/S](шоке) от такого подхода и того, что вы молча поддерживаете эту методику работы с объектами и наличие багов...[/QUOTE]
Это ладно, в предыдущей версии нашей гис оболочки, доставшейся мне от предшественника три года назад, цвет знаков на карте менялся путём выбора соответствующего классификатора - то есть для каждой карты создавалось несколько пользовательских обстановок (sit), и в зависимости от того, какой объект добавлялся на карту (свой красный или чужой синий танк), использовались соответствующие классификаторы (как я понял предшественник просто не осилил работу с семантиками, то есть у объектов в принципе не было пользовательских семантик, только дефолтные).
И ничего, всё это как-то работало.

А в чём проблема такой методики работы ?
На карту можно класть объекты, каждый объект - совокупность координат (метрика) и свойств (семантик). Требуемый минимум - код объекта из классификатора и метрика.
Свойства добавляются по необходимости.
Посмотрите тот же [URL=http://doc.qt.io/qt-5/qwidget.html]QWidget[/URL] - у него 60 свойств. Вы при работе с QWidget тоже пытаетесь выставить все 60 свойств ? Наверное вы выставляете только то что вам необходимо, а про существование некоторых отдельных свойств возможно даже не догадываетесь, у них просто есть дефолтные значения.
С объектами на карте похожая ситуация, только свойсв (семантик) в классификаторе намного больше, и дефолтные значения для всех объектов выставлять (видимо) не имеет смысла, по этому по-умолчанию большинство свойств просто отсутствуют в объекте, а если они понадобятся пользователю - у него должен быть удобный инструмент по их добавлению/редактированию/удалению, как в QtDesigner редакторе форм.
А если всё-таки нужные какие-то свойства (семантики), добавленные по-умолчанию - напишите код, который будет это делать.
Только учесть все виды объектов, и для каждого вида объекта определиться с дефолтным значением семантик (чтобы их добавить) в зависимости от контекста работы пользователя в автоматическом режиме - задача, как мне кажется, не очень тривиальная, и, в каком-то смысле, даже бесполезная.

А насчёт [QUOTE]молча поддерживаете эту методику работы с объектами и наличие багов[/QUOTE]
так мне за это деньги платят - работа у меня такая: используя gisdesigner решать поставленные передо мной задачи. Яжпрограммист. Когда мне это надоест (решать поставленные передо мной задачи) я поищу другую работу. Сторожем там, к примеру.

И моменты, которые мне не нравятся в архитектуре или api ядра, я обхожу написанием библиотек поверх ядра, прячущие под капотом работу с api ядра gisdesigner, и предоставляющие для меня и других пользователей интерфейс, более удобный для меня.
P.S. А для устранения багов (если вдруг нашёл) этот форум и существует.
[MAPAPI] Импорт SXF - обработка EPSG кода из паспорта SXF, Обработка ситуации, когда EPSG код равен 0 или 1 в паспорте SXF.
 
Здравствуйте.

Продолжаю пилить импорт SXF, есть вопрос что делать если epsg код указан 0 или 1.

У меня сейчас такой код:
[CODE] QByteArray sxfKoi8r = gis::common::convertStringToKOI8_R(sxfFile.absoluteFilePath());
   long rc = panorama::mapGetAnySxfInfoByName(sxfKoi8r.constData(), info.m_sxfInfo,
                                    info.m_sxfSheetInfo);
   ...
   ...
   ...
   switch (info.m_sxfInfo.getEPSGCode()) {
   case 0:
       if (info.m_sxfInfo.getEllipsoidType() == gis::common::EllipsoidType::KRASOVSKY42 &&
               info.m_sxfInfo.getMaterialProjection() == gis::common::MapProjectionType::GAUSSCONFORMAL){
           info.m_sxfCoordSystem = gis::coord::System::SK42;
       }
       if (info.m_sxfInfo.getEllipsoidType() == gis::common::EllipsoidType::SPHERE_WGS_84 &&
               info.m_sxfInfo.getMaterialProjection() == gis::common::MapProjectionType::WORLDMERCATOR){
           info.m_sxfCoordSystem = gis::coord::System(3857);
       }
       break;
   case 1:
       info.m_sxfCoordSystem = gis::coord::System::SK42;
       break;
   default:
       info.m_sxfCoordSystem = gis::coord::System(info.m_sxfInfo.getEPSGCode());
       break;
   }
[/CODE]
По-умолчанию для EPSG кода 1 я считаю что это прямоугольная проекци гаусса-крюгера на элиипсоиде красовского (SK42).
Для EPSG кода 0 я проверяю эллипсоид и проекцию.
Что вообще означает код epsg 0, 1 - это заглушки? Или флаги, сообщающие какую-то информацию ?

Так вот, как правильно обрабабывать ситуацию когда epsg равен 0 или 1?
Перебирать все доступные коды EPSG, получать описание эллипсоида, датума и проекции, сравнивать с эллипсоидом, датумом и проекцией из паспорта Sxf и искать соответствие ?

gis::coord::System - это обёртка над пользовательскими системами координат из ядра Панорамы.
Несоответствие в списке семантики "Признак цвета объекта" и реального отображения
 
[QUOTE]А почему нельзя добавлять пустые семантики? Этого нигде не запрещено.[/QUOTE]
Да можно конечно, только зачем?
Во-первых - вы увеличите размер файлов карты - у вас там появятся пустые семантики, занимающие какое-то количество байт в файлах на диске - записи то всё равно появятся, пусть и с пустыми значениями.
Во-вторых - лучше лишний раз не пихать в ядро Панорамы невалидные (ну или пусть даже валидные, но не имеющие смысла, являющиеся заглушками) данные, а то мало ли чего =) Так и баги можно словить.

[QUOTE]Что на вашей гифке записывается в данные объекта для остальных не установленных семантик?[/QUOTE]
Ничего. Их даже в объект не добавляют. То есть по-умолчанию там только mapRegisterObject вызывается и метрика заполняется, этого достаточно для отображения объекта. Выбрали гос принадлежность - добавили новую семантику (одну), выбрали признак цвета - добавили ещё одну семантику (вторую).
Сами семантики (их описания: код, тип, возможные значения для TCODE) - загружаются отдельно в зависимости от редактируемого/создаваемого объекта, и в форме только создаются поля для добавления поддерживаемых объектом семантик.
Пока пользователь не введёт/выберет что-то в этих полях - семантики не добавляются.
Ну и соответственно если пользователь что-то выбрал, то при повторном редактировании объекта соответствующие поля семантик в форме выставляются в значения семантик объекта.
Страницы: Пред. 1 ... 6 7 8 9 10 11 12 13 14 15 16 ... 21 След.



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

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