Используя Google Maps API, возможно включить любую карту из Google Maps на внешнем сайте, управляя этой картой через JavaScript, например, для добавления маркеров географических точек, приближения или удаления при просмотре карт.
Для российских разработчиков отличительной особенностью Google Maps API от других аналогичных служб является то, что Google Maps и Google Maps API позволяют находить поселения на территории России по их русским названиям.
Для связи между Google Maps и php используется AJAX - подход к построению интерактивных пользовательских интерфейсов web-приложений, заключающийся в «фоновом» обмене данными браузера с web-сервером. В результате, при обновлении данных, web-страница не перезагружается полностью и веб-приложения становятся более быстрыми, удобными и динамчными.
Использование AJAX позволяет значительно сократить трафик при работе с web-приложением благодаря тому, что часто вместо загрузки всей страницы достаточно загрузить только изменившуюся часть, как правило, довольно небольшую. AJAX позволяет несколько снизить нагрузку на сервер. Поскольку нужно загрузить только изменившуюся часть, пользователь видит результат своих действий быстрее.
При входе в разработанное ПО (блок 1) появляется окно, в котором отображается подключённый картографический web-сервис googlemaps. А также отображается список сельскохозяйственных угодий. При выборе одного из них (блок 2) происходит отображение его на карте и выводится информация о характеристиках поля. Изображения поля характеризуется обрисовкой его контуров (блок 3). При выборе аппликационной карты происходит разбиениеполя на сетку квадратов равной величины(блок 4).
В блоке5происходит вывод информации о выбранном угодии. Также предусмотрена кнопка «История»,по нажатию на которую выводится история всех операций на данном поле за весь период времени (блок 6).
Также предусмотрен раздел редактора для изменения различных параметров поля (блок 10), добавления дополнительных сведений с дальнейшим сохранением в базе данных. Вход осуществляется только для администратора, что подтверждается введением логина и пароля для авторизации. Все изменения сохраняются в базе данных данного программного обеспечения.
Для удобного добавления поля, обозначения его крайних точек предназначены блоки 12-14, где есть возможность курсором мыши указать положение поля, вычислить его площадь, разбить всю область на сегменты.
В дополнение к этому предусмотрен автоматический ввод
полученных результатов в базу данных.
В результате проектирования базы данных было создано 6 таблиц. 5 из них с данными, необходимыми для выполнения анализа сельскохозяйственных территорий, а 6-ая таблица «Userlist» служит для того, чтобы в ней хранились имена пользователей и пароли для доступа в раздел редактора.
Ознакомимся со структурой каждой таблицы:
В таблице «fields» содержатся данные о полях. Её
структура представлена в таблице 3.1. Рисунок 3.2 содержит sql-запрос создания таблицы «fields».
Таблица 3.1 -Структура таблицы «fields»
Название поля
Тип данных
Примечание
id
Счётчик
Код строки
square
Числовой
Площадь поля
culture_id
Числовой
Код возделываемой культуры
soil_type
Числовой
Тип почвы
id_f
Текстовый
Номер поля
gather
Числовой
Собрано урожая
razmer
Числовой
Размер ячейки для данного поля
Рисунок 3.1 - Создание таблицы «fields» - В таблице «punkt» содержатся сведения о каждой точке всех полей. Её структура
представлена в таблице 3.2. Рисунок 3.3 содержит sql-запрос создания таблицы «punkt».
Таблица 3.2- Структура таблицы «punkt»
Название поля
Тип данных
Примечание
Id
Счётчик
Код строки
Id_field
Числовой
Код поля
x
Числовой
долгота
y
Числовой
широта
acidity
Числовой
Величина кислотности
productivity
Числовой
Урожайность
nitrogen
Числовой
Содержание азота в почве
phosphorus
Числовой
Содержание фосфора в почве
potassium
Числовой
Содержание калия в почве
timer
Дата
Время изменения
Рисунок 3.2 - Создание таблицы «punkt»
Таблица «product» содержит список
сельскохозяйственных культур с необходимыми параметрами кислотности. Её
структура представлена в таблице 3.3. Рисунок 3.4 содержит sql-запрос создания таблицы «product».
Таблица 3.3 - Структура таблицы «product»
Название поля
Тип данных
Примечание
id
Счётчик
Код остановки
name
Текстовый
Наименование культуры
acid_min
Числовой
Минимально необходимая величина кислотности
acid_max
Числовой
Максимально необходимая величина кислотности
Рисунок 3.3 - Создание таблицы «product»
В таблице «history» содержатся данные о
процессах, производимых на полях. Её структура представлена в таблице 3.4. Рисунок 3.5
содержит sql-запрос создания таблицы «history».
Таблица 3.4 - Структура таблицы «history»
Название поля
Тип данных
Примечание
id
Счётчик
Код строки
field_id
Числовой
Код поля
year
дата
Год
product_id
текстовый
Код с/х культуры
process
текстовый
операции
Рисунок 3.4 - Создание таблицы «history»
- Таблица «bound» содержит данные о крайних точках
сельскохозяйственных угодий. Её структура представлена в таблице 3.5. Рисунок
3.6 содержит sql-запрос создания таблицы «bound».
Таблица 3.5 - Структура таблицы «bound»
Название поля
Тип данных
Примечание
id
Счётчик
Код периметра
field_id
Числовой
Id поля
x
Числовой
Долгота
y
Числовой
Широта
n
Числовой
Задаёт порядок выборки точек
Рисунок 3.5 - Создание таблицы «Bound»
- Таблица «userlist» содержит
сведения о пользователях, имеющих доступ к разделу администратора. Её структура представлена
в таблице 3.6. Рисунок 3.7 содержит sql-запрос создания таблицы «userlist».
Таблица 3.6 - Структура таблицы «userlist»
Название поля
Тип данных
Примечание
Id
Счётчик
Код пользователя
user
Текстовый
Имя пользователя
pass
Текстовый
Пароль пользователя
Рисунок 3.6 - Создание таблицы «userlist»
Для уменьшения потенциальной противоречивости хранимой в БД
информации требуется провести её нормализацию. Нормализация - процесс
преобразования отношений базы данных к виду, отвечающему нормальным формам. Она
предназначена для приведения структуры базы данных к виду, обеспечивающему
минимальную логическую избыточность, и не имеет целью уменьшение или увеличение
производительности работы или же уменьшение или увеличение физического объёма
БД.
Рисунок 3.7 - ER-диаграмма данных БД
Все таблицы связанны между собой посредством ключевых полей. Такая структура таблиц представляет собой третью
нормальную форму и позволяет без проблем решить поставленную задачу. Третья нормальная форма
является достаточной при решении большинства практических задач, и процесс
проектирования реляционной базы данных, как правило, заканчивается приведением
к ней. ER-диаграмма базы данных представлена на рисунке 3.8.
Необходимо разработать прикладное программное
обеспечение
для автоматизированного спутникового мониторинга
обрабатываемых сельскохозяйственных угодий. В работе должно быть предусмотрено:
- мониторинг и контроль параметров обрабатываемых
угодий;
-
-
- учёт и обработка информации о статусе поля
и выполняемых работах;
- привязка данных к полю, должна осуществляться с помощью
информации о местоположении с навигационных систем.
-
В качестве исходных данных для реализации программного
обеспечения служат:
- данные обобрабатываемых
сельскохозяйственных угодиях;
- электронные карты местности -
геоинформационные Web-сервисы;
-
- данные о местоположении с
навигационных систем типа Глонасс, GPS.
При создании интерфейса пользователя требуется
предусмотреть следующие функции:
- подключение базы данных;
- вывод данных из БД;
- удаление/редактирование данных;
- расчёт необходимых параметров.
В результате выполнения всех требований был
создан интерфейс, очень простой и интуитивно понятный каждому. Он состоит из 3-ёх основных web-страниц:
Главная страница содержит список доступных полей и
подключённый картографический web-сервис google maps (рисунок 3.8). Рисунок 3.8 - Главная web-страница
Другой важной страницей является раздел редактора (рисунок 3.10), включающая в
себя возможность
удобного редактирования данных о сельскохозяйственных угодьях.
Рисунок 3.9 - Редакторский раздел Также реализована функция добавления поля в базу данных путём
выделения курсором мыши его границ на карте google maps (рисунок 3.11). В
результате чего сразу высчитывается площадь поля в гектарах и происходит
автоматическое разбиение на сегменты.
Рисунок 3.10 - Добавление поля
С помощью этих трёх окон работает всё программное
обеспечение. Для работы с информацией, её хранением и отбором данных
используется свободная система управления базами данных MySQL. Она является решением
для малых и средних приложений. Входит в состав серверов WAMP, LAMP и в
портативные сборки серверов Денвер, XAMPP. Обычно MySQL используется в качестве
сервера, к которому обращаются локальные или удалённые клиенты, однако в
дистрибутив входит библиотека внутреннего сервера, позволяющая включать MySQL в
автономные программы.
Для реализации поставленной задачи и корректной
работы программы были использованы компоненты представленные в таблице 3.7.
Таблица 3.7 - Описание действия используемых компонентов
Пиктограмма
Описание действия
table
Позволяет вывести данные в виде таблицы
Label
Даёт возможность подписать данные
input type="text"
Предоставляет возможность вносить в это
поле текст, который в последствии можно обрабатывать
input type="submit"
Представляет собой кнопку, по нажатию на
которую происходит обработка данных
Form
Форма ввода/вывода различных параметров с
дальнейшей их обработкой
div
предназначен для выделения фрагмента
документа с целью изменения вида содержимого
p
Определяет текстовый абзац
input type="radio"
Переключатель. Используется, когда следует
выбрать один вариант из нескольких предложенных
input type="hidden"
Скрытое поле. Оно никак не отображается
на веб-странице
Для подключения к созданной ранее базе данных предназначен файл bd.php (рисунок 3.11), где указан логин,
пароль и адрес базы данных.
Рисунок 3.11 - Подключение базы данных к проекту.
Данный файл вызывается на каждой web-странице, где
требуется взаимодействие с базой данных.
Для обеспечения работоспособности программы разработан ряд
функций. Рассмотрим их подробнее.
Функция infowindows() - формирует информационные окна для
элементов поля. В качестве входных данных используются idполя и тип аппликационной
карты. На выходе получается готовое информационное окно googlemaps.
Функция create_info() - формирует информацию о поле в соответствии с
полученными данными. Входными данными является информация о поле с базы данных.
Функция obvodka() -обрисовывает поле по периметру. В качестве
входных данных получает номер поля. Далее с БД получает координаты крайних
точек и формирует контурсельскохозяйственногоугодия.
Функция info_cell() - выводит информацию о дополнительных параметрах ячеек. В качестве входных
данных получает размерность ячейки для данного поля. В результате выводит
полученные сведения на экран.
Функция productivity() - вычисляет среднюю
урожайность по полю. В качестве входных данных получает информацию по
урожайности на каждом сегменте участка.
Функция gradient() - вычисляет цвета градиента в зависимости от
минимального и максимального входного параметра. Делит интервал на 10 равных
промежутков и каждому задаёт определённый цвет.
Функция drawChart() - рисует графики внесения удобрений с помощью GoogleChart. Входными данными
являются величины внесения конкретных удобрений. В результате возвращается
изображение в виде цветного графика.
Функция perimeter() - вычисляет расстояние между двумя точками.
Входными данными являются координаты контура поля. В результате преобразований
возвращается расстояние в метрах.
Код и описание разработанных в процессе работыфункций приведен в
Приложении.
Данная дипломная работа выполнена
на скриптовых языках программирования общего назначения, интенсивно
применяющийся для разработки веб-приложений -PHP и JavaScript, взаимодействующих между
собой посредством технологии AJAX. База данных спроектирована с помощью СУБД MySQL. PHP и MySQL прекрасно
взаимодействуют друг с другом. В PHP для этого предусмотрены специальные функции,
такие как: mysql_query(), mysql_fetch_array(). Программный код выполнен в
соответствии с заданием. Программный комплекс состоит из 3 основных (index.php, new_field.php, editor.php)и несколько вспомогательных файлов, которые приведены в
приложении А. В файле index.php выполняются все самые важные функции обработки
данных, где используется большое количество информации и данных.
Файл index.php представляет собой главное окно программы и
предназначен для вычисления различных параметров и отображение их на картеgooglemaps.
Файл new_field.phpпредназначендляформирования нового поля
посредством ручного ввода егона карте googlemaps по периметру. Также разбивает поле на
сектора и позволяет сохранять полученные координаты в базе данных приложения.
Файл editor.php представляет собой редактор базы данных, где
можно отредактировать любые параметры или добавить новые.
Эти файлы засчёт применения современных технологий способны
динамически изменяться под различные параметры без перезарузки страниц, что
обеспечивает диспетчеру дополнительные удобства при работе.
В разработанном приложении используется
многооконный графический интерфейс. Для запуска программы в адресной строке браузера
следует ввести «#"724405.files/image016.gif">
Рисунок 4.1 - Главное окно
В результате должно появится окно запроса логина
и пароля (рисунок 4.2). Данная система защиты позволяет предотвратить
несанкционированный доступ к базе данных, что позволит не беспокоиться за
целостность информации.
Рисунок 4.2 - Запрос пароля По завершению авторизации пользователя, будет осуществлён
вход в раздел администратора (рисунок 4.3). В появившемся окне следует ввести
наименование создаваемого поля, величину точности разбиения (задаётся в метрах)
и после этого на карте googlemapsследует найти и обвести контур поля. Завершение
обвода характеризуется кликом в первую точку контура. При правильном вводе поле начнёт автоматически
разбиваться на сегменты, а справа должно появиться сообщение о добавлении координат
поля в базу данных. Для завершения процесса следует подождать несколько секунд.
Программа автоматически рассчитает площадь поля в гектарах и занесёт сведения в
базу данных.
Рисунок 4.3 - Добавление поля
В случае, если при обводе контура поля, нажали не в ту
область карты, можно кликнуть по созданному маркеру и он автоматически удалится
с перестроение существующей линией обводки.
Рисунок 4.4 - Редактирование поля
Рисунок 4.5 - Редактор базы данных
После этого в окне «Редактор базы данных» (рисунок 4.5)
следует внести данные для этого поля. Для этого перейдём в пункт
«Редактирование полей...» (рисунок 4.4), где будет предложено выбрать поле для
внесения такой информации, как тип почвы, выращиваемая культура. Если
требуется, то можно изменить и площадь поля.
Рисунок 4.6 - Добавление истории полей
Также следует добавить информацию об истории возделывания
угодья. Для этого следует перейти в пункт «Добавление истории полей» (рисунок
4.6). В окошке вводим год, выращиваемую культуру и историю операций, после
чего, нажав на «Добавить», данные будут внесены в базу.
В окне редактора (рисунок 4.5) также предусмотрены
возможности добавления и редактирования истории поля, параметров
сельскохозяйственных культур.
После внесения всех необходимых данных в главном окне
(рисунок 4.3) из списка полей, выбираем необходимое. После чего, оно будет
отображено на карте и появится служебная информация. Также появится возможность
отображения одной из аппликационных карт: карта урожайности, карта кислотности
и карта внесения удобрений. При выборе первой, поле разобьётся на сегменты
заданной величины, где для каждого будет определена урожайность, если она была
определена бортовым оборудованием транспортного средства(рисунок 4.7).
Рисунок 4.7 - Урожайность поля
Также при выборе карты кислотности, отобразится
соответствующая кислотность для каждой точки поля. Большое практическое
применение имеет функция определения количества внесения удобрений. Она
позволяет рассчитать, сколько и каких удобрений следует внести в почву, для
достижения наилучшей урожайности поля. Данная рекомендация представлена на
рисунке 4.8.
Рисунок 4.8 - Рекомендация по внесению удобрений
При нажатии на любой элемент поля появится всплывающее окно
(рисунок 4.9), где будет отображена вся доступная информация, в частности:
точное местоположение, дата последнего редактирования, урожайность, уровень
кислотности почвы, содержание таких макроэлементов, как азот, калий и фосфор, а
также предоставлена рекомендация о необходимых мерах для увеличения качества
посевов.
Рисунок 4.9 - Информация о ячейки поля
Справа от главного окна можно вывести историю возделывания
угодий. Происходит это по нажатию на кнопку «История». Инфорация выводится в
виде таблички с указанием года, культуры и производимых операций (рисунок
4.10).
Рисунок 4.10 - Информация и история о поле
Также преусмотрена возможность вывода сведений о угодиях в
виде таблицы в отдельное окно, после чего эти данные можно распечатать на
принтере.
В результате получилось довольно удобное программное
обеспечение, воспользоваться которым может каждый. Существующее ядро системы
позволит легко добавлять и выводить новые функции.
Разработанное программное обеспечение предназначено для
пространственного анализа обрабатываемых сельскохозяйственных угодий,
являющиеся основой принятия оперативных управленческих решений, обеспечивает
визуализацию данных в виде разнообразных карт различных показателей почвы, урожайности,
составление аппликационных карт для внесения минеральных и органических
удобрений и подкормок.
Также предоставляет комплексное решение для измерения площадей
полей и расстояний, позволяет сохранять информацию о поле на специальном сервере просматривать
её в будущем с любого компьютера, подключенного к глобальной сети интернет.
Автоматизированная система позволяет просматривать
информацию о каждом участке поля, точное расположение, характеристиках почвы
(тип почвы, кислотность, содержание микро- и макро- элементов), а также выдаёт
рекомендации по улучшению плодородия - количеству вносимых удобрений.
В результате получилась компактная,
функциональная программа, которой сможет воспользоваться любой пользователь
средств глобальной сети интернет. Это облегчает процесс работы с программой,
так как для этого нужно всего лишь в адресной строке любого браузера набрать http://selxoz.elitno.net/ и программа уже
будет работоспособна.
Даное программное обеспечение поможет
сельхозпроизводителям в плане уборки урожая и оптимизации затрат.
1. Википедия. GPS[Электронный
ресурс]. - Режим доступа:http://ru.wikipedia.org/wiki/GPS.- Дата доступа: 10.03.2011.
2. Устройство, характеристики и отличия
любительских GPS-приёмников[Электронный ресурс]. - Режим доступа: http://www.a27.ru/information/osnov/gps-priemniki/ustroistvo-gps/.- Дата доступа: 11.03.2011.
3. Савин И.Ю. Мониторинг
сельскохозяйственных земель: объект, методы и международный опыт -
«Методическое обеспечение мониторинга земель сельскохозяйственного назначения»
/ Москва. - М.:РАСХН, 2010.
4. Геоинформационные Web-сервисы на базе
мозаик спутниковых снимков [Электронный ресурс]. - Режим доступа: http://www.gisa.ru/47188.html.- Дата доступа: 12.03.2011.
5. Википедия. Спутниковый мониторинг
транспорта [Электронный ресурс]. - Режим доступа: http://ru.wikipedia.org/wiki/Спутниковый_мониторинг_транспорта. - Дата доступа: 12.03.2011.
6. GSM. Способы передачи данных[Электронный
ресурс]. - Режим доступа:http://dev-mo.com/?p=80.- Дата доступа: 07.05.2011.
7. Трехуровневая Архитектура на основе
Сервера Приложений [Электронный ресурс]. - Режим доступа: http://rusmex.ru/index.php?area=1&p=static&page=architectors&print=1. - Дата доступа: 08.05.2011.
8. Википедия. Карты Google[Электронный
ресурс]. - Режим доступа: http://ru.wikipedia.org/wiki/Карты_Google. - Дата доступа: 26.05.2011.
9. PHP [Электронный ресурс]. -
Режим доступа: http://www.mirsite.ru/php.htm. - Дата доступа: 20.05.2011.
. К.С. Курочка, Е.Г. Стародубцев,
Т.А. Трохова. Дипломное проектирование: метод. указания для студентов
специальности 1-40 01 02 «Информационные системы и технологии (по
направлениям)» днев. и заоч. форм обучения - Гомель: ГГТУ им. П.О. Сухого,
2010. - 67 с.
11. Сборник нормативно-технических
материалов по энергосбережению. / Ком. по энергоэффективности при Совете Министров Респ.
Беларусь / сост. А.В.
Филипович. - Мн.: Лоранж-2, 2004, 393 с.
12. Gabriel Svennerberg. Beginning Google
Maps API 3. /Apress,2010., 329 с.
13. Michael Purvis, Jeffrey Sambells,
Cameron Turner / Beginning Google Maps Applications with PHP and Ajax From
Novice / Apress, 2006, 358 с.
. Бретт Маклафлин, Изучаем Ajax / Питер,
2008, 425 с.
. Келли Мэрдок, JavaScript. Наглядный
курс создания динамических Web-страниц / Изд. Вильямс,2005, 288 с.
Листинги программы
Листинг файла index.php:
<?php include("blocks/bd.php");?>
<!DOCTYPE html PUBLIC "- //W3C //DTD
XHTML 1.0 Transitional //EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html
xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type"
content="text/html; charset=windows-1251" />
<title>Диплом</title>
<link href="css/style.css"
rel="stylesheet" type="text/css" />
<script type="text/javascript"
src="js/script.js"></script>
<script type="text/javascript"
src="js/jquery-1.2.1.pack.js"></script>
<!-- для обеспечения прозрачности изображений-->
<scriptsrc="js/DD_belatedPNG.js"></script>
<script>_belatedPNG.fix(".button");
</script>
<script type="text/javascript">l
= 0, t = 0 IE = document.all?true:false .onmousemove = getMouseXY ns_tt =
document.createElement("div");
</script>
</head>
<div style="display:none">
<body>
</div>
<!-Подключениескриптов-->
<script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=false"></script>
<script
type="text/javascript">.load("maps",
"3.x");</script>
<script type="text/javascript"
src="http://www.google.com/jsapi"></script>
<script
type="text/javascript">.load("visualization", "1",
{packages:["corechart"]});
</script>
<script
type="text/javascript">extrime_x=new Array();extrime_y=new
Array();ij=0;
$(document).ready(function()
{polyline=new Object();obvod=new
Object();poly=new Object();data=new
Object();test="False";markersArray = [];map = new
google.maps.Map(document.getElementById("map"),
{
zoom: 14,
: new google.maps.LatLng(52.507732,30.908103),
: google.maps.MapTypeId.HYBRID
}
);
$('#markerTypes
input[name="radio_field"]').bind('click', function ()
{
temp=10;= $(this).val();
$('.cell_info').remove();
$('.cell_info_dop').remove();($(this).attr("checked"))
{(markersArray)
{(i in markersArray) {
markersArray[i].setMap(null); }.length = 0;
}(test=="True")
{.setMap(null);
}
$("#info").remove();
$('#app_ul input[name="app_prod"]').removeAttr("checked");
$('#app_ul
input[name="app_prod"]').bind('click', function ()
{($(this).attr("checked"))
{_ul=$(this).val();(markersType,app_ul);
}
});
$.getJSON("blocks/load.php",
{markersType:markersType,temp:temp}, function(data)
{
$('#infa').bind('click', function ()
{
// функция создания информации о поле и передаёт параметры
для сохранения площади поля в БД
create_info(data,markersType);
);
$('#infa_hide').bind('click', function ()
{
$('#info').remove();
});=obvodka(markersType,data);
});();
}
{.hide();
}
});
// функцияперезагрузкиблоковapplic()
{
$(".applic").removeClass('applic').attr('display','block').addClass('applic_new');
$("#markerTypes").addClass('selecter');
}
// функция вывода дополнительных сведений о ячейках
function info_cell(r,kolvo)
{
cell_info="<div>Размерностьячейки:</b></br>";_info+="Ширина:
"+r+" м</br>";_info+="Высота: "+r+" м</br>";_info+="Площадь:
"+(r*r/10000)+" Га</br>";_info+="</div>";_info+="<div>Кол-воячеек: "+kolvo+" шт.</br>";_info+="</div>";
$('.cell_info').remove();
$('.cell_info_dop').remove();
$('#map_info').append(cell_info);
}
// функцияобводаполяobvodka(id_f,data)
{
$.getJSON("blocks/load.php", {id_f:id_f},
function(krai)
{.panTo(new
google.maps.LatLng(krai.cd[0].y,krai.cd[0].x));pathss=[];perim=0;(var i = 0; i
< krai.cd.length; i++)
{[i] = new
google.maps.LatLng(krai.cd[i].y,krai.cd[i].x);
}(var i = 0; i < krai.cd.length-1; i++)
{+=perimetr(krai.cd[i],krai.cd[i+1]);
}cell_perim="<div>Данныеполя:</b></br>";_perim+="Периметр:"+perim.toFixed(1)+"
м</br>";
cell_perim+="При ширине захвата в 6
м</br>";_perim+="Длина пути
составит:"+(data.square/6000).toFixed(2)+" км</br>";
cell_perim+="</div>";
$('.cell_perim').remove();
$('#map_info').append(cell_perim);= new
google.maps.Polygon({: pathss,: 2,:'#fff',: '#ff0000',: 0.1
});.setMap(map);
});m="True";m;
}
// функцияформированияинформационныхокон
infowindows(markersType,app_ul)
{
vas;
=0;
$.getJSON("blocks/load.php",
{markersType:markersType,app_ul:app_ul}, function(app)
{_cell(app.razmer,app.coord.length);(app.coord.length>ij)
{ (app_ul=="app_produc")
{col=gradient(app.min_prod,app.max_prod,app.coord[ij].productivity);
}(app_ul=="app_acid")
{col=gradient(app.min_acid,app.max_acid,app.coord[ij].acidity);
}(app_ul=="app_fertil")
{
col='#39F339';
}r_x=parseInt(app.razmer)*0.000014604/2;;r_y=parseInt(app.razmer)*0.000008991/2;options={:new
google.maps.LatLngBounds(new google.maps.LatLng(parseFloat(app.coord[ij].y)-r_y,parseFloat(app.coord[ij].x)-r_x),
new google.maps.LatLng(parseFloat(app.coord[ij].y)+r_y,
parseFloat(app.coord[ij].x)+r_x)),:map,: 1,: 0.9,:col,: 0.5
};= new google.maps.Rectangle(options);point =
new google.maps.LatLng(parseFloat(app.coord[ij].y),parseFloat(app.coord[ij].x));(point,ij,app);.push(vas);++;
}
(app_ul=="app_produc")
{(app.min_prod&&app.max_prod)
{
gradient_info(app.min_prod, app.max_prod);
}{alert("ДанныхобурожайностиНЕТ!");
$('#gradient').remove(); }
}(app_ul=="app_acid")
{(app.min_acid&&app.max_acid)
{_info(app.min_acid, app.max_acid);
}{alert("ДанныхокислотностиНЕТ!");
$('#gradient').remove(); }
}(app_ul=="app_fertil")
{(app.min_acid&&app.max_acid)
{
$('#gradient').remove();
}{alert("ДанныхокислотностиНЕТ!");
$('#gradient').remove(); }
}
});
// функция сосздания текста при клике на ячейку
function createMarker(point,ij,app)
{infoWindow = new
google.maps.InfoWindow();.maps.event.addListener(vas, 'click', function(event)
{(app.coord[ij].acidity>=3.5&&(app.coord[ij].acidity)<=8.5)
{
var acid=acid_test(app.coord[ij].acidity);
}{ app.coord[ij].acidity="неопределено";
acid="";
};(app.coord[ij].nitrogen>=0.07&&(app.coord[ij].nitrogen)<=0.5)
{nitrogen=nitrogen_test(app.coord[ij].nitrogen);
}{ app.coord[ij].nitrogen="неопределено";
nitrogen="";
};(app.coord[ij].phosphorus>=0.03&&(app.coord[ij].phosphorus)<=0.25)
{phosphorus=phosphorus_test(app.coord[ij].phosphorus);
}{ app.coord[ij].phosphorus="неопределено";
phosphorus=""; };(app.coord[ij].potassium>=0.6&&(app.coord[ij].potassium)<=3)
{potassium=potassium_test(app.coord[ij].potassium);
}{ app.coord[ij].potassium="неопределено";
potassium="";
};acid_recomm=acid_recom(app.acid_min,app.acid_max,app.coord[ij].acidity);contentString
= "<b>Информацияоячейкиполя №"+(ij+1)+"</b><br
/>";+= "Точноеместоположение: " + event.latLng.lat().toFixed(2) +
"; " + event.latLng.lng().toFixed(2) + "<br />";+=
"<b>Датапоследнегоредактирования:</b> "+
app.coord[ij].timer+"<br />";(app.coord[ij].productivity)
{+= "<b>Урожайность:</b>"+app.coord[ij].productivity+"
цс 1 га<br
/>";
}+= "<i>Степенькислотностипочвы:
</i>"+app.coord[ij].acidity+"pH, "+acid+" <br
/>";
contentString += "<b>Содержание макроэлементов
NPK: </b><br />";
contentString += "<i>Азот
(N):</i>"+app.coord[ij].nitrogen+"%, "+nitrogen+" (норма - 0.4%)
<br />";+= "<i>Фосфор
(P):</i>"+app.coord[ij].phosphorus+"%, "+phosphorus+"
(норма - 0.2%)
<br />";+= "<i>Калий
(K):</i>"+app.coord[ij].potassium+"%, "+potassium+" (норма - 2.5%)<br
/>";+= "<br/><b>РЕКОМЕНДАЦИИ:</b><br
/>";(app.acid_min&&app.acid_max)
{+= "<i>Реккомендуемыйуровенькислотности:</i>от
"+app.acid_min+" до "+app.acid_max+" <br
/>";+=acid_recomm+" <br />";((nitrogen=="низкий")||(phosphorus=="низкий")||(potassium=="низкий"))
{+= "<b>сдобавлением:</b>";(nitrogen=="низкий")+="
азота
(N),";(phosphorus=="низкий")+=" фосфора
(P),";(potassium=="низкий") +=" калия (K),";
}
}{ contentString += "Не хватает данных о почве!<br
/> Возможно не указана с/х культура ";
}= contentString.substring(0,
contentString.length - 1);.setContent(contentString);.setPosition(point);.open(map);
});.maps.event.addListener(vas, 'mouseover',
function(event)
{(app_ul=="app_produc")
{(app.min_prod&&app.max_prod)
{(app.coord[ij].productivity+'<b>ц/Га</b>');
}
}(app_ul=="app_acid")
{(app.min_acid&&app.max_acid)
{(app.coord[ij].acidity+'<b>
pH</b>');
}
}(app_ul=="app_fertil")
{(app.coord[ij].nitrogen&&app.coord[ij].phosphorus&&app.coord[ij].potassium)
{nitro=((0.4-app.coord[ij].nitrogen)*1200).toFixed(0);phosph=((0.2-app.coord[ij].phosphorus)*1200).toFixed(0);potass=((2.5-app.coord[ij].potassium)*1200).toFixed(0);('<div
id="chart_div"></div><b>Добавитьнужно:</b></br><b>Азота:</b>
'+nitro+'<b>г/м<sup>2</sup></b></br><b>Фосфора:</b>
'+phosph+'<b>г/м<sup>2</sup></b></br><b>Калия:</b>
'+potass+'<b>г/м<sup>2</sup></b>');(nitro,phosph,potass);
}
}
});.maps.event.addListener(vas, 'mouseout',
function(event)
{(app_ul=="app_produc")
{(app.min_prod&&app.max_prod)
{();
}
}(app_ul=="app_acid")
{(app.min_acid&&app.max_acid)
{();
}
}(app_ul=="app_fertil")
{(app.coord[ij].nitrogen&&app.coord[ij].phosphorus&&app.coord[ij].potassium)
{();
}
}
});
}
};
});
</script>
<div id="wrapper">
<div id="middle">
<div id="container">
<div id="content">
<div id="map">
<div id="map_info">
</div><!-- #content-->
</div><!-- #container-->
<?
/*
<form name="Form2"
action="update.php" method="post" id="Form2"
style="display:none;">
<input type="hidden"
name="id" value="1" id="id">
<input type="hidden" name="sqqq"
value="1" id="sqqq">
<input type="submit"
value="saver">
</form>
*/
?>
<div>
<?php
$id_field = mysql_query("SELECT id,id_f FROM
fields"); ("<div id='selecter'><b>ВЫБЕРИТЕПОЛЕДЛЯПРОСМОТРА:</b><ul
id='markerTypes'>");($id = mysql_fetch_array($id_field))
{("<li><label><input
type='radio' name='radio_field' id='%s' value='%s'
>%s</label></li>",$id["id"],$id["id"],$id["id_f"]);
}("</ul></div>");
?>
<div>
<ul id="app_ul">
<li><label><input
type="radio" name="app_prod" id="app_produc"
value="app_produc" >Картаурожайности</label></li>
<li><label><input
type="radio" name="app_prod" id="app_acid"
value="app_acid" >Картакислотности</label></li>
<li><label><input
type="radio" name="app_prod" id="app_fertil"
value="app_fertil" >Картавнесенияудобрений</label></li>
</ul>
<button id="infa">Информация</button>
<button id="infa_hide">Скрыть</button>
</div>
<div id="message"></div>
<div id="info_main"></div>
<div id="bottom"></div>
</div><!--.sidebar#sideRight -->
</div>
</div>
<div id="footer">
<p><a href="editor.php">РедакторБД</a>
<a href="new_field.php">Добавлениеполей</a></p>
</div>
</body>
</html>
3.4
Программная реализация
3.5
Описание основных компонентов
4.
Эксплуатация программного обеспечения
.1
Структура программного комплекса
4.2
Опытная эксплуатация
Заключение
Список
использованных источников
Приложение
А