79986

РАЗРАБОТКА МОДУЛЯ ОЦЕНКИ БЕЗОПАСНОСТИ ДОРОЖНОГО ДВИЖЕНИЯ ДЛЯ ГИС INDORROAD И САПР INDORCAD/ROAD

Дипломная

Информатика, кибернетика и программирование

Объект исследования метод коэффициентов аварийности для оценки безопасности дорожного движения. Основные результаты – разработан модуль оценки безопасности дорожного движения методом коэффициентов аварийности внедрён в коммерческие программные продукты IndorCD Rod и IndorRod. Модуль для вычисления коэффициентов аварийности...

Русский

2015-02-15

1.09 MB

6 чел.

МИНОБРНАУКИ  РОССИИ

ТОМСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ

Факультет информатики

Кафедра теоретических основ информатики

 

                                                                                        

УДК 681.03

                                                                                          ДОПУСТИТЬ К ЗАЩИТЕ В ГАК

                                                          Зав. кафедрой, доцент, к.т.н.

                                                                                          ____________ А.Л.Фукс  

                                                                       «_____»__________2013 г.

 

БАКАЛАВРСКАЯ  РАБОТА

 

РАЗРАБОТКА МОДУЛЯ ОЦЕНКИ БЕЗОПАСНОСТИ ДОРОЖНОГО ДВИЖЕНИЯ ДЛЯ ГИС INDORROAD И САПР INDORCAD/ROAD

по основной образовательной программе подготовки бакалавров

010300 – Информационные технологии

Бурдуков Иван Святославович

                               

Руководитель ВКР, профессор кафедры теоретических основ информатики, д.т.н.

____________ А.В.Скворцов

                                                                                                                                       подпись

«_____»___________ 2013 г.

                                                                                               

                                                

Автор работы

                                                                                             студент группы № 1491

                                                                             _____________ И.С.Бурдуков

                                                                                                      подпись

 

Электронная версия бакалаврской работы   Администратор электронной

помещена в электронную библиотеку.        библиотеки факультета

                                                                             _____________ Е.Н.Якунина

                                                                                                      подпись

Томск 2013


Реферат

Выпускная квалификационная работа 33 с., 16 рисунков, 3 таблицы, 6 источников, 2 приложения.

КОЭФФИЦИЕНТЫ АВАРИЙНОСТИ, БЕЗОПАСНОСТЬ ДОРОЖНОГО ДВИЖЕНИЯ, INDORROAD, INDORCAD, DELPHI

Объект исследования – метод коэффициентов аварийности для оценки безопасности дорожного движения.

Цель работы – разработка программного модуля для оценки безопасности дорожного движения по материалам диагностики автомобильных дорог и проектам строительства и реконструкции автомобильных дорог.

Метод исследования – теоретическое исследование, работа на ЭВМ.

Основные результаты – разработан модуль оценки безопасности дорожного движения методом коэффициентов аварийности, внедрён в коммерческие программные продукты IndorCAD/Road и IndorRoad.


Содержание

Введение 3

1. Обзор предметной области 4  

2. Обзор САПР IndorCAD/Road и ГИС IndorRoad 9

2.1. Обзор САПР IndorCAD/Road 9

2.2. Обзор ГИС IndorRoad 10

2.3. Общие принципы разработки дополнительных модулей в САПР IndorCAD/Road и ГИС IndorRoad 11

3. Модуль для вычисления коэффициентов аварийности 13

3.1. Описание раздела interface 13

3.2. Описание структуры и функционала обработки данных 15

3.3. Вычисление коэффициентов аварийности 19

3.4. Обзор класса TAccidentRates 21

3.5. Генерация чертежа 26

Заключение 29

Список использованных источников 30

Приложение А. Таблицы вычисления коэффициентов аварийности и коэффициентов тяжести. 31

Приложение Б. Руководство программиста 33

Введение

Дорожно-транспортные происшествия являются опасной угрозой здоровью людей во всём мире. Одной из мер обеспечения безопасности дорожного движения является разумное проектирование объектов дорожной сети. Метод коэффициентов аварийности - один из методов выявления опасных участков, в пределах которых следует в первую очередь предусматривать мероприятия по обеспечению безопасности движения.

  Подобные решения уже существуют (например в САПР GIP), однако целью данной работы была реализация схожего функционала в ГИС IndorRoad и САПР IndorCAD/Road.

Целью данной работы является разработка программного модуля для оценки безопасности дорожного движения по материалам диагностики автомобильных дорог и проектам строительства и реконструкции автомобильных дорог.

Для достижения поставленной цели необходимо было решить следующие задачи:

  1.  Изучить метод коэффициентов аварийности для оценки безопасности дорожного движения;
  2.  Подготовить исходные данные для выявления аварийных участков методом коэффициентов аварийности;
  3.  Разработать модуль для вычисления коэффициентов аварийности;
  4.  Разработать модуль для формирования чертежа графика коэффициентов аварийности (по ОДМ 218.4.005-2010);
  5.  Внедрить модуль в коммерческие программные продукты: ГИС IndorRoad и САПР IndorCAD/Road.

Практическая ценность работы заключается в том, что разработан модуль, вычисляющий коэффициенты аварийности и формирующий чертёж графика коэффициентов аварийности, позволяющий наглядно оценить безопасность участка дороги и выявить наиболее опасные участки.


1. Обзор предметной области

Метод коэффициентов аварийности основан на определении итогового коэффициента аварийности Кав:

где Кi – частные коэффициенты аварийности, основанные на результатах анализа статистических данных о ДТП и характеризующие влияние  на безопасность движения параметров дорог и улиц в плане, поперечном и продольном профилях, элементов обустройства, интенсивности движения, состояния покрытия; n – число частных коэффициентов аварийности, учитываемых при оценке безопасности движения на дорогах или городских улицах различной категории.

По значениям итоговых коэффициентов аварийности строят линейный график (рис. 1).

Рис. 1. Пример чертежа графика итогового коэффициента аварийности

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

В проектах реконструкции дорог II-IV категории и нового строительства рекомендуется перепроектировать участки, для которых итоговый коэффициент аварийности более 15..20.

На горных дорогах с позиции безопасности движения допустимыми можно считать участки со значениями итогового коэффициента аварийности менее 35 и более 350.

Допустимые значения итоговых коэффициентов аварийности для вновь строящихся дорог I категории не более 10.0, для эксплуатируемых – 12.0.

В городских условиях при реконструкции улиц и новом строительстве не допускаются участки, итоговый коэффициент аварийности которых превышает 25.

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

где mi – коэффициенты тяжести (таблица А.1).

Для городских улиц и дорог значения коэффициента тяжести mi приведены в табл. А.2.

Свойства дороги и прилегающих объектов необходимые для вычисления коэффициентов аварийности:

  1.  Тип дороги
  •  Дороги I категории
  •  Дороги II-IV категории
  •  Городские дороги
  •  Дороги в горной местности
  1.  Интенсивность автомобилей на основной дороге (авт/сут)
  2.  Интенсивность автомобилей на пересекаемой дороге (авт/сут)
  3.  Количество полос
  4.  Ширина проезжей части (м)
  5.  Тип обочин
  •  Укреплённые
  •  Грунтовые
  1.  Ширина обочин (м)
  2.  Продольный уклон, ‰
  3.  Радиус кривых в плане (м)
  4.  Видимость (м)
  5.  Видимость в плане (м)
  6.  Видимость в профиле (м)
  7.  Ширина проезжей части мостов (м)
  8.  Тип пересечения и примыкания
  •  Пересечения в разных уровнях
  •  Кольцо
  •  Перекрёсток
  •  Примыкание
  1.  Видимость пересечения (м)
  2.  Число основных полос для движения прямо
  3.  Наличие разметки
  4.  Расстояние от проезжей части до застройки (м)
  5.  Расположение застройки
  •  С одной стороны
  •  С обеих сторон
  1.  Наличие тротуаров
  2.  Наличие полос местного движения
  3.  Длина населённого пункта (м)
  4.  Длина участков на подходах к населённым пунктам
  5.  Коэффициент сцепления
  6.  Расстояние от кромки проезжей части до обрыва глубиной более 5м
  7.  Тип ограждения
  •  Барьерного типа
  •  Парапет
  1.  Расстояние от кромки проезжей части до бокового препятствия
  2.  Количество легковых автомобилей в потоке (%)
  3.  Безопасная скорость потока
  4.  Направление движения
  •  Одностороннее движение
  •  Двустороннее движение
  1.  Освещение проезжей части, лк
  2.  Наличие светофорного регулирования
  3.  Интенсивность пешеходов на наземных переходах
  4.  Видимость пересечения с примыкающей дороги
  5.  Расположение остановочного пункта
  •  В кармане
  •  Без кармана
  1.  Расположение тротуаров
  2.  Расположение трамвайных путей
  •  На отдельном полотне
  •  У края улицы
  •  В середине улицы
  1.  Ширина разделительной полосы
  2.  Тип примыкания съездов к основным полосам движения
  •  Переходно-скоростная полоса отсутствует
  •  Отделённая
  •  Не отделённая
  •  Дополнительная полоса
  1.  Тип пешеходных переходов
  •  В разных уровнях
  •  В одном уровне
  1.  Расстояния между кромкой проезжей части и массивными элементами
  2.  Наличие объектов на разделительной полосе и обочине

Коэффициенты аварийности вычисляются по таблицам из ОДМ 218.4.005-2010.

Часть таблицы для вычисления коэффициентов аварийности для городских дорог приведена в таблице 1.

Интенсивность, тыс.авт/сут

К1

  3         5         10        15        20        25        30        35        40

0,57     0,62     0,74     0,90     1,10     1,35     1,69     2,18     2,7

Количество легковых автомобилей в потоке, %

К2

 100                 75                 60                  40                  20

  0,8                1,0                1,21               1,57               2,05

Ширина проезжей части, м

К3

   8                    10                12                  16                 21,5

  2,94              2,46             2,09                1,53               1,00

Безопасная скорость потока, км/ч

К4

   30                  40                 50                  55                 60

  1,38              1,18              1,04                1,0                1,04

Таблица 1. Часть таблицы со значениями коэффициентов аварийности для городских дорог

 

Значения частных коэффициентов аварийности линейно интерполируются


2. Обзор САПР IndorCAD/Road и ГИС IndorRoad

2.1. Обзор САПР IndorCAD/Road

Система проектирования автомобильных дорог IndorCAD/Road предназначена для проектирования строительства, реконструкции и ремонта улиц и дорог; проектирования транспортных развязок и разработки проектов организации движения.

Основные функции:

  •  Обработка данных инженерно-геодезических и инженерно-геологических изысканий; векторизация растровых картографических материалов.
  •  Построение и анализ цифровых моделей рельефа и местности.
  •  Проектирование плана автомобильной дороги.
  •  Разработка плана организации рельефа и плана земляных масс.
  •  Проектирование продольного профиля автомобильной дороги, водоотводных и нагорных канав.
  •  Проектирование поперечного профиля автомобильной дороги.
  •  Разработка схемы расположения технических средств организации дорожного движения.
  •  Разработка плана благоустройства дороги.
  •  Проектирование ремонтов улиц и дорог.
  •  Объёмная визуализация автомобильной дороги.


  1.   Обзор ГИС IndorRoad

Геоинформационная система IndorRoad предназначена для оперативного ведения всей технической информации по сети автомобильных дорог и искусственным сооружениям в электронном виде.

Систему можно применять для управления дорожным хозяйством всех уровней (федеральном, территориальном, муниципальном), а также в подрядных организациях. С помощью системы IndorRoad возможно управление как загородными дорогами, так и городскими улицами.

Основные функции

  •  Систематизация на топографической основе информации о титулах, проезжей части, придорожной полосе, инженерном обустройстве, объектах недвижимости и участках землеотвода.
  •  Ведение графической и атрибутивной информации по всем титулам и составляющим их объектам сети автомобильных и городских дорог.
  •  Совместное представление автомобильных и городских дорог, а также других инженерных коммуникаций на навигационной карте.
  •  Оперативное получение информации об объектах дорожной сети в любой части территории.
  •  Представление на карте автомобильных дорог данных диагностики.
  •  Формирование стандартных и пользовательских отчётов.


2.3. Общие принципы разработки дополнительных модулей в САПР IndorCAD/Road и ГИС IndorRoad

Система автоматизированного проектирования IndorCAD является чрезвычайно мощным инструментом для проектирования инженерных объектов. При этом возможности системы не ограничиваются существующим функционалом, она предоставляет программисту возможность разрабатывать собственные модули. Разработка модулей ведётся на языке Delphi в системе разработки Embarcadero Delphi ® XE4.

На изображении ниже (рис. 2) приведён пример дерева свойств.

Рис. 2. Пример дерева свойств

Также САПР IndorCAD предоставляет определённые программные интерфейсы для разработки новых модулей. Один из них – деревья свойств. Деревья свойств (Property trees) используются для задания и редактирования свойств проектируемых объектов. Соответствующие классы предоставляют удобный интерфейс для задания свойств и редактирования их значений. Основные методы (такие как AddInteger, позволяющий добавить целочисленное свойство, AddDouble, позволяющий добавить вещественное  свойство, AddIntCombo, позволяющий добавить выпадающий список значений), позволяющие работать с деревьями свойств, описаны в классе TProperty.


3. Модуль для вычисления коэффициентов аварийности

В этой части рассматривается модуль реализующий вычисление коэффициентов аварийности и формирование чертежа графика коэффициентов аварийности.

3.1. Описание раздела interface

В разделе interface описаны перечислимые типы:

  •  TRoadTypeValue – тип дороги;
  •  TIntersectionTypeValue – тип пересечения или примыкания;
  •  TLocationOfBuildingsValue – расположение застройки относительно дороги;
  •  TTrafficTypeValue – тип движения;
  •  TStoppingPointValue – расположение остановочного пункта;
  •  TTramwaysLocationValue – расположение трамвайных путей;
  •  TFenceTypeValue – тип ограждения;
  •  TAdjacencyTypeValue – тип примыкания съездов;
  •  TCrosswalkTypeValue – тип пешеходного перехода;
  •  TRoadSideValue – тип обочины

и класс, описывающий весь доступный вне модуля функционал для работы с коэффициентами аварийности – TCustomAccidentRates.

Рис. 3. Класс TCustomAccidentRates

На изображении выше (рис. 3) представлен класс TCustomAccidentRates, подобные свойства добавления и получения данных были опущены для обозримости.

На изображении ниже (рис. 4) представлена диаграмма классов модуля для вычисления коэффициентов аварийности. Для наглядности на диаграмме опущены свойства и операции.

Рис. 4. Диаграмма классов модуля для вычисления коэффициентов аварийности


3.2. Описание структуры и функционала обработки данных

Для вычисления коэффициентов аварийности необходима информация о 43 параметрах дороги и прилегающих объектов. Например: количество полос, ширина обочин, расположение трамвайных путей и т.д. Структура данных и функционал по работе со свойствами дороги, необходимыми для вычисления коэффициентов аварийности, реализованы в классе TRoadProperties, являющимся потомком абстрактного класса TAbstractInterval (рис. 5.).

Рис. 5. Класс TRoadProperties (многие свойства и операции были опущены для увеличения наглядности)

Данные хранятся в списках типа TObjectList<TRoadProperty<TValueType>>, где TValueType – наиболее подходящий для каждого конкретного свойства тип данных. Например, для хранения информации о количестве полос подходит целочисленный тип данных integer, для информации о расположении трамвайных путей выбран перечислимый тип данных TTramwaysLocationValue.

Списки типа TObjectList обладают свойством OwnsObjects, позволяющим освобождать объекты, которые удаляются из списка, либо при удалении самого списка. Используя списки данного типа, уменьшается вероятность утечек памяти и упрощается работа, связанная с освобождением памяти.

Объекты класса TRoadProperty<TValueType> представляют собой интервалы, ограниченные свойствами StartPicket и EndPicket, и обладающие значением свойства Value, типа TValueType, определяемого при инициализации. Структура класса отображена на рисунке 6.

Рис. 6. Диаграмма классов TRoadProperty<TValueType> и TAbstractInterval

 Всего в классе содержится 43 подобных списка для данных добавляемых непосредственно и еще 4 списка для данных вычисляемых на основе добавленных свойств (например длина прямых участков и извилистость трассы вычисляются на основе данных о радиусах кривых).

Для добавления данных реализованы 43 метода, каждый для отдельного свойства. Все методы добавления данных имеют подобную сигнатуру. Например, метод добавления данных о продольном уклоне: AddLongitudinalSlope(LongitudinalSlope, StartPicket, EndPicket: Double): Integer. Данный метод возвращает индекс добавленного интервала в списке продольных уклонов FLongitudinalSlopeList.   

 

Рис. 7. Пример добавления интервала.

 

На рисунке 7 схематично изображён пример добавления свойства одним из методов добавления данных. Для удобства предположим, что добавляется радиус поворота на интервале от 2 до 7 (закрашен красным цветом). В списке FRadiusList уже имеются два интервала: от 1 до 4 и от 5 до 8 (закрашены синим и зелёным цветом соответственно). После добавления нового интервала, список будет состоять из 3 интервалов: 1 – 2, 2 – 7, 7 – 8.

Метод AddInflArea<ValueType>(List: TObjectList<TRoadProperty<ValueType>>; Index, Before, After: Integer) добавляет зону влияния добавленному свойству, согласно таблицам из ОДМ 218.4.005-2010, где List – список данных свойства, Index – индекс интервала в списке List, которому добавляется зона влияния, Before – зона влияния в метрах, добавляемая перед интервалом, After – зона влияния в метрах, добавляемая после интервала.

Метод AddProperty<ValueType>(List: TObjectList<TRoadProperty<ValueType>>; Value: ValueType; StartPicket, EndPicket: Double): Integer предназначен для добавления интервалов в списки с данными. Используется в методах добавления данных. Наглядный пример изображен на рисунке 7.

Метод GetRoadPropertyIndex<ValueType>(List: TObjectList<TRoadProperty<TValue- Type>>; Picket: Double; PPrevIndex: PInteger = nil; PNextIndex: PInteger = nil): Integer. Осуществляет дихотомический поиск интервала в списке List, включающего в себя указанный Picket. Возвращает -1 в случае отсутствия интервала в указанном пикете. PPrevIndex и PNextIndex – указатели на индексы интервалов предшествующих и следующих за искомым.

Метод OptimizeListInternal<ValueType>(List: TObjectList<TRoadProperty<Value- Type>>). Оптимизирует список List, путём объединения граничащих интервалов с одинаковым значением свойства.

Метод OptimizeList(PropertyName: TRoadPropertyName). Аналогичен методу OptimizeListInternal. В качестве параметра выступает название свойства.

 Метод GetRoadPropertyIndexByName(PropertyName: TRoadPropertyName; Picket: Double; PPrevIndex: PInteger = nil; PNextIndex: PInteger = nil): Integer. Аналогичен методу GetRoadPropertyIndex, вместо списка передаётся название свойства.

 Метод GetRoadPropertyInterval(PropertyName: TRoadPropertyName; Index: Integer; StartPicket: PDouble = nil; EndPicket: PDouble = nil): Integer. Возвращает количество интервалов в списке по наименованию свойства. StartPicket и EndPicket указывают на начало и конец интервала с индексом Index соответственно, в списке соответствующем наименованию свойства PropertyName.

Метод UpdateStraightLengthList пересчитывает список с прямыми участками.

Метод UpdateCurveCountList пересчитывает список с количеством кривых на 1 километр.

Метод UpdateDistanceBetweenDiffLevelIntersections пересчитывает список с расстояниями между пересечениями в разных уровнях.

Также в классе TRoadProperties реализованы методы получения значений свойств, границ интервалов по индексу интервала и получения количества интервалов в списке свойств для каждого свойства дороги и прилегающих объектов. Например, для интенсивности потока автомобилей: GetIntensity(Index: Integer; StartPicket: PDouble = nil; EndPicket: PDouble = nil): Integer и Intensity_Count: Integer.


3.3. Вычисление коэффициентов аварийности

Методы вычисления коэффициентов аварийности реализованы в классах TAccRate1 (рис. 9.), TAccRate2, …, TAccRate19. Классы содержат функции GetCoeffCat2_4, GetCoeffMountain, GetCoeffCity, GetCoeffFirstCat, вычисляющие значения коэффициентов аварийности для дорог II-IV категории, дорог в горной местности, городских дорог и дорог первой категории соответственно.

Рис. 8. Класс с методами вычисления коэффициентов аварийности TAccRate1

Параметрами классовых функций являются вещественное значение – пикет, в котором необходимо вычислить значение коэффициента аварийности и объект класса TRoadProperties, содержащий всю необходимую для вычислений информацию.  

Рис. 9. Часть таблицы предназначенной для определения коэффициентов аварийности из ОДМ 218.4.005-2010

На рисунке 10 приведён пример представления части таблицы (рис. 9) для определения коэффициентов аварийности в классовой функции GetCoeffFirstCat класса TAccRate1 (рис. 8).  

Рис. 10. Пример представления части таблицы из ОДМ 218.4.005-2010 в модуле для вычисления коэффициентов аварийности

По данным из объекта Properties класса TRoadProperties определяется индекс строки со значениями коэффициентов аварийности соответствующих значениям параметра указанного в шапке таблицы. Затем определяется значение данного параметра в указанном пикете и значение коэффициента аварийности вычисляется функцией GetCoeffFromTable, аргументами которой являются таблица (подобная приведённой на рис. 11), индекс строки в таблице, значение свойства в указанном пикете и количество столбцов таблицы.

В случае если каких-либо данных не хватило для вычисления коэффициента аварийности, его значение принимается равным единице.


3.4. Обзор класса TAccidentRates

Класс TAccidentRates (рис. 11) является потомком класса TCustomAccidentRates, реализует основной функционал для работы с коэффициентами аварийности.

Рис. 11. Класс TAccidentRates (подобные элементы класса опущены для наглядности)

В строковых массивах FARNames_Cat2_4, FARNames_Mountain, FARNames_City, FARNames_Cat1 содержатся наименования коэффициентов аварийности, которые отображаются на чертеже.

Классовые поля типа TPropertyID являются идентификаторами свойств чертежа.

Параметры чертежа хранятся в переменных раздела strict private const.

FNames: Boolean – флаг, если установлено значение false наименования коэффициентов аварийности не будут отображаться.  

FStriped: Boolean – флаг, если установлено значение true фон полос со значениями коэффициентов аварийности будет окрашиваться поочерёдно серым цветом. Увеличивает наглядность чертежа.

FScale: Double – масштаб чертежа.

FDrawInterval: Boolean – флаг, если установлено значение true значения коэффициентов аварийности будут дублироваться с определённым интервалом.

FInterval: Double – значение интервала, с которым будут дублироваться значения коэффициентов аварийности на чертеже, если установлен флаг FDrawInterval.

FNamesOnlyIfRTChanged: Boolean – флаг, если установлено значение true наименования коэффициентов аварийности будут отображаться только после смены типа дороги. Заметно уменьшает количество страниц чертежа, зато уменьшается наглядность.

FFontSize: Double – размер шрифта в мм.

FGraphHeight: Double – высота графика в мм.

FOffsetLeft: Double – отступ слева в мм.

FOffsetRight: Double – отступ справа в мм.

FOffsetTop: Double – отступ сверху в мм.

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

FDashedLines: Boolean – флаг, если установлено значение true при изменении значения итогового коэффициента аварийности на строку с пикетами будут опускаться пунктирные линии. Увеличивает наглядность.

FDashedIfBigARValue: Boolean – флаг, если установлено значение true и установлен флаг FDashedLines при пересечении порогового значения итоговым коэффициентом аварийности на строку с пикетами будут опускаться пунктирные линии. Таким образом, участки со значением итогового коэффициента аварийности превышающего максимально допустимый будут наглядно выделены на чертеже.

FNameOffset: Double – отступ текста от границ в колонке с наименованиями коэффициентов аварийности.

FLineHeight: Double – высота строк.

FFirstColumnTO: Double – отступ текста от границ в столбце с порядковыми номерами коэффициентов.

FPageSizeProperties: TPageSizeProperties – свойства страницы, такие как размер листа, ориентация листа и т.д.

Другие поля:

FTextStyle: TObjectFontStyle – стиль текста

FDrawing: TDrawing – чертёж.

FRoadProperties: TRoadProperties – свойства дороги и прилегающих объектов.

FARSet: array of TAccRatePropSet – множества свойств от которых зависят коэффициенты аварийности (заполняется при инициализации).

FAROld: array of Boolean – массив флагов, указывающих на актуальность вычисленных коэффициентов аварийности.

FARCalcMethodsCat2_4, FARCalcMethodsMountain, FARCalcMethodsCity, FARCalcMethodsCat1 – массивы с указателями на методы вычисления коэффициентов аварийности (заполняются при инициализации).

Списки со значениями коэффициентов аварийности и коэффициентов тяжести типа TObjectList<TRoadProperty<Double>>.

Далее описаны операции класса.

Методы раздела private.

Функция GetARList(Number: Integer): TObjectList<TRoadProperty<Double>> возвращает список с коэффициентами аварийности, коэффициентами тяжести или итоговыми коэффициентами аварийности по номеру (1-19 соответствуют номеру коэффициента аварийности, 20 – соответствует коэффициентам тяжести и 21 – итоговым коэффициентам аварийности).

Функция GetARInterval(Number: Integer; Picket: Double): Integer возвращает индекс интервала коэффициента аварийности по пикету и номеру коэффициента аварийности.

Процедура DivideListIntoIntervalsByOneProperty(PropName: TRoadPropertyName; Number: Integer) разбивает список с коэффициентами аварийности и коэффициентами тяжести на интервалы соответственно списку из TRoadProperties, полученного по наименованию свойства.

Процедура DivideListIntoIntervals(Number: Integer) разделяет список с коэффициентами аварийности, коэффициентами тяжести и итоговыми коэффициентами аварийности на интервалы.

Функция CalcCoeffValueInPicket(Number: Integer; Picket: Double): Double вычисляет значение коэффициента в указанном пикете.

Процедура RefreshARList(Number: Integer) обновляет список с коэффициентами аварийности согласно номеру Number. Вызывается в случае если данные устарели.

Процедура OptimizeList(Number: Integer) объединяет смежные интервалы с одинаковым значением коэффициента в один интервал.

Функция GetDrawing: TDrawing возвращает сгенерированный чертёж.

Функция GetNameWidth: Double возвращает ширину столбца с наименованиями коэффициентов аварийности.

Функция GetFirstColumnWidth: Double возвращает ширину столбца с порядковыми номерами коэффициентов аварийности.

Функция GetMaxFontSize: Double вычисляет максимальный размер шрифта для установленных параметров чертежа.

Функции GetMaxOffsetLeft: Double и GetMaxOffsetRight: Double вычисляют максимально допустимые отступы слева и справа.

Функция GetMinLineHeight: Double вычисляет минимально допустимую высоту строки.

Методы раздела protected.

Функция GetAccRateByInterval(Number, Index: Integer): Double возвращает значение коэффициента аварийности в указанном интервале.

Функция GetAccRateCount(Number: Integer): Integer возвращает количество интервалов в указанном списке с коэффициентами аварийности, коэффициентами тяжести либо с итоговыми коэффициентами аварийности.

Функции GetAccRateIntervalStart(Number, IntIndex: Integer): Double и GetAccRateIntervalEnd(Number, IntIndex: Integer): Double возвращают пикет начала и конца интервала соответственно, с порядковым номером IntIndex в списке с коэффициентами аварийности.

Функции GetCommonIntervalStartPicket: Double и GetCommonIntervalEndPicket: Double возвращают пикет начала и конца выбранного интервала соответственно.

Функция GetRoadType(Index: Integer): TRoadTypeValue возвращает тип дороги в указанном порядковым номером в Index интервале.

Функция GetRoadTypeCount: Integer возвращает количество интервалов в списке объекта FRoadProperties с типами дорог.

Функции GetRTStart(IntIndex: Integer): Double и GetRTEnd(IntIndex: Integer): Double возвращают начало и конец интервала соответственно с порядковым номером IntIndex в списке с итоговыми коэффициентами аварийности.

Методы IDrawingViewerExtender.

Процедура SetupViewer(Viewer: TDrawingViewerForm) – инициализирует окно просмотра.

Процедура GetProperties(Properties: TProperties) – загружает свойства в инспектор объектов.

Функция SetProperty(Prop: TProperty; StateClicked: Boolean): Boolean устанавливает значения свойства при его изменении в инспекторе объектов.

Процедура ReloadDrawing – обновляет чертёж.

Методы раздела public.

Процедура GenerateDrawing – создаёт чертёж.

Функция GetCoeffByPicket(Number: Integer; Picket: Double): Double – возвращает значение коэффициента аварийности с номером Number в пикете Picket.

Функция GetCoeffByInterval(Number, Index: Integer; StartPicket: PDouble = nil; EndPicket: PDouble = nil): Double возвращает значение коэффициента аварийности с номером Number в интервале с порядковым номером Index X в списке с коэффициентами аварийности. Указатели StartPicket и EndPicket указывают на начало и конец найденного интервала.

Также в классе TAccidentRates реализованы методы добавления всех необходимых свойств для вычисления коэффициентов аварийности.


3.5. Генерация чертежа

Чертёж генерируется методом GenerateDrawing класса TAccidentRates. В дереве свойств отображены настраиваемые свойства чертежа (рис. 14). Чертёж разбивается на страницы, используя функционал классов TARDPages и TAccRateDrawingPage (рис. 12).

         

Рис. 12. Диаграмма классов разбивающих чертёж на страницы

Согласно установленным в дереве свойств (рис. 14) параметрам чертежа, процедура DivideOnPages класса TARDPages, вызываемая при инициализации объекта, разделит чертеж на страницы. Также можно в свойствах страницы указать размер листа «Весь объект». В таком случае, чертёж на страницы разбиваться не будет (рис. 16).

Рис. 13. Слои листа чертежа в дереве свойств

Классы TARDPages и TAccRateDrawingPage предлагают удобный функционал для генерации чертежа. Все списки с коэффициентами аварийности разбиваются при инициализации объекта TARDPages на страницы, представленные экземплярами класса TAccRateDrawingPage. Страницы содержат информацию о коэффициентах аварийности (свойство AccRateValue[]), количестве интервалов каждого коэффициента аварийности, коэффициента тяжести, итогового коэффициента аварийности, координаты начала и конца каждого интервала, тип дороги, и т.д.  

Чертёж разбит на 3 слоя, которые можно отключать и просматривать по отдельности (рис. 13.).

Слой с разметкой содержит рамку чертежа, границы интервалов и т.д.

Слой с текстом содержит все текстовые элементы чертежа.

Слой с графиком содержит график коэффициентов аварийности.

Рис. 14. Дерево свойств с параметрами чертежа коэффициентов аварийности

На статусной панели, во время генерации чертежа отображается индикатор прогресса генерации чертежа.

На изображении (рис. 15) приведён пример готового чертежа графика коэффициентов аварийности.

Рис. 15. Пример чертежа графика коэффициентов аварийности

Зелёным цветом на графике отображаются участки со значением итогового коэффициента ниже максимально допустимого для данного типа дороги.

Синим цветом на графике отображается максимально допустимое значение итогового коэффициента аварийности для данного типа дороги.

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

Рис. 16. Отображение всего объекта на чертеже

Заключение 

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

Также разработан модуль, формирующий чертёж графика коэффициентов аварийности (по ОДМ 218.4.005-2010), который позволяет наглядно оценивать безопасность дорожного движения участка дороги и выявлять наиболее опасные участки.

Модуль оценки безопасности дорожного движения методом коэффициентов аварийности внедрён в коммерческие программные продукты: ГИС IndorRoad и САПР IndorCAD/Road.


Список использованных источников

  1.  ГОСТ Р 50597-93. Автомобильные дороги и улицы. Требования к эксплуатационному состоянию, допустимому по условиям обеспечения безопасности движения. - Введ. 2011-12-01. – М.: Федеральное дорожное агентство (Росавтодор), 2011. - 187 с. – (Рекомендации по обеспечению безопасности движения на автомобильных дорогах)
  2.  ГОСТ Р 52398-2005. Классификация автомобильных дорог. Основные параметры и требования. - Введ. 2011-12-01. – М.: Федеральное дорожное агентство (Росавтодор), 2011. - 187 с. – (Рекомендации по обеспечению безопасности движения на автомобильных дорогах)
  3.  ГОСТ Р 52766-2007. Дороги автомобильные общего пользования. Элементы обустройства. Общие требования. - Введ. 2011-12-01. – М.: Федеральное дорожное агентство (Росавтодор), 2011. - 187 с. – (Рекомендации по обеспечению безопасности движения на автомобильных дорогах)
  4.  ОДН 218.0.006-2002. Правила диагностики и оценки состояния автомобильных дорог. Основные положения. - Введ. 2011-12-01. – М.: Федеральное дорожное агентство (Росавтодор), 2011. - 187 с. – (Рекомендации по обеспечению безопасности движения на автомобильных дорогах)
  5.  Осипов Д. Delphi. Профессиональное программирование / Д.Осипов. – М.: Символ – Плюс, 2006. – 1056 с.
  6.  Основы алгоритмизации и программирования в среде Delphi : [учебное пособие] / А. В. Скворцов, Т. Н. Поддубная. – Томск : Изд-во Том. ун-та, 2006. – 264 с.


Приложение А. Таблицы вычисления коэффициентов аварийности и коэффициентов тяжести.

Таблица А.1 – Коэффициенты тяжести.

№ п/п (i)

Учитываемые факторы

Средние значения коэффициентов тяжести mi

1

Ширина проезжей части дорог:

4,5

6

7..7,5

9

10,5

14

15 и более для дорог с разделительной полосой

0,7

1,2

1,0

1,4

1,2

1,0

0,9

2

Ширина обочин, м:

менее 2,5

более 2,5

0,85

1,0

3

Продольный уклон дорог, ‰:

менее 30

более 30

1,0

1,25

4

Радиусы кривых в плане, м:

менее 350

более 350

0,9

1,0

5

Видимость в плане и профиле, м:

менее 250:

более 250:

0,7

1,0

6

Мосты и путепроводы

2,1

7

Нерегулируемые пересечения в одном уровне

0,8

8

Пересечения на разных уровнях

0,95

9

Населённые пункты

1,6

10

Число полос движения:

1

2

3

4 и более

0,9

1,0

1,3

1,0

11

Наличие деревьев, опор путепроводов и т.д. на обочинах и разделительной полосе

1,5

12

Отсутствие ограждений в необходимых местах

1,4

13

Железнодорожные переезды

0,6

Таблица А.2. – коэффициенты тяжести для городских улиц и дорог

№ п/п (i)

Учитываемые факторы

Средние значения коэффициентов тяжести mi

1

Ширина проезжей части улиц, м:

4,5

6,0

7,75

8..9,0

10..14,0

15,0

1,0

1,02

0,98

1,02

1,01

1,08

2

Продольный уклон, ‰:

менее 20

более 20

1,0

1,17

3

Радиусы кривых в плане, м:

менее 200

более 200

1,36

1,0

4

Мосты и путепроводы

1,4

5

Нерегулируемые перекрёстки

0,81

6

Регулируемые перекрёстки

0,8

7

Пешеходные переходы

1,25

8

Остановки общественного транспорта

1,34


Приложение Б. Руководство программиста.

Разработанный модуль AccidentRates, предназначенный для вычисления коэффициентов аварийности и формирования чертежа графика коэффициентов аварийности, представляет весь свой функционал в классе TCustomAccidentRates.

Объект класса TCustomAccidentRates создаётся функцией CreateAccRates (StartPicket, EndPicket: Double; RoadType: TRoadTypeValue).

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

Все процедуры добавления свойств перечислены ниже.

  1.  AddRoadType – добавляет тип дороги.
  2.  AddIntensity – добавляет интенсивность автомобилей на основной дороге (авт/сут).
  3.  AddIntersectedRoadIntensity – добавляет интенсивность автомобилей на пересекаемой дороге (авт/сут).
  4.  AddLaneCount  - добавляет количество полос на участке.
  5.  AddRoadWidth – добавляет ширину проезжей части (м).
  6.  AddRoadSideType – добавляет тип обочины.
  7.  AddRoadSideWidth – добавляет ширину обочины (м).
  8.  AddLongitudinalSlope – добавляет продольный уклон (‰).   
  9.  AddRadius – добавляет радиус кривых в плане (м).
  10.  AddVisibility – добавляет видимость (м).
  11.  AddPlanVisibility – добавляет видимость в плане (м).
  12.  AddProfileVisibility – добавляет видимость в профиле (м).
  13.  AddBridgeWidth – добавляет ширину проезжей части мостов (м).
  14.  AddIntersectionType – добавляет тип пересечения или примыкания.    
  15.  AddIntersectionVisibility – добавляет видимость пересечения (м).
  16.  AddForwardLaneCount – количество основных полос для движения прямо.    
  17.  AddRoadMarkings – добавить разметку.
  18.  AddBuildingsOffset – добавляет расстояние от проезжей части до застройки (м).    
  19.  AddBuildingsLocation – добавляет расположение застройки.
  20.  AddSidewalk – добавляет тротуары.      
  21.  AddLocalMovementLanes – добавляет полосы местного движения.   
  22.  AddVillageLength – добавляет длину населённого пункта (м).    
  23.   AddLengthOfApproachToVillage – добавляет длину участка на подходе к населённому пункту (м).
  24.  AddAdhesionCoefficient – добавляет коэффициент сцепления.
  25.  AddOffsetFromFall – добавляет расстояние от кромки проезжей части до обрыва глубиной более 5 метров (м).   
  26.  AddFenceType – добавляет тип ограждения.
  27.  AddOffsetFromLateralObstacle – добавляет от кромки проезжей части до бокового препятствия (м).    
  28.  AddPassengerCarCount – добавляет количество легковых автомобилей в транспортном потоке (%).
  29.  AddSafeSpeedLimit – добавляет безопасную скорость потока (км/ч).
  30.  AddTrafficType – добавляет направление движения.
  31.  AddRoadLighting – добавляет освещение проезжей части (лк).
  32.  AddTrafficLights – добавляет наличие светофорного регулирования.
  33.  AddPedestrianIntensityOnCrosswalks – добавляет интенсивность пешеходов на наземном переходе (чел/сут).
  34.  AddIntersectionVisibilityFromAdjacentRoad – добавляет видимость пересечения на наземной дороге (м).  
  35.  AddStoppingPoints – добавляет расположение остановочных пунктов.    
  36.  AddSidewalkOffset – добавляет расположение тротуаров.
  37.  AddTramwaysLocation – добавляет расположение трамвайных путей.    
  38.  AddDividingLineWidth – добавляет ширину разделительной полосы (м).
  39.  AddAdjacencyType – добавляет тип примыкания съездов к основным полосам движения.
  40.  AddCrosswalkTypeList – добавляет тип пешеходных переходов.  
  41.  AddOffsetFromMassiveElement – добавляет расстояние между кромкой проезжей части и массивными элементами.      
  42.  AddObjectsOnDivLineAndRoad – добавляет наличие объектов на разделительной полосе и обочине.

Для генерации чертежа необходимо вызвать процедуру GenerateDrawing. Сформированный чертёж можно получить с помощью атрибута Drawing.

Для тестирования была реализована доступная только в режиме отладки процедура GenerateRandom(count: integer), заполняющая объект случайно сгенерированными данными.


0

1

4

5

7

8

9


 

А также другие работы, которые могут Вас заинтересовать

70756. Изучение прецессии гироскопа 495.5 KB
  Момент инерции тела относительно оси не проходящей через центр масс равен моменту инерции для параллельной оси проходящей через центр масс плюс произведение массы тела на квадрат расстояния между параллельными осями...
70759. Определение отношений воздуха методом Клемана–Дезорма 59 KB
  Цель работы: изучить адиабатический процесс в газах; определить отношение теплоемкостей газа методом адиабатического расширения. Приборы и принадлежности: стеклянный баллон, манометр, насос.
70760. Изучение статистических закономерностей на механических моделях 258.5 KB
  Движение каждой молекулы определяется законами классической механики поэтому в принципе можно написать уравнение движения каждой молекулы. Однако поскольку число молекул огромно то не только решить но даже написать такое громадное число дифференциальных уравнений практически невозможно.
70761. Определение скорости звука в воздухе методом стоячих волн 97 KB
  Эту величину называют длинной стоячей волны: Уравнение плоской синусоидальной волны имеет вид: где фаза плоской волны. Уравнение сферической синусоидальной волны имеет вид: где амплитуда волн. физическая величина численно равная амплитуде волны на единичном расстоянии.
70763. Устройство ввода-вывода 375.5 KB
  Клавиатура дисплея используется для ввода входной информации программ данных и команд управления машиной. Центральным является микропроцессор устройство непосредственно осуществляющее преобразования информации которая поступает дисплея или oт других внешних устройств...
70764. ОТПРАВЛЕНИЕ КОНФИДЕНЦИАЛЬНЫХ ДОКУМЕНТОВ 71.5 KB
  Цель работы: получить навыки по отправлению конфиденциальных документов в законвертованном виде Задание: в соответствии с вариантом задания подготовить конфиденциальные документы для отправления на другие предприятия.