Создание Web-приложения 'Археологический полевой журнал': поддержка работы с картографическими объектами
Дипломный
проект
Создание
Web-приложения «Археологический полевой журнал»: поддержка работы с
картографическими объектами
ВВЕДЕНИЕ
Полевой отчет - это основной источник информации
в археологии. Он составляется в процессе исследований и представляет собой
набор данных об изученном археологическом материале. Отчет должен быть
максимально подробным на случай не получения музеем археологического материала.
Из-за большого количества данных требуется огромное количество времени на его
пере структуризацию и последующий анализ. Упрощение же грозит потерей данных,
что неприемлемо. Основная проблема в этом случае - отсутствие программных
средств.
Задача, поставленная перед автором, состоит в
разработке удобного программного средства, работающего с БД. В функции
программного средства включены: внесение в БД данных о находках, отображение
археологических памятников на карте, создание карт с отметками, изменение карт
в редакторе.
1 Постановка задачи
Задачей данного проекта является создание
«Археологического полевого журнала». «Археологический полевой журнал» - это
программная система, которая должна помочь археологам с составлением отчетов,
фиксации результатов. Когда в базе есть все данные о раскопках, то отчёт
делается одним нажатием клавиши в окончательном виде (в 20-ти томах, если
надо). Но, кроме фиксации материала и описаний в поле, система должна выполнять
роль справочной информационной системы. Для этой цели в базе будут храниться
полные материалы по сотням экспедиций. Такую базу может собирать институт
археологии РАН в Москве, куда высылаются все отчёты по России. Кроме доступа к
любому выбранному полевому журналу, система должна иметь возможность
осуществлять сплошной поиск по всем журналам, допустим, артефактов
определённого типа или памятников в заданной окрестности или по времени
раскопок. Общий проект состоит в разработке web-интерфейса
позволяющего работать с базой данных: внесение в неё отчета, данных о находках,
отображение археологических памятников на карте, автоматической генерации отчета
по заданному шаблону. Выбор web-интерфейса
обоснуется наличием единой БД, доступного с любого компьютера, а так же
отсутствием необходимости установки дополнительно программного обеспечения. Это
важно для быстрой обработки данных в полевых условиях и должно значительно
сократить время на последующую обработку данных и написание отчета.
Использование web-интерфейса
обеспечивает доступ к базе данных с любого компьютера, имеющего доступ к сети,
не требует установки дополнительных программ. Что дает возможность вести работу
по внесению данных в полевых условиях и должно значительно сократить время на
последующую обработку данных и написание отчета. Перед автором стоит задача
создания модулей рисования, сохранения и добавления в отчет картографической
информации.
2 Изучение
предметной области
Изучена новая предметная область - археология.
Археология - историческая дисциплина, изучающая
по вещественным источникам историческое прошлое человечества. В процессе
изучения археологами производятся раскопки археологических памятников. Они
исследуют и публикуют находки и результаты раскопок, восстанавливают по этим
данным историческое прошлое человечества. Археологическим источником памятник
становится после проведения должным образом раскопок со строгим соблюдением методики.
У каждого вида памятников есть своя специфика, обусловленная видом и
особенностями памятника.
Основным результатом экспедиции является
собранный материал и описание места раскопок, проведенных работ и находок в
виде полного отчета. Сам памятник в ходе раскопок полностью уничтожается. После
этого источником для дальнейших научных исследований становится научный отчет.
Отчеты направляются в несколько инстанций по окончании работ: научный отчет в
головной институт Археологии РАН, бухгалтерский отчет в финансирующую
организацию, отчет о проведенных работах - в местные органы охраны культурного
наследия, опись находок - в музей вместе с коллекцией.
3
Аналоги
Далее приведены аналоги для программной системы
в целом и конкретно для онлай-карт.
Поскольку аналогов карт, обладающих полной
функциональностью, не обнаружено, были приведены аналоги для конкретных
подзадач.
3.1 Система
· База данных «Археологические
памятники Кисловодской котловины», создана Д.С. Коробовым на основереляционной
системы управления базами данных MicrosoftAccess 97. Программный продукт
позволяет включать информацию количественного и качественного плана, заносить
текстовые данные любого объёма, присоединять любые объекты, поддерживающие
протокол OLE. Так же имеется возможность создавать списки значений признака,
подставляемых в поле базы данных. Всего в БД используется более чем 1400 файлов
фотографий, 230 планов и 170 файлов рисунков. Имеется поддержка ГИС ArcView
3.0. Не смотря на возможность подробного описания любых данных, база данных
работает только при наличии MicrosoftAccess,операционной системы семейства
MicrosoftWindows. Это ставит под вопрос возможность использования программного
средства в «поле», а так же возможность генерации отчётов.
На рисунке 1 изображено главное окно.
Рисунок 1
· АИС «АРХЕОГРАФ»[1], разработан
Станиславом Васильевым(ИИМК РАН), представляет из себя информационную систему
для подробного и точного описания археологических памятников. Система позволяет
производить учёт и поиск информации, организацию непосредственного
взаимодействия информации с ГИС с использованием топографических карт местности
любого необходимого масштаба. Однако, система хранит только информацию о
памятниках, нет данных о раскопках и находках.АИС АРХЕОГРАФ является
приложением локальным и работает только в операционных системах семейства
MicrosoftWindows.
На рисунке 2 изображено главное окно.
Рисунок 2
· Электронная база данных
археологических находок (НовГУ) представляет из себя web-приложение каталог
находок. База данных имеет удобный инструмент для поиска конкретной находок,
включает в себя несколько памятников и различных временных промежутков.
Приложение позволяет производить поиск по большому количеству параметров:
материал, категория, наименование, область, район, населённый пункт, памятник,
раскоп.
На рисунке 3 изображено главное окно.
Рисунок 3
· Виртуальный музей «История и
культура народов Сибири и Дальнего Востока» (Ю.П. Холюшкин ИАЭТ СО РАН и
другие). Представляет из себяweb-приложение. Виртуальный музей обеспечивает
хранение и получение исчерпывающей информации о музейных экспонатах, создание и
хранение различного рода информации о музеях, как виртуальных так и реальных,
сохранение изображений предметов, оцифрованных фотографий и набросков, создание
и просмотр публикаций, полный инструментарий по манипулированию различными
категориями данных, поддержка VRML.
На рисунке 4 изображено главное окно.
Рисунок 4
3.2 Онлайн - карты
1. Сохранение карты: онлайн-сервисы:
На рисунке 5 изображено главное окно программы.
Рисунок 5
. Данный сервис создает pdf
- версию указанного сайта.
На рисунке 6 изображено главное окно программы.
Рисунок 6
Данный сервис создает JPG иPNG изображения
указанной web-страницы.
) Добавление на карту меток:
a) Yandex Maps API,
(#"785615.files/image007.gif">
Рисунок 7
5.1 Функциональные
требования к онлайн - карте
1) Добавление на карту специальных отметок.
) Сохранение карты в формате JPG
и сохранение отметок в виде XML.
) Возможность загрузки карты по отметкам XML.
На рисунке 8 изображена файловая схема
онлайн-редактора с подробным описанием функций и входных и выходных данных для
всех файлов.
Рисунок 8
6 Характеристика
выбранных программных сред и средств
Скриптовый язык программирования общего
назначения - PHP5[3][4][5] (PHPHypertextPreprocessor);
PHP - язык написания скриптов, которые встраиваются непосредственно в
гипертекстовые файлы и исполняются на Web-сервере.
HTML[10] (HyperTextMarkupLanguage)
- стандартный язык разметки документов во Всемирной паутине. Большинство
веб-страниц содержат описание разметки на языке HTML (или XHTML). Язык HTML
интерпретируется браузерами и отображается в виде документа в удобной для
пользователя и понятной форме.
XML(eXtensibleMarkupLanguage)[9];
XML - язык разметки,
определяющий ряд правил кодировки в формате, удобном для чтения как человеку,
так и программным средствам. Спецификация XML
1.0 и ряд других стандартов это открытые стандарты заданыеW3C(WorldWideWebConsortium).
SQL(StructuredQueryLanguage)
SQL - узконаправленный
язык программирования, созданный для управления данных в системах управления
реляционными базами данных.
JSON(JavaScriptObjectNotation);
JSON - Открытый
стандарт форматирования текста, удобного для пользователя, для передачи
объектов состоящих из пар «атрибут-значение».JSON
применяется для приёма и передаче данных между серверами, web-приложением
и сервером, как альтернатива XML.
Каскадные таблицы стилей - CSS3
(CascadingStyleSheets); CSS - технология описания внешнего вида документа,
написанного языком разметки. CSS используется как средство оформления
веб-страниц в формате HTML и XHTML, но может применяться с любыми видами
документов в формате, включая XML и XVL.
Средства скриптового языка - JavaScript[8];
JavaScript - скриптовый язык объектно-ориентированного программирования.
JavaScript обычно используется как встраиваемое средство выполнения данных.
В веб-программирование JavaScript применим в
качестве средства динамического изменения веб-страницы.
Технология AJAX(AsynchronousJavaScriptandXML);
AJAX - набор
взаимосвязанных техник web-разработки,
позволяющие создавать асинхронные web-приложения.
При помощи AJAXweb-приложение
может асинхронно(в фоновом режиме) отправлять и получать данные, никак при этом
не вмешиваясь в процесс отображения текущего HTML
документа. Не смотря на наличие стандарта XMLв
названии, данные могут быть различного типа.
Технология AJAJ(AsynchronousJavaScriptandJSON);
AJAJ - это технология
аналогичная технологии AJAX,
однако в отличии от AJAX
передаются данные типа JSON.
Библиотека jQuery[7];
- набор функций и инструментов, облегчающие поиск и манипулирование элементов
на странице HTML-документа,
а так же ряд других возможностей, такие как анимация элементов, обработка
событий и облегченный API
для работы с AJAX или AJAJ.
GIMP[2] (GNU
ImageManipulationProgram); GIMP
- графический редактор, предназначенный для редактирования фотографий, который
также применяется для создания дизайна web-сайтов.
Adobe
Photoshop - растровый
графический редактор, предназначеный для работы с изображениями различных
видов. Предлагает богатый функционал для создания дизайна web-сайтов.
Notepad++
- Текстовый редактор, поддерживающий работы с несколькими файлами одновременно
используя вкладки, а так же ряд дополнений необходимых для написания и отладки
исходного кода программ.
XAMPP(X(cross)
ApacheMySQLPHPPerl); XAMPP
- Набор серверных приложений для создания web-приложения.
Включает в себя web-сервер
Apache, СУБД MySQL[5],
интерпретатор PHP и Perl,
а так же множество других программных средств.
WAMP(WindowsApacheMySQLPHP);
WAMP - Набор серверных
серверных приложений для создания web-приложения.
Включает в себя web-сервер
Apache, СУБД MySQL,
интерпретатор PHP.
FileZilla - FTP-сервер(File
Transfer Protocol). Удобный и простой в настройке и
обращении FTP-сервер,
используется для хранения, скачивания и загрузки файлов на web-сервер
Apache. Chrome
Developer
Tools - Набор
инструментов для отладки web-приложения,
содержится в web-браузере Google
Chrome. Позволяет
выполнять отладку JavaScript
и DOM кода.
Google
Maps API
- API предоставляемый
корпорацией Google для работы
с динамическими картами Google
Maps. Имеет широкий
функционал, позволяющий расставлять на карте маркеры с пользовательскими
изображениями, выбирать и фиксировать позицию на карте, наносить рисунки на
карту, отображать метки и информацию и многое другое.
Yandex
Maps JS
v2 - API
предоставляемый компанией Yandex
для работы с динамическими и статическими картами Yandex
Maps. В отличии от API
Google Maps
имеет более удобный способ отправки параметров при помощи XML-документа.
Embarcadero
Delphi 2010 - IDE
(Integrated
Development
Enviroment) для создания
консольных, оконных, web
и мобильных приложений. Содержит компилятор для языка Object
Pascal, диалект языка Pascal.
HTML2Canvas
- библиотека для JavaScript,
позволяет производит «снимок экрана» текущей страницы на основе DOM
HTML-документа.
7
Диаграмма взаимодействия проектов
На рисунке 9 показаны все основные файлы проекта
и их авторы.
Рисунок 9
На рисунке 10 изображена общая схема файлов,
используемых в проекте и их краткое описание.
Рисунок 10
Файлы report.static.php,
data.tree.php,
insert.data.php,
FormtText.php-
это модуль генерации отчета. Подробно об этом модуле можно посмотреть в
дипломном проекте Михайлова Алексея.
Файлы paint.php,
Ajax_start_exe.php,
maps_test.php,
loadPoint.php-
это модуль картографии. Подробнее об этих файлах можно посмотреть в схеме функционирования
программного средства.
7.1 Возможные способы
реализации
Один из возможных способов реализации
программного средства - локальное приложение.
Взяв за основу структуру данных предложенную в
АИС «АРХЕОГРАФ», возможно усовершенствовать и дополнить функционал АИС.Взяв за
основу для интерфейса фреймворкQt
возможно будет добиться кроссплатформенности. Qt
- это кросс-платформенный фреймворк для языка C++.
ФремворкQt содержит
множество элементов для реализации различных функций будущего программного
средства, но так же большинство версий Qt
поддерживается множеством компиляторов, такими как GCC
или VisualStudio.
Qt поставляется в IDEQtCreator,
с простым и удобным интерфейсом для создания и разработки пользовательских
интерфейсов. Использование библиотекиBoost
для языка программирования C++
даёт возможность реализовать работу со сложными древовидными структурами.
Хранение данных будет осуществляться используя драйвер Qt
для SQLite в базе
данных SQLite.
Недостатками данного решения являются системные
ограничения - не на всех устройствах возможна поддержка запуска
скомпилированных C++
приложений. Так же отсутствует возможность совместной работы. Возможны
сложности или полноеотсутсвие функции экспорта/импорта данных.
Другой вариант реализации программного средства
- web-приложение с
использованием языка Python
для генерации и работы с отчётами, PostgreSQL
в качестве СУБД. Язык программирования Python
это высокоуровневый интерпретируемый интерактивный язык программирования. Он
поддерживает модульность, исключения, динамическую типизацию, высокоуровневые
динамические типы данных и классы. Python
поддерживает несколько парадигм программирования, такие как
объектно-ориентированное программирование, процедурное и императивное
программирование.Кроме этого для языка Pythonсуществуе
большое количество библиотек для работы с изображениями, древовидными
структурами, XMLи прочее.
Использовать Python
в качестве скриптового языка для web-страниц
возможно при помощи технологии CGI (CommonGatewayInterface),
поддерживаемой на большинстве web-серверов.
PostgreSQL
- это мощная СУБД с открытым исходным кодом. Она разрабатывается больше 15 лет
и имеет хорошую репутацию стабильной и быстрой системы.
Минусы данного способа реализации заключаются в
отсутсвии опыта разработки на языке программирования Python,
нестабильной работы Python
через CGI в целом.
Еще одним вариантом реализации является web-приложение
написанное на Node.jsNode.js
это программная среда для масштабируемых серверных и сетевых приложений.
Программы Node.js
написаны на языкеJavaScript
и могут выполняться в операционных системах семейств AppleMacOSX,
MicrosoftWindows, GNU/Linux
без каких-либо изменений. Приложения на Node.js
разработаны для максимально эффективного выполнения, используя асинхронную, не
блокирующую подачу и обработку входных/выходных данных,асинхронные события. Node.js
использует GoogleV8
JavaScript платформу для
выполнения кода и большая часть базовых модулей написана на JavaScript.Node.js
поддерживает асинхронные ввод/вывод данных, сокеты и протокол HTTP,
что позволяет использовать Node.js
в связке с web-сервером Apache.
Минусами данного решения можно считать
относительную новизну платформы Node.js
и её общую нестабильность, отсутствие опыта работы с данной платформы и текущие
объёмы документации.
Выбранный способ реализации - язык
программирования PHP
в связке с СУБД MySQL,
размещенные на web-сервере
Apache. Связка PHP+MySQL
достаточно популярное решение для web-приложений.
Язык программирования PHP
- серверный язык, используемый для web-разработки.
Язык содержит множество API
и библиотек для работы с большим количеством технологий, таких как парсинг и
генерация XML, работа с JSON,
YAML, построение DOM-объектов,
работа с базами данных MySQL(mysql,
mysqli) и PostgreSQL(pg_*)
и другие СУБД(PDO). PHP
позволяет выполнение бинарных файлов на стороне сервера, работу с изображениями
и звуковыми форматами данных.
Использованиерекурсии позволит обходить и
изменять древовидные структуры, необходимые для построения структуры отчёта и
его генерации, создания шаблонов с неявной вложенностью.
Простая и удобная встраиваемость PHP-программ
в HTML-документы позволит
использовать возможности CSS
для генерируемого материала. PHP-программы
принимают аргументы POST
и GET запросов, тем
самым давая возможность реализации технологии AJAX.
Для упрощения манипуляции с DOMHTML-документа,
реализации AJAX на
клиентской стороне используется библиотека jQuery
для Javascript.jQuery
это кросс-платформенная библиотека для языка JavaScript,
созданная для упрощения разработки клиент-приложений, встраиваемых в HTML-документы
web-приложений.
Библиотека jQuery это
библиотека с открытым исходным кодом. Основное применение это манипуляция с
элементами HTML-документов,
создавать анимации, управлять событиями и разрабатывать AJAX-приложения.
Работа с картами реализована при помощи API
поставщика сервисов картографии - GoogleMaps.
GoogleMapsAPI это бесплатный
свободный для использования сервис от компании Google,
позволяющий встраивать и работать с картами GoogleMaps.GoogleMapsAPI
содержит набор методов для доступа к динамическим картам GoogleMaps,
позволяя реализовывать гео-локацию, работу с координатами в системе GPS.
Набор функций GoogleMapsAPI
для статических карт GoogleMaps
предоставляет возможности задания размера, координат в системе GPS,
нанесения каких-либо маркеров, устанавливаемых пользователем, возвращая при
этом статичный файл изображения, который возможно сохранить и использовать для
любых нужд. Для коммерческих решений компания Google
предоставляет GoogleMapsAPIforBusiness.
база данные отчет шаблон
8
Описание входных/выходных данных
Для данного программного средства входными и
выходными данными являются
8.1 Входные данные
В качестве входных данных, генератор принимает
запись вида «полевой журнал» из базы данных. «Полевой журнал» представляет из
себя данные, отформатированные или нет, с указанным типом данных. При этом
запись может представлять как текст, так и изображение, любые другие файловые
форматы.
Для редактора шаблонов входными данными является
XML-документ, составленный вручную или же сгенерированный редактором шаблонов.
Файлы шаблонов хранятся на сервере и проверяются редактором шаблонов перед
редактированием.
Также программное средство может принимать:
· Готовый отчет в формате PDF.
· Набор текста для создания отчета.
· Список всех возможных типов.
8.2 Выходные данные
Готовое программное средство позволяет
создавать:
· Готовый отчет в формате HTML.
· Таблицы находок в формате HTML.
· Таблицы реперов в формате HTML.
· Карты находок в формате JPG.
· Карты находок в формате XML.
В качестве выходных данных для редактора
шаблонов являются XML-документы файлов шаблонов, сохранённых после
редактирования и/или просмотра.
Так же имеются некоторые текстовые и XMLфайлы,
используемые для обмена и сохранения временной информации.
9 Описание
структуры базы данных
База данных содержит в себе 3 таблицы.
С помощью этих вырожденных таблиц в отчете можно
представить любой тип данных с любым структурой.
В таблице 1 содержится сама информация в формате
XML.
Таблица 1 - Объекты
Имя поля
|
Название
|
Тип поля
|
Назначение
|
Id
|
Идентификатор
|
Автоинкрементное целое
|
Уникальный идентификатор записи
|
IdTypeOfObject
|
Тип
|
целое
|
Ссылка на описание типа объекта
|
IdTypeOfValue
|
Формат значения
|
целое
|
Ссылка на формат хранения данных
|
ValueText
|
Значение
|
Текст неопределённой длины
|
Текстовое значение объекта (м.б. XML),
или приложение/версия для чтения ValueBinary
|
ValueBinary
|
Двоичное неопределённой длины
|
Двоичное значение (фото, аудио,
видео, документ для указанного приложения)
|
В таблице 2 содержится структура будущего
отчета, по этой структуре строится дерево.
Таблица 2 -Связи
Имя поля
|
Название
|
Тип поля
|
Указывает на поле
|
Назначение
|
Id
|
Идентификатор
|
Автоинкрементноецелое
|
|
Уникальный идентификатор записи
|
IdOfLider
|
Ведущий элемент
|
целое
|
Связи->Id
|
Ссылка на первую запись в группе
|
IdTypeOfRelations
|
Типсвязи
|
целое
|
Типы->Id
|
Ссылка на описание типа связи
|
IdTypeOfUnit
|
Тип элемента
|
целое
|
Типы->Id
|
Ссылка на описание типаэлемента
(роли внутри отношения)
|
IdObject
|
Объект
|
целое
|
Объекты->Id
|
Ссылка на объект (элемент связи)
|
В таблице 3 определяются методы, по которым
будет происходить вывод данных.
Таблица 3 - Типы
Имя поля
|
Название
|
Тип поля
|
Назначение
|
Id
|
Идентификатор
|
Автоинкрементное целое
|
Уникальный идентификатор записи
|
Name
|
Имя
|
Текст*256
|
Название типа (Lat)
|
Description
|
Значение
|
Текст неопределённой длины
|
Текстовое (XML)
описание типа по частям: Model / Viewer /
Controler
|
10 Схема
функционирования программного средства
Ниже описаны всех основные файлы, которые
используются к модуле картографии.
10.1 Файл «paint.php»
Глобальные переменные:
· map - Объект JS, представляющий собой карту.
· markers - Массив маркеров,
отчеченных на карте.
· ThisGrad - Переменная типа boolean,
отмечающая переключение режима радиан и градусов.
· textXML - Переменная, содержащая XML
- код карты.
· textINIFile - Переменная, содержащая
текст буферного файла «init.txt».
Функции:
· conv(alpha) - Преобразование из формата радиан в
формат градусов.
· unBlockInput - Разблокировка
элемента формы dialog_window_1.
· blockInput - Блокировка элемента
формы dialog_window_1 .
· convertGrad - Преобразование из
формата градусов в формат радиан.
· Initialize - Функция создания карты
и назначения обработок событий (маркеров, перемещения карты), а так же
добавления маркеров на карту.
· addMarker(location, ICO_SET) -
Функция добавления маркера в указанное место и с указанной иконкой.
· $(document).ready -jQuery - функция
инициализации.
· generateTextFile -Создание текста
дляфайл буфера «ini.txt» и XML - версии карты.
· save_map - Отправление данных через
интерфейс Ajax, сгенерированных generateTextFile и показ анимации загрузки.
На рисунке 11 показан общий вид онлайн -
редактора и красным, светло и темно-фиолетовым и синими цветами отмечены
функциональные элементы.
Красным цветом отмечен лог, в котором выводит
текущее место карты и её масштаб, а так же местоположение выбранного маркера.
Этот лог меняется в функциях initialize, addMarker с помощью вызова анонимных
функций при клике на маркере и изменений карты.
Светло-фиолетовым отмечен блок выбора типа
изделия (тип маркера). При его выборе вызывается анонимная функция,
прикрепленная к «#selectinput».
Темно-фиолетовым отмечен блок выбора сохраненного
изображения. После его выбора происходит перезагрузка страницы, изменяется PHP-
переменная «$NameFile» и в подключенном файле «loadPointFromXML.php» происходит
загрузка из выбранного XMLфайла
настроек карты и маркеров.
Синим цветом отмечена кнопка, по нажатию которой
запускается функция Save().
Рисунок 11
10.2 Файл«Ajax_start_exe.php»
Порядок выполняемых действий:
· Производит запись буферного файла «ini.txt».
· Производит запуск EXE приложения
SavePage.EXE на сервере.
· Считывает последнюю запись в файле
«names.txt» и запоминает ее в переменной «$NameImage».
· Сохраняет конфигурационный файл
карты под именем «<$NameImage>.xml».
· Отпечатывает $NameImage.
Подробный код смотри в приложении В.
10.3 Файл
«maps_test.php»
Порядок выполняемых действий:
· Открывает карту с настройками, указанными в
файле «ini.txt».
· Пребразует указанный текстовый файл
в команды JS при подключении файла «loadPointFromINI.php».
· Используется EXE приложением для
Windows«SavePage.EXE».
10.4 Файл
«loadPointFromINI.php»
Порядок выполняемых действий:
· Открывает файл $NameFile.
· С помощью функции echo распечатывает
JavaScript - коды (настройки карты и точки, отмеченные на карте).
· Первые 2 строчки содержат k, A и
масштаб карты,в остальных через запятую указаны Title, k, A и ICO_URL.
10.5 Файл
«loadPointFromXML.php»
Порядок выполняемых действий:
· открывает файл $NameFile, и преобразует файл XML
в PHP - объект.
· С помощью функции echo распечатывает
JavaScript - коды, (а именно настройки карты и маркеры, отмеченные на карте).
Подробный код смотри в приложении Е.
10.6 Файл «gMap.php»
Порядок выполняемых действий:
· Выполняется запрос к БД на поиск объектов с
типом «24».
· Выполняется запрос к БД на поиск «ID»
объектов являющихся поддеревьями для текущих.
· Выполняется запрос к БД на поиск
значений всех объектов.
· Распечатка полученной таблицы.
· Распечатка JSкодов
полученных маркеров.
· Создание карты с полученными
маркерами.
На рисунке 12 показан общий вид онлайн - карты.
Рисунок 12
ЗАКЛЮЧЕНИЕ
На данном этапе разработки реализовано:
· Изучен CSS, HTML,
JavaScript, Ajax, jQuery, Delphi 2010, PHP5.
· Создан редактор для модуля
картографии.
· Реализована функция сохранения для
модуля картографии.
· Создана таблица находок и таблица
реперов, из которых берется информация для карты.
· Создана онлайн-карта с отображением
находок.
В дальнейших планах:
· Реализация возможности изменения карты без
изменения имени на новое.
· Реализация выбора имени файла перед
охранением.
· Реализация хранения готовых карты и XML
- кодов в БД.
· Возможность перехода на редактор
карт из редактирования отчета.
· Возможность удаления карты из
редактора отчетов.
СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ
1. АИС
Археограф [Электронный ресурс]-URL:http://ardb.spb.ru/ru/about.htm,
свободный. - Яз.рус. - (Дата обращ. 25.02.14).
2. GIMP
- GNUImageManipulatorProgram[Электронный
ресурс] - URL:http//www.gimp.org,
свободный. - Яз.рус. - (Дата обращ. 30.04.14).
3. PHP
Справочник(PHPinaNutshell)
/ Хадсон Пол // 2010
4. PHP.net[Электронный
ресурс] - URL:http://www.php.net,
свободный. - Яз.рус. - (Дата обращ. 18.02.14).
5. PHP
CookBook / David Sklar, Adam Trachtenberg //2009
6. Документация
к СУБД MySQL
[Электронный ресурс] - URL:http://dev.mysql.com/doc/
свободный - Яз англ.,рус . - (Дата обращ. 18.02.14).
7. Документация
API библиотеки jQuery[Электронный
ресурс] - URL:
http://api.jquery.com/, свободный. - Яз.англ.- (Дата обращ. 18.02.14).Ошибка!
Недопустимый объект гиперссылки.
. Справочник
языка программирования JavaScript
[Электронный ресурс] - URL:http://javascript.ru/manualОшибка! Недопустимый
объект гиперссылки., свободный. - Яз.рус.- (Дата обращ. 18.02.14).
. Ошибка!
Недопустимый объект гиперссылки.XML от
издательства технической литературы O'Reilly[Электронный
ресурс] - URL: http://oreilly.com/xml/, свободный. - Яз.рус.- (Дата обращ.
18.02.14).
. Справочные
материалы по HTML, CSS
[Электронный ресурс] - URL:http://htmlbook.ru, свободный
- Яз. Рус. - (Дата обращ. 18.02.14).
ПРИЛОЖЕНИЯ
Приложение А
Формат XML
файла:
<?xmlversion="1.0"
encoding="utf-8"
?>
<RecentBooks>
<Centerk>
«Y» </Centerk>
<Zoom>
«zoom» </Zoom>
<Bools>
<Title>
«Title» </Title>
<Description>
«Description» </Description>
<Position>
<A>
«X» </A>
<k>
«Y» </k>
</Position>
<Icon>
«URL ICO»
</Icon>
</Bools>
</RecentBooks>
Формат файла «delay.txt»:
задержка при открытии
задержка на отрисовку карты
задержка при закрытии приложения
порядковый номер изображениястраницы, которой
надо сделать скрин
Формат файла «ini.txt»
«X
центра карты», «Y центра
карты»5
«Title»,
«X метки», «Y
метки», «ссылка на изображение», 0
Функции
Приложение Б
Файл «paint.php»:
include_once «loadPoint.php» - подключениефайла
«loadPoint.php».(alpha)
- преобразование из координат вида (k,
A) в вид
(<>°<>`<>``,<>°<>`<>``).- разблокировка
всех полей ввода формы задания кооринат.-блокировка всех полей ввода формы
задания кооринат.(A, k) - обратное преобразование функции conv.-
создание карты и установка маркеров, указанных в «ini.txt».(location,
ICO_SET) -добавление маркера на карту.
$(document).ready - вызов анонимной функции
после загрузки страницы.() - создание XML
- текста, а так же текста в файле «ini.txt».
print_result
- распечатать XML, «ini.txt»,
а так же вывести ссылку на полученное изображение._map() - сохранение карты в
формате JPG и XML.
Приложение В
Файл «Ajax_start_exe.php»:
if (!empty($_POST))
{
$fg =
fopen("ini.txt","w");($fg, $_POST['initFile']);
// Запись
«ini.txt», текст передан
в
массиве
$_POST.
$fg =
fopen("bools.xml","w");($fg, $_POST['xml']);
// Запись
«bools.xml», текстпереданвмассиве
$_POST.system('start SavePage.exe');
// Запуск программы на стороне сервера.
$NameImage = ''; $NameImage_next =
'';
$File =
fopen('names.txt','r');(!feof($File))
{
$NameImage = $NameImage_next;
$NameImage_next
= fgets($File);
}
// Получение имени последнего созданного файла.
fclose($File);
echo( $NameImage
);
// Отправка имени последнего созданного файла в
файл «paint.php».
}
Приложение Г
Файл «maps_test.php»:
<?php
/*
Данный файл открывает карту с настройками,
указанными в файле `ini.txt`
.
Для пребразования укзанного текстового файла в
команды JS
подключается файл `loadPointFromINI.php`
.
Используется EXE
приложением для Windows
`SavePage.EXE`
.
*/
?>
<!DOCTYPE html>
<html>
<head>
<title>Онлайн-карта. Последняя
сохраненная версия.</title>
<style>
html, body, #map-canvas {: 100%;:
0px;: 0px
}
</style>
<script
src="https://maps.googleapis.com/maps/api/js?v=3.exp&sensor=false"></script>
<script
type="text/javascript"
src="js/jquery.js"></script>
<?php
// Загрузка маркеров из INI
файла
include_once 'loadPointFromINI.php';
?>
<script>
var
markers = [];
// Фукнция создания карты
function initialize() {mapOptions =
{: ZoomMaps,: new google.maps.LatLng( posMap_A, posMap_k )
};= new google.maps.Map(document.getElementById('map-canvas'),
mapOptions);
// Расстановка маркеров, загруженных из INI
файла
for (i = 0; i <
markers_title.length; i++)
{(new
google.maps.LatLng(markers_A[i], markers_k[i]), markers_ICO[i]);
}
}
.maps.event.addDomListener(window,
'load', initialize);
// Функция установки
маркеровaddMarker(location, ICO) {marker = new google.maps.Marker({: location,:
map,: true,: ICO,: ''//+type_ICO
});.push(marker);
}
</script>
</head>
<body>
<div
id="map-canvas"></div>
</body>
</html>
Приложение Д
Файл
«loadPointFromINI.php»:
<script>
/*
Данный файл открывает файл $NameFile,
после чего с помощью функции echo
распечатывает JavaScript - коды,
а именно настройки карты и
точки, отмеченные на карте.
Первые 2 строчки содержат k, A и масштаб карты,
в остальный через зпятую указаны Title, k, A и
ICO_URL
*/
<?php
// Имя выбранного текстового файла
$NameFile = 'ini.txt';
// Переменная, в которую будет записываться
исходный текст
$Line = '';
$markers = Array();
$i = 0;
$File =
fopen($NameFile,"r");(!feof($File))
{
$Line[$i] = fgets($File);
$i++;
}($File);
$length = $i;
// Распечатка
настроек
карты.
$position_center = explode(',
',$Line[0]);'var posMap_k = '.$position_center[0]."\n";'var posMap_A
= '.$position_center[1]."\n";
$zoom = $Line[1];'var ZoomMaps =
'.$zoom."\n";
"var markers_title = []; var
markers_k = []; var markers_A = []; var markers_ICO = [];\n";($i = 2; $i
< $length - 1; $i++)
{
// Преобразование строчки в настройки нового
маркера.
$markers[$i] = explode(',
',$Line[$i]);
// Распечатка
JS кодов."markers_title.push('" .$markers[$i][0]."');\n
";"markers_ICO.push('" .$markers[$i][3]."');\n
";"markers_k.push(" .$markers[$i][1].");\n
";"markers_A.push(" .$markers[$i][2].");\n
";"\n";
}
?>
</script>
Приложение Е
Файл
«loadPointFromXML.php»:
<?php
/*
Данный файл открывает файл $NameFile,
и преобразует файл XML в PHP - объект,
после чего с помощью функции echo
распечатывает JavaScript - коды,
а именно настройки карты и
точки, отмеченные на карте.
*/
?>
<?php
$Line = ''; $markers = Array(); $i = 0;
// Если нельзя открыть файл, то открыть файл
test/xml.
{ $NameFile = 'maps/test.xml';}
// Чтение
файла.
$File =
fopen($NameFile,"r");
(!feof($File))
{
$Line .= fgets($File);
}($File);
// Создание
экземпляра
класса
XML : SimpleXMLElement.
$RecentBooks = new SimpleXMLElement(
$Line );
?>
<script>
<?php
// Распечатка настроек карт в виде JS - кода.
echo "var posMap_k =
$RecentBooks->Centerk\n";"var posMap_A =
$RecentBooks->CenterA\n";"var ZoomMaps =
$RecentBooks->Zoom\n";
// Распечатка
настроек
маркеров."var
markers_title = []; var markers_k = []; var markers_A = []; var markers_ICO =
[];\n";($i = 0; $i < count( $RecentBooks->Bools ); $i++)
{"markers_title.push('" .$RecentBooks->Bools[$i]->Title."');\n
"; // Заголовок
маркера"markers_ICO.push('" .$RecentBooks->Bools[$i]->Icon."');\n
"; // URL - картинки"markers_k.push(" .$RecentBooks->Bools[$i]->Position->k.");\n
"; // Позиция
k"markers_A.push(" .$RecentBooks->Bools[$i]->Position->A.");\n
"; // Позиция
A
}
?>
</script>