Создание 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
2. Данный сервис создает pdf — версию указанного сайта.
На рисунке 6 изображено главное окно программы.
Рисунок 6
Данный сервис создает JPG иPNG изображения указанной web-страницы.
1) Добавление на карту меток:
a) Yandex Maps API, (http://api.yandex.ru/maps/)
b) OpenStreetAPI.( openstreetmap.org)
4 Актуальность
Несмотря на то, что проблема ведения электронной археологической документации появилась давно. В России подобные проекты всё еще являются редкостью, большая часть разработок в этой области носит локальный характер, а опубликованных материалов практически нет. До сих пор нет системы, которая бы удовлетворительно автоматизировала ведение полевого журнала. В отсутствие такой системы неизбежны огромные затраты времени на выполнение неквалифицированной, но очень ответственной работы квалифицированными специалистами.
Данная система очень сильно упрощает процесс ввода информации в отчет, и поэтому данное приложение имеет большую актуальность.
5 Функциональные требования к программному продукту
В базе хранятся не только сами описания и иллюстрации, но и шаблоны, задающие формат хранения материалов, определяющие интерфейс ввода/вывода и представление материала в различного типа отчётах. Шаблоны описывают 3 компоненты: MVC — model, viewer, controller.
На рисунке 7 изображены доступные действия для пользователей ПС.
Пользователь должен иметь возможность:
· создавать, изменять, просматривать и удалять шаблоны для генерации отчётов.
· добавлять данные для составления отчёта.
· применять шаблоны для генерации отчётов.
· редактировать и просматривать сгенерированные отчёты.
· Создавать и редактировать картографические схемы и планы.
· применять темы оформления web-приложения.
Рисунок 7
5.1 Функциональные требования к онлайн — карте
1) Добавление на карту специальных отметок.
2) Сохранение карты в формате JPG и сохранение отметок в виде XML.
3) Возможность загрузки карты по отметкам 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. Имеет широкий функционал, позволяющий расставлять на карте маркеры с пользовательскими изображениями, выбирать и фиксировать позицию на карте, наносить рисунки на карту, отображать метки и информацию и многое другое.
Google Maps Static 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 и показ анимации загрузки.
· print_result — Вывод ссылки на созданное изображение и показ кода XML и текста «ini.txt» . Прекращение анимации.
На рисунке 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).Ошибка! Недопустимый объект гиперссылки.
8. Справочник языка программирования JavaScript [Электронный ресурс] — URL:http://javascript.ru/manualОшибка! Недопустимый объект гиперссылки., свободный. — Яз.рус.- (Дата обращ. 18.02.14).
9. Ошибка! Недопустимый объект гиперссылки.XML от издательства технической литературы O’Reilly[Электронный ресурс] — URL: http://oreilly.com/xml/, свободный. — Яз.рус.- (Дата обращ. 18.02.14).
10. Справочные материалы по HTML, CSS [Электронный ресурс] — URL:http://htmlbook.ru, свободный — Яз. Рус. — (Дата обращ. 18.02.14).
ПРИЛОЖЕНИЯ
Приложение А
Формат XML файла:
<?xmlversion=»1.0″ encoding=»utf-8″ ?>
<RecentBooks>
<CenterA> «X» </CenterA>
<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»:
задержка при открытии
задержка на отрисовку карты
задержка при закрытии приложения
порядковый номер изображения
URL страницы, которой надо сделать скрин
Формат файла «ini.txt»
«X центра карты», «Y центра карты»5
«Title», «X метки», «Y метки», «ссылка на изображение», 0
Функции
Приложение Б
Файл «paint.php»:
include_once «loadPoint.php» — подключениефайла «loadPoint.php».
conv(alpha) — преобразование из координат вида (k, A) в вид (<>°<>`<>«,<>°<>`<>«).
unBlockInput — разблокировка всех полей ввода формы задания кооринат.
blockInput -блокировка всех полей ввода формы задания кооринат.
convertGrad (A, k) — обратное преобразование функции conv.
Initialize — создание карты и установка маркеров, указанных в «ini.txt».
addMarker(location, ICO_SET) -добавление маркера на карту.
$(document).ready — вызов анонимной функции после загрузки страницы.
generateXML() — создание XML — текста, а так же текста в файле «ini.txt».
print_result — распечатать XML, «ini.txt», а так же вывести ссылку на полученное изображение.
save_map() — сохранение карты в формате JPG и XML.
Приложение В
Файл «Ajax_start_exe.php»:
if (!empty($_POST))
{
$fg = fopen(«ini.txt»,»w»);
fwrite($fg, $_POST[‘initFile’]);
// Запись «ini.txt», текст передан в массиве $_POST.
$fg = fopen(«bools.xml»,»w»);
fwrite($fg, $_POST[‘xml’]);
// Запись «bools.xml», текстпереданвмассиве $_POST.
echo system(‘start SavePage.exe’);
// Запуск программы на стороне сервера.
$NameImage = »; $NameImage_next = »;
$File = fopen(‘names.txt’,’r’);
while (!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 {
height: 100%;
margin: 0px;
padding: 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 map;
var markers = [];
// Фукнция создания карты
function initialize() {
var mapOptions = {
zoom: ZoomMaps,
center: new google.maps.LatLng( posMap_A, posMap_k )
};
map = new google.maps.Map(document.getElementById(‘map-canvas’), mapOptions);
// Расстановка маркеров, загруженных из INI файла
for (i = 0; i < markers_title.length; i++)
{
addMarker(new google.maps.LatLng(markers_A[i], markers_k[i]), markers_ICO[i]);
}
}
google.maps.event.addDomListener(window, ‘load’, initialize);
// Функция установки маркеров
function addMarker(location, ICO) {
var marker = new google.maps.Marker({
position: location,
map: map,
draggable: true,
icon: ICO,
title : »//+type_ICO
});
markers.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»);
while (!feof($File))
{
$Line[$i] = fgets($File);
$i++;
}
fclose($File);
$length = $i;
// Распечатка настроек карты.
$position_center = explode(‘, ‘,$Line[0]);
echo ‘var posMap_k = ‘.$position_center[0].»n»;
echo ‘var posMap_A = ‘.$position_center[1].»n»;
$zoom = $Line[1];
echo ‘var ZoomMaps = ‘.$zoom.»n»;
echo «var markers_title = []; var markers_k = []; var markers_A = []; var markers_ICO = [];n»;
for ($i = 2; $i < $length — 1; $i++)
{
// Преобразование строчки в настройки нового маркера.
$markers[$i] = explode(‘, ‘,$Line[$i]);
// Распечатка JS кодов.
echo «markers_title.push(‘» .$markers[$i][0].»‘);n «;
echo «markers_ICO.push(‘» .$markers[$i][3].»‘);n «;
echo «markers_k.push(» .$markers[$i][1].»);n «;
echo «markers_A.push(» .$markers[$i][2].»);n «;
echo «n»;
}
?>
</script>
Приложение Е
Файл «loadPointFromXML.php»:
<?php
/*
Данный файл открывает файл $NameFile,
и преобразует файл XML в PHP — объект,
после чего с помощью функции echo
распечатывает JavaScript — коды,
а именно настройки карты и
точки, отмеченные на карте.
*/
?>
<?php
$Line = »; $markers = Array(); $i = 0;
// Если нельзя открыть файл, то открыть файл test/xml.
if ((empty($NameFile)) or (!file_exists($NameFile)))
{ $NameFile = ‘maps/test.xml’;}
// Чтение файла.
$File = fopen($NameFile,»r»);
while (!feof($File))
{
$Line .= fgets($File);
}
fclose($File);
// Создание экземпляра класса XML : SimpleXMLElement.
$RecentBooks = new SimpleXMLElement( $Line );
?>
<script>
<?php
// Распечатка настроек карт в виде JS — кода.
echo «var posMap_k = $RecentBooks->Centerkn»;
echo «var posMap_A = $RecentBooks->CenterAn»;
echo «var ZoomMaps = $RecentBooks->Zoomn»;
// Распечатка настроек маркеров.
echo «var markers_title = []; var markers_k = []; var markers_A = []; var markers_ICO = [];n»;
for ($i = 0; $i < count( $RecentBooks->Bools ); $i++)
{
echo «markers_title.push(‘» .$RecentBooks->Bools[$i]->Title.»‘);n «; // Заголовок маркера
echo «markers_ICO.push(‘» .$RecentBooks->Bools[$i]->Icon.»‘);n «; // URL — картинки
echo «markers_k.push(» .$RecentBooks->Bools[$i]->Position->k.»);n «; // Позиция k
echo «markers_A.push(» .$RecentBooks->Bools[$i]->Position->A.»);n «; // Позиция A
}
?>
</script>
Нужна похожая работа?
Оставь заявку на бесплатный расчёт