Электронная библиотека » Сергей Евдокимов » » онлайн чтение - страница 5


  • Текст добавлен: 4 мая 2023, 06:01


Автор книги: Сергей Евдокимов


Жанр: Компьютеры: прочее, Компьютеры


Возрастные ограничения: +12

сообщить о неприемлемом содержимом

Текущая страница: 5 (всего у книги 8 страниц)

Шрифт:
- 100% +
Глава 2. Методика испытаний

1. Создание слоя анализа маршрута

1) Щелкните пункт Network Analyst на панели инструментов Network Analyst и щелкните Новый маршрут.


Рисунок 3.2.1 – «Создание анализа маршрута»


2) Слой анализа маршрута будет добавлен в окно Network Analyst. Классы сетевого анализа: Остановки (Stops), Маршруты (Routes), Точечные барьеры (Point Barriers), Линейные барьеры (Line Barriers) и Полигональные барьеры (Polygon Barriers) – пустые.


Рисунок 3.2.2 – окно Network Analyst


3) Также в окно Таблица содержания добавлен новый слой анализа.


Рисунок 3.2.3 – Окно установки параметров для анализа


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

Потом нужно нажать кнопку «Свойства» слоя анализа в окне Network Analyst


Рисунок 3.2.4 – Окно настройки шара


Теперь нужно перейти на вкладку Настройки анализа. Убедитесь, что Импеданс определен как TravelTime (Минуты). Этот набор сетевых данных имеет историю трафика, связанную с атрибутом TravelTime (Минуты). Если будет введен требуемый промежуток времени (для этого выберите Использовать время начала и заполните три поля под ним), Network Analyst проведет поиск оптимального по времени маршрута исходя из заданного времени суток и скоростей движения по истории трафика. В противном случае приложение проведет поиск оптимального по времени маршрута на основе функции длин улиц и ограничений скорости.

Далее нужно включить опцию Использовать время начала, введите время и дату или день недели. Как Время суток введите время, когда необходимо оставить первую остановку. Выбираем День недели или Точная дата. При выборе День недели нужно указать любой день между понедельником и воскресеньем. Дополнительно можно выбрать Сегодня, для использования текущих настроек системы. При выборе Точная дата нужно ввести дату в текстовом поле или в списке откройте календарь и выберите требуемую дату. Оставляем невыбранной опцию Использовать временные окна. Для остановок могут быть указаны временные окна, в этом случае Network Analyst будет производить поиск маршрута с учетом диапазонов времени, в которые следует посетить остановки. Не нужно выбирать Изменить порядок остановок для поиска оптимального маршрута. Если не отмечать это свойство, Network Analyst произведет расчет наилучшего маршрута с заданной последовательностью остановок. Эта задача известна как задача коммивояжера. Если опция была выбрана, программа проведет поиск лучшего маршрута и лучшей последовательности, в которой должна посещать остановки.

Далее – Выберем Разрешено из раскрывающегося списка Развороты в соединениях. Нажимаем стрелку в нижнем списке Тип исходной геометрии и выберите Настоящая форма с измерениями. Убедитесь, что установлены метки Использовать иерархию и Игнорировать неправильное расположение. Убедитесь, что в разделе Ограничения отмечены ограничения RestrictedTurns и Oneway. Убедитесь, что в рамке Путешествие значение Единицы расстояния имеет значение Мили, выбрано пункт Использовать атрибут времени, а атрибут времени имеет значение TravelTime (Минуты). Закладка Настройка анализа должна выглядеть как на следующем рисунке, однако свойства Использовать время начала могут отличаться:


Рисунок 3.2.1 – Настройка анализа

Глава 3. Инструкция с эксплуатации системы

Запуск программы выполняется по двойному щелчку на ярлыке или на файле с расширением «GoWayAplication. ехе» (Рис.3.3.1)


Рисунок 3.3.1 – Файл GoWayAplication. ехе


После запуска программы на экране отображается главное меню приложения «GoWay» (рис.3.3.2). При щелчке по кнопке «Новый маршрут» будет запущено приложение – откроется поле из заполнением необходимыми данными (рис.3.4.2).


Рисунок 3.3.2 – Работа программы GoWay


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

Глава 4. Общая опись модулей ПО

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


1. Электронный справочник для транспортных перевозок

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


2. Электронная карта местности

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


3. Программа планирования оптимальных маршрутов

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


4. Система поиска маршрутов по заданной местности

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


5. Система поиска и построения оптимального маршрута

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

Глава 5. Декомпозиция модели проекта ПО

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

WBS определяется элементами проекта в иерархической структуре и ссылается на отношение до конечного продукта данного проекта. Ниже (см. на Рис. 3.5.1 – 3.5.2) показаны структурные декомпозиции проекта разработки на ПК с разными уровнями детализации работ и целей проекта, а ещё распределение уровня ответственности между подразделениями учреждения в структурной декомпозиции организации OBS. В таблицах 3.5.3 и 3.5.4 показана возможность представления WBS в виде иерархического списка, в основу которого положено упорядочение по WBS или OBS.


Рисунок 3.5.1 – Структурная декомпозиция проекта для транспортных перевозок


DFD-диаграмма (c англ. Data Flow Diagram) представляется как «диаграмма потоков данных», или один из главных инструментов анализа структурирования, проектированная на информационных системах.

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

В диаграмме имеются следующие структурные элементы:

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

– Внешние сущности. Объекты, которые не входят в ПО, но являются источником или получателем данных. К примеру, как человек.

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

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

Такое разбиение по блокам описывает процессы по любой сложности. Например, в DFD-диаграммах функциональный блок подразделяют на сколько угодно таких же блоков. На следующей странице приведено как пример DFD-диаграммы, используемой при разработке компьютерной игры «Настольный теннис». Ниже (на рис. 3.5.2) представлена контекстная диаграмма, на основе которой будет выполняться последующая декомпозиция. На ней изображены следующие элементы: внешняя сущность (игрок), хранилище данных (файл с рекордами), процесс (игра «PingPong») и потоки данных (линии, оканчивающиеся стрелкой). Из контекстной диаграммы видно, что игрок обменивается информацией с функциональным блоком игровой логики, который в свою очередь сохраняет информацию о текущих рекордах в файл или загружает информацию об имеющихся из файла.


Рисунок 3.5.2 – Контактная диаграмма проекту PingPong

Глава 6. Спецификация программных модулей

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

Глава 7. Исследование потоков данных процессов
 
Потоки данных:
1) данные по грузам;
2) данные по водителю;
3) отчет по доставке;
4) отчет об отправке;
5) данные с маршрута;
6) отчет про исполнение;
7) стоимость перевозки;
8) протяженность маршрута;
9) тарифные ставки;
10) тариф с учетом оплаты;
11) оплата водителя.
 

Рисунок 3.6.1 – Функциональная диаграмма потоков

данных для транспортных перевозок данных

Глава 8. Детализация потоков данных второго и третьего уровня

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

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

Поэтому получен набор диаграмм второго уровня, описывающих процессы первого уровня более подробно. Так как приведенная на Рис.3.8.1 диаграмма потоков данных является укрупненной, а на Рис.3.8.2 приведена диаграмма DFD, детализирующая процесс Изображенная на Рис.3.8.2 диаграмма состоит из четырех процессов и одного хранилища данных кредитных карт.


Рисунок 3.8.1 – DFD-диаграмма детализации процесса: «Транспортные перевозки» по оптимальным маршрутам


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

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

Так как приведенная на Рис. 3.8.1 диаграмма потоков данных является укрупненной, а на Рис. 3.8.2 приведена диаграмма DFD, детализирующая структуру и возможность использования приложения «GoAwayApplication» в двух режимах: как клиент, и как разработчик (режим кондуктора).


Рисунок 3.8.2 – Детализация потоков 2-го уровня

Глава 9. Физическая модель БД

Рисунок 3.9.1 – Физическая модель БД поиска оптимальных маршрутов

Глава 10. Опись входящей и выходящей информации

Входящее данные программы даны в табл 3.10.1


Таблица 3.10.1 – Входящие данные


Исходящее данные приведены в Табл. 3.10.2


Таблица 3.10.2 – Исходящее данные

Глава 11. Диаграмма состояний программного обеспечения

Диаграмма состояний маршрута описывает возможные состояния экземпляра класса «Маршрут» и возможные последовательности его переходов из одного состояния в другое (рис. 3.11.1)


Рисунок 3.11.1 – UML-диаграмма состояния процессов на маршруте

Глава 12. Дополнительные испытания программного обеспечения

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


Рисунок 3.12.1 – Блок-схема повторных тестирований

для построений оптимальных маршрутов


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

Глава 13. Общее тестирование

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

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

– настройка параметров;

– автоматическая сборка маршрута по заданным ключевым точкам и критерию;

– автоматическое составление маршрута, использующего средства общественного транспорта;

– ведение базы данных маршрутов;

– визуализация маршрутов на карте;

– выдача справочной информации.

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

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

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

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

Глава 14 Программная диагностика

Программная диагностика – это диагностирование построенное на выявлении неисправностей компьютера, при помощи ПО. Начиная с Bios до драйвера, везде программное обеспечение. Которое так или иначе управляет той или иной комплектующей в рамках компьютера.


Проверка данного программного обеспечения, которое включает в себя:

– проверку файловой системы на возникновение сбоев;

– проверку реестра ПО;

– проверку наличия ошибок взаимодесвии с разными версиями ОС: Linux (Ubuntu, Debian, Mint), Windows (7,8,10,11), MacOS (8.0—10.12).

Нужно использовать 10 качественных инструментов для диагностического тестирования программного обеспечения (для выбора оптимального маршрута при транспортных перевозках): Selenium, TestingWhiz, HPE Unified Functional Testing (HP – UFT ранее QTP), TestComplete, Ranorex, Sahi, Watir, Tosca Testsuite, Telerik TestStudio, Katalon Studio.

Jira, HP QC, TestLink, Mantis, HP QC, TestLink, Mantis, Test Track

https://testmatick.com/ru/10-luchshih-sistem-upravleniya-test-kejsami-v-2019-godu/

Глава 15. Инструкция пользователя

1. Вычисление оптимального маршрута

На панели инструментов Network Analyst щелкните Расчет Решения. Объект маршрута появляется в документе карты и в окне ArcGIS Network Analyst под классом Маршруты.


Рисунок 3.15.1 – Построение маршрута


Если появляется предупреждение, остановка может быть размещена на ограниченном ребре. Попробуйте переместить одну или несколько остановок с помощью инструмента Выбрать/Переместить сетевые положения. Инструмент выбора/перемещения сетевого положения с панели инструментов Network Analyst.

На панели инструментов Network Analyst щелкните кнопку Расчет button Направления. Откроется диалоговое окно Путешествие. На правом столбце диалогового окна Путевой лист щелкните на одной из ссылок с названием Карта. Отображена карта-врезка маневра.


Рисунок 3.15.2 – Построение маршрутов


2. Сохранение маршрута

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

В открывшемся окне Network Analyst щелкните правой кнопкой мыши Маршруты (1) и выберите команду Экспорт данных.


Рисунок 3.15.3 – Экспорт данных из маршрута


Открывается диалоговое окно и экспорт данных. В поле (текстовом) исходный класс объектов введите или укажите место для сохранения результатов. Далее, нажимаем кнопку «ОК». Объект маршрута сохраняется в изначальной рабочей области. Потом щелкаем на кнопку «Нет», для добавления экспортируемых данных на карту как слой. В случае, когда не нужно продолжать работу с другими упражнениями, необходимо закрыть приложение AppGoWay. Нажимаем «Нет», для сохранения изменений. В случае взаимодействия с другими элементами, выполняем следующие действия: щелкните «Файл», «Новый», откроется диалоговое окно «Новый документ», далее – щелкаем кнопку «ОК». На запрос о сохранении изменений щелкаем: «Нет».

Глава 16. Код программы
 
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System. Data;
using System. Drawing;
using System.Linq;
using System. Text;
using System.Windows.Forms;
 
 
using System.Text.RegularExpressions;
using System.Net;
namespace GoogleAPIroutes_GMap
{
    public partial class Form1: Form
    {
        public Form1 ()
        {
            InitializeComponent ();
}
 
 
        private void Form1_Load (object sender, EventArgs e)
        {
gMapControl1.Bearing = 0;
gMapControl1.CanDragMap = true;
            gMapControl1.DragButton = MouseButtons. Left;
gMapControl1.GrayScaleMode = true;
gMapControl1.MarkersEnabled = true;
 
 
gMapControl1.MaxZoom = 20;
 
 
            gMapControl1.MinZoom = 2;
 
 
gMapControl1.MouseWheelZoomType =
GMap.NET.MouseWheelZoomType.MousePositionAndCenter;
 
 
gMapControl1.NegativeMode = false;
            gMapControl1.PolygonsEnabled = true;
gMapControl1.RoutesEnabled = true;
 
 
gMapControl1.ShowTileGridLines = false;
 
 
            gMapControl1.Zoom = 2;
 
 
gMapControl1.MapProvider =
GMap.NET.MapProviders.GMapProviders. GoogleMap;
GMap.NET.GMaps.Instance.Mode =
GMap.NET.AccessMode.ServerOnly;
 
 
GMap.NET.MapProviders.GMapProvider. WebProxy = System.Net.WebRequest.GetSystemWebProxy ();
GMap.NET.MapProviders.GMapProvider.WebProxy.Credentials = System.Net.CredentialCache.DefaultCredentials;
 
 
            dtRouter = new DataTable ();
dtRouter.Columns.Add («Шаг»);
dtRouter.Columns.Add («Начальная точка (latitude)»);
dtRouter.Columns.Add («Начальная точка (longitude)»);
dtRouter.Columns.Add («Конечная точка (latitude)»);
dtRouter.Columns.Add («Конечная точка (longitude)»);
dtRouter.Columns.Add («Время»);
dtRouter.Columns.Add («Дистанция»);
dtRouter.Columns.Add («Опись маршрута»);
 
 
            dataGridView1.DataSource = dtRouter;
dataGridView1.Columns [7].Width = 250;
 
 
dataGridView1.AllowUserToAddRows = false;
 
 
dataGridView1.AllowUserToDeleteRows = false;
dataGridView1.ReadOnly = false;
 
 
            //Добавить виды перемещения.
comboBox1.Items.Add («Автомобильные маршруты»);
comboBox1.Items.Add («Пешеходные маршруты»);
comboBox1.Items.Add («Велосипедные маршруты»);
comboBox1.Items.Add («Маршруты общественного транспорта»);
 
 
comboBox1.SelectedIndex = 0;
}
 
 
        DataTable dtRouter;
        private void button1_Click (object sender, EventArgs e)
        {
            //Очистка таблицы
dtRouter.Rows.Clear ();
 
 
            List <string> mode = new List <string> ();
mode.Add («driving»);
mode.Add («walking»);
mode.Add («bicycling»);
mode.Add («transit»);
 
 
            string url = string.Format (
                «https://maps.googleapis.com/maps/api/directions/xml?origin={0},&destination={1}&sensor=false&language=ru&mode={2}»,
Uri.EscapeDataString (textBox1.Text), Uri.EscapeDataString (textBox2.Text), Uri.EscapeDataString(mode[comboBox1.SelectedIndex]));
 
 
System.Net.HttpWebRequest request =
(System.Net.HttpWebRequest)System.Net.WebRequest.Create (url);
 
 
System.Net. WebResponse response =
request.GetResponse ();
 
 
System.IO.Stream dataStream =
response.GetResponseStream ();
 
 
System.IO.StreamReader sreader =
                new System.IO.StreamReader (dataStream);
 
 
            string responsereader = sreader.ReadToEnd ();
 
 
response.Close ();
 
 
            System. Xml. XmlDocument xmldoc =
                new System. Xml. XmlDocument ();
 
 
            xmldoc. LoadXml (responsereader);
 
 
            if (xmldoc.GetElementsByTagName(«status»)[0].ChildNodes[0].InnerText == «OK»)
            {
                System. Xml. XmlNodeList nodes =
xmldoc.SelectNodes (»//leg//step»);
 
 
                object [] dr;
                for (int i = 0; i <nodes.Count; i++)
                {
                    dr = new object [8];
                    dr [0] = i;
                    dr [1] = xmldoc.SelectNodes(«//start_location»).Item(i).SelectNodes(«lat»).Item(0).InnerText.ToString ();
                    dr [2] = xmldoc.SelectNodes(«//start_location»).Item(i).SelectNodes(«lng»).Item(0).InnerText.ToString ();
 
 
                    dr [3] = xmldoc.SelectNodes(«//end_location»).Item(i).SelectNodes(«lat»).Item(0).InnerText.ToString ();
                    dr [4] = xmldoc.SelectNodes(«//end_location»).Item(i).SelectNodes(«lng»).Item(0).InnerText.ToString ();
 
 
                    dr [5] = xmldoc.SelectNodes(«//duration»).Item(i).SelectNodes(«text»).Item(0).InnerText.ToString ();
                    dr [6] = xmldoc.SelectNodes(«//distance»).Item(i).SelectNodes(«text»).Item(0).InnerText.ToString ();
                    //Получение инструкций
                    dr [7] = HtmlToPlainText(xmldoc.SelectNodes(«//html_instructions»).Item(i).InnerText.ToString ());
 
 
dtRouter.Rows.Add (dr);
}
 
 
                textBox1.Text = xmldoc.SelectNodes(«//leg//start_address»).Item(0).InnerText.ToString ();
                textBox2.Text = xmldoc.SelectNodes(«//leg//end_address»).Item(0).InnerText.ToString ();
                textBox3.Text = xmldoc.GetElementsByTagName(«duration»)[nodes.Count].ChildNodes[1].InnerText;
 
 
                textBox4.Text = xmldoc.GetElementsByTagName(«distance»)[nodes.Count].ChildNodes[1].InnerText;
 
 
                double latStart = 0.0;
                double lngStart = 0.0;
                double latEnd = 0.0;
                double lngEnd = 0.0;
 
 
                latStart = System.Xml.XmlConvert.ToDouble(xmldoc.GetElementsByTagName(«start_location»)[nodes.Count].ChildNodes[0].InnerText);
                lngStart = System.Xml.XmlConvert.ToDouble(xmldoc.GetElementsByTagName(«start_location»)[nodes.Count].ChildNodes[1].InnerText);
                latEnd = System.Xml.XmlConvert.ToDouble(xmldoc.GetElementsByTagName(«end_location»)[nodes.Count].ChildNodes[0].InnerText);
                lngEnd = System.Xml.XmlConvert.ToDouble(xmldoc.GetElementsByTagName(«end_location»)[nodes.Count].ChildNodes[1].InnerText);
 
 
                textBox5.Text = latStart + ";" + lngStart;
 
 
                textBox6.Text = latEnd + ";" + lngEnd;
 
 
                dataGridView1.DataSource = dtRouter;
 
 
                gMapControl1.Position = new GMap.NET. PointLatLng (latStart, lngStart);
GMap.NET.WindowsForms.GMapOverlay markersOverlay =
                    new GMap.NET.WindowsForms.GMapOverlay (gMapControl1, «marker»);
GMap.NET.WindowsForms.Markers.GMapMarkerGoogleGreen markerG =
                    new GMap.NET.WindowsForms.Markers.GMapMarkerGoogleGreen (
                    new GMap.NET. PointLatLng (latStart, lngStart));
markerG.ToolTip =
                    new GMap.NET.WindowsForms.ToolTips.GMapRoundedToolTip (markerG);
 
 
markerG.ToolTipMode = GMap.NET.WindowsForms.MarkerTooltipMode.Always;
 
 
                string [] wordsG = textBox1.Text. Split (»,»);
                string dataMarkerG = string. Empty;
                foreach (string word in wordsG)
                {
                    dataMarkerG += word + ";n»;
}
 
 
markerG.ToolTipText = dataMarkerG;
 
 
GMap.NET.WindowsForms.Markers.GMapMarkerGoogleRed markerR =
                    new GMap.NET.WindowsForms.Markers.GMapMarkerGoogleRed (
                    new GMap.NET. PointLatLng (latEnd, lngEnd));
markerG.ToolTip =
                    new GMap.NET.WindowsForms.ToolTips.GMapRoundedToolTip (markerG);
 
 
markerR.ToolTipMode = GMap.NET.WindowsForms.MarkerTooltipMode.Always;
 
 
                string [] wordsR = textBox2.Text. Split (»,»);
                string dataMarkerR = string. Empty;
                foreach (string word in wordsR)
                {
                    dataMarkerR += word + ";n»;
}
 
 
markerR.ToolTipText = dataMarkerR;
 
 
markersOverlay.Markers.Add (markerG);
markersOverlay.Markers.Add (markerR);
 
 
gMapControl1.Overlays.Clear ();
 
 
List<GMap.NET. PointLatLng> list = new List<GMap.NET. PointLatLng> ();
 
 
                for (int i = 0; i <dtRouter.Rows.Count; i++)
                {
                    double dbStartLat = double.Parse(dtRouter.Rows[i].ItemArray[1].ToString (), System.Globalization.CultureInfo.InvariantCulture);
                    double dbStartLng = double.Parse(dtRouter.Rows[i].ItemArray[2].ToString (), System.Globalization.CultureInfo.InvariantCulture);
 
 
list.Add (new GMap.NET. PointLatLng (dbStartLat, dbStartLng));
 
 
                    double dbEndLat = double.Parse(dtRouter.Rows[i].ItemArray[3].ToString (), System.Globalization.CultureInfo.InvariantCulture);
                    double dbEndLng = double.Parse(dtRouter.Rows[i].ItemArray[4].ToString (), System.Globalization.CultureInfo.InvariantCulture);
 
 
list.Add (new GMap.NET. PointLatLng (dbEndLat, dbEndLng));
}
 
 
markersOverlay.Routes.Clear ();
 
 
GMap.NET.WindowsForms.GMapRoute r = new GMap.NET.WindowsForms.GMapRoute (list, «Route»);
 
 
r.IsVisible = true;
 
 
                // цвет маршрута.
r.Stroke.Color = Color. DarkGreen;
 
 
markersOverlay.Routes.Add (r);
 
 
gMapControl1.Overlays.Add (markersOverlay);
 
 
                //10ти кратное приближение.
                gMapControl1.Zoom = 10;
 
 
                //Обновление.
gMapControl1.Refresh ();
}
}
 
 
        //Удаление HTML-тег.
        public string HtmlToPlainText (string html)
        {
            html = html.Replace (»</b>»,»»);
            return html.Replace (»<b>», «»);
 

}}}


Страницы книги >> Предыдущая | 1 2 3 4 5 6 7 8 | Следующая
  • 3 Оценок: 1

Правообладателям!

Это произведение, предположительно, находится в статусе 'public domain'. Если это не так и размещение материала нарушает чьи-либо права, то сообщите нам об этом.


Популярные книги за неделю


Рекомендации