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

Astra Linux 1.4 сшивка SXF

Поиск  Пользователи  Правила  Войти
Форум » Linux » ГИС Панорама для Linux
Страницы: 1
RSS
Astra Linux 1.4 сшивка SXF
 
продукт Гис Конструктор Free 11.10.5
задача стандартная(подобная тема уже поднимались) сшивка нескольких sxf листов в карту типа (.sit, .map)
согласно mapapi.pdf
создается новая пользовательская карта(*.map) в проекции WGS-84 (переносил под windows параметры карты на вид верные)
добавляю sxf листы в созданную карту используя функции AppendMapFromSxfSelect("/tmp/test/Podolsk.sxf","/tmp/test/test.map",0,0); -возвращает 1,
но в карту  "/tmp/test/test.map" данные их sxf не добавляются,
хотя создается "/tmp/test/Podolsk.sit" в его лог файле есть  запись  "**** SXF -- /tmp/test/Podolsk.sxf", а
в лог файле для карты "/tmp/test/test.map"  запись   "*** SXF - /"  и все...
пробовал создавать hSelect  не помогло
пробовал другую функцию UpdateMapFromSxf тоже самое
подскажите как верно реализовать сшивку SXF листов в карту в проекции WGS 84
 
Есть современная функция:
Код
// ------------------------------------------------------------------
// Обновить карту из файла SXF, TXF или DIR с использованием Select
// с преобразованием топокарты к зоне документа
// Файлы SXF и TXF могут хранить координаты в метрах, радианах или градусах
// hmap    - идентификатор открытой карты (для определения текущей
//           зоны топокарты) или 0;
// namesxf - имя загружаемого файла типа SXF, TXF или DIR;
// namemap - имя обновляемой карты (обычно совпадает с именем SXF (TXF));
//           может быть ноль или указатель на пустую строку
//           (обновляемая карта в документе ищется по совпадению номенклатур).
//           Если namemap указывает на буфер достаточной длины (size),
//           то в буфер записывается имя обновленной карты;
//           Если карты не было в документе - она может быть создана (добавлена)
// size    - длина буфера, на который указывает переменная namemap или 0. Обычно длина
//           равна MAX_PATH (256);
// handle  - идентификатор окна диалога, которому посылаются уведомительные
//           сообщения (HWND для Windows, CALLBACK-Функция для Linux);
// select  - фильтр загружаемых объектов и слоев, если необходима выборочная
//           обработка данных;
// mode    - режим обновления данных:
//           0 - поиск записей по совпадению уникального номера в карте и
//               исходном файле и обновление,
//               если объект не найден, то добавление объекта;
//           1 - добавление объектов с новыми уникальными номерами в те карты,
//               номенклатуры которых совпадают с номенклатурой SXF (TXF)
//           2 - добавление объектов с новыми уникальными номерами в заданную
//               карту без учета номенклатур
// При ошибке возвращает ноль
// ------------------------------------------------------------------
_VECIMP long int _VECAPI UpdateFromAnySxf(HMAP hmap,  const char * namesxf, char * namemap,  long int size,  HMESSAGE handle, HSELECT select, long int mode);
Есть устаревшая функция
Код
// ------------------------------------------------------------------
// Обновить карту из файла SXF с использованием Select
// При ошибке возвращает ноль
// ------------------------------------------------------------------
_VECIMP long int _VECAPI AppendMapFromSxfSelect(char* namesxf, char* namemap,  HMESSAGE handle, HSELECT select)
{
  return UpdateFromAnySxf(0, namesxf, namemap, 0, handle, select, 1);
}

Поскольку номенклатуры листов разные, то объекты не обновляются (не добавляются).
Имеет смысл вызвать новую функцию с требуемыми параметрами (например, параметр mode = 2).
Страницы: 1
Читают тему (гостей: 1)



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

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