ЯЛГЙОяО/
Уфа : УГАТУ. 2011______________________________________________________________Т. 15, №2(42). С. 177-182
УПРАВЛЕНИЕ, ВЫЧИСЛИТЕЛЬНАЯ ТЕХНИКА И ИНФОРМАТИКА
УДК 004.4
В. В. Канашин
ТЕХНОЛОГИИ YANDEX-KAPT: ПРАКТИЧЕСКИЙ ОПЫТ
Рассматриваются особенности применения технологии Yandex-кэрт для решения реальных практических задач. На примере информационно-справочной системы «Башкортостан. Справочный портал» обсуждаются возможности веб-программирования с использованием Yandex-кэрт. Веб-программирование; веб-порталы; Yandex-кэрты
ВВЕДЕНИЕ
Геоинформационная система (ГИС, также географическая информационная система) -информационная система, предназначенная для сбора, хранения, анализа и графической визуализации пространственных данных и связанной с ними информации о представленных в ГИС объектах [1]. В более узком смысле ГИС можно определить как инструмент (программный продукт), позволяющий пользователям искать, анализировать и редактировать цифровые карты, а также дополнительную информацию об объектах, например высоту здания, адрес, количество жильцов, организации, располагающиеся в здании. Географические информационные системы начали зарождаться в 1950-70-е годы. В своем развитии они использовали последние достижения технологического прогресса. 1980-е годы характеризует: широкий рынок разнообразных программных средств, развитие настольных ГИС, расширение области их применения за счет интеграции с базами непространственных данных, появление сетевых приложений, появление значительного числа непрофессиональных пользователей, системы, поддерживающие индивидуальные наборы данных на отдельных компьютерах, открывают путь системам, поддерживающим корпоративные и распределенные базы геоданных. Одновременно с развитием и распространением интернета, вебтехнологий и веб-языков, стали актуальными ГИС общего назначения, созданные как вебприложения. В 2010 году каждый пользователь Интернета мог воспользоваться картографическими веб-сервисами компаний Google, Yandex, Mail, Rambler, ДубльГИС и др. Данные сервисы общего назначения позволяют определить:
• что конкретно находится в данном месте,
Контактная информация: (347)272-89-81
• где находится конкретный объект (пространственный анализ),
• какие временные изменения произошли на определенной площади/территории,
• текущее местоположение пользователя.
Разработчики некоторых сервисов предоставляют открытую документацию по своим системам и предлагают использовать их для разработок собственных проектов, карт, маршрутов ит. п., что дает возможность сторонним разработчикам пользоваться их инструментарием и готовыми ГИС. Возможности таких сервисов целесообразно использовать для предоставления специфической информации, такой как, например, туристическая. Туризм - временные выезды (путешествия) людей в другую страну или местность, отличную от места постоянного жительства, на срок от 24 часов до 6 месяцев в течение одного календарного года или с совершением не менее одной ночевки в развлекательных, оздоровительных, спортивных, гостевых, познавательных, религиозных и иных целях без занятия деятельностью, оплачиваемой из местного источника [2]. Очевидно, туристу необходима информационная поддержка в пути, информация о том, где он находится, что находится поблизости и куда стоит направиться. Эффективная информационная поддержка туристских ресурсов важна как с экономической, так и с социальной точек зрения. Такой подход, с одной стороны, способствует развитию туризма как важной доходной отрасли экономики, а с другой - соответствует культурным и социальным потребностям населения. Такую поддержку может обеспечить туристический портал, содержащий в себе всю необходимую туристическую информацию о регионе путешествия:
информацию об объектах туризма, другими словами, рекреационных ресурсах региона, -это совокупность природных и искусственно созданных человеком объектов, пригодных для создания туристического продукта. Туристический продукт - это любая услуга, удовлетво-
ряющая те или иные потребности туристов и подлежащая оплате с их стороны [3],
• информацию о субъектах туризма - организациях, занимающихся продажами туристических продуктов, услуг, а так же организациях, занимающихся розничной торговлей продуктами питания, ГСМ и оказывающих услуги, связанные с жизнедеятельностью людей/туристов,
• информацию о маршрутах и дорогах.
Стоит отметить, что на сегодняшний день
в Республике Башкортостан не существует единого туристического информационного ресурса, который мог бы предоставить пользователям указанную информацию о местах отдыха, туристических маршрутах и фирмах, помощь и сопровождение в пути. В связи с заинтересованностью руководства республики Башкортостан в развитии туристической индустрии и бизнеса, получении экономического эффекта, привлечении туристов в регион, усилении статуса Башкирии как туристического центра, возникла необходимость создания такой единой автоматизированной информационной системы для туристов.
ТУРИСТИЧЕСКИЙ ПОРТАЛ Концепция
Традиционно концептуальное проектирование начинается с разработки структурнологической модели, в общем виде описывающей основных участников соответствующего процесса и информационные потоки, циркулирующие между ними. Простейшим вариантом структурно-логической модели является мнемосхема, задающая описание процесса в форме совокупности условных обозначений основных его объектов и субъектов в их взаимосвязи. Специфика туристического портала (а именно, его концептуального моделирования) заключается в том, что здесь сложно представить такое описание процесса, которое относилось бы к так называемой категории «как есть». Необходимость внедрения такого портала обусловлена не тем, что существующая организация процесса чем-то не устраивала пользователей, а скорее тем, что в принципе подобного подхода просто не было. На рисунке представлена мнемосхема, описывающая процесс работы с туристическим порталом.
Взаимодействует
ПОЛЬЗОВАТЕЛЬ
(ТУРИСТ)
Отсылает запрос
Загрузка карты с отображением результатов запроса
ЗАПРОС
“1ч
СЕРВЕР YANDEX
о
Создание карты
f
ЭЛЕКТРОННАЯ КАРТА
YANDEX СКРИПТ
Интеграция карты
СЕРВЕР БД
формирует
HTML-СТРАНИЦА
ЭОС выборка
БОС запрос
Таблица БД 1
Таблица БД N
ТАБЛИЦЫ БД
Мнемосхема информационно-справочной системы «Башкортостан. Туристический портал»
Здесь показано взаимодействие конечного пользователя с порталом: последовательная передача запросов от пользовательского браузера, его обработка на сервере, работа с базами данных, прорисовка карт.
Как видно из схемы, одной из ключевых характеристик такой системы является использование двух видов хранилищ данных - непосредственно портальной информации и картографической информации. Первая группа данных определяет общую пользовательскую информацию: данные о пользователях, некоторая общая информация по порталу. Вторая категория данных - это информация, которая предназначена исключительно для реализации «географического» аспекта системы, это, по сути, те данные, которые отвечают за «прорисовку» соответствующих карт, - пространственная информация.
Реализация
Разработка концептуальных моделей - еще не есть готовая система, с которой можно работать (именно поэтому эти модели называются концептуальными, т. е. теоретическими). Чтобы понять, насколько эффективно было проведено концептуальное проектирование, насколько полно оно отразило поставленную задачу, нужно реализовать эти решения в рамках исследовательского прототипа информационной системы. Для достижения поставленных целей целесообразно использовать веб-технологии и проектировать систему в виде веб-приложения. В рамках веб-приложения проектирование БД удобно осуществлять с помощью свободно распространяемой СУБД MySQL, посредством веб-интерфейса для администрирования phpMyAdmin. Данное веб-приложение позволяет через браузер осуществлять администрирование сервера MySQL, запускать команды SQL и просматривать содержимое таблиц и баз данных, управлять СУБД MySQL без непосредственного ввода SQL команд, предоставляя дружественный интерфейс.
Особое внимание стоит уделить ГИС. Готовые картографические сервисы одновременно с готовым инструментарием предоставляют свои пространственные базы данных, спутниковые снимки, а также готовые решения типовых задач. Сами сервисы имеют одинаковую функциональность и сложно оценить, который из них лучше. Однако компания Яндекс является российской компанией и предоставляет полный русскоязычный материал по работе со своим сервисом. Он включает в себя API справочник по статическим (Static API) и динамическим картам, справочник YMapsML (Yandex Maps Markup Language - XML-язык, предназначен-
ный для описания географических данных на картах Яндекса), описания геокодера Яндекса. В описании рассмотрена работа с геокодером по HTTP (прямое и обратное геокодирование), подробно рассмотрена структура ответа геокодера, приведены примеры запросов и ответов сервиса. Описание также включает в себя краткий справочник по XML-схеме, использующейся в ответе геокодера. Поэтому для проектирования выбран картографический сервис Ян-декс.Карты. Служба Яндекс.Карты обладает программным интерфейсом (API) на языке JavaScript, который позволяет интегрировать интерактивные карты в веб-страницы, для чего генерируется HTML и JavaScript код, предназначенный для отображения карты в прямоугольном контейнере:
// Создает обработчик события window.onLoad YMaps.jQuery(function () {
// Создает экземпляр карты и привязывает его к созданному контейнеру var map =
new YMaps.Map(YMaps.jQuery ("#YMapsID")[0]);
// Устанавливает начальные параметры отображения карты: центр карты и коэффициент масштабирования map.setCenter(new YMaps.GeoPoint (56.10081, 54.810333), 6); });
JavaScript - объектно-ориентированный скриптовый язык программирования, обычно используется как встраиваемый язык для программного доступа к объектам приложений [4]. API Яндекс. Карт - это набор иерархических классов, их методов, являющихся программным интерфейсом (API) на JavaScript, позволяющим интегрировать интерактивные карты в вебстраницы. API справочник содержит описания открытых классов и методов и рассчитан на разработчиков, знакомых с JavaScript и сервисом Яндекс.Карты. Однако основные методы обработки данных скрыты от пользователей. API Яндекс.Карт позволяет формировать статические карты (с помощью HTTP API), представляющие собой обычное изображение, имеющее прямоугольную форму. Такие карты используются в основном для отображения схем проезда, поэтому для реализации данной системы логично использовать интерактивные карты. Интерактивные карты предполагают взаимодействие с пользователем в виде реакции на определенные управляющие воздействия, например, нажатие кнопок мыши или клавиш клавиатуры. Так, пользователь может «перемещаться» по карте, изменять масштаб, размещать метки и т. д. Для взаимодействия с пользователем в области карты может быть размещён набор специальных элементов управления - как стан-
дартных («лупа», «линейка» и пр.), так и определенных пользователем:
//установление пользовательских элементов управления
map.addControl(new YMaps.TypeControl()); map.addControl(new YMaps. T oolBar()); map.addControl(new YMaps.Zoom()); map.addControl(new YMaps.MiniMap()); map.addControl(new YMaps.ScaleLine()); map.addControl(new YMaps.SearchControl());
При помощи JavaScript API возможно:
• показывать фрагменты карты и спутниковых снимков;
• управлять картой и обрабатывать события;
• показывать на карте различные объекты (метки, линии, балуны);
• манипулировать любыми картами - то есть изображениями местности или любых объектов, каждой точке которых соответствуют определенные двумерные координаты.
Визуальные объекты, размещаемые поверх карты и привязанные к координатам местности, называются оверлеями.
Балун - это всплывающее окно, в котором может быть показано любое HTML-содержимое. Размещается в точке с заданными координатами. Одновременно на карте может быть показан только один балун.
Метка - это изображение (обычно значок), с помещенным в него содержимым. Содержимое может отсутствовать. Размещается в точке с заданными координатами.
В JavaScript API можно использовать изображения значков из встроенной коллекции и задавать некоторые параметры отображения метки. Кроме того, можно определять собственный способ отображения метки. Содержимое может быть обычным текстом или задаваться с помощью HTML.
// Создание стиля для содержимого балуна var s = new YMaps.Style(); s.balloonContentStyle = new YMaps. BalloonContentStyle( new YMaps.Template
("<div style=\"color:green\">$[description]</div>")
);
//набор стилей для метки var styleKeys = [
" default#houseIcon", " default#skiingIcon", "default#dpsIcon", "default#attentionIcon",
" default#workshopIcon" ];
Одна из особенностей при использовании сервиса - наличие отдельной пространственной базы данных Яндекса, соответственно предназначенной для хранения пространственной информации обо всех объектах на карте. Однако пространственная информация (пространствен-
ные данные) включает в себя координатные и атрибутивные данные. Установление связей между ними называется геокодированием. Координатные данные описывают местоположение объекта в пространстве согласно выбранной географической системе координат. Атрибутивные данные - это все остальные данные об объекте на карте. Технология предлагаемой системы подразумевает хранение как координатных, так и атрибутивных данных в базе данных информационной системы. Но для их правильного позиционирования на цифровых картах Яндекс предполагается использование геокодера сервиса, позволяющего вычислить географические координаты объектов по их адресам или по географическим координатам. Таким образом, осуществив привязку атрибутивных данных из базы данных информационной системы с координатными данными из пространственной базы данных Яндекса, полученные координатные данные автоматически сохраняются в базе данных информационной системы. Тем самым формируются полные пространственные данные об объекте в БД ИС, тогда как в БД Яндекса содержатся только координатные данные объекта, получаемые в результате геокодирования. Это позволяет менять пространственную информацию о любом объекте и субъекте туризма, работая только в одной БД - базе данных информационной системы, с помощью геокодера будет происходить синхронизация данных между базами.
Указанная методика взаимодействия пространственной базы данных Яндекса и собственной базы данных информационной системы представляет собой основную задачу, требующую решения при интеграции интерактивной карты в ИС. Данная задача была конкретизирована: построить цикл, выводящий на карту объекты из базы данных, осуществляющий привязку каждого объекта по адресу к соответствующему географическому положению, наполняющий балун объекта соответствующей ему информацией, проводящий геокодирование и обработку его результатов.
Одним из вариантов решения данной задачи является разработанный код:
$rresult = mysql_query (" SELECT * FROM okved WHERE id=$id",$db);
//выборка из базы данных MySQL $m = mysql_fetch_array ($rresult); printf ('var gCollection = new YMaps.GeoObjectCollection("%s");',
$m['pic']);
//создание элемента коллекции - метки, присвоение ей значка.
$result = mysql_query (" SELECT *
FROM sbj",$db);
$result = mysql_query (" SELECT * FROM
sbj WHERE OKVED='$index'" ,$db); $i=0; if(!$result) I
echo "Возникла ошибка - ".mysql_error()."<br>"; //обработка ошибок работы с БД exit(); }
while ($m = mysql_fetch_array ($result)) I //пока есть элементы в БД $i++;
printf ('var geocoder =
new YMaps.Geocoder("%s");',$m['UR_ADR']); //запуск процесса геокодирования координат объекта по адресу из БД echo 'YMaps.Events.observe(geocoder, geocoder.Events.Load, function () I if (this.length()) I
//если удалось установить координаты, то оверлей добавляется на карту var placemark =
new YMaps.Placemark(this.get(0).getGeoPoint());'; if ($makecoord==1 && $m['x']==0 && $m['y']==0) I
//если координаты объекта еще не записаны в БД
ИС, то производим запись.
echo 'var x = this.get(0).getCoordPoint().getX();
var y = this.get(0).getCoordPoint().getY();';
printf ('window. open(" coord.php?x=" +x+" &y=" +y+
"&id="+%s, "_blank");',$m['id']); }
printf ("placemark.name = '%s';",$m['NAME']);
//если координаты уже есть в БД,
то при добавлении оверлея на карту
используем их
printf ("placemark.description ='ID =
%s<br>I елефон: %s<br>Руководитель: %s<br>ОКВЭД: %s';",$m['id'], $m['TFON'], $m['DFIO'], $m['OKVED']);
//выводим //информацию в балун оверлея echo 'gCollection.add(placemark);
} else I';
if ($makecoord==1)
echo 'window.open("badcoord.php?id="+'.$m['id'].', "_blank");';
//если геокодирование не удалось, обрабатываем ошибку
else echo 'alert("Один из адресов не найден!");'; echo '}'; echo '});
//обработчик ошибки вызова геокодера YMaps.Events.observe(geocoder, geocoder.Events. Fault, function (error) I
alert("Произошла ошибка: " + error.message) });';}
Данное решение базируется на взаимодействии языков JavaScript, PHP и HTML. С помощью PHP и возможности оператора echo выводить текст в виде HTML, запрашиваемые операторами JavaScript переменные были заменены на переменные PHP. Таким образом, средствами языка PHP осуществлялась выборка данных из БД ИС и их подстановка вместо переменных операторов JavaScript. Представленный код организует взаимодействие между базой данных информационной системы и пространственной БД Яндекс. Карт, инициирует геокодирование объектов и субъектов туризма,
а также обеспечивает визуализацию карты на странице пользователя.
Кроме вышеописанных средств, для создания системы требуется мощный редактор вебязыков. В качестве него лучше подходит кросс-платформенный редактор HTML-кода Dreamweaver от компании Adobe. Богатый инструментарий, открытость приложения для всевозможных настроек, удобный интерфейс и другие особенности сделали Dreamweaver одним из наиболее популярных HTML-редакторов в мире.
Таким образом, использование вышеописанных средств позволит создать систему и обеспечить ее полное функционирование в рамках прототипа, а также дальнейшее эволюционирование системы.
ВЫВОДЫ
В настоящее время особую актуальность приобрела задача проектирования информационно-справочной системы, обеспечивающей информационную поддержку туризма в Республике Башкортостан и являющейся элементом маркетинга территории Республики. Анализ показал, что основными элементами такой информационной системы являются следующие компоненты:
• масштабируемая и актуальная база данных, содержащая информацию об объектах, субъектах туризма, а также о туристических маршрутах;
• удобная классификация туристических видов деятельности, туристских объектов и субъектов;
• цифровая карта на основе современных геоинформационных технологий.
• Использование открытых картографических сервисов в таких системах целесообразно и имеет ряд преимуществ:
• существенная экономия времени, которое было бы потрачено на проектирование собственной геоинформационной системы,
• сервисы предоставляют готовую картографическую базу данных по всему миру в целом, и по Республике Башкортостан в частности. База включает в себя снимки Земли, оцифровка объектов и готовые цифровые карты,
• сервисы предоставляют готовый инструментарий для работы с картами и данными.
Присутствуют также и недостатки:
• возможности ограничены функциями, предусмотренными разработчиками сервиса: так, например, функция автоматической маршрутизации работает только в географических границах Москвы и Московской области,
• необходимость соблюдения правил пользования, установленных разработчиками сервиса.
Однако они незначительны с точки зрения создания некоммерческой системы. А технологии, заложенные разработчиками, достаточно гибкие, чтобы позволить реализовать все, что необходимо для ГИС общего назначения.
Приведены примеры работы с API Ян-декс.Карт. Предложен вариант решения задачи установления взаимодействия между базой данных информационной системы и пространственной базой данных Яндекса.
Результатом теоретических и практических исследований стал прототип информационносправочной системы «Башкортостан. Туристический портал» на основе технологии Yandex-карт, удовлетворяющий всем сформулированным требованиям к функциональности и технологичности и реализующий базовую информационную поддержку туристической деятельности в Республике Башкортостан.
СПИСОК ЛИТЕРАТУРЫ
1. Портал ГИС-Ассоциации Географическая информационная система //GISA.RU: Дата обновления: 09.01 2004. URL: http://www.gisa.ru/13058.html (15.11.2010).
2. WIKIPEDIA.ORG: Виртуальная энциклопедия. Туризм// Дата обновления: 5.10.2010.
URL: http://ru.wikipedia.org/wiki/Туристические_ услуги (15.11.2010).
3. Информационный проект о туризме Сущность туристского продукта // KUKIANI.RU:. URL: http://www.kukiani.ru/index.php?page=content&subpag e=s&r=5&p=7&s=13 (15.11.2010).
4. WIKIPEDIA.ORG JavaScript // Виртуальная энциклопедия. Дата обновления: 5.10.2010. URL: http: //ru.wikipedia. org/wiki/JavaScript (15.11.2010.)
ОБ АВТОРЕ
Канашин Виталий Владленович, студ. каф. ав-томатизир. систем упр-я. Иссл. в обл. АСУ туристической индустрии РБ.