Решение задач мониторинга и контроля параметров обрабатываемых угодий, учета и анализа информации о статусе поля и выполняемых на нем работах

Общая характеристика и функциональные возможности, внутреннее устройство и принцип работы спутниковых систем мониторинга, особенности их применения в сфере сельского хозяйства. Технология решения задачи мониторинга. Разработка программного обеспечения.

Рубрика Программирование, компьютеры и кибернетика
Вид дипломная работа
Язык русский
Дата добавления 15.05.2014
Размер файла 5,3 M

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Также предусмотрен раздел редактора для изменения различных параметров поля (блок 10), добавления дополнительных сведений с дальнейшим сохранением в базе данных. Вход осуществляется только для администратора, что подтверждается введением логина и пароля для авторизации. Все изменения сохраняются в базе данных данного программного обеспечения.

Для удобного добавления поля, обозначения его крайних точек предназначены блоки 12-14, где есть возможность курсором мыши указать положение поля, вычислить его площадь, разбить всю область на сегменты.

В дополнение к этому предусмотрен автоматический ввод полученных результатов в базу данных.

3.3 Проектирование базы данных

В результате проектирования базы данных было создано 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.

3.4 Программная реализация

Необходимо разработать прикладное программное обеспечение для автоматизированного спутникового мониторинга обрабатываемых сельскохозяйственных угодий. В работе должно быть предусмотрено:

- мониторинг и контроль параметров обрабатываемых угодий;

-

-

- учёт и обработка информации о статусе поля и выполняемых работах;

- привязка данных к полю, должна осуществляться с помощью информации о местоположении с навигационных систем.

-

В качестве исходных данных для реализации программного обеспечения служат:

- данные обобрабатываемых сельскохозяйственных угодиях;

- электронные карты местности - геоинформационные 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.5 Описание основных компонентов

Для реализации поставленной задачи и корректной работы программы были использованы компоненты представленные в таблице 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() - вычисляет расстояние между двумя точками. Входными данными являются координаты контура поля. В результате преобразований возвращается расстояние в метрах.

Код и описание разработанных в процессе работыфункций приведен в Приложении.

4. Эксплуатация программного обеспечения

4.1 Структура программного комплекса

Данная дипломная работа выполнена

на скриптовых языках программирования общего назначения, интенсивно применяющийся для разработки веб-приложений -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 представляет собой редактор базы данных, где можно отредактировать любые параметры или добавить новые.

Эти файлы засчёт применения современных технологий способны динамически изменяться под различные параметры без перезарузки страниц, что обеспечивает диспетчеру дополнительные удобства при работе.

4.2 Опытная эксплуатация

В разработанном приложении используется многооконный графический интерфейс. Для запуска программы в адресной строке браузера следует ввести «http://selxoz.elitno.net/». В результате появится главное окно.

Для начала работы следует добавить поле в базу данных.Для этого стоит нажать на пункт меню «Добавление полей» на рисунке 4.1.

Рисунок 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.

10. К.С. Курочка, Е.Г. Стародубцев, Т.А. Трохова. Дипломное проектирование: метод. указания для студентов специальности 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 с.

14. Бретт Маклафлин, Изучаем Ajax / Питер, 2008, 425 с.

15. Келли Мэрдок, 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>

DD_belatedPNG.fix(".button");

</script>

<script type="text/javascript">

var l = 0, t = 0

var IE = document.all?true:false

document.onmousemove = getMouseXY

var 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">

google.load("maps", "3.x");</script>

<script type="text/javascript" src="http://www.google.com/jsapi"></script>

<script type="text/javascript">

google.load("visualization", "1", {packages:["corechart"]});

</script>

<script type="text/javascript">

var extrime_x=new Array();

var extrime_y=new Array();

var ij=0;

$(document).ready(function()

{

var polyline=new Object();

var obvod=new Object();

var poly=new Object();

var data=new Object();

var test="False";

var markersArray = [];

var map = new google.maps.Map(document.getElementById("map"),

{

zoom: 14,

center: new google.maps.LatLng(52.507732,30.908103),

mapTypeId: google.maps.MapTypeId.HYBRID

}

);

$('#markerTypes input[name="radio_field"]').bind('click', function ()

{

var temp=10;

markersType = $(this).val();

$('.cell_info').remove();

$('.cell_info_dop').remove();

if($(this).attr("checked"))

{

if (markersArray)

{

for (i in markersArray) { markersArray[i].setMap(null); }

markersArray.length = 0;

}

if (test=="True")

{

obvod.setMap(null);

}

$("#info").remove();

$('#app_ul input[name="app_prod"]').removeAttr("checked");

$('#app_ul input[name="app_prod"]').bind('click', function ()

{

if($(this).attr("checked"))

{

app_ul=$(this).val();

infowindows(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();

});

test=obvodka(markersType,data);

});

applic();

}

else

{

polyline.hide();

}

});

// функцияперезагрузкиблоков

function applic()

{

$(".applic").removeClass('applic').attr('display','block').addClass('applic_new');

$("#markerTypes").addClass('selecter');

}

// функция вывода дополнительных сведений о ячейках

function info_cell(r,kolvo)

{

var cell_info="<div class='cell_info'><b>Размерностьячейки:</b></br>";

cell_info+="Ширина: "+r+" м</br>";

cell_info+="Высота: "+r+" м</br>";

cell_info+="Площадь: "+(r*r/10000)+" Га</br>";

cell_info+="</div>";

cell_info+="<div class='cell_info_dop'>Кол-воячеек: "+kolvo+" шт.</br>";

cell_info+="</div>";

$('.cell_info').remove();

$('.cell_info_dop').remove();

$('#map_info').append(cell_info);

}

// функцияобводаполя

function obvodka(id_f,data)

{

$.getJSON("blocks/load.php", {id_f:id_f}, function(krai)

{

map.panTo(new google.maps.LatLng(krai.cd[0].y,krai.cd[0].x));

var pathss=[];

var perim=0;

for(var i = 0; i < krai.cd.length; i++)

{

pathss[i] = new google.maps.LatLng(krai.cd[i].y,krai.cd[i].x);

}

for(var i = 0; i < krai.cd.length-1; i++)

{

perim+=perimetr(krai.cd[i],krai.cd[i+1]);

}

var cell_perim="<div class='cell_perim'><b>Данныеполя:</b></br>";

cell_perim+="Периметр:"+perim.toFixed(1)+" м</br>";

cell_perim+="При ширине захвата в 6 м</br>";

cell_perim+="Длина пути составит:"+(data.square/6000).toFixed(2)+" км</br>";

cell_perim+="</div>";

$('.cell_perim').remove();

$('#map_info').append(cell_perim);

obvod = new google.maps.Polygon({

path: pathss,

strokeWeight: 2,

strokeColor:'#fff',

fillColor: '#ff0000',

fillOpacity: 0.1

});

obvod.setMap(map);

});

var m="True";

return m;

}

// функцияформированияинформационныхокон

function infowindows(markersType,app_ul)

{

var vas;

ij=0;

$.getJSON("blocks/load.php", {markersType:markersType,app_ul:app_ul}, function(app) {

info_cell(app.razmer,app.coord.length);

while(app.coord.length>ij)

{

if (app_ul=="app_produc")

{

var col=gradient(app.min_prod,app.max_prod,app.coord[ij].productivity);

}

if (app_ul=="app_acid")

{

var col=gradient(app.min_acid,app.max_acid,app.coord[ij].acidity);

}

if (app_ul=="app_fertil")

{

var col='#39F339';

}

var r_x=parseInt(app.razmer)*0.000014604/2;;

var r_y=parseInt(app.razmer)*0.000008991/2;

var options={

bounds: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:map,

fillOpacity: 1,

strokeOpacity: 0.9,

fillColor:col,

strokeWeight: 0.5

};

vas = new google.maps.Rectangle(options);

var point = new google.maps.LatLng(parseFloat(app.coord[ij].y),parseFloat(app.coord[ij].x));

createMarker(point,ij,app);

markersArray.push(vas);

ij++;

}

if (app_ul=="app_produc")

{

if(app.min_prod&&app.max_prod)

{

gradient_info(app.min_prod, app.max_prod);

}

else {alert("ДанныхобурожайностиНЕТ!"); $('#gradient').remove(); }

}

if (app_ul=="app_acid")

{

if(app.min_acid&&app.max_acid)

{

gradient_info(app.min_acid, app.max_acid);

}

else {alert("ДанныхокислотностиНЕТ!"); $('#gradient').remove(); }

}

if (app_ul=="app_fertil")

{

if(app.min_acid&&app.max_acid)

{

$('#gradient').remove();

}

else {alert("ДанныхокислотностиНЕТ!"); $('#gradient').remove(); }

}

});

// функция сосздания текста при клике на ячейку

function createMarker(point,ij,app)

{

var infoWindow = new google.maps.InfoWindow();

google.maps.event.addListener(vas, 'click', function(event)

{

if (app.coord[ij].acidity>=3.5&&(app.coord[ij].acidity)<=8.5)

{

var acid=acid_test(app.coord[ij].acidity);

}

else { app.coord[ij].acidity="неопределено"; acid=""; };

if (app.coord[ij].nitrogen>=0.07&&(app.coord[ij].nitrogen)<=0.5)

{

var nitrogen=nitrogen_test(app.coord[ij].nitrogen);

}

else { app.coord[ij].nitrogen="неопределено"; nitrogen=""; };

if (app.coord[ij].phosphorus>=0.03&&(app.coord[ij].phosphorus)<=0.25)

{

var phosphorus=phosphorus_test(app.coord[ij].phosphorus);

}

else { app.coord[ij].phosphorus="неопределено"; phosphorus=""; };

if (app.coord[ij].potassium>=0.6&&(app.coord[ij].potassium)<=3)

{

var potassium=potassium_test(app.coord[ij].potassium);

}

else { app.coord[ij].potassium="неопределено"; potassium=""; };

var acid_recomm=acid_recom(app.acid_min,app.acid_max,app.coord[ij].acidity);

var contentString = "<b>Информацияоячейкиполя №"+(ij+1)+"</b><br />";

contentString += "Точноеместоположение: " + event.latLng.lat().toFixed(2) + "; " + event.latLng.lng().toFixed(2) + "<br />";

contentString += "<b>Датапоследнегоредактирования:</b> "+ app.coord[ij].timer+"<br />";

if(app.coord[ij].productivity)

{

contentString += "<b>Урожайность:</b>"+app.coord[ij].productivity+" цс 1 га<br />";

}

contentString += "<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 />";

contentString += "<i>Фосфор (P):</i>"+app.coord[ij].phosphorus+"%, "+phosphorus+" (норма - 0.2%) <br />";

contentString += "<i>Калий (K):</i>"+app.coord[ij].potassium+"%, "+potassium+" (норма - 2.5%)<br />";

contentString += "<br/><b>РЕКОМЕНДАЦИИ:</b><br />";

if (app.acid_min&&app.acid_max)

{

contentString += "<i>Реккомендуемыйуровенькислотности:</i>от "+app.acid_min+" до "+app.acid_max+" <br />";

contentString +=acid_recomm+" <br />";

if ((nitrogen=="низкий")||(phosphorus=="низкий")||(potassium=="низкий"))

{

contentString += "<b>сдобавлением:</b>";

if (nitrogen=="низкий")

contentString +=" азота (N),";

if (phosphorus=="низкий")

contentString +=" фосфора (P),";

if (potassium=="низкий")

contentString +=" калия (K),";

}

}

else { contentString += "Не хватает данных о почве!<br /> Возможно не указана с/х культура ";

}

contentString = contentString.substring(0, contentString.length - 1);

infoWindow.setContent(contentString);

infoWindow.setPosition(point);

infoWindow.open(map);

});

google.maps.event.addListener(vas, 'mouseover', function(event)

{

if (app_ul=="app_produc")

{

if(app.min_prod&&app.max_prod)

{

AddTT(app.coord[ij].productivity+'<b>ц/Га</b>');

}

}

if (app_ul=="app_acid")

{

if(app.min_acid&&app.max_acid)

{

AddTT(app.coord[ij].acidity+'<b> pH</b>');

}

}

if (app_ul=="app_fertil")

{

if(app.coord[ij].nitrogen&&app.coord[ij].phosphorus&&app.coord[ij].potassium)

{

var nitro=((0.4-app.coord[ij].nitrogen)*1200).toFixed(0);

var phosph=((0.2-app.coord[ij].phosphorus)*1200).toFixed(0);

var potass=((2.5-app.coord[ij].potassium)*1200).toFixed(0);

AddTT('<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>');

drawChart(nitro,phosph,potass);

}

}

});

google.maps.event.addListener(vas, 'mouseout', function(event)

{

if (app_ul=="app_produc")

{

if(app.min_prod&&app.max_prod)

{

RemoveTT();

}

}

if (app_ul=="app_acid")

{

if(app.min_acid&&app.max_acid)

{

RemoveTT();

}

}

if (app_ul=="app_fertil")

{

if(app.coord[ij].nitrogen&&app.coord[ij].phosphorus&&app.coord[ij].potassium)

{

RemoveTT();

}

}

});

}

};

});

</script>

<div id="wrapper">

<div id="middle">

<div id="container">

<div id="content">

<div id="map" class="map"></div>

<div id="map_info" class="map_info"></div>

</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 class="sidebar" id="sideRight">

<?php

$id_field = mysql_query("SELECT id,id_f FROM fields");

printf("<div id='selecter'><b>ВЫБЕРИТЕПОЛЕДЛЯПРОСМОТРА:</b><ul id='markerTypes'>");

while ($id = mysql_fetch_array($id_field))

{

printf("<li><label><input type='radio' name='radio_field' id='%s' value='%s' >%s</label></li>",$id["id"],$id["id"],$id["id_f"]);

}

printf("</ul></div>");

?>

<div class="applic">

<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" class="button" name="infa">Информация</button>

<button id="infa_hide" class="button" name="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>

Размещено на Allbest.ru


Подобные документы

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.