Разработка геоинформационной системы позиционирования городских объектов

Курсовой проект - Компьютеры, программирование

Другие курсовые по предмету Компьютеры, программирование

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

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

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

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

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

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

 

3. Проектирование системы

 

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

 

Рисунок 3.1 - Общая структура веб-приложения

 

Пользователь, обращаясь к сайту, видит внешнюю его реализацию.

Слой HTML - отображает страницу, построенную компонентом PHP (контроллером фреймворка CodeIgniter), пользователю. Также на странице сайта подключены необходимые скрипты и файлы каскадных таблицей стилей (CSS).

Слой PHP в свою очередь разделяется на два логических компонента: модель - компонент отвечает за работу с базой данных, и контроллер - компонент отвечающий за логику работы системы (рис. 3.2).

Таким образом, реализовано разделение: Представление (HTML), Контроллер, Модель (PHP). Данная реализация называется моделью MVC.

Рисунок 3.2 - Схема приложения, работающего по модели MVC

 

Концепция шаблона проектирования MVC (Model-View-Controller, Модель-представление-контроллер): модель данных приложения, пользовательский интерфейс и взаимодействие с пользователем разделены на три отдельных компонента так, что модификация одного из компонентов оказывает минимальное воздействие на остальные (рис. 3.2).

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

?Модель (Model). Модель предоставляет знания: данные и методы работы с этими данными, реагирует на запросы, изменяя своё состояние. Не содержит информации, как эти знания можно визуализировать.

?Представление, вид (View). Отвечает за отображение информации (визуализация). Часто в качестве представления выступает форма (окно) с графическими элементами.

?Контроллер (Controller). Обеспечивает связь между пользователем и системой: контролирует ввод данных пользователем, и использует модель и представление для реализации необходимой реакции [5].

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

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

?Фреймворк не создает каких-либо структурных ограничений и конвенций.

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

?CodeIgniter работает практически на любом хостинговом плане, который имеет поддержку PHP версии 5.1 и выше.

?CodeIgniter считается одним из быстрых и не требовательных к ресурсам Фреймворков.

?Малый размер дистрибутива (размер версии 2.1.1 составляет всего 2.2 Мб) [6].

Фреймворк CodeIgniter включает ряд вспомогательных функций для работы с БД, URL и пр. (helpers), которые позволяют разрабатывать более надежные от ошибок приложения. В данном случае команды:

$this->db->where(uid, $options[uid]);

$this->db->limit($options[limit], $options[offset]);

$this->db->order_by($options[sortBy], ASC);

$query = $this->db->get(comments);

заменяют привычный SQL запрос

SELECT * FROM comments WHERE uid = $options[uid] ORDER BY ASC LIMIT $options[limit], $options[offset];

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

Слой MySQL - задача слоя: хранение данных, сохранение их целостности, доступности и конфиденциальности. Для разработки информационной системы была выбрана реляционная система управления базами данных MySQL. Она наиболее полно подходит под требования разрабатываемой системы.является решением для малых и средних приложений. Эта свободная для распространения СУБД имеет большое сообщество раз