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

Не работает метод определения номенклатур mathSheetFromFrame

Поиск  Пользователи  Правила  Войти
Форум » Linux » Средства разработки ГИС-приложений для Linux
Страницы: 1
RSS
Не работает метод определения номенклатур mathSheetFromFrame
 
Приветствую!
Использую ГИС Конструктор для Qt Designer x64 (версия 11.10.3), ОС Astra Linux.

При вызове метода mathSheetFromFrame возвращаются неверный результат. Порядок воспроизведения:
1. Создаю замкнутый объект
2. Запрашиваю номенклатуры по этому объекту
4. Получаю результат из трех значений, два из которых повторяются.

Код и результат, привожу ниже:
Код
#include <QString>
#include <QDebug>
#include "sitapi.h"
#include "mapapi.h"
#include "mapcreat.h"
#include "maptype.h"
#include "mathapi.h"

//создает карту
HMAP createMapForTest(QString* aName, QString* aClassifierName) {
    CREATESITEUN cs;
    memset((void*) &cs, 0, sizeof(cs));
    cs.Length = sizeof(CREATESITEUN);
    cs.EllipsoideKind = 9;
    cs.MapType = 16;
    cs.Reserve = 0;
    HMAP hmap = mapCreateSiteUn((const WCHAR*) aName->constData(),
                                (const WCHAR*) aClassifierName->constData(), &cs);
    if (hmap == 0) {
       qDebug() << "mapCreateSiteUn error";
    }
    return hmap;
}

// тест метода получения номенклатуры по рамке
int main() {
    int SCALE = 200000;
    
    QString* siteName = new QString("/tmp/testMathFunctions.sitx");
    QString* rscName = new QString("/usr/Operator11/operator.rsc");

    HMAP hmap = createMapForTest(siteName, rscName);
    if (hmap != 0) {
        HOBJ hobj = mapCreateObject(hmap);
        mapDescribeObject(hobj, 2L);
        mapAppendPointGeoWGS84(hobj,0.8299040593233037, 0.6894050545377601,0);
        mapAppendPointGeoWGS84(hobj,0.8435176274888595, 0.6937683776677459,0);
        mapAppendPointGeoWGS84(hobj,0.8237954069413236, 0.6953391739945409,0);
        mapAppendPointGeoWGS84(hobj,0.8237954069413236, 0.6894050545377601,0);
        mapAppendPointGeoWGS84(hobj,0.8299040593233037, 0.6894050545377601,0);
        mapCommitObject(hobj);
        
        int size = 32;
        LISTREGISTER listreg[size];
        memset((void*)&listreg, 0, sizeof(LISTREGISTER)*size);
        qDebug()<< "Result = " << mathSheetFromFrame(hmap, hobj, SCALE, listreg, size  );
        for(int i=0; i < size; i++) {
            QString nom(listreg[i].Nomenclature);
            if(listreg[i].Length == 0) {
                break;
            }
            qDebug() << i << nom;
            
            
        }
        mapCloseData(hmap);
    } else {
        qDebug() << "createSitx error";
    }
}
Результат:
Код
Result = 3
1 "0.L-37-10"
2 "0.M-37-34"
3 "0.M-37-34"
Если открыть, созданную в примере карту и выполнить задачу разграфки, то получим:

Т.е. отсутствует номенклатура "0.L-37-04"
 
Здравствуйте, Александр.
Исправили библиотечку.
Позже обновим версию ГИС Конструктора.
Изменено: Андрей Коржилов - 05.08.2016 14:46:58
 
Добрый день.
Скачал библиотечку. Описанная проблема ушла.
Спасибо. Ждем изменения ГИС Конструктор.
Изменено: Александр Попов - 04.08.2016 09:57:03
 
Добрый день.
Возник вопрос. Планируете ли вы привести формат вывода номенклатуры к одному виду?
Т.к. в исправленной библиотечке вывод функции mathGetRuleSheetName отличается от вывода функции mathSheetFromFrame, а именно отсутствует 0 в начале.  
 
Здравствуйте, Александр.
Да, в готовящейся версии формат вывода номенклатуры будет приведен к одному виду.
 
Приветствую!

В ГИС Конструктор для Qt Designer x64 (версия 11.10.3), ОС Astra Linux от 22.08.2016 это изменение, как я понимаю, не вошло?

С уважением,
Матвеев П.В.
Страницы: 1
Читают тему (гостей: 1)



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

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