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

Пошаговое создание карты MAP из SXF и RSC

Поиск  Пользователи  Правила  Войти
Форум » Linux » Средства разработки ГИС-приложений для Linux
Страницы: 1
RSS
Пошаговое создание карты MAP из SXF и RSC, Пошаговое создание карты из исходников
 
Здравствуйте.
Не очень хотелось что бы меня отправили читать описание MAPAPI-функций. Я уже это сделал не раз.
Меня интересует пошаговое создание карт  MAP из SXF и RSC.
Каким образом мне дойти до сути, если кроме описания функция ни чего нет.
Тестовые примеры тоже не помогают.

Мне необходимо создать МАР карту SXF и RSC. Поправьте меня если заблуждаюсь.
1. Необходимо конвертировать SXF(ы) в MAP. В QDMap есть Convertor, мне надо через MAPAPI, что тут использовать? LoadDirToMap?
2. Допустим векторная карта создана. Открываем ее и для того чтобы отобразить в различных проекциях необходимо трансформировать её.
Трансформируем текущую карту путем задания проекции или необходимо создавать новую карту с требуемой проекцией?

Или я так понимаю каждый доходит сам до истины, а если не доходит то заказывают продукт у вас))
 
Здравствуйте!
1. Импорт SXF-файла в MAP выполняется функцией ImportFromAnySxfProM в которой при необходимости можно задать выходную систему координат. Описание этой функции приведено в vecexapi.h, реализована в библиотеке libqdmapvecex.so.
Этой же функцией можно конвертировать DIR-файл в многолистовую карту.

2. Есть два вида трансформирования:
- на лету в процессе отображения/вычислений при помощи функции mapSetDocProjection;
- на жестком диске (функция vecModifyMap).

Дальше все зависит от Ваших задач: если необходимо сохранить карту трансформированной, то используется второй вариант. Если необходимо карту оставить без изменения, то поможет трансформирование на лету
 
Цитата
Vladimir Letov написал:
...
Дальше все зависит от Ваших задач: если необходимо сохранить карту трансформированной, то используется второй вариант. Если необходимо карту оставить без изменения, то поможет трансформирование на лету
Владимир, большое спасибо.
Изменено: Алексей Рылякин - 29.07.2020 10:01:31
 
Цитата
Vladimir Letov написал:
Здравствуйте!
1. Импорт SXF-файла в MAP выполняется функцией ImportFromAnySxfProM в которой при необходимости можно задать выходную систему координат. Описание этой функции приведено в vecexapi.h, реализована в библиотеке libqdmapvecex.so.
Этой же функцией можно конвертировать DIR-файл в многолистовую карту.

2. Есть два вида трансформирования:
- на лету в процессе отображения/вычислений при помощи функции mapSetDocProjection;
- на жестком диске (функция vecModifyMap).

Дальше все зависит от Ваших задач: если необходимо сохранить карту трансформированной, то используется второй вариант. Если необходимо карту оставить без изменения, то поможет трансформирование на лету
Можно более подробно рассказать основные отличия этих функций. Ведь в принципе они делают одно и тоже с исключениями. Вопрос к разработчикам и всем понимающим.

ImportFromAnySxfProEx

ImportFromAnySxfProM

ImportFromAnySxfPro

ImportFromAnySxf

ImportFromAnySxfEx

ImportFromDirPro
Изменено: Алексей Рылякин - 30.07.2020 14:21:57
 
Здравствуйте!

Различные функции одного семейства (например, ImportFromAnySxf) отличаются составом параметров.
Перед объявлением набора функций приведено описаний всех возможных параметров. Например (vecexapi.h):
Код
 // Загрузить (импортировать) карту из файла 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);
Так в функции ImportFromAnySxfProEx добавлены параметры hevent и eventparam:
Код
 // hevent    - адрес функции обратного вызова для записи в протокол ошибок выполнения программы
 // eventparam - первый параметр функции обратного вызова
Если у Вас есть сомнения в том, необходимо ли использовать те или иные параметры, могу предложить начать с использования функции ImportFromAnySxfPro.
Страницы: 1
Читают тему (гостей: 1)



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

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