Разработка автоматизированной системы расчета оптимального маршрута между городскими объектами для курьерской компании

  • Вид работы:
    Дипломная (ВКР)
  • Предмет:
    Информационное обеспечение, программирование
  • Язык:
    Русский
    ,
    Формат файла:
    MS Word
    3,55 Мб
  • Опубликовано:
    2012-06-21
Вы можете узнать стоимость помощи в написании студенческой работы.
Помощь в написании работы, которую точно примут!

Разработка автоматизированной системы расчета оптимального маршрута между городскими объектами для курьерской компании

Введение

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

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

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

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

Любая компания, выйдя на определённые обороты, задумывается об автоматизации своей работы. У такого решения есть явные плюсы:

внедрение нетривиальных алгоритмов оптимизации затрат;

уменьшение рутинной нагрузки на сотрудников и ускорение их работы;

создание, выравнивание и контроль планов работы.

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

Цель проекта - разработка автоматизированной системы расчета оптимального маршрута между городскими объектами для курьерской компании.

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

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

определиться с функциональными требованиями к системе;

выбрать способ реализации системы;

подобрать необходимые инструменты для разработки;

решить задачи, встающие при реализации той или иной функции;

разработать интерфейс приложения;

определить основополагающие элементы развертывания системы;

провести технико-экономическое обоснование дипломного проекта;

рассмотреть аспекты ее безопасности и экологичности.

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

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

Автоматизированная система расчета оптимального маршрута между городскими объектами ориентирована на фирмы, которые стремятся оптимизировать и наилучшим образом управлять транспортными перевозками.

Создаваемый программный комплекс функционирует на базе коммуникаторов с операционной системой Android. Выбор данной платформы не случаен и обоснован в проекте.

Для разработки системы использовался язык Java. Были использованы комплект разработки программного обеспечения Java Development Kit, интегрированная среда разработки Eclipse, Android SDK, включающий в себя эмулятор работы реальных устройств и плагин Android Development Tools - расширение для интегрированной среды разработки, ускоряющее и упрощающее создание и отладку приложений. Основные характеристики выбранного инструментария и его преимущества так же раскрыты в дипломном проекте.

Для документирования основных вех разработки системы и структурированного представления выработанных артефактов использованы средства унифицированного языка моделирования - UML, язык <#"551882.files/image001.gif">

Рисунок 1 - Доли рынка операционных систем для смартфонов

Таблица 4 - Доли рынка операционных систем для смартфонов

Квартал

Android

iOS

Symbian

Microsoft

Bada

RIM

Other

2007 Q4

0%

5,20%

62,30%

11,90%

0%

12,90%

20,60%

2008 Q1

0%

4,60%

49,50%

10,40%

0%

13,10%

35,50%

2008 Q2

0%

2,80%

57,50%

12,10%

0%

15,40%

27,60%

2008 Q3

0,60%

13,10%

50,30%

11,20%

0%

18,20%

24,80%

2008 Q4

1,10%

10,60%

46,50%

12,20%

0%

19,70%

29,60%

2009 Q1

1,60%

10,50%

48,80%

10,20%

0%

19,70%

28,90%

2009 Q2

1,80%

13,00%

51,00%

9,30%

0%

20,50%

24,90%

Окончание таблицы 4

2009 Q3

3,40%

17,00%

44,20%

7,90%

0%

19,00%

27,50%

2009 Q4

7,60%

16,20%

44,70%

7,90%

0%

20,60%

23,60%

2010 Q1

9,60%

15,30%

44,20%

6,80%

0%

19,30%

24,10%

2010 Q2

17,20%

14,20%

41,20%

5,00%

0,90%

16,10%

21,50%

2010 Q3

25,30%

16,60%

36,30%

2,80%

1,10%

17,50%

17,90%

2010 Q4

31,10%

16,10%

32,90%

3,40%

1,30%

11,60%

15,20%

2011 Q1

36,00%

16,80%

27,40%

3,60%

1,70%

10,90%

14,50%

2011 Q2

43,40%

18,20%

22,10%

1,60%

1,90%

9,70%

12,80%

2011 Q3

52,50%

15,00%

16,90%

1,50%

2,20%

8,90%

11,90%

2011 Q4

56,90%

18,90%

11,70%

1,90%

2,10%

8,70%

8,50%


Операционная система Android обладает целым рядом преимуществ [13]:

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

Во-вторых, система полностью универсальна. Android OS можно устанавливать и на смартфоны, и на карманные компьютеры, и даже на телефоны (в облегчённом виде).

Это одна из наиболее удобных и практичных мобильных операционных систем, используемых в современном мире и ее настройка очень проста.

Популярность операционной системы Android стала следствием того, что ведущие компании мобильных телефонов, например, HTC, Motorola, Samsung Electronics, и многие другие производители стали использовать Android на своих смартфонах.

Преимуществом Android от Google также является так же и то, что новая версия Android запускается почти каждые 3 месяца. Обновление телефона новыми версиями помогает пользователям наслаждаться более качественными услугами.

2.2.1 Особенности архитектуры ОС Android

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

Система Android - это программный стек для мобильных устройств, который включает операционную систему, программное обеспечение промежуточного слоя (middleware), а также основные пользовательские приложения.

Архитектуру Android принято делить на четыре уровня [1]:

уровень ядра;

уровень библиотеки среды выполнения;

уровень каркаса приложений;

уровень приложений.

На рисунке 2 показаны основные компоненты операционной системы и их взаимодействие между собой.

Рисунок 2 - Архитектура операционной системы Android

Ядро Android основано на ядре Linux версии 2.6, но сама система Android не является Linuх-системой в чистом виде, имеет некоторые отличия и содержит дополнительные расширения ядра, специфичные для Android, - свои механизмы распределения памяти, взаимодействие между процессам и и др.

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

Основные компоненты уровня ядра:

драйвер межпроцессного взаимодействия (IPC Driver);

драйвер управления питанием (Android Power Management);

набор драйверов для оборудования, входящего в состав мобильного устройства.

«Выше» ядра, как программное обеспечение промежуточного слоя, лежит набор библиотек (Libraries), предназначенный для обеспечения важнейшего базового функционала для приложений. То есть именно этот уровень отвечает за предоставление реализованных алгоритмов для вышележащих уровней, поддержку файловых форматов, осуществление кодирования и декодирования информации (в пример можно привести мультимедийные кодеки), отрисовку графики и многое другое. Библиотеки реализованы на C/C++ и скомпилированы под конкретное аппаратное обеспечение устройства, вместе с которым они и поставляются производителем в предустановленном виде.

Перечислим некоторые из них:

Surface Manager - в ОС Android используется композитный менеджер окон, наподобие Compiz (Linux), но более упрощенный. Вместо того чтобы производить отрисовку графики напрямую в буфер дисплея, система посылает поступающие команды отрисовки в закадровый буфер, где они накапливаются вместе с другими, составляя некую композицию, а потом выводятся пользователю на экран. Это позволяет системе создавать интересные бесшовные эффекты, прозрачность окон и плавные переходы.

Media Framework - библиотеки, реализованные на базе PacketVideo OpenCORE. С их помощью система может осуществлять запись и воспроизведение аудио и видео контента, а также вывод статических изображений. Поддерживаются многие популярные форматы, включая MPEG4, H.264, MP3, AAC, AMR, JPG и PNG.

SQLite - легковесная и производительная реляционная СУБД, используемая в Android в качестве основного движка для работы с базами данных, используемыми приложениями для хранения информации.

FreeType - библиотека для работы с битовыми картами, а также для растеризации шрифтов и осуществления операций над ними. Это высококачественный движок для шрифтов и отображения текста.

LibWebCore - библиотеки известного шустрого браузерного движка WebKit, используемого также в десктопных браузерах Google Chrome и Apple Safari.

SSL - библиотеки для поддержки одноименного криптографического протокола. Libc - стандартная библиотека языка C, а именно её BSD реализация, настроенная для работы на устройствах на базе Linux. Носит название Bionic.

На этом же уровне располагается Android Runtime - среда выполнения. Ключевыми её составляющими являются набор библиотек ядра и виртуальная машина Dalvik. Библиотеки обеспечивают большую часть низкоуровневой функциональности, доступной библиотекам ядра языка Java.

Каждое приложение в ОС Android запускается в собственном экземпляре виртуальной машины Dalvik. Таким образом, все работающие процессы изолированы от операционной системы и друг от друга. И вообще, архитектура Android Runtime такова, что работа программ осуществляется строго в рамках окружения виртуальной машины. Благодаря этому осуществляется защита ядра операционной системы от возможного вреда со стороны других её составляющих. Поэтому код с ошибками или вредоносное ПО не смогут испортить Android и устройство на его базе, когда сработают. Такая защитная функция, наряду с выполнением программного кода, является одной из ключевых для надстройки Android Runtime.

Уровнем выше располагается Application Framework, иногда называемый уровнем каркаса приложений. Именно через каркасы приложений разработчики получают доступ к API, предоставляемым компонентами системы, лежащими ниже уровнем. Кроме того, благодаря архитектуре фреймворка, любому приложению предоставляются уже реализованные возможности других приложений, к которым разрешено получать доступ. В базовый набор сервисов и систем, лежащих в основе каждого приложения и являющихся частями фреймворка, входят [2]:

богатый и расширяемый набор представлений (Views), который может быть использован для создания визуальных компонентов приложений, например, списков, текстовых полей, таблиц, кнопок или даже встроенного web-браузера.

Контент-провайдеры (Content Providers), управляющие данными, которые одни приложения открывают для других, чтобы те могли их использовать для своей работы.

Менеджер Ресурсов (Resource Manager), обеспечивающий доступ к ресурсам без функциональности (не несущими кода), например, к строковым данным, графике, файлам и другим.

Менеджер Оповещений (Notification Manager), благодаря которому все приложения могут отображать собственные уведомления для пользователя в строке состояния.

Менеджер Действий (Activity Manager), который управляет жизненными циклами приложений, сохраняет данные об истории работы с действиями, а также предоставляет систему навигации по ним.

Менеджер Местоположения (Location Manager), позволяющие приложениям периодически получать обновленные данные о текущем географическом положении устройства.

Таким образом, благодаря Application Framework, приложения в ОС Android могут получать в своё распоряжение вспомогательный функционал, благодаря чему реализуется принцип многократного использования компонентов приложений и операционной системы. Естественно, в рамках политики безопасности.

На вершине программного стека Android лежит уровень приложений (Applications). Сюда относится набор базовых приложений, который предустановлен на ОС Android. Например, в него входят браузер, почтовый клиент, программа для отправки SMS, карты, календарь, менеджер контактов и многие другие. Список интегрированных приложений может меняться в зависимости от модели устройства и версии Android. И помимо этого базового набора к уровню приложений относятся в принципе все приложения под платформу Android, в том числе и разрабатываемая система.

2.3 Выбор средств разработки и тестирования

Выбор устройств-коммуникаторов в качестве аппаратной основы для реализации проекта и Android OS в качестве операционной системы в значительной степени обусловил и то, какой инструментарий будет использоваться для разработки и тестирования приложений.

2.3.1 Язык Java

Система разрабатывалась на объектно-ориентированном языке Java, разработанном компанией Sun Microsystems <#"551882.files/image003.gif">

Рисунок 3 - Общая структура АИС

Таблица 5 - Реестр основных компонентов системы

Код

Наименование

Формулировка

К

АРМ Курьера

Автоматизированное рабочее место курьера функционирует на базе коммуникатора с ОС Android и позволяет производить расчет оптимального маршрута, оценивать необходимое время прохождения маршрута. Обеспечивается обмен информацией с АРМ Диспетчера

M

АРМ Диспетчера

Автоматизированное рабочее место диспетчера функционирует на ПК, позволяет вести мониторинг состояния перевозок по карте. Обеспечивается обмен информацией с АРМ Клиента.


Теперь более детально определим функциональные требования к клиентской части системы (рисунок 4, таблица 6).

Рисунок 4 - Диаграмма прецедентов для клиентской части системы, размещаемой на коммуникаторах с ОС Android (АРМ Курьера)

Таблица 6 - Реестр вариантов использования для АРМ Курьера

КодНаименованиеФормулировка



KA1

Определение местоположения

Определение координат (широты и долготы) текущего местоположения и отображение их на карте.

KA2

Расчет оптимального маршрута

Расчет, построение и отображение оптимального маршрута движения от текущего местоположения до пункта назначения.

KA3

Оценка необходимого времени

Оценка времени, необходимого для прохождения оптимального маршрута.

KS1

Установка статуса состояния перевозок

Установка статуса состояния: «Свободен», «Выполняю заказ», «Аварийная ситуация», «Перерыв в работе»

Окончание таблицы 6

KD1

Редактирование реестра объектов

Меню доступа и инструментам добавления, редактирования и удаления городских объектов.

KD2

Добавление объекта

Добавление в базу данных нового объекта с указанием его наименования, категории, адреса, широты и долготы, примечаний.

KD3

Редактирование данных об объекте

Редактирование данных о географическом объекте

KD4

Удаление объекта

Удаление объекта из базы данных


Проведем декомпозицию объекта АРМ Диспетчера по выполняемым функциям (рисунок 5, таблица 7).

Рисунок 5 - Диаграмма прецедентов для стационарной, серверной части системы (АРМ Диспетчера)

Таблица 7 - Реестр вариантов использования для АРМ Курьера

Код

Наименование

Формулировка

MA1

Мониторинг состояния перевозок

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

Окончание таблицы 7

MP1

Управление курьерами

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

MP2

Добавление курьера

Добавление в базу данных нового курьера, ввод необходимой информации и характеристик

MP3

Редактирование данных о курьере

Корректировка данных о курьере

MP4

Удаление курьера

Удаление курьера из базы данных

MP5

Просмотр сведений о курьере

Просмотр основных сведений о курьере, хранящихся в базе данных


4. Разработка проекта

.1 Обзор и решение ключевых задач

.1.1 Определения текущего местоположения

Задача получения приложением данных о текущем местоположении пользователя является отправной точкой в вопросе построения оптимального маршрута. Видится два решения этого вопроса: использование спутниковой системы навигации GPS и сетевого провайдера местоположения Android (ANLP - Android's Network Location Provider).

Несмотря на то, GPS является более точным, он работает только на улице, быстро расходуется заряд батареи, и не возвращает местоположение так же быстро, как хотят пользователи. ANLP определяет местоположение пользователя с помощью мобильных вышек и Wi-Fi сигналов. Этот способ вполне работоспособен как на открытом воздухе, так и в помещении, реагирует быстрее использует меньше энергии аккумулятора, но дает меньшую точность позиционирования. По этим причинам целесообразно использовать эти два метода в совокупности [7].

Получение данных местоположения пользователя с мобильного устройства является непростой задачей, как может показаться на первый взгляд. Есть несколько причин, почему чтение местоположения (вне зависимости от источника), может быть ошибочным или неточным.

Вот несколько источников ошибок:

множественность источников определения местоположения - GPS, Cell-ID и Wi-Fi. И каждый дает свой ключ к определению местоположения пользователя. Определение того, какие данные использовать и каким доверять - это дело компромиссов в точности, скорости и экономии заряда батареи;

пользователь постоянно находится в движении - из-за постоянного изменения местоположения необходимо очень часто получать новые данные о текущих координатах;

изменение точности - необходимо постоянно производить оценку погрешности определения нового местоположения.

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

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

Алгоритм выбора провайдера местоположения представлен на рисунке 6.

Рисунок 6 - Выбор провайдера местоположения

4.1.2 Прокладка оптимального маршрута

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

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

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

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

Поиск минимального пути между точками (населенными пунктами) осуществляется с учетом любых характеристик записанных в дуги сети (тип дорог, скорость движения, количество проезжих частей). Кратчайший маршрут можно найти либо по минимальной длине пути либо по минимальному времени прохождения маршрута. При нахождении минимального пути имеется возможность исключения некоторых дуг, например аварийных участков, из поиска. Результаты поиска отображаются на карте в виде объекта - маршрута.

Узлы могут последовательно соединять две дуги, имеющие разные характеристики, или соединять несколько дуг в местах перекрестков, развилок и т.п. Если дороги физически проходят над одним участком местности на разных уровнях (тоннель, эстакада и т.п.), то в точке пересечения дорог на карте графа узел должен отсутствовать. С помощью набора односторонних и двусторонних дуг и узлов можно однозначно описать различные виды перекрестков, одноуровневых и многоуровневых развязок. Если на перекрестке дорог необходимо показать запрет поворота, то в этом месте дороги могут быть показаны параллельными односторонними дугами, которые имеют узлы только с теми пересекающими их дугами, на которые разрешено перестроение транспорта.

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

Операционная система Android разработана компанией Google. Поэтому логично выделить первого кандидата - картографический сервис Google Maps. Действительно, в настоящее время он очень бурно развивается. Кроме того, существуют готовые и очень удобные инструменты для создания приложений под Android с использованием Google Maps. Однако детальное изучение системы показало, что подробно сеть дорог проложена только в пределах США и стран Евросоюза. В России же в векторном формате представлены карты лишь наиболее крупных городов. Свободное редактирование так же не представляется возможным.

Российский картографический сервис Yandex Maps, напротив, характеризуется развитой векторной картой крупных и средних городов России. Существует так же Народная Карта, которую можно свободно редактировать. Но вот при построении маршрута очень часто не учитываются второстепенные дороги и в целом дорожный граф построен очень некачественно.

После выделения недостатков двух представленных выше картографических сервисов, выбор пал в сторону использования OpenStreetMap (дословно «открытая карта улиц»), сокращённо OSM - некоммерческий веб-картографический проект по созданию силами сообщества участников-пользователей Интернета подробной свободной и бесплатной географической карты мира.

В настоящее время проект динамично развивается и охватывает все крупные населенные пункты. Существуют удобные инструменты для добавления и редактирования картографических данных. Среди редакторов стоит в первую очередь выделить Potlatch 2, доступ к которому свободно открыт с сайта OpenStreetMap.

4.1.3 Особенности построения графа дорог в OpenStreetMap

OpenStreetMap использует топологическую структуру данных, состоящую из объектов:

node (точка) - точка с указанными координатами;

way (линия (путь)) - упорядоченный список точек, составляющих линию или полигон;

relation (отношение) - группы точек, линий и других отношений, которым назначаются некоторые свойства;

tag (тег) - пары «ключ - значение», могут назначаться точкам, линиям и отношениям.

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

Рисунок 7 - визуализация графа дорог в OpenStreetMap

Все возможные виды карт состоят из базовых элементов, которыми являются «точка» (node) и «путь» (way). С каждым из базовых элементов связано множество его свойств (т.н. «меток») [14].

Точка - базовый элемент в структуре данных OSM. Точка имеет параметры «широта» и «долгота». Точки используются для того, чтобы определить «линию», однако точка может являться и самостоятельным элементом карты, и использоваться для обозначения отдельного ни с чем не связанного объекта (например, телефонной будки, бара, для указания координат, к которым привязано название населённого пункта или любого интересного места. Отдельные точки (т.е. не входящие в состав линий или областей) всегда должны иметь хотя бы одно свойство <#"551882.files/image008.gif">

Рисунок 14 - Мониторинг состояния перевозок в городе Саранск

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

Рисунок 15 - Тема «Night View» отображения карты

По щелчку на соответствующем маркере будет выведено соответствующее облако. В нем будет написано жирным шрифтом имя курьера и статусное сообщения. Сам маркер помечается определенным цветом в зависимости от статуса: зеленый - «Свободен» (Рисунок 16), синий - «Выполняю заказ», желтый - «Перерыв в работе», красный - «Авария» (Рисунок 17).

Рисунок 16 - Свободный курьер обозначен зеленым цветом

Рисунок 17 - Выполняющий заказ курьер помечен синим маркером

4.3 Развертывание системы

АРМ Курьера размещается на коммуникаторах с ОС Android c версией API не ниже 8 (Android 2.2). Для каждого мажорного релиза платформы выпускается новая версия API, к примеру, для Android версии API 2.3.1 - 9, для Android 2.3.3 - 10, и разработанная система будет на них в полной мере функционировать. Детально характеристики платформы Android уже рассмотрены ранее.

Обязательным требованием к устройству является наличие приемника GPS сигнала.

Интерфейс обмена данными GPS приемников реализован в соответствии со спецификацией NMEA, разработанной Национальной Ассоциацией Морской Электроники (National Marine Electronics Association - NMEA), как специальный протокол для поддержания совместимости морского навигационного оборудования различных производителей. Все NMEA сообщения состоят из последовательного набора данных, разделенных запятыми. Каждое отдельное сообщение не зависит от других и является полностью «завершенным». NMEA cообщение включает заголовок, набор данных, представленных ASCII символами, и поле «чексуммы» для проверки достоверности переданной информации.

Каждое NMEA сообщение начинается с «$», заканчивается «n» ( «перевод строки») и не может быть длиннее 80-и символов. Все данные содержаться в одной строке и отделены друг от друга запятыми. Информация представлена в виде ASCII текста и не требует специального декодирования. Если данные не умещаются в выделенные 80 символов, то они «разбиваются» на несколько NMEA сообщений. Такой формат позволяет не ограничивать точность и количество символов в отдельных полях данных.

Спутники, находящиеся на орбите (высота орбиты GPS - 20000 км) беспрерывно передают в эфир маломощные (мощность сигналов GPS - 50 Вт) псевдослучайные сигналы на частотах L1=1575,42 МГц , L2=1227,6 МГц, L5= 1176.5 МГц. Соответственно приемник оконечного пользователя принимает сигналы спутников, для определения координат и точного времени достаточно получать сигналы минимум от 4 спутников.

Зная точное время и координаты спутников (а они передаются в навигационном сообщении), мы можем определить расстояние до этих спутников. И после этого математическими методами рассчитать наше местоположение.

Принимая сигналы от одного спутника GPS, зная расстояние до него, мы можем сказать, что мы находимся на сфере, радиус которой составляет наше расстояние до спутника, а в центре сферы находится спутник расстояние, до которого мы знаем [5].

Например, если мы отдалены от спутника на 11000 миль то - имеем сферу радиусом 11000 миль. И площадью 1 519 760 000 миль.

Принимая сигналы от двух спутников GPS, мы знаем расстояния до них, и соответственно можем сказать, что мы находимся на площади образованной пересечением двух сфер (Рисунок 18).

Рисунок 18 - Определение местоположения при наличии двух спутников

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

Принимая сигналы от трех GPS спутников, мы получаем всего две точки нашего возможного местоположения, ненужную можно исключить с помощью математики (Рисунок 19).

Рисунок 19 - Определение местоположения при наличии трех спутников

Получая сигналы от большего количества спутников GPS мы можем узнать наши координаты более точно, поскольку вся система GPS находится в постоянном движении.

Передача данных от коммуникатора к диспетчеру осуществляется посредством GPRS (General Packet Radio Service - «пакетная радиосвязь общего пользования»). Это надстройка над технологией мобильной связи GSM, осуществляющая пакетную передачу данных. GPRS позволяет пользователю сети сотовой связи производить обмен данными с другими устройствами в сети GSM и с внешними сетями, в том числе Интернет.

При использовании GPRS информация собирается в пакеты и передаётся через неиспользуемые в данный момент голосовые каналы, такая технология предполагает более эффективное использование ресурсов сети GSM. При этом, что является приоритетом передачи - голосовой трафик или передача данных - выбирается оператором связи. Возможность использования сразу нескольких каналов обеспечивает достаточно высокие скорости передачи данных, теоретический максимум при всех занятых таймслотах TDMA составляет 171,2 кбит/c. Существуют различные классы GPRS, различающиеся скоростью передачи данных и возможностью совмещения передачи данных с одновременным голосовым вызовом.

АРМ Диспетчера имеет трехуровневую архитектуру и имеет следующие основные компоненты: клиентское приложение (тонкий клиент), подключенное к серверу приложений, который в свою очередь подключен к серверу базы данных [12].

клиент - интерфейсный, графический компонент, который представляет приложение для конечного пользователя. Он не имеет связи с базой данных (по требованиям безопасности) и не нагружен бизнес-логикой (по требованиям масштабируемости). Работа с интерфейсом осуществляется через браузер. Для организации внешнего вида выводимой информации использованы HTML и CSS. Динамичное и асинхронное обновление данных возможно благодаря технологии AJAX.

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

сервер базы данных обеспечивает хранение данных и выносится на третий уровень. В качестве системы управления базами данных использована MySQL [25].

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

В «правильной» (с точки зрения безопасности, надёжности, масштабирования) конфигурации сервер базы данных находится на выделенном компьютере (или кластере <#"551882.files/image014.gif">

Рисунок 20 - Диаграмма развертывания системы

Пре-альфа версия программы получила название Windrose 2012 (Роза ветров).

5. Технико-экономическое обоснование дипломного проекта

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

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

5.1 SWOT-анализ

анализ - метод стратегического планирования, используемый для оценки факторов и явлений, влияющих на проект [17].

Все факторы делятся на четыре категории: strengths (сильные стороны), weaknesses (слабые стороны), opportunities (возможности) и threats (угрозы).

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

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

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

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

Основные положения SWOT-анализа проекта сведены в таблицу 10.

автоматизированный маршрут курьерский android

Таблица 10 - SWOT-анализ

Среда

Положительное влияние

Отрицательное влияние

Внутренняя 

Strengths/Сильные стороны: - функциональность системы основана на широких возможностях современных коммуникаторов; - проект разработан специально для динамично развивающейся ОС Android; - функция построения оптимального маршрута удобна в использовании, не требует значительных временных затрат и качественно планирует траекторию движения; - учет характеристик путей и качества дорожного покрытия;  - множество устройств с АИС возможно объединить в единую систему, контролируемую с диспетчерского пункта.

Weaknesses/Слабые стороны: - отсутствие учета текущей плотности дорожного движения; - разработка инструментов ведения статистики на диспетчерском пункте находится на начальной стадии; - высокое потребление заряда батареи современными коммуникаторам.

Внешняя 

Opportunities/Возможности: - развитие системы диспетчеризации, введение инструментов для сбора статистических данных; - использование системы в сторонних областях, не связанных с курьерской службой.

Threats/Угрозы: - рост конкуренции на рынке операционных систем для коммуникаторов; - появление и развитие конкурирующих проектов, имеющих иное архитектурное решение.


5.2 PEST-анализ

анализ (иногда обозначают как STEP) - это маркетинговый инструмент, предназначенный для выявления политических (Political), экономических (Economic), социальных (Social) и технологических (Technological) аспектов внешней среды, которые влияют на проект [18].

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

К политическим, экономическим, социальным и технологическим факторам, определяющим эффективность внедрения можно отнести:

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

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

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

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

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

5.3 Расчет экономических показателей

Исходные данные для расчета экономических показателей приведены в таблице 11.

Таблица 11 - данные для расчета экономических показателей.

Обозначение

Наименование показателя

Единицы  измерения

Значение показателя

 

СЭВМ

Стоимость ЭВМ

тыс. р.

30

 

СКА

Стоимость коммуникатора Android

тыс. р.

15

 

ДМ

Среднее количество дней в месяце

дни

21

 

Норматив рентабельности

-

0,2

 

Коэффициент, учитывающий дополнительную заработную плату разработчика

-

0,1

 

Коэффициент, учитывающий отчисления на социальные взносы

-

0,30

 

Коэффициент, учитывающий накладные расходы организации

-

0,6

 

qI

Количество I-задач, решаемых потребителем

зад. год

750

 

  tМ.В.I

Время решения I-ой задачи с помощью АИС

маш. час

2

t’М.В.I

Время решения I-ой задачи без использования АИС

маш. час

3

 nп

Количество организаций, которые приобретут данную программу

шт.

5

ZЭЛ

Тариф за 1 кВт/час

р.

2,37

Нормативный коэффициент эффективности капиталовложений

-

0,33

ТС

Срок службы разработанной программы

год

25

НДС

Налог на добавленную стоимость

%

18

ТР

Количество рабочих дней в году

дни

249

NСМ

Количество смен работы

-

1

tСМ

Продолжительность смены

ч

8

a

Простой ЭВМ

%

5

P

Мощность, потребляемая ЭВМ

кВт

0,4

NСР

Среднее количество ремонтов в год

-

1

Стоимость деталей, заменяемых при ремонте

р.

2000


5.4 Расчет затрат на разработку программы


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

SРП = SЗП+SНАК ,

где SЗП - затраты по заработной плате инженера-программиста;

SНАК - накладные расходы.

Затраты по заработной плате инженера-программиста рассчитываются по формуле:

SЗП = ОЗП × (1+wс) × (1+wд) × tрi ,

где ОЗП - основная заработная плата инженера-программиста за месяц (15000 р.);

tpi - время, необходимое для разработки программы программистом i-го разряда (чел.-мес.);

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

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

Программа разрабатывалась 63 дня, если учесть, что в одном месяце 21 рабочих дня, то:

 (чел.-мес.)

Таким образом, затраты по заработной плате инженера-программиста составят:

 (р.)

Накладные затраты рассчитываются с учетом wн - коэффициента, определяющего уровень накладных расходов организации по формуле:

SНАК = ОЗП × wн × tр12 ,

 (р.)

Таким образом, суммарные затраты на разработку программы составляют:

SРП = 64350 + 27000 = 91350 (р.)

5.5 Расчет цены разработанной программы


Оптовая цена разработанной программы определяется по следующей формуле:

ZП = SРП + П,

где ZП - оптовая цена (цена разработчика) (р.);

SРП - суммарные затраты на разработку программы (р.);

П - прибыль, рассчитанная по формуле:

П = rн × SРП,

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

ZП = 91350 × (1+ 0,2) = 109620 (р.)

Розничная цена программы рассчитывается с учетом налога на добавленную стоимость (НДС = 18%) по формуле:

ZПр = 109620 × (1 + 0,18) = 129351 (р.)

5.6 Расчет капитальных вложений


Капиталовложения, связанные с работой ЭВМ рассчитываются по формуле:

КЭВМ = СЭВМ+ СКА+SТ+SМ,

где СЭВМ - стоимость ЭВМ (р.);

СКА - стоимость коммуникатора Android (р.);

ST - стоимость транспортировки оборудования (р.);

SМ - стоимость настройки ЭВМ (р.);

Так как площадь, отводимая под установку ЭВМ, в данном случае не существенна, то этим коэффициентом можно пренебречь.

Итак, произведем расчет коэффициентов входящих в формулу расчета величины капиталовложений:

= 0,05 × (СЭВМ + СКА) = 0,05 × 45000 = 2250 (р.);М = 0,03 × (СЭВМ + СКА) = 0,03 × 45000 = 1350 (р.).

Капиталовложения в ЭВМ составляют:

КЭВМ = 30000 + 15000 + 2250 + 1350 = 48600 (р.)

5.7 Расчет эксплуатационных расходов


Эксплутационные расходы на ЭВМ рассчитываются по формуле:

,

где ТМ.В. - машинное время для решения задач с помощью разработанной программы, (маш.час/год);

еч - эксплутационные расходы, приходящиеся на 1 час работы АИС;

ZП - цена, по которой продается программа (р.);

Полезный фонд времени работы АИС рассчитывается по формуле:


где ТОБЩ - общий фонд времени работы ЭВМ (дни); ТОБЩ = ТР;

NСМ - количество смен работы;

tСМ -время одного рабочего дня (час);

a - простои ЭВМ (в % от общего фонда времени работы ЭВМ).

Полезный фонд времени работы ЭВМ получим:

 маш. час/ год

Машинное время для решения задач с помощью данной программы рассчитывается по формуле:


где qI - количество задач, решаемых потребителем в год(шт.);

tМ.В.I - время решения задачи, разработанной программой (маш.час.).

ТМ.В. = 750 × 2 = 1500 (маш.час. / год).

Эксплутационные расходы, приходящиеся на 1 час работы ЭВМ, оцениваются по формуле:

,

где АО - амортизационные отчисления (р.);

SЗП - затраты по заработной плате инженера в год (р./год);

SЭЛ - стоимость потребляемой энергии (р.);

RРМ - затраты на ремонт ЭВМ (р.);

ТПОЛ - полезный годовой фонд работы ЭВМ, (маш.час/год).

Амортизационные отчисления рассчитываются с учетом нормы амортизации (ан =20 %);

АО = ан × КЭВМ = 0,2 × 48600 = 9720 (р.).

Затраты по заработной плате инженера за год рассчитывается по формуле:

SЗП = (1+wс) × (1+wд) × ОЗП × 12,

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

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

ОЗП - основная заработная плата работника (15000 р.);

Рассчитываем годовые затраты по заработной плате и социальным отчислениям для работника:

SЗП = (1+ 0,3) × (1+ 0,1) × 15000 × 12 = 257400 (р./год)

Стоимость потребляемой энергии оценивается по формуле:

SЭЛ = P × ТПОЛ × ZЭЛ ,

где P - мощность, потребляемая ЭВМ (кВт);

ТПОЛ - полезный годовой фонд работы ЭВМ (маш. час/год);

ZЭЛ - тариф за 1 кВт/час (р. /кВт).

Итак, произведем расчет стоимости потребляемой энергии:

SЭЛ = 0,4 × 1892,4 × 2,37 = 1794 (р.).

Затраты на ремонт ЭВМ вычисляются по формуле:

RРМ = NСР × SД,

где NСР - среднее количество ремонтов в год;

SД - стоимость деталей заменяемых при одном ремонте, в среднем.

RРМ = 1 × 2000 = 2000 (р.).

Произведем вычисление эксплутационных расходов, приходящихся на 1 час работы ЭВМ:

 (р.)

Далее вычислим эксплутационные расходы на ЭВМ:

 (р.)

5.8 Расчет денежного годового экономического эффекта


Денежный годовой экономический эффект оценивается по следующей формуле:

DWГЭ = DЕМ.Э. + eн × DКЭ,

где DЕМ.Э. - экономия стоимости машинного времени (р.);

eн - нормативный коэффициент эффективности капитальных вложений;

DКЭ - экономия капитальных вложений (р.).

Расчет экономии капитальных вложений производится по формуле:

,

где ТМ.В.2 - машинное время для решения задач с помощью разработанной программы (маш. час/год);

КЭВМ - капиталовложения в оборудование (р.);

ТПОЛ - полезный годовой фонд работы оборудования (маш. час/год);

ТМ.В.1 - машинное время для решения задач базовой программой

ТМ.В.1 = qI × t’М.В.I ,

ТМ.В.1 = 750 × 2 = 1500 (маш. час/год).

Произведем расчет экономии капитальных вложений по формуле:

 (р.)

Расчет экономии стоимости машинного времени производится по формуле:

DЕМ.Э. = еч × (ТМ.В. -ТМ.В.2),

где еч - эксплуатационные расходы, приходящиеся на 1 час работы ЭВМ;

ТМ.В.1 - машинное время для решения задач базовой программой (маш. час/год);

ТМ.В.2 - машинное время для решения задач с помощью разработанной программы (маш. час/год);

Произведем расчет экономии стоимости машинного времени по формуле:

DЕМ.Э. = 142,7 × (750) = 107025 (р.)

Теперь определим денежный годовой экономический эффект по формуле:

DWГЭ = 107025 + 0,33 × 19225 = 113400 (р.)

6. Безопасность и экологичность дипломного проекта

Функционирование разрабатываемой АИС основано на организации автоматизированных рабочих мест, которые оснащаются персональной ЭВМ и различной оргтехникой.

В помещении, где находится ПК, целесообразно выделить следующие неблагоприятные факторы:

уровень электробезопасности;

повышенный уровень электромагнитных излучений;

повышенный уровень шума;

несоблюдение требований к эргономике;

недостаточная освещенность рабочей зоны;

неблагоприятные метеорологические условия рабочей зоны;

пожароопасные факторы.

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

6.1 Электробезопасность

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

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

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

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

Человек начинает ощущать протекающий через него ток промышленной частоты (50 Гц) относительно малого значения: 0.5 - 1.5 мА, постоянный ток - 5 - 7 мA. Ток 10 - 15 мА вызывает сильные и весьма болезненные судороги мышц, которые человек преодолеть не в состоянии. Ток 100 мА и более (при 50 Гц) или постоянный ток 300 мА вызывает существенные повреждения в организме человека. Он распространяет свое раздражающее действие на мышцу сердца и через 1-2 с с момента замыкания цепи этого тока через человека может наступить фибрилляция или остановка сердца. Такой ток называется фибрилляционым током, а наименьшее его значение - пороговым фибрилляционным током.

Рассмотрим заземление, как один из основных методов обеспечения электробезопасности.

Заземление электроустановки - преднамеренное электрическое соединение ее корпуса с заземляющим устройством.

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

Защитное заземление - преднамеренное соединение с землей частей электроустановки. Применятся в сетях с изолированной нейтралью, например, в старых домах с сетями 220В.

Есть два вида заземлителей - естественные и искусственные.

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

В качестве искусственных заземлителей используют стальные трубы, стержни или уголок, длиной не менее 2,5 м, забитых в землю и соединенных друг с другом стальными полосами или приваренной проволокой.

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

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

Различают нулевой рабочий проводник и нулевой защитный проводник.

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

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

Остановимся конкретнее на системе заземления TN-C-S (Рисунок 21).

Рисунок 21 - Системе заземления TN-C-S

Система TN-C-S характерна для реконструируемых сетей, в которых нулевой рабочий и защитный проводники объединены только в части схемы, во вводном устройстве электроустановки (например, вводном квартирном щитке). Во вводном устройстве электроустановки совмещенный нулевой защитный и рабочий проводник PEN разделен на нулевой защитный проводник PE и нулевой рабочий проводник N. При этом нулевой защитный проводник PE соединен со всеми открытыми токопроводящими частями электроустановки. Система TN-C-S является перспективной для нашей страны, позволяет обеспечить высокий уровень электробезопасности при относительно небольших затратах.

Система заземления TN-S показана на рисунке 22.

Рисунок 22 - Системе заземления TN-S

В системе TN-S нулевой рабочий и нулевой защитный проводники проложены отдельно. Все открытые проводящие части электроустановки соединены отдельным нулевым защитным проводником PE. Такая схема исключает обратные токи в проводнике РЕ, что снижает риск возникновения электромагнитных помех. Хорошим вариантом для минимизации помех является пристроенная трансформаторная подстанция (ТП), что позволяет обеспечить минимальную длину проводника от ввода кабелей электроснабжения до главного заземляющего зажима. Система TN-S при наличии пристроенной подстанции не требует повторного заземления, так как на этой подстанции имеется основной заземлитель. Такая система широко распространена в Европе.

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

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

6.2 Электромагнитные излучения

Спектр электромагнитного излучения, оказывающий влияние на человека в производственных условиях, имеет диапазон волн от тысяч километров (переменный ток) до триллионной части миллиметра (космические энергетические лучи) [20]. Характер воздействия на человека электромагнитного излучения в разных диапазонах различен. В связи с этим значительно различаются и требования к нормированию различных диапазонов электромагнитного излучения.

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

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

У современных ЖК мониторов уровень излучения невероятно мал по равнению со старыми моделями электро-лучевых приборов, которые в какой-то степени являются источником и рентгеновского излучения. Чтобы снизить излучение, мониторы должны включаться только в заземлённую электрическую розетку. Это относится и к самому компьютеру

6.3 Требования к эргономике, освещенности, уровню шума и микроклимату

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

- при организации рабочих мест <http://ru.wikipedia.org/wiki/%D0%A0%D0%B0%D0%B1%D0%BE%D1%87%D0%B5%D0%B5_%D0%BC%D0%B5%D1%81%D1%82%D0%BE> необходимо учитывать то, что конструкция рабочего места, его размеры и взаимное расположение его элементов должны соответствовать физиологическим и психофизиологическим данным человека, а также характеру. При выборе положения работающего необходимо учитывать: физическую тяжесть работ; технологические особенности процесса выполнения работ; статические нагрузки рабочей позы; время пребывания.

при работе с АИС значительная часть работы делается в положении сидя, и организуя сидячее рабочее место необходимо обращать внимание на следующие факторы:

высоту рабочей поверхности и размеры рабочей зоны, возможности регулировать эти параметры под индивидуальные особенности организма работающего;

высоты и строения опорной поверхности (плоская опорная поверхность, седловидная опорная поверхность <http://ru.wikipedia.org/w/index.php?title=%D0%A1%D1%82%D1%83%D0%BB-%D1%81%D0%B5%D0%B4%D0%BB%D0%BE&action=edit&redlink=1>, наклонные распределенные опорные поверхности);

пространства для ног.

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

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

уровень шума на рабочих местах не должен превышать 50 дБ [21].

оптимальные параметры микроклимата: температура воздуха 22-24 градуса, относительная влажность воздуха 40-60 %, скорость движения воздуха 0,1 м/c.

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

6.4 Пожарная безопасность

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

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

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

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

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

Активная борьба с пожаром (тушение пожара <http://ru.wikipedia.org/wiki/%D0%9F%D0%BE%D0%B6%D0%B0%D1%80%D0%BE%D1%82%D1%83%D1%88%D0%B5%D0%BD%D0%B8%D0%B5>) производится огнетушителями <http://ru.wikipedia.org/wiki/%D0%9E%D0%B3%D0%BD%D0%B5%D1%82%D1%83%D1%88%D0%B8%D1%82%D0%B5%D0%BB%D1%8C> различного наполнения, песком <http://ru.wikipedia.org/wiki/%D0%9F%D0%B5%D1%81%D0%BE%D0%BA> и другими негорючими материалами, мешающими огню распространяться и гореть. В случае, если здание оборудовано автоматической установкой пожаротушения <http://ru.wikipedia.org/wiki/%D0%9F%D0%BE%D0%B6%D0%B0%D1%80%D0%BE%D1%82%D1%83%D1%88%D0%B5%D0%BD%D0%B8%D0%B5>, необходимо использовать ее для тушения пожара.

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

Система пожарной сигнализации состоит из прибора приемно-контрольного, извещателей <http://ru.wikipedia.org/wiki/%D0%9F%D0%BE%D0%B6%D0%B0%D1%80%D0%BD%D1%8B%D0%B9_%D0%B8%D0%B7%D0%B2%D0%B5%D1%89%D0%B0%D1%82%D0%B5%D0%BB%D1%8C>, оповещателей <http://ru.wikipedia.org/wiki/%D0%9F%D0%BE%D0%B6%D0%B0%D1%80%D0%BD%D1%8B%D0%B9_%D0%BE%D0%BF%D0%BE%D0%B2%D0%B5%D1%89%D0%B0%D1%82%D0%B5%D0%BB%D1%8C>, соединительных линий и исполняющих устройств.

Заключение

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

. Проведенный анализ предметной области, выявил ряд проблем, с которыми сталкивается курьерская фирма в своей профессиональной деятельности:

планирования маршрута перевозок, - ее следствием является снижение скорости доставки товара и потеря прибыли;

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

затянутость отчетности курьера перед диспетчером, которая может приводить к временной задержке и срыву планирования.

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

. Решено, что проектируемая автоматизированная система должна состоять из двух частей:

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

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

. АРМ Курьера базируется на коммуникаторах, которые:

предоставляют возможность оперативного и надежный доступа к определению текущего положения;

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

- имеют поддержку стандарта GSM и GPRS <http://ru.wikipedia.org/wiki/GPRS> для обеспечения связи и пакетной передачи данных.

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

. Предложено реализовать проект на базе операционной системы Android. Ее преимущества:

полная открытость;

универсальность;

растущая популярность;

динамичное развитие.

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

. АРМ Курьера выполняет следующие функции:

определение местоположения и навигация;

расчет оптимального маршрута;

оценка необходимого времени для прохождения маршрута;

установка статуса состояния перевозок.

. АРМ Диспетчера осуществляет:

отображение местоположения курьеров на карте;

добавление нового курьера в базу данных;

редактирование данных о курьере;

удаление курьера из базы данных.

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

. В качестве основы для выполнения задач навигации и построения оптимального маршрута использованы векторные карты OpenStreetMap. Они характеризуются следующими свойствами:

актуальность отображаемых данных;

наличие инструментов для свободного редактирования карты дорог;

присутствие тегов, описывающих состояние дорожного покрытия и возможности прохождения пути тем или иным видом транспорта;

поддержка картографического сервиса CloudMade, используемого для прокладки маршрута.

. Графический интерфейс системы разработан согласно концепции «делай то, что я имею в виду» или DWIM (Do What I Mean). Благодаря этому, работа с системой интуитивно понятна. Доступ ко всем функциям приложения открывается из главного меню. Интерфейс прост, не перегружен лишними элементами, и вместе с тем функционален.

. Среди особенностей развёртывания системы стоит выделить следующие положения:

- АРМ Курьера размещается на коммуникаторах с ОС Android c версией API не ниже 8 (Android 2.2);

обязательным требованием к устройству является наличие приемника GPS сигнала;

Интерфейс обмена данными GPS приемников реализован в соответствии со спецификацией NMEA;

Передача данных от коммуникатора к диспетчеру осуществляется посредством GPRS (General Packet Radio Service - «пакетная радиосвязь общего пользования»).

. АРМ Диспетчера имеет трехуровневую архитектуру и имеет следующие основные компоненты: клиентское приложение (тонкий клиент), подключенное к серверу приложений, который в свою очередь подключен к серверу базы данных.

клиент - интерфейсный, графический компонент, который представляет приложение для конечного пользователя. Он не имеет связи с базой данных (по требованиям безопасности) и не нагружен бизнес-логикой (по требованиям масштабируемости). Работа с интерфейсом осуществляется через браузер;

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

сервер базы данных обеспечивает хранение данных. В качестве системы управления базами данных использована MySQL.

4. В правильной с точки зрения безопасности, надёжности, масштабирования конфигурации сервер базы данных находится на выделенном компьютере (или кластере <http://ru.wikipedia.org/wiki/%D0%9A%D0%BB%D0%B0%D1%81%D1%82%D0%B5%D1%80>), к которому по сети подключены один или несколько серверов приложений, к которым, в свою очередь, по сети подключаются терминалы.

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

. SWOT-анализ позволил выделить сильные стороны проекта:

функциональность системы основана на широких возможностях современных коммуникаторов;

проект разработан специально для динамично развивающейся ОС Android;

функция построения оптимального маршрута удобна в использовании;

система учитывает характеристики путей и качества дорожного покрытия;

множество устройств с АИС объединены в единую систему, контролируемую с диспетчерского пункта.

Определены возможные пути развития проекта:

развитие системы диспетчеризации, введение инструментов для сбора статистических данных;

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

К наиболее важным внешним угрозам стоит отнести:

- рост конкуренции на рынке операционных систем для коммуникаторов;

появление и развитие конкурирующих проектов, имеющих иное архитектурное решение.

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

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

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

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

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

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

. Проектируемая автоматизированная информационная система позволит:

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

повысить качество и точность выполнения заказов на перевозку;

сократить затраты на персонал;

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

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

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

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

1 Голощапов А. Л. Google Android. Программирование для мобильных устройств / А. Л. Голощапов. - М. : БХВ, 2010. - 670 с.

2 Майер Р. Android. Программирование приложений для планшетных компьютеров и смартфонов / Р. Майер. - М. : Эксмо, 2011. - 672 с.

3 The Android Dev Guide : The Dev Guide provides a practical introduction to developing applications for Android [Электронный ресурс]. - Режим доступа: http://developer.android.com/guide/index.html. - Загл. с экрана.

The Developer's Guide [Электронный ресурс]. - Режим доступа: <http://developer.android.com/guide/index.html>. - Загл. с экрана.

1 Global Positioning System [Электронный ресурс]. - Режим доступа: http://www.navcen.uscg.gov. - Загл. с экрана.

2 Грекул В. И. Проектирование информационных систем: курс лекций. Учеб. пособие для студентов вузов / В. И. Грекул, Г. Н. Денищенко, Н. Л. Коровкина. - М. : Ун-т Информ. технологий, 2005. - 304 с.

Enabling GPS programatically in Android <http://stackoverflow.com/questions/5715257/enabling-gps-programatically-in-android>. [Электронный ресурс]. - Режим доступа: http://stackoverflow.com/questions/5715257/enabling-gps-programatically-in-android. - Загл. с экрана.

1 General Information on GPS [Электронный ресурс]. - Режим доступа: http://www.navcen.uscg.gov. - Загл. с экрана.

2 Буч Г. UML. Руководство пользования / Г. Буч, Д. Рамбо, А. Джекобсон. - СПб: Питер, 2007. - 630 с.     

3 Гома Х. UML. Проектирование систем реального времени / Х. Гома. - М. : ДМК Пресс, 2002. - 704 с.

4 Грехем И. Объектно-ориентированные методы. Принципы и практика / И. Грехем. - М. : Вильямс, 2004. - 880 с.

5 Кьоу Дж. Объектно-ориентированное программирование / Дж. Кьоу, М. Джеанини. Учебный курс. - СПб. : Питер, 2005. - 238 с.

Описание операционной системы Android <http://androidu.ru/android/5-android.html>. [Электронный ресурс]. - Режим доступа: http://androidu.ru/android.

1 OpenStreetMap Wiki. [Электронный ресурс]. - Режим доступа: http://wiki.openstreetmap.org.

2 About CloudMade. [Электронный ресурс]. - Режим доступа: http://cloudmade.com/about.

3 Создание графических пользовательских интерфейсов. [Электронный ресурс]. - Режим доступа: http://cpu.h17.ru/net/6/.

4 SWOT анализ и стратегическое планирование. [Электронный ресурс]. - Режим доступа: http://www.swot-analysis.ru.

5 PEST анализ. [Электронный ресурс]. - Режим доступа: http://www.marketolog.biz/index.php?pid=49.

6 Электробезопасность. [Электронный ресурс]. - Режим доступа: http://electrosafety.ru/.

7 Электромагнитные излучения. Защита. [Электронный ресурс]. - Режим доступа: http://emi.ucoz.com/.

8 СНиП 23-03-2003. Защита от шума - М. : Госстандарт России : Изд-во стандартов, 2003. - 27 с.

9 Томас Х. Алгоритмы: построение и анализ / Х. Томас, Ч. И. Лейзерсон, Р. Л. Ривест, К. Штайн. - М. : Вильямс, 2006. - 1296 c.

10  Левитин А. В. Алгоритмы: введение в разработку и анализ / А. В. Левитин. - М. : Вильямс, 2006. - 1296 c.

11  Аргерих Л. Профессиональное PHP программирование / Л. Аргерих, В.Чой, Д. Коггсхол. - СПб. : Символ-Плюс, 2003 г. - 1048 с.

12  Виейра Р. Программирование баз данных Microsoft SQL Server 2008. Базовый курс / Р. Виейра. - М. : Вильямс, 2006. - 1296 c.

13  GPS/ГЛОНАСС мониторинг автотранспорта. [Электронный ресурс]. - Режим доступа: http://monitoring-gps.ru/.

Приложение А

Исходний код программы.

Курьерская часть

Класс GPS_Service

package app.arm.courier;java.io.IOException;org.apache.http.client.ClientProtocolException;org.apache.http.client.HttpClient;org.apache.http.client.ResponseHandler;org.apache.http.client.methods.HttpPost;org.apache.http.impl.client.BasicResponseHandler;org.apache.http.impl.client.DefaultHttpClient;android.app.Service;android.content.Context;android.content.Intent;android.content.SharedPreferences;android.os.Bundle;android.os.IBinder;android.location.Location;android.location.LocationListener;android.location.LocationManager;class GPS_Service extends Service implements LocationListener {in;mSettings;static final String APP_PREFERENCES = "mysettings";static final String APP_PREFERENCES_STATUS_TEXT = "status_text"; static final String APP_PREFERENCES_STATUS = "status";     static final String APP_PREFERENCES_STATUS_ID = "status_id"; static final String APP_PREFERENCES_SERVER = "server";    static final String APP_PREFERENCES_LOGIN = "login"; static final String APP_PREFERENCES_PASSWORD = "password"; user;password;lat;lon;status;status_text;server;url;

@OverrideIBinder onBind(Intent arg0) {

// TODO Auto-generated method stubnull;

}

@Overridevoid onCreate()

{

super.onCreate();

//Связываем менеджер и сервис

LocationManager myManager = (LocationManager) getSystemService(LOCATION_SERVICE);

//Назначаем слушателя

myManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 30000, 10, this);

in = new Intent("AppService");

in.putExtra("GPS_Lat","54.184841");

in.putExtra("GPS_Lon","45.174256");

in.putExtra("url","url");        

sendBroadcast(in);

}void onLocationChanged(Location location) {

// TODO Auto-generated method stub

mSettings = getSharedPreferences(APP_PREFERENCES, Context.MODE_PRIVATE);(mSettings.contains(APP_PREFERENCES_LOGIN)) {= mSettings.getString(APP_PREFERENCES_LOGIN, "");

}(mSettings.contains(APP_PREFERENCES_PASSWORD)) {= mSettings.getString(APP_PREFERENCES_PASSWORD, "");

}(mSettings.contains(APP_PREFERENCES_STATUS)) {= java.net.URLEncoder.encode(mSettings.getString(APP_PREFERENCES_STATUS, ""));

}(mSettings.contains(APP_PREFERENCES_STATUS_TEXT)) {_text = java.net.URLEncoder.encode(mSettings.getString(APP_PREFERENCES_STATUS_TEXT, ""));

}

if(mSettings.contains(APP_PREFERENCES_SERVER)) {= mSettings.getString(APP_PREFERENCES_SERVER, "");

}       

url = "http://" + server + "/receiver.php?user="+user+"&password="+password+"&lat="+location.getLatitude()+"&lon="+location.getLongitude()+"&status="+status+"&status_text="+status_text;

HttpClient httpclient = new DefaultHttpClient();httppost = new HttpPost(url);

ResponseHandler<String> responseHandler = new BasicResponseHandler();

try {.execute(httppost, responseHandler);

} catch (ClientProtocolException e) {

// TODO Auto-generated catch block.printStackTrace();

} catch (IOException e) {

// TODO Auto-generated catch block.printStackTrace();

}= new Intent("AppService");

in.putExtra("GPS_Lat",""+location.getLatitude());    

in.putExtra("GPS_Lon",""+location.getLongitude());

in.putExtra("url",""+url);      

sendBroadcast(in);

}void onProviderDisabled(String arg0) {

// TODO Auto-generated method stub     

}void onProviderEnabled(String arg0) {

// TODO Auto-generated method stub     

}void onStatusChanged(String arg0, int arg1, Bundle arg2) {

// TODO Auto-generated method stub

}

}

Класс RouteScreen

package app.arm.courier;java.io.IOException;java.util.ArrayList;java.util.List;

…class RouteScreen extends Activity {Txt;Btn_count;url = "";API_key;dist;time;lat;lon;route;response;start_lat;start_lon;          finish_lat;finish_lon;move_type; mMapView;mMapController;myPath;gridview;txt_dist;txt_time;<Coord> routeList;class Coord {lat;lon;Coord(Float lat, Float lon) {.lat = lat;.lon = lon;

}

}

@Overridevoid onCreate(Bundle savedInstanceState) {.onCreate(savedInstanceState);(R.layout.contacts);_count = (Button) findViewById(R.id.btn_count); = (MapView) findViewById(R.id.openmapview);_dist = (TextView) findViewById(R.id.txt_dist);_time = (TextView) findViewById(R.id.txt_time);_lon = 45.174256;_lat = 54.184841;_key = "56eded06210846ecbb758f29e7c28152";_type = "bicycle"; = mMapView.getController();.setClickable(true);.setTileSource(TileSourceFactory.MAPNIK);.setBuiltInZoomControls(true);.setMultiTouchControls(true);.setZoom(13);.setCenter(new GeoPoint((int) (start_lat * 1e6),(int) (start_lon * 1e6)));= new ArrayList<Coord>();dumOverlay = new DummyOverlay(this);<Overlay> listOfOverlays = mMapView.getOverlays();.clear();.add(dumOverlay);(new Intent(this,GPS_Service.class));        

}

public class DummyOverlay extends org.osmdroid.views.overlay.Overlay {

float Lat;

float Lon;

Context con;

 private Paint paint = new Paint(Paint.ANTI_ALIAS_FLAG);

 public DummyOverlay(Context ctx) {

super(ctx); // TODO Auto-generated constructor stub

this.con = ctx;

}

protected void draw(Canvas c, MapView osmv, boolean shadow) {

         //paint = new Paint(Paint.ANTI_ALIAS_FLAG);

         //c.drawCircle(0, 0, 10, this.paint); 

}

 public boolean onDoubleTap(MotionEvent e, MapView mapView) {

int zoomLevel = mMapView.getZoomLevel();

mMapController.setZoom(zoomLevel);point = mapView.getProjection().fromPixels((int)e.getX(), (int)e.getY());

Lat = (float) (point.getLatitudeE6()/1E6);

Lon = (float) (point.getLongitudeE6()/1E6);

final ArrayList items = new ArrayList();

items.add(new OverlayItem("1", "2", new GeoPoint(point.getLatitudeE6(), point.getLongitudeE6())));MyLocationOverlay = new ItemizedIconOverlay(con, items, null);

 mMapView.getOverlays().add(MyLocationOverlay);

mMapController.animateTo(point);

routeList.add(new Coord(Lat, Lon));

return true;// This stops the double tap being passed on to the mapview

}

}void Btn_count_Click(View v) { (routeList.size()>1) {(routeList.size()==2) {_lat = routeList.get(0).lat;_lon = routeList.get(0).lon;_lat = routeList.get(1).lat;_lon = routeList.get(1).lon;= "http://routes.cloudmade.com/"+API_key+"/api/0.3/"+start_lat+","+start_lon+","+finish_lat+","+finish_lon+"/"+move_type+".js?lang=ru&units=km";

}(routeList.size()>2) {_lat = routeList.get(0).lat;_lon = routeList.get(0).lon;_lat = routeList.get(routeList.size()-1).lat;_lon = routeList.get(routeList.size()-1).lon; ="";= "http://routes.cloudmade.com/"+API_key+"/api/0.3/"+start_lat+","+start_lon+",%5B";(int i=1; i<routeList.size()-1;i++) {= url + routeList.get(1).lat+"," + routeList.get(1).lon;         (i<routeList.size()-2) url = url+",";

}= url + "%5D,"+finish_lat+","+finish_lon+"/"+move_type+".js?lang=ru&units=km";

}

HttpClient httpclient = new DefaultHttpClient();

HttpPost httppost = new HttpPost(url);

          try {

          ResponseHandler<String> responseHandler = new BasicResponseHandler();

          response = httpclient.execute(httppost, responseHandler);

          response = response.replace ('"', ' ');

          Pattern p = Pattern.compile(".*total_distance :(\\d+).*total_time :(\\d+).*route_geometry :\\[([\\[\\d+\\.\\d+\\,\\d+\\.\\d+\\]\\,?]+)\\].*");

          Matcher m = p.matcher(response);

          

          if (m.matches()) {

          dist = Float.parseFloat(m.group(1));

          time = Float.parseFloat(m.group(2));

          route = m.group(3);

          }

          

          route = route.substring(1,route.length()-2);

                  String[] coord_pair = route.split("\\],\\[");

                  List <Coord> coordList = new ArrayList<Coord>();

                  p = Pattern.compile("(\\d+\\.\\d+)\\,(\\d+\\.\\d+)");

                  for (int i=0; i<coord_pair.length; i++) {

          m = p.matcher(coord_pair[i]);

          if (m.matches()) {

          lat = Float.parseFloat(m.group(1));

          lon = Float.parseFloat(m.group(2));

          coordList.add(new Coord(lat, lon));

          }

                  }

                 

PathOverlay myPath = new PathOverlay(Color.GREEN, this);

myPath.addPoint(new GeoPoint((int) (start_lat * 1e6),(int) (start_lon * 1e6)));

        

                  for (int i=0; i<coordList.size();i++) {        

                           myPath.addPoint(new GeoPoint((int) (coordList.get(i).lat * 1e6),(int) (coordList.get(i).lon * 1e6)));

                  }       

myPath.addPoint(new GeoPoint((int) (finish_lat * 1e6),(int) (finish_lon * 1e6)));

mMapController.animateTo(new GeoPoint((int) (start_lat * 1e6),(int) (start_lon * 1e6)));

txt_dist.setText(""+(int)Math.floor(dist/1000)+"км "+(int)(dist%1000)+"м.");

txt_time.setText(""+(int)Math.floor(time/60)+"мин "+(int)(time%60)+"сек.");        

mMapView.getOverlays().add(myPath);

          

          } catch (ClientProtocolException e) { } catch (IOException e) { }

} { }

}        

}

Класс SettingsScreen

package app.arm.courier;org.osmdroid.views.MapView;android.app.Activity;android.content.Context;

…class SettingsScreen extends Activity {static final String APP_PREFERENCES = "mysettings"; // имя файла настроекstatic final String APP_PREFERENCES_SERVER = "server"; // тип Stringstatic final String APP_PREFERENCES_LOGIN = "login"; // тип Stringstatic final String APP_PREFERENCES_PASSWORD = "password"; // тип StringmSettings;serverText;loginText;passwordText;

@Overridevoid onCreate(Bundle savedInstanceState) {.onCreate(savedInstanceState);(R.layout.settings);= getSharedPreferences(APP_PREFERENCES, Context.MODE_PRIVATE);= (EditText)findViewById(R.id.editText1);= (EditText)findViewById(R.id.editText2);= (EditText)findViewById(R.id.editText3); (new Intent(this,GPS_Service.class));         (mSettings.contains(APP_PREFERENCES_SERVER)) {.setText(mSettings.getString(APP_PREFERENCES_SERVER, ""));

}(mSettings.contains(APP_PREFERENCES_LOGIN)) {.setText(mSettings.getString(APP_PREFERENCES_LOGIN, ""));

}(mSettings.contains(APP_PREFERENCES_PASSWORD)) {.setText(mSettings.getString(APP_PREFERENCES_PASSWORD, ""));

}

}void but_set_Click(View v) { strServerText = serverText.getText().toString(); strLoginText = loginText.getText().toString(); strPasswordText = passwordText.getText().toString(); editor = mSettings.edit();.putString(APP_PREFERENCES_SERVER, strServerText);.putString(APP_PREFERENCES_LOGIN, strLoginText);.putString(APP_PREFERENCES_PASSWORD, strPasswordText);.commit();

}

}

Класс StatusScreen

package app.arm.courier;android.app.Activity;android.content.Context;android.content.Intent;android.content.SharedPreferences;android.content.SharedPreferences.Editor;android.os.Bundle;android.view.View;android.widget.ArrayAdapter;android.widget.EditText;android.widget.Spinner;class StatusScreen extends Activity {static final String APP_PREFERENCES = "mysettings"; // имя файла настроекstatic final String APP_PREFERENCES_STATUS_TEXT = "status_text"; // тип Stringstatic final String APP_PREFERENCES_STATUS = "status"; // тип String   static final String APP_PREFERENCES_STATUS_ID = "status_id"; // тип String  static final String APP_PREFERENCES_SERVER = "server"; // тип String   static final String[] status_list = {"Свободен","Выполняю заказ","Перерыв в работе","Авария"};mSettings;spinner;statusText;

@Overridevoid onCreate(Bundle savedInstanceState) {.onCreate(savedInstanceState);(R.layout.status);= getSharedPreferences(APP_PREFERENCES, Context.MODE_PRIVATE);= (EditText)findViewById(R.id.editText1);= (Spinner) findViewById(R.id.spinner1);(new Intent(this,GPS_Service.class));       <String> adapter = new ArrayAdapter<String>(, android.R.layout.simple_spinner_item, status_list);.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);.setAdapter(adapter);(mSettings.contains(APP_PREFERENCES_STATUS_ID)) {.setSelection(Integer.parseInt(mSettings.getString(APP_PREFERENCES_STATUS_ID, "")));

}(mSettings.contains(APP_PREFERENCES_STATUS_TEXT)) {.setText(mSettings.getString(APP_PREFERENCES_STATUS_TEXT, ""));

}

}void but_set_Click(View v) { strStatusText = statusText.getText().toString(); strStatus = spinner.getSelectedItem().toString();strStatusID = Integer.toString(spinner.getSelectedItemPosition());editor = mSettings.edit();.putString(APP_PREFERENCES_STATUS_TEXT, strStatusText);.putString(APP_PREFERENCES_STATUS, strStatus);.putString(APP_PREFERENCES_STATUS_ID, strStatusID);.commit();

}

}

Класс CourierARMActivityapp.arm.courier;android.app.Activity;android.location.Location;android.os.Bundle;android.util.Log;android.view.View;android.widget.Button;android.content.BroadcastReceiver;android.content.Context;android.content.Intent;android.content.IntentFilter;class CourierARMActivity extends Activity {

/** Called when the activity is first created. */But_nav;But_stat;But_cont;But_book;But_obj;But_set;But_ext;service;

@Overridevoid onCreate(Bundle savedInstanceState) {.onCreate(savedInstanceState);(R.layout.main);_nav = (Button) findViewById(R.id.but_nav); _stat = (Button) findViewById(R.id.but_stat); _cont = (Button) findViewById(R.id.but_cont); _obj = (Button) findViewById(R.id.but_obj); _set = (Button) findViewById(R.id.but_set); _ext = (Button) findViewById(R.id.but_ext); filter = new IntentFilter();.addAction("AppService");(service!= null) {= new BroadcastReceiver()

{

@Overridevoid onReceive(Context context, Intent intent)

{(intent.getAction().equals("AppService"))

{.i("AppService",intent.getStringExtra("GPS_Lat"));.i("AppService",intent.getStringExtra("GPS_Lon"));

}

}

};(service, filter);

//Запуск службы(new Intent(this,GPS_Service.class));

}

}void but_nav_Click(View v) {

Intent intent = new Intent();

intent.setClass(this, NavigationScreen.class);

startActivity(intent);(service!= null){unregisterReceiver(service);}(new Intent(this,GPS_Service.class));

}void but_stat_Click(View v) {

Intent intent = new Intent();

intent.setClass(this, StatusScreen.class);

startActivity(intent);(service!= null){unregisterReceiver(service);}(new Intent(this,GPS_Service.class));

}void but_cont_Click(View v) {

Intent intent = new Intent();

intent.setClass(this, ContactsScreen.class);

startActivity(intent);(service!= null){unregisterReceiver(service);}(new Intent(this,GPS_Service.class));

}void but_obj_Click(View v) {

Intent intent = new Intent();

intent.setClass(this, ObjectsScreen.class);

startActivity(intent);(service!= null){unregisterReceiver(service);}(new Intent(this,GPS_Service.class));

}void but_set_Click(View v) {

Intent intent = new Intent();

intent.setClass(this, SettingsScreen.class);

startActivity(intent);(service!= null){unregisterReceiver(service);}(new Intent(this,GPS_Service.class));

}void but_ext_Click(View v) { (service!= null){unregisterReceiver(service);}(new Intent(this,GPS_Service.class));       .os.Process.killProcess(android.os.Process.myPid());

}

@Overridevoid onDestroy()

{        .onDestroy();(service!= null){unregisterReceiver(service);}(new Intent(this,GPS_Service.class));

}

}

Приложение Б

Исходний код программы.

Диспетчерская часть

Receiver.php

<?

/** Имя базы данных */

define('DB_NAME', LOGIN_default');

/** Имя пользователя MySQL */('DB_USER', LOGIN_default');

/** Пароль к базе данных MySQL */

define('DB_PASSWORD', 'PASSWORD');

/** Имя сервера MySQL */('DB_HOST', '127.0.0.1');

$link = mysql_connect(DB_HOST, DB_USER, DB_PASSWORD) or die ("Невозможно подключиться к MySQL");

$user = mysql_real_escape_string($_GET['user']);

$password = mysql_real_escape_string($_GET['password']);

$lat = mysql_real_escape_string($_GET['lat']);

$lon = mysql_real_escape_string($_GET['lon']);

$status = mysql_real_escape_string($_GET['status']);

$status_text = mysql_real_escape_string($_GET['status_text']);_select_db (DB_NAME);

// http://yamashkin.ru/?user=user&password=pass&lat=45.324&lon=54.634345&status="авария"&status_text="отличный день!"

$query = "SELECT * FROM USERS WHERE USER='$user' AND PASSWORD='$password'";

$aut = mysql_query ($query) or die ("Невозможно добавить");

$row = mysql_fetch_row($aut);

$id = $row[0];($row[0]>=1)

{_query("SET NAMES 'utf8'");

$query = "INSERT INTO USER_STATE (ID_USER, LAT, LON, STATUS, STATUS_TEXT) VALUES ('$id','$lat','$lon','$status','$status_text')";_query ($query) or die ("Невозможно добавить");

}

{

}

?>.php

<html>

<head>

<title>Windrose 2012 Dispatcher</title>

<link rel="stylesheet" href="/leaflet/dist/leaflet.css" />

<link rel="stylesheet" href="/style.css" />

<!--[if lte IE 8]>

<link rel="stylesheet" href="/leaflet/dist/leaflet.ie.css" />

<![endif]-->

<script src="/leaflet/dist/leaflet.js"></script>

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.0/jquery.min.js"></script>

<script src="/ts/jquery.tablesorter.js"></script>

</head>

<body>

<div id="map" style="height: 600px"></div>

<script>cloudmadeUrl = 'http://{s}.tile.cloudmade.com/99558b6adf554346afa9ca70bf6104dc/{styleId}/256/{z}/{x}/{y}.png',= 'Windrose 2012 Dispatcher',= {maxZoom: 18, attribution: cloudmadeAttribution};minimal = new L.TileLayer(cloudmadeUrl, cloudmadeOptions, {styleId: 22677}),= new L.TileLayer(cloudmadeUrl, cloudmadeOptions, {styleId: 999}),= new L.TileLayer(cloudmadeUrl, cloudmadeOptions, {styleId: 1})map = new L.Map('map', {: new L.LatLng(54.184841, 45.174256),: 13,: [normal]

});baseMaps = {

"Minimal": minimal,

"Night View": midnightCommander,

"Normal": normal

};layersControl = new L.Control.Layers(baseMaps);.addControl(layersControl);last_marker =[0,0,0,0,0,0,0,0,0];marker = new Array();LeafIcon = L.Icon.extend({: '/img/leaf-green.png',: '/img/leaf-shadow.png',: new L.Point(38, 95),: new L.Point(68, 95),: new L.Point(22, 94),: new L.Point(-3, -76)

});greenIcon = new LeafIcon(),= new LeafIcon('/img/leaf-red.png'),= new LeafIcon('/img/leaf-orange.png');= new LeafIcon('/img/leaf-blue.png');              show()

{

$.ajax({ : "get_user.php", : false,: 'json',                               : function(response){ _content = "<table id=\"user_table\"><thead><tr><th>

{(response[i] != false) {= new L.LatLng(parseFloat(response[i][2]), parseFloat(response[i][3]));(last_marker[i] == 0) {(response[i][4] == "Свободен")   marker[i] = new L.Marker(markerLocation, {icon: greenIcon});(response[i][4] == "Выполняю заказ")         marker[i] = new L.Marker(markerLocation, {icon: blueIcon});(response[i][4] == "Перерыв в работе")   marker[i] = new L.Marker(markerLocation, {icon: orangeIcon});(response[i][4] == "Авария")        marker[i] = new L.Marker(markerLocation, {icon: redIcon});  .addLayer(marker[i]);

}(last_marker[i] == 1) {[i].setLatLng(markerLocation);

}_marker[i] = 1;[i].bindPopup("<b>"+response[i][0]+"</b><br />"+response[i][5]);         _content += "<tr><td>"+response[i][0]+"</td><td>"+response[i][1]+"</td><td>"+response[i][4]+"</td><td>"+response[i][5]+"</td><td>"+response[i][6]+"</td></tr>";                  

}

{_marker[i] = 0;

}

}_content += "</tbody></table>";.getElementById("test").innerHTML=table_content;                           

}

});

}

$(document).ready(function(){ (); ('show()',1000);

});

</script>

<div id="test"></div>

</body>

</html>_user.php

<?json_encode_x ($in) {html_entity_decode(_replace(

'/\\\&#x([0-9a-fA-F]{3});/',

'\\\\\u0$1',_replace(

'/\\\u0([0-9a-fA-F]{3})/',

'&#x$1;',_encode($in)

)

),_NOQUOTES,

'utf-8'

);

}

/** Имя базы данных */('DB_NAME', LOGIN_default');

/** Имя пользователя MySQL */('DB_USER', LOGIN_default');

/** Пароль к базе данных MySQL */

define('DB_PASSWORD', PASSWORD);

/** Имя сервера MySQL */('DB_HOST', '127.0.0.1');

$link = mysql_connect(DB_HOST, DB_USER, DB_PASSWORD) or die ("Невозможно подключиться к MySQL"); _select_db (DB_NAME);_query ("set names utf8");

$query = "SELECT * FROM USERS";

$result = mysql_query ($query) or die ("Ошибка");

$id_array = array();($row = mysql_fetch_row($result))

{

array_push ($id_array,$row[0]);

}

$locate_array = array();($id_array as $key => $value) {

$query = "SELECT USERS.NAME, USERS.PHONE, USER_STATE.LAT, USER_STATE.LON, USER_STATE.STATUS, USER_STATE.STATUS_TEXT, USER_STATE.TIME FROM USERS,USER_STATE WHERE USERS.ID_USER=USER_STATE.ID_USER AND USERS.ID_USER = '$value' ORDER BY USER_STATE.TIME DESC LIMIT 1";

$result = mysql_query ($query) or die ("Ошибка");

$row = mysql_fetch_row($result);_push ($locate_array,$row);

}json_encode_x($locate_array);

?>

Похожие работы на - Разработка автоматизированной системы расчета оптимального маршрута между городскими объектами для курьерской компании

 

Не нашли материал для своей работы?
Поможем написать уникальную работу
Без плагиата!