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

Некоторые sxf файлы из списка dir не сшиваются

Поиск  Пользователи  Правила  Войти
Форум » Linux » Средства разработки ГИС-приложений для Linux
Страницы: 1
RSS
Некоторые sxf файлы из списка dir не сшиваются
 
Добрый день!нужно получить карту России в формате map.столкнулась с проблемой...сшиваю sxf файлы из списка dir при помощи функции loadDirToMap,большинство карт сшиваются нормально,кроме районов центральной России(Владимирская,Ивановская,Тамбовская и ТД области). Т.е. когда в dir записываю какой нибудь из этих sxf, вроде бы map создаётся, функция выдает 1,но отображается только первая карта из списка. Использую гис конструктор под qt 4 ОС linux ubuntu.
 
Здравствуйте!

Не могли бы Вы привести файл dir, который используете для импорта, и пример вызова функции loadDirToMap.
Создаются ли в каталоге выходной карты файлы листов (*.dat, *.hdr, *.sem)?

Уточните, пожалуйста, используемую версию ГИС Конструктор.
 
DIR
osm.ru.rsc
RU-VGG.sxf
RU-AST.sxf
RU-ROS.sxf
RU-STA.sxf
RU-CE.sxf
RU-KL.sxf
RU-SAR.sxf
RU-PNZ.sxf
если так,то все нормально сшивается,если добавляю RU-VOR.sxf или RU-TAM.sxf, отображается только RU-VGG.

void ConvertationThread::ConvertWithDir_v()
{
char acDirPath[160], acMapPath[160];
strcpy(acDirPath, _DirPath_str.toStdString().c_str());
strcpy(acMapPath, _MapPath_str.toStdString().c_str());
long int liResult =LoadDirToMap(acDirPath, acMapPath, DialogFunctiob_li);
qDebug()<<liResult;
}

файлы dst, hdr и sem создаются
установлен ГИС Конструктор для QtDesigner x64 версия 11.10.3
 
Карта России полностью сшивается,кроме регионов центральной России. Скорей всего что то не так с этими файлами.  
 
Здравствуйте!

Подобное может быть связано с тем, что при импорте используются имена классификаторов, указанные в самих файлах sxf, а в разных файлах они могут быть указаны в разных регистрах - например, osm.ru.rsc и osm.ru.RSC.

Для того, чтобы избежать путаницы с классификаторами, можно использовать функции с явным указанием пути к классификатору:
Код
 // Загрузить карту по списку DIR с использованием  Select и 
 // изменением имени района и имени файла ресурсов
 // При ошибке возвращает ноль


_VECIMP long int _VECAPI LoadDirToMapSelectName(char* namedir,
                                               char* namemap,
                                               HMESSAGE handle,
                                               HSELECT select,
                                               char * name,
                                               char* namersc);
или более новые аналоги функций импорта:
Код
// Загрузить (импортировать) карту из файла SXF, TXF или DIR с
 // использованием Select с преобразованием топокарты к зоне документа
 // Файлы SXF и TXF могут хранить координаты в метрах, радианах или градусах
 // hmap    - идентификатор открытой карты (рекомендуется указывать
 //           для определения текущей зоны топокарты) или 0;
 // sxfname - имя загружаемого файла типа SXF, TXF или DIR;
 // rscname - имя файла классификатора, с которым загружается карта,
 //           имя классификатора можно запросить из SXF (TXF) функцией GetRscNameFromSxf
 //           или из карты; для файла DIR может быть 0;
 // mapname - имя создаваемой карты (обычно совпадает с именем SXF (TXF))
 //           или ноль или указатель на пустую строку (буфер размером MAX_PATH
 //           c нулевым байтом равным нулю) или указатель на папку для размещения
 //           карты. Если имя карты не задано или задана только папка, то карта
 //           создается с именем SXF (TXF) и расширением ".sit". Если namemap
 //           указывает на буфер достаточной длины (size), то в буфер записывается 
 //           имя созданной карты;
 //           Для файла DIR тип общей карты - MPT (проект данных, включающий все 
 //           открытые карты из DIR) или MAP (многолистовая карта);
 // size    - длина буфера, на который указывает переменная namemap, или 0. Обычно длина
 //           равна MAX_PATH_LONG (1024);
 // handle  - идентификатор окна диалога, которому посылаются уведомительные
 //           сообщения (HWND для Windows, CALLBACK-Функция для Linux);
 // select  - фильтр загружаемых объектов и слоев, если необходима выборочная
 //           обработка данных;
 // frscfromsxf - значение флажка "разрешить использование
 //               имени классификатора, указанного в файле sxf"
 // typesit - тип создаваемых карт в проекте MPT при импорте DIR (1- SIT; -1- SITX)
 // password - пароль для создания защищенного хранилища карты (SITX)
 // psize    - длина пароля в байтах
 // transform - признак необходимости трансформировать загружаемую карту в систему координат hmap
 //             (если hmap и transform не равно 0)
 // hEvent    - адрес функции обратного вызова для записи в протокол ошибок выполнени программы
 // eventparam - первый параметр функции обратного вызова
 // Для добавления открытой карты в документ необходимо вызвать функцию
 // mapAppendData(hmap, namemap). Если mapname содержит имя карты типа MAP и
 // она содержит хотя бы один лист, то при импорте данных выполняется создание
 // нового листа в карте MAP. В этом случае функция mapAppendData не должна вызываться. 
 // При ошибке возвращает ноль


_VECIMP long int _VECAPI ImportFromAnySxfProEx(HMAP hmap, const WCHAR * namesxf,
                                            const WCHAR * namersc,  WCHAR * namemap, long int size,
                                            HMESSAGE handle, HSELECT select, long int frscfromsxf,
                                            long int typesit, const WCHAR * password, long int psize,
                                            long int transform, EVENTLOG hEvent, void * eventparam);


_VECIMP long int _VECAPI ImportFromAnySxfProM(HMAP hmap, const WCHAR * namesxf,
                                            const WCHAR * namersc,  WCHAR * namemap, long int size,
                                            HMESSAGE handle, HSELECT select, long int frscfromsxf,
                                            long int typesit, const WCHAR * password, long int psize,
                                            long int transform);


_VECIMP long int _VECAPI ImportFromAnySxfPro(HMAP hmap, const WCHAR * namesxf,
                                            const WCHAR * namersc, WCHAR * namemap,
                                            long int size, HMESSAGE handle,
                                            HSELECT select, long int frscfromsxf,
                                            long int typesit,
                                            const WCHAR * password, long int psize);
 
Добрый день!была в отпуске,и снова возвращаюсь к этому вопросу...попробовала и другие функции,результат тот же..при добавлении регионов центральной России , в map только первая..в dir файле ведь прописывается rsc,который я использую,он лежит в той же папке,что и sxfы. Поэтому и явное указание через функции тоже не помогает
 
Попробовала сшить через QDMapConvertor результат тот же, хотя пишет,что все листы обработаны и ошибок 0!
 
Здравствуйте!

Проверили проверку на текущей версии ГИС Конструктор (12.4.0) (http://gisinfo.ru/download_linux?id=92).

Использовали следующий пример:
Код
#include <assert.h>

#include "mapapi.h"
#include "vecexapi.h"

int main()
{
  mapMessageEnable(false);

  char inputDir[MAX_PATH_LONG];  inputDir[0] = 0;
  StrCopy(inputDir, "data/batch-with-vor.dir", sizeof(inputDir));
  char outMapName[MAX_PATH_LONG];  outMapName[0] = 0;
  StrCopy(outMapName, "out/out.map", sizeof(outMapName));
  char rscName[MAX_PATH_LONG];  rscName[0] = 0;
  StrCopy(rscName, "data/osm.ru.rsc", sizeof(rscName));

  HMAP mapHandle = 0;
  MSGHANDLER msgHandler = NULL;
  HSELECT mapSelect = 0;
  long rscFromSxf = 0;
  long isImported = ImportFromAnySxfEx(mapHandle, inputDir, rscName, outMapName, sizeof(outMapName),
                                       msgHandler, mapSelect, rscFromSxf);
  assert(isImported);

  return 0;
}
Содержимое использованного dir-файла:
Код
DIR
osm.ru.rsc
RU-VGG.sxf
RU-AST.sxf
RU-ROS.sxf
RU-STA.sxf
RU-CE.sxf
RU-KL.sxf
RU-SAR.sxf
RU-PNZ.sxf
RU-VOR.sxf
Импорт выполнился корректно. Возможно, есть какие-то дополнительные условия, при которых проявляется проблема?
 
Даже в точности набрав ваш код, все тоже самое. Убираю карту Воронежской области, все импортируется, добавляю, остаётся только первая..карты центральной России не сшиваются между собой, допустим Владимирская и Московская области...я вообще использую ГИС конструктор 11 версии, который под ubuntu. ГИС конструктор, ссылку на который вы указали, на ubuntu 14.04 установится?  
 
Здравствуйте!

Для уточнения вопроса обновления ГИС Конструктор напишите, пожалуйста, нам на почту (panorama@gisinfo.ru) с указанием номера электронного ключа.
Страницы: 1
Читают тему (гостей: 1)



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

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