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

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].

Сервис бесплатен.