Импорт дистанций из xml-файла…

Перейти на пред.страницу Загрузка заявок участников

В данной статье будет рассмотрен импорт дистанций из xml-файла (полученного экспортом из OCAD), а также создание дистанций непосредственно в О-Судейство (для номера программы «Маркировка»).

Дистанции будут импортироваться и создаваться для номеров программы виртуального соревнования Снежинка-2017, созданного в этой статье.

Импорт дистанций из xml-файла для номера программы «Классика» (ориентирование в заданном направлении)

Я буду импортировать дистанции для номеров программы «Классика» (ориентирование в заданном направлении) и «Спринт» (ориентирование по выбору).

Сначала я опишу действия, сделанные в программе OCAD (версия 10).

Для номера программы «Классика» я создал дистанции без рассеивания (по принципу: для каждой группы своя дистанция) для всех групп, кроме группы М18, для которой создал дистанцию с рассеиванием.

Перед созданием дистанций я перечислил все возможные дистанции, открыв меню Course, Courses (рис.1):

Рис.1
Перечень дистанций в меню Course, Courses программы OCAD

Обращаю ваше внимание на следующие моменты (см.рис.1):

  • Наименования дистанций я намеренно сделал такими же, как и наименования групп в созданном соревновании «Снежинка-2017», чтобы облегчить сопоставление дистанций группам;
  • Для дистанций без рассеивания (все, кроме М18) я указал тип Normal course;
  • Для дистанции с рассеиванием (М18) я указал тип One-man relay и количество этапов указал равным 2. Количество этапов я указывал исходя из планировки дистанции – я спланировал на этой дистанции 2 бабочки, на каждой из которых есть 2 варианта прохождения. И количество этапов следует указывать по максимальному количеству вариантов прохождения (если спланирована бабочка с 3-мя вариантами прохождения – то количество этапов следует указать как 3).

Сами дистанции в OCAD я создал позднее. Я здесь не буду описывать непосредственно процесс создания дистанций в OCAD, это подробно описано, например, здесь. Опишу только процесс вставки вариантов рассеивания при создании дистанции М18 (рис.2). Я выбрал дистанцию М18 и начал заполнять её элементами дистанции (старт S1, КП 39, 40, 41, 51). После КП 51 у меня запланирована 1-я бабочка с рассеиванием, и для добавления варианта рассеивания после добавления КП 51 я кликнул по кнопке «Insert…»:

Рис.2
Начало добавления рассеивания в дистанцию М18

В появившемся окне выбрал переключатель «Team variation» (см.рис.2) и кликнул по кнопке OK. Далее я заполнил объектами дистанции две ветви в объектах дистанции (рис.3), затем добавил 2 КП (48 и 35), после чего добавил еще один вариант рассеивания и несколько КП. Последним объектом был финиш:

Рис.3
Созданная дистанция М18

Обращаю ваше внимание на следующие моменты:

  • внимательно следите за тем, чтобы варианты рассеивания были равноценными (чтобы были задействованы те же самые перегоны, только в разном порядке прохождения). OCAD не проверяет правильность заполнения ветвей в рассеивании;
  • OCAD отображает длину дистанции с типом One-man relay сразу для всех этапов, поэтому, чтобы определить длину одной дистанции, необходимо длину, отображаемую OCAD, разделить на количество этапов (при условии, что варианты рассеивания равноценные);
  • Не забывайте в объектах дистанции помимо КП указывать также старт и финиш;
  • Описанный здесь метод рассеивания для дистанции с типом One-man relay не единственный, вы можете создать несколько дистанций с типом Normal course, каждая из которых будет отдельным вариантом рассеивания, но тогда уже после импорта этих дистанций в О‑Судейство необходимо будет вручную указать соответствие между группой и этими дистанциями.

Затем я открыл меню Course, Classes и установил флажок Create classes automatically (рис.4):

Рис.4
Меню Course, Classes

После установки этого флажка таблица заполнилась строками (с дистанциями) автоматически (см.рис.4), и в этой таблице наименования групп (Class) совпадают с наименованием дистанций (Course).

В строке для группы М18 я указал также диапазон номеров (с 1 по 2) и количество участников/команд (2). Это делать не обязательно, но, если этого не сделать, то при экспорте из OCAD в xml-файл будут выдаваться предупреждения о недопустимых номерах. Диапазон номеров и количество я указал «от балды», но зато при экспорте (об этом далее) никаких предупреждений не выдавалось.

Затем я открыл меню Course, Export, Course (XML)… и указал, куда и под каким именем сохранять xml-файл с дистанциями. На этом экспорт дистанций из OCAD в xml-файл для номера программы «Классика» завершен.

Далее я опишу действия в программе О-Судество.

Я открыл список соревнований (меню «Справочники», «Соревнования») и открыл соревнование «Снежинка 2017» (рис.5):

Рис.5
Открытие окна номера программы «Классика»

соревнования «Снежинка 2017»

В окне соревнования я перешел на закладку «Номера программы» (см.рис.5) и открыл номер программы «Классика».

В открывшемся окне номера программы «Классика» (рис.6) я перешел на закладку «Дистанции» и выбрал меню «Импорт», «Импорт дистанций из xml-файла»:

Рис.6
Меню «Импорт», «Импорт дистанций из xml-файла»

Отрылось окно обработки «Загрузка дистанций из xml-файла» (рис.7), в котором я выбрал xml-файл с дистанциями (при желании вы его можете скачать в заархивированном виде),  снял флажок «Сохранить xml-файл в хранилище доп.информации» (если этот флажок установить, то для каждой созданной в процессе импорта дистанции будет прикреплен xml-файл, откуда производился импорт) и установил контрольное время:

Рис.7
Обработка «Загрузка дистанций из xml-файла»

Для начала загрузки кликнул по кнопке Загрузить.


Примечание:

Опишу подробнее предназначение флажка «если в xml-файле кодировка ISO-8859-1, то использовать кодировку». Дело в том, что в создаваемом xm-файле OCAD первые 2 строки всегда имеет следующий вид:

<?xml version= «1.0» encoding= «ISO-8859-1» ?>
<!DOCTYPE CourseData SYSTEM «IOFdata_OCAD.dtd»>

Нетрудно заметить, что в 1-й строке есть прямое указание на использование кодировки ISO-8859-1 (западно-европейская кодировка) и, если в OCAD были использованы символы другой кодировки (например, символы кириллицы в наименованиях дистанций/групп), то никакого преобразования над этими символами OCAD не делает. Поэтому, если такой xml-файл открыть, например, в интернет-браузере, то вместо символов другой кодировки там будут отображаться западно-европейские символы, потому что браузер резонно считает, что в файле все символы должны быть в кодировке ISO-8859-1.

Установленный флажок (и используемая на самом деле кодировка, обычно windows-1251) указывает обработке, что в xml-файле есть символы в другой кодировке, и тогда обработка корректно работает с символами в другой кодировке в этом файле. Точнее, обработка просто создает копию xml-файла (в той же папке, где находится загружаемый xml-файл), открывая исходный файл в другой кодировке (обычно windows-1251) и сохраняя копию уже в кодировке UTF‑8. В этой копии также будут изменены первые 2 строки. Первая строка будет иметь следующий вид:

<?xml version= «1.0» encoding= «UTF-8» ?>

а 2-я строка просто удалена. И далее обработка (и любые другие программы) без проблем работает (с символами кириллицы) уже с этой копией в кодировке UTF‑8.


По окончании загрузки окно обработки закрылась (так как был установлен флажок «Закрыть форму обработки после загрузки», см.рис.7) и в открытом окне номера программы активной стала закладка «Группы/Дистанции» (рис.8),  на которой отобразились сразу и группы и соответствующие  им загруженные дистанции:

Рис.8
Закладка «Группы/Дистанции» номера программы «Классика»

после окончания загрузки дистанций из xml-файла

Для сохранения соответствия Группы/Дистанции я кликнул по кнопке «Записать» (рис.8).

Обратите внимание, что для группы М18 было загружено 4 варианта дистанции (см.рис.8) – так как в OCAD для этой группы я сделал 2 бабочки по 2 варианта рассеивания в каждой, и OCAD в xml-файл выгрузил все эти 4 варианта рассеивания.

Чтобы посмотреть только загруженные дистанции, я переключился на закладку «Дистанции» (рис.9):

Рис.9
Закладка » Дистанции» номера программы «Классика»

Здесь отобразились загруженные дистанции с основными параметрами (см.рис.9). Обратите внимание, что длина дистанций для группы М18 здесь корректная (хотя в OCAD отображалась длина как сумма всех этапов – но с точки зрения OCAD это верно, ведь дистанция для М18 там создавалась с типом One-man relay и количеством этапов 2).

Для просмотра я открыл (двойным кликом) дистанцию М18.AA (рис.10), и в открывшемся окне дистанции кликнул по кнопке «КП…», после чего отобразилось окно с перечнем КП дистанции:

Рис.10
Просмотр дистанции М18.АА

Аналогичным образом можно посмотреть и другие дистанции. На этом импорт дистанций для номера программы «Классика» завершен.

Импорт дистанций из xml-файла для номера программы «Спринт» (ориентирование по выбору)

Сначала я опишу действия, сделанные в программе OCAD.

Для номера программы «Спринт» (ориентирование по выбору) я сначала создал дистанцию Ж12 (рис.11), содержащую старт, все возможные для выбора КП (для всех возрастных групп) и финиш:

Рис.11
Созданная дистанция Ж12

Затем я открыл меню Course, Courses (рис.12) и сделал 7 копий дистанции Ж12, кликая по кнопке Duplicate и меняя наименование в копии на очередное наименование возрастной группы:

Рис.12
Созданные копированием дистанции для выбора

Все дистанции имеют тип Normal course (см.рис.12) и их наименования совпадают с наименованиями групп соревнования «Снежинка 2017» – в этом и есть главный смысл копирования.

Затем я открыл меню Course, Classes и установил флажок Create classes automatically (рис.13):

Рис.13
Меню Course, Classes для выбора

После установки этого флажка таблица заполнилась строками (с дистанциями) автоматически (см.рис.13), и в этой таблице наименования групп (Class) совпадают с наименованием дистанций (Course).

Затем я открыл меню Course, Export, Course (XML)… и указал, куда и под каким именем сохранять xml-файл с дистанциями. На этом экспорт дистанций из OCAD в xml-файл для номера программы «Спринт» завершен.

Далее я опишу действия в программе О-Судество.

Я открыл номер программы «Спринт» (аналогично тому, как открыл номер программы «Классика» — см.рис.5):

В окне номера программы «Спринт» (рис.14) я перешел на закладку «Дистанции» и выбрал меню «Импорт», «Импорт дистанций из xml-файла»:

Рис.14
Меню «Импорт», «Импорт дистанций из xml-файла» для выбора

Отрылось окно обработки «Загрузка дистанций из xml-файла» (рис.15), в котором я выбрал xml-файл с дистанциями (вы можете его скачать здесь в заархивированном виде),  снял флажок «Сохранить xml-файл в хранилище доп.информации» и установил контрольное время:

Рис.15
Обработка «Загрузка дистанций из xml-файла» для выбора

Для начала загрузки кликнул по кнопке Загрузить.

По окончании загрузки окно обработки закрылась (так как был установлен флажок «Закрыть форму обработки после загрузки», см.рис.15) и в открытом окне номера программы активной стала закладка «Группы/Дистанции» (рис.16),  на которой отобразились сразу и группы и соответствующие  им загруженные дистанции:

Рис.16
Закладка «Группы/Дистанции» номера программы «Спринт»

после окончания загрузки дистанций из xml-файла

Для сохранения соответствия Группы/Дистанции я кликнул по кнопке «Записать» (рис.16).

Далее я отредактировал загруженные дистанции – а именно указал для каждой дистанции количество КП, которое необходимо взять, а также обязательный первый КП (для каждой группы свой) и обязательный последний КП (один для всех групп). Для этого я переключился на закладку «Дистанции», открыл двойным кликом дистанцию Ж12 (рис.17) и в открывшемся окне дистанции установил количество КП равным 5, а также обязательные первый и последний КП, после чего кликнул по кнопке OK:

Рис.17
Редактирование дистанции Ж12 для выбора

Если до закрытия окна дистанции кликнуть по кнопке «КП…» (см.рис.17), то откроется список КП дистанции для выбора (рис.18) со всеми возможными для выбора КП и их координатами X и Y (в метрах от условного центра координат), позволяющими О-Судейство при формировании печатной формы сплитов вычислять расстояния и скорости движения участников между любыми КП:

Рис.18
Список КП дистанции для выбора

Аналогичным образом я отредактировал другие дистанции (изменяя количество КП, обязательные 1-й и последний КП), в итоге список дистанций для выбора стал следующим (рис.19):

Рис.19
Список дистанций для выбора после редактирования

На этом импорт дистанций для номера программы «Выбор» завершен.

Создание дистанций для номера программы «Маркировка» (ориентирование на маркированной трассе без проколов)

Для маркировки без проколов (когда истинные и ложные КП нанесены на карту) я не буду импортировать дистанции из OCAD.

Потому, что маркировка без проколов подразумевает, что КП должны быть объединены в пулы (еще употребляется термин «гроздья»), в каждом пуле должен быть один истинный и один или несколько ложных КП. А OCAD не умеет группировать КП в пулы и выделять в них истинные и ложные КП. К тому станции отметки фактически расположены не там, где указаны КП на карте, а в точках принятия решений.

Поэтому дистанции (для маркировки без проколов) я буду создавать непосредственно в О-Судейство. Я открыл номер программы «Маркировка», перешел на закладку «Дистанции» (рис.20) и кликнул по кнопке «Добавить»:

Рис.20
Создание дистанции МЖ12 для маркировки без проколов

В открывшемся окне новой дистанции (см.рис.20) я заполнил наименование как МЖ12 (одна дистанция для групп М12 и Ж12), номер старта как S1 и номер финиша как F1.

Чтобы добавить КП дистанции, необходимо кликнуть по кнопке «КП…», но сначала я предлагаю ознакомиться с содержимым закладок «Макс.штраф» и «Маркировка без проколов», на которых задаются дополнительные параметры для маркировки.

На закладке «Макс.штраф» (рис.21) в реквизите Макс.штраф за неправильную отметку на КП задается размер максимального штрафа за неправильную отметку на одном КП. Установка флажка Дисквалифицировать, если количество отметок с макс.штрафом превышает позволит контролировать количество отметок с максимальным штрафом, и если количество таких отметок у участника превысит заданный порог, то участник будет дисквалифицирован. Значением порога необходимо указать максимальное количество отметок с макс.штрафом, при котором результат остается зачетным, рекомендуется значение порога рассчитывать как 2/3 от общего количества КП дистанции.

Рис.21
Закладка «Макс.штраф» дистанции для маркировки без проколов

Реквизит Действие при неполной отметке задает действие, когда в отметке участника нет отметки КП дистанции. По умолчанию задается значение Дисквалификация, но можно указать значение Максимальный штраф за каждую отсутствующую отметку.

Реквизит Действие при лишней отметке задает действие, когда отметка участника содержит отметку КП, которого нет в дистанции. По умолчанию задается значение Игнорировать лишнюю отметку, но можно указать значение Максимальный штраф за каждую лишнюю отметку.

На закладке «Маркировка без проколов» (рис.22) расположены реквизиты, относящиеся к маркировке без проколов.

Рис.22
Закладка «Маркировка без проколов» дистанции

для маркировки без проколов

Реквизит Способ начисления штрафа за отметку ложного КП задает способ расчета штрафа за отметку ложного КП. По умолчанию задается значение Максимальный штраф (за отметку любого ложного КП), но можно указать значение Различный штраф (ложные КП могут иметь разные штрафы). В этом случае при добавлении КП дистанции для ложных КП можно указывать разный размер штрафа.

Реквизит Максимальное количество КП в одном пуле задает это самое количество КП.

Я на закладках «Макс.штраф» и «Маркировка без проколов» ничего не стал изменять и перешел к добавлению КП дистанции, кликнув по кнопке «КП…» (см.рис.20).

В открывшемся окне «КП дистанции» (рис.23) я кликнул по кнопке «Добавить» и в появившемся окошке указал тип КП как Старт и номер старта как S1, затем кликнул по кнопке OK:

Рис.23
Окно «КП дистанции» и добавление старта

Далее для добавления пула КП в окне «КП дистанции» (рис.24) я опять кликнул по кнопке «Добавить» (поз.1) и в появившемся окошке указал тип КП как КП (поз.2) и добавил 3 строки в таблицу «КП дистанции», 3 раза кликнув по кнопке добавить (поз.3). Заполнил значения в добавленных строках в колонке «Номер КП», установил флажок «Истинный КП» в 3-й строке и указал длину перегона (поз.4) и кликнул по кнопке OK (поз.5):

Рис.24
Окно «КП дистанции» и добавление пула КП

Таким образом (как описано выше) я добавил первый пул из 3-х КП, в котором КП 33 является истинным, а КП 31 и 32 ложными. Станции с номерами 31, 32 и 33 должны стоять рядом на точке принятия решения и длина перегона должна быть посчитана как расстояние именно до точки принятия решения (от старта или от предыдущей точки принятия решения).

Аналогичным образом я добавил еще 3 пула и финиш и в итоге КП дистанции МЖ12 (рис.25) у меня получились такими:

Рис.25
Окно «КП дистанции» после добавления всех КП

После закрытия окна «КП дистанции» (по кнопке «Закрыть» см.рис.25) в окне дистанции МЖ12 (рис.26) обновились данные о длине дистанции, количестве КП и порядке прохождения:

Рис.26
Окно дистанции МЖ12 после добавления всех КП

Для сохранения изменений (с закрытием окна) я кликнул по кнопке OK (см.рис.26).

Аналогичным образом я добавил дистанции МЖ14, МЖ16 и МЖ18. Ниже я приведу только скриншоты КП этих дистанций:

Рис.27
Окно «КП дистанции» для дистанции МЖ14

после добавления всех КП

Рис.28
Окно «КП дистанции» для дистанции МЖ16

после добавления всех КП

Рис.29
Окно «КП дистанции» для дистанции МЖ18

после добавления всех КП

В итоге закладка «Дистанции» номера программы «Маркировка» (рис.30) у меня приняла следующий вид:

Рис.30
Закладка «Дистанции» номера программы «Маркировка»

после добавления всех дистанций

Осталось задать соответствие между группами и созданными дистанциями. Для этого я перешел на закладку «Группы/дистанции» (рис.31) и кликнул по кнопке «Заполнить»:

Рис.31
Закладка «Группы/Дистанции» номера программы «Маркировка»

После заполнения строк для каждой строки я заполнил значение в колонке «Дистанция», двойным кликом по ячейке переходя в режим редактирования и затем по кнопке «…» выбирая дистанцию, соответствующую группе в текущей строке.

В итоге после заполнения всех строк закладка «Группы/дистанции» (рис.32) приняла следующий вид:

Рис.31
Закладка «Группы/Дистанции» номера программы «Маркировка»

после заполнения колонки «Дистанция»

Для сохранения изменений (с закрытием окна) я кликнул по кнопке OK (см.рис.31).

На этом создание дистанций для номера программы «Маркировка» завершено.

Перейти на след.страницу