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 отличает простота, которая достигается благодаря следующим факторам:
? Качественная и полная документация, а также большое сообщество разработчиков.
? Фреймворк не создает каких-либо структурных ограничений и конвенций.
? От разработчика не требуется использования генераторов кода из командной строки.
? 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. Она наиболее полно подходит под требования разрабатываемой системы.
MySQL является решением для малых и средних приложений. Эта свободная для распространения СУБД имеет большое сообщество разработчиков.
Гибкость СУБД MySQL обеспечивается поддержкой большого количества типов таблиц, таких как MyISAM, поддерживающих полнотекстовый поиск, так и таблиц InnoDB, поддерживающих транзакции на уровне отдельных записей [4].
Слой Javascript и CSS файлов - функциональны слой для реализации интерфейса, загрузки данных с помощью AJAX и др.
Для реализации скриптов, используемых в интерфейсе пользователя, был использован популярный фреймворк на языке JavaScript - jQuery.
Библиотека jQuery помогает легко получать доступ к любому элементу DOM на HTML-странице, обращаться к атрибутам и содержимому элементов DOM, манипулировать ими. Также библиотека jQuery предоставляет удобный API по работе с Ajax [10].
В качестве сервиса получения информации о расположении объектов, а также для визуального отображение информации об объектах используется сервис Яндекс.Карты (API Яндекс.Карт).
Яндекс.Карты - это поисково-информационный картографический сервис Яндекса. Здесь наиболее точно и полно представлены карты России.
Доступен поиск как по географическим объектам (адресам, улицам, городам, регионам и странам), так и по организациям [7].
Сервис бесплатен.
- Введение
- 1. Техническое задание
- 1.1 Требования к составу и параметрам технических средств
- 1.2 Специальные требования
- 1.3 Анализ технических требований
- 2. Обзор существующих проектов
- 3. Проектирование системы
- 4. Реализация
- 4.1 Реализация отображения информации
- 4.2 Реализация модуля добавления проблемы
- 4.3 Реализация модуля комментирования проблемы
- 5. Контрольный пример
- Заключение
- Глава 1. Геоинформационная система (гис): понятие, программы Понятие о Геоинформационной системе (гис)
- Понятие о Геоинформационной системе (гис)
- Геоинформационные системы.
- 28 Геоинформационные системы.
- Геоинформационные системы. Общее представление.
- 5.5. Геоинформационные технологии
- «Геоинформационные системы»
- 36.Геоинформационные системы.