Федеральное агентство морского и речного транспорта РФ Морской государственный университет им. адм. Г. И. Невельского
С. Г. Фадюшин КОМПЬЮТЕРНЫЕ ТЕХНОЛОГИИ В СУДОВОЖДЕНИИ Часть 2
Учебное пособие Рекомендовано методическим советом Морского государственного университета в качестве учебного пособия для специальности 240200 «Судовождение»
Владивосток 2005 1
УДК 656.61 + 639.2.053 Фадюшин С. Г. Компьютерные технологии в судовождении: Учеб. пособие. Владивосток: Мор. гос. ун-т, 2005. 79 с. Рассматриваются основные принципы решения задач судовождения на персональных компьютерах с использованием таких пакетов программ, как Microsoft Access, Easy Trace; языка программирования Visual Basic и языка разметки гипертекста HTML. Материал излагается в виде лекций и поясняется на примере программы-приложения ЭКС «Кадет». Пособие завершается заданиями на практические занятия. Предназначено для курсантов и студентов специальности 240200 «Судовождение» и судоводителей морского флота. Ил. 11, табл. 2, прил. 2, библиогр. 20 назв.
Рецензенты: А. Н. Солодянкин, канд. техн. наук, доцент кафедры судовождения ДВГТРУ; Е. Н. Бакланов, начальник УТЦ кафедры АПС и ТСС ДВГТРУ
Фадюшин С. Г., 2005 Морской государственный университет им. адм. Г. И. Невельского, 2005 2
ПРЕДИСЛОВИЕ Техническая культура современного производства, использование высоких технологий на базе персональных электронных вычислительных машин (ПЭВМ) остро потребовали от инженера компьютерную грамотность и умение решать с помощью ПЭВМ различные производственные задачи. С появлением ПЭВМ возникла человеко-компьютерная система практически с неограниченными возможностями. Однако решение технических задач в рамках этой системы, например, задач навигации с помощью электронных картографических систем, требует тщательной предварительной подготовки и творческого подхода. В этой связи начали разрабатываться специальные технологии, в том числе и в судовождении. Так появились компьютерные технологии в судовождении, и назрела необходимость обучения курсантов и студентов по новой дисциплине «Компьютерные технологии в судовождении». Настоящее учебное пособие является продолжением одноимѐнного пособия «Компьютерные технологии в судовождении. Часть 1» [20], где в основном рассматривается работа с текстовыми судовыми документами на компьютере. В этом учебном пособии основное внимание уделено вопросам использования готовых программ и разработки программ-приложений для решения задач из области навигации. При работе над учебным пособием учитывались следующие аспекты развития информационных технологий: Основой компьютерных технологий является язык программирования. Для компьютерных технологий в судовождении таким языком может служить Basic. В учебном пособии рассматривается одна из современных разновидностей этого языка Visual Basic. К настоящему времени накоплен огромный объѐм информации по судовождению в электронном виде, и для его хранения и переработки нужны базы данных. В этой работе рассматривается база данных Access. На сегодняшний день актуальным вопросом в судовождении является разработка электронных навигационных карт. В учебном пособии этому вопросу также уделено внимание. Бурное развитие Internet привело к широкому применению для информационного обмена технологии World Wide Web. Информация играет важную роль для обеспечения безопасности 3
плавания судна. Вот почему один из разделов настоящего учебного пособия посвящѐн Web-технологии. Современные морские суда представляют собой сложные технические системы. Решить многие задачи, связанные с расчетом и проектированием процессов управления судном, можно только используя персональный компьютер, математические модели этих процессов и специально разработанные прикладные программы. Разработка прикладных программ для компьютерного моделирования судовых процессов очень трудоемкий процесс, его невозможно осилить без современных интегрированных сред разработки приложений, например, Visual Basic (VB). Однако эта среда до сих пор мало используется в учебном процессе, так как пособий по еѐ изучению недостаточно. Настоящее пособие ставит задачу ликвидировать этот пробел и дать курсантам специальности «Судовождение» современный мощный инструментарий для разработки приложений. Среда Visual Basic состоит из интегрированной среды разработки IDE (Integrating Development Environment), языка программирования, текстового редактора, библиотеки. В пособии даны элементы языка программирования Visual Basic и изложены основные принципы программирования с использованием методов и событий. В пособии на примере учебной программы, условно названной ЭКС «Кадет», показаны принципы разработки VB-программ моделирования процессов управления движением судна и их элементов. Листинги программы курсанты могут использовать как для приобретения навыков программирования в интегрированной среде VB, так и для их модернизации, а модули программ можно применять при разработке новых. Должен ли современный судоводитель уметь составлять компьютерные программы для решения задач, которые ставит перед ним практика? Этот вопрос, зародившись ещѐ в ту пору, когда появились первые программируемые микрокалькуляторы, остаѐтся актуальным и по сей день. Для современного инженера-судоводителя владение хотя бы одним языком программирования – это не только производственная необходимость, но и часть его культурного развития. Компьютерные языки программирования необходимы для общения и передачи информации. Их знание и владение ими требуются современному человеку, как знание обычных языков: русского, английского…, как знание языка музыки – нот. И, конечно же, общение на языке программирования невозможно без компьютера. ПЭВМ – 4
«скрипка», на которой искусный программист, как профессиональный музыкант, создаѐт свои мелодии-программы. В этой связи интересно отметить, что первым персональным компьютером считается машина под названием «Альтаир-8800». Еѐ разработала в 1974 году небольшая фирма Micro Instrumentation and Telemetry System (MITS), расположенная в городе Альбукерке, которую возглавлял отставной офицер ВВС США энтузиаст электроники Эдвард Робертс. По современным понятиям это была довольно примитивная машина. Собранная на процессоре Intel 8080, с объѐмом памяти 256 байт, она не имела ни клавиатуры, ни экрана. Данные вводились в двоичном коде с помощью выключателей, результаты (в двоичном коде) считывались по мигающим лампочкам. Однако эта машина имела ошеломляющий коммерческий эффект, настолько людям хотелось иметь собственную вычислительную машину и заниматься программированием. Владелец Microsoft Билл Гейтс также начал свою карьеру программистом в MITS, разрабатывая программу, которая реализовывала язык Бейсик для компьютера «Альтаир». Таким образом, ускорить решение многих задач судовождения так, чтобы идти в ногу со временем, всегда находясь на гребне волны, можно, лишь научив инженера-судоводителя самостоятельно разрабатывать математические модели систем судовождения, алгоритмы и программы их расчѐта, используя при этом вычислительную технику и свой творческий потенциал, т. е. обучив компьютерным технологиям в судовождении. В этом и заключается цель настоящего учебного пособия. Содержание работы соответствует учебной программе дисциплины «Компьютерные технологии в судовождении» и излагается в виде лекций, раскрывающих теоретические занятия. Задания на лабораторные работы приведены в последнем разделе. Автор выражает признательность рецензентам: доценту кафедры судовождения ДВГТРУ А. Н. Солодянкину, начальнику УТЦ кафедры АПС и ТСС ДВГТРУ Е. Н. Бакланову и сотрудникам кафедры судовождения Морского государственного университета имени адмирала Г. И. Невельского за полезные критические замечания и дружеские пожелания по совершенствованию изложения материала при работе над рукописью учебного пособия. Замечания и предложения можно направлять по электронному адресу
[email protected] или обращаться на учебный Web-сайт автора: www.sv-navigator.narod.ru. 5
1. ИНТЕГРИРОВАННАЯ СРЕДА РАЗРАБОТКИ ПРИЛОЖЕНИЙ VISUAL BASIC Что такое Visual Basic? Принципы и преимущества структурного программирования, этапы программирования, интегрированная среда разработки IDE, элементы управления, выбор информативных имен для элементов управления, процедуры и функции, переменные, массивы и константы, управляющие структуры программы Что такое Visual Basic? Visual Basic (VB) это система программирования для создания приложений, работающих под Microsoft Windows. Первая часть этого словосочетания, Visual, относится к методу создания графического интерфейса пользователя (Graphical User Interface, GUI). Вместо того чтобы составлять большие программы для описания элементов интерфейса, в Visual Basic достаточно поместить заранее созданные объекты в соответствующие места экрана. Слово «Basic» относится к языку программирования BASIC (Beginners All-Purpose Symbolic Instruction Code Универсальный символический программный код для новичков), языку, пользующемуся наибольшей популярностью среди других языков программирования за всю историю вычислительной техники. Visual Basic вырос из исходного языка BASIC и в настоящее время состоит из нескольких сотен операторов, функций и ключевых слов. С помощью VB начинающий пользователь может разработать полезное приложение, изучив лишь небольшое количество ключевых слов. Однако VB – достаточно мощный язык программирования: с его помощью можно решить любую задачу программирования, какую только можно вообразить. Язык программирования Visual Basic является универсальным языком. Версия Visual Basic для приложений, Applications Edition, включена в Microsoft Excel, Microsoft Access и многие другие Windows-приложения. Для написания скриптов (сценариев) также широко используется язык Visual Basic Scripting Edition (VBScript). Принципы и преимущества структурного программирования Язык Basic ориентирован на структурное программирование. Структура программы состоит из отдельных модулей, следующих 6
один за другим. У каждого модуля один вход и один выход законченная конструкция для решения определенной задачи. Цель создаваемой программы достигается составлением композиции из отдельных модулей, разработанных применительно к поставленной задаче. Преимущества структурного программирования заключаются в следующем: отдельные блоки могут разрабатываться и проходить тестирование независимо от остальной части программы; несколько программистов могут работать над разными частями программы независимо друг от друга; модули, написанные для одной программы, могут быть использованы в другой; существенно упрощается построение программы и еѐ отладка. Этапы программирования Решение задачи с использованием ЭВМ включает в себя следующие этапы: 1. Чѐткая формулировка задачи с выделением достигаемой цели и вида получаемого результата. 2. Разработка алгоритма решения задачи. 3. Разработка интерфейса программы. 4. Установление свойств элементов управления. 5. Выбор обозначений и объявление переменных величин программы. Рекомендуется присваивать переменным значащие названия. В судовождении официально установлен перечень символов и сокращений для используемых величин, которым следует руководствоваться при наименовании переменных в программе. 6. Написание кодов программы. После появления на свет операционной системы Microsoft Windows оконный интерфейс стал общепринятым стандартом для разработки прикладных программ (приложений). Разработка соответствующего интерфейса «вручную» имеет ряд трудностей и требует от программиста больших затрат времени. Применение визуальных сред позволяет легко и быстро конструировать экранные формы и управляющие элементы, даже не являясь экспертом в области C++ или другого языка программирования. Срок разработки готового приложения сокращается от многих месяцев до недель и даже дней. 7
Интегрированная среда разработки IDE Интегрированная среда разработки, или IDE (Integrating Development Environment) (рис. 1) это важная составная часть Visual Basic. Именно здесь выполняется основная работа над приложением. 1
2
8
9
5
6
7 4
3
Рис. 1. Интегрированная среда разработки приложений VB
IDE состоит из следующих компонентов: 1. Строка меню. Обеспечивает доступ к командам, управляющим средой программирования. 2. Панель инструментов. Ускоряет доступ к некоторым командам меню. 3. Окно дизайнера форм. Служит для визуального конструирования макета формы и размещения на нѐм управляющих элементов, кроме того, в этом окне производятся ввод и редактирование текста программы. 4. Панель элементов. Содержит интерфейсные элементы для создаваемого приложения.
8
5. Окно проводника проекта. Показывает список форм и модулей текущего проекта. (Проект – это набор файлов, используемых для построения приложения). 6. Окно свойств. Позволяет изменять характеристики интерфейсных элементов. 7. Окно макета формы. Показывает, как выглядит форма и где она находится во время выполнения программы. 8. Кнопка для перехода к окну кодов. 9. Кнопка для перехода к окну дизайнера формы. Элементы управления Основным элементом Windows-интерфейса является «окно». В Visual Basic этот объект называется формой. Это контейнер, на котором располагаются все остальные элементы управления. Таким образом, создание интерфейса сводится к размещению на форме управляющих элементов. К ним относятся: кнопки, текстовые поля, надписи, переключатели, флажки, рамки, списки, комбинированные поля, рисунки, изображения и т. д. Кнопки (CommandButton) используются для решения самых разных задач от простейшего ввода информации до вызова специальных функций. Текстовые поля (TextBox) применяются для ввода данных или получения информации от пользователя, а также в некоторых случаях для вывода информации. Надписи (Label) служат для размещения на форме текста, чисел и символов, а также, как и текстовые поля, для вывода информации. Главное отличие надписей от текстовых полей заключается в том, что пользователь (не программист) не может изменить текст надписи по своему усмотрению. Переключатели (OptionButton) позволяют выбрать один (и только один) вариант из группы. Обычно переключатели группируются в рамках, однако их можно группировать прямо на форме, если используется только одна группа переключателей. Флажки (CheckBox) отчасти похожи на переключатели, однако работают независимо друг от друга. Рамки (Frame) используются в сочетании с другими элементами. Внутри рамки можно разместить любые элементы. Они группируются и в случае перемещения рамки двигаются вместе с ней. Списки (ListBox) это идеальное средство для работы с перечнем 9
из нескольких вариантов. Пользователь может просмотреть содержимое списка и выбрать одну или несколько строк для последующей обработки. Прямое редактирование содержимого списка невозможно. Комбинированные поля (ComboBox) сочетают возможности текстового поля и списка. Они позволяют выбрать из списка заранее определенную строку или ввести значение, которого нет в списке. Важной особенностью комбинированного поля является то, что оно может быть раскрывающимся. Это дает возможность экономить место на форме. Графические поля (PictureBox) часто используются для отображения графических файлов. Кроме того, во время выполнения программы в поле рисунка можно выводить текст и рисовать с помощью различных методов. Но самое главное заключается в том, что рисунок может выполнять функции контейнера, т. е. в него можно поместить кнопку или другой элемент. Изображения (Image) являются упрощенным вариантом рисунков. В отличие от рисунков изображения не могут выполнять функции контейнера и подходят только для простейшего вывода картинок на форме, однако занимают гораздо меньше памяти, чем рисунки. Полосы прокрутки (VScrollBar, HScrollBar) обычно применяются для изменения величины в пределах непрерывной шкалы. Элемент полосы прокрутки представляет собой совершенно независимый объект, не привязанный к другим элементам (текстовым полям или спискам). Горизонтальная и вертикальная полосы прокрутки ничем не отличаются друг от друга, кроме ориентации. Описанные выше управляющие элементы являются стандартными они всегда присутствуют на панели элементов. Кроме того, существует еще много управляющих элементов, которые можно вызвать на панель элементов, щелкнув на ней правой кнопкой мыши и выбрав из контекстного меню команду Components. Далее на вкладке Controls диалогового окна Components необходимо установить флажки рядом с нужными элементами. Так, например, очень удобными являются диалоговые блоки с закладками (SSTab). Они могут служить контейнером для других элементов управления и позволяют в значительной мере экономить место на форме. Каждый элемент управления имеет определенный набор свойств, которые можно изменять как с помощью окна свойств, так и программно.
10
Выбор информативных имен для элементов управления Каждый элемент управления имеет свойство Name (Имя), где указывается его имя. Причем оно должно быть уникальным (если этот элемент не является частью массива элементов управления). Когда создается тот или иной управляющий элемент, Visual Basic присваивает ему имя по умолчанию. Так, например, первая кнопка будет названа Command1, следующая кнопка Command2 и т. д. Это имя может сообщить, что данный элемент является кнопкой и никакой другой информации не несет. Имена по умолчанию подходят для выяснения порядка, в котором создавались элементы управления, но не вызывают никаких разумных ассоциаций относительно того, для чего они предназначены. Имя должно информировать как о типе управляющего элемента, так и о его назначении. Поэтому рекомендуется придерживаться соглашения об именах. Это сделает код программы более простым для понимания и усовершенствования. Следующее соглашение об именах используется для идентификации элементов управления большинством программистов на Visual Basic: ctlName, где ctl префикс, определяющий тип управляющего элемента; Name имя элемента управления (информативное с точки зрения функционального назначения). Таким образом, имя cmdExit однозначно указывает на кнопку выхода из программы, а имя txtPassword на текстовое поле для ввода пароля. Следует обратить внимание на то, что первая буква информативной части в синтаксисе имени является прописной, и таковыми являются первые буквы всех слов, входящих в эту часть имени (например, txtFirstName). Это сделано для того, чтобы отделить имя от префикса, а также разделить слова в имени. Процедуры и функции Все объекты, составляющие приложение, объединяются в проект. Он может состоять как из одной, так и из нескольких форм, на каждой из которых располагаются свои управляющие элементы. Вся суть создания Windows-приложения сводится к программированию событий, происходящих с управляющими элементами. Поэтому текст Visual Basic-программы представляет собой набор процедур 11
обработки событий. Под событием понимается действие, которое будет производить пользователь над управляющими элементами в процессе работы с готовой программой. Все процедуры, связанные с данной формой, называются кодом формы (модулем формы). Кроме того, в проект может входить самостоятельный набор процедур, не связанный с какой-либо формой. Этот фрагмент программы называется модулем и может вызываться из любой формы. Каждая процедура начинается ключевыми словами Private (Public) Sub и заканчивается словами End Sub. Ключевые слова Private и Public определяют область видимости данной процедуры. Процедура, объявленная с ключевым словом Public, является открытой, т. е. видимой другими компонентами приложения. Ключевое слово Private означает, что процедура является закрытой, т. е. доступной только из данной формы или модуля. Существуют процедуры как связанные с элементами управления, так и не связанные с ними. Такие процедуры, по сути, являются подпрограммами и вызываются с помощью оператора Call. Подпрограмма выполняет предписанное ей действие и потом возвращается в точку вызова. Другой важный тип процедур функции (Function). Они также объявляются с ключевыми словами Private и Public. Функции возвращают некоторое значение вызывающей процедуре и заканчиваются строкой End Function. Переменные, массивы и константы Любая программа в процессе своей работы производит операции над данными. Это могут быть числа, строки текста, рисунки и т. д. В самой программе эти данные могут размещаться в переменных или массивах. Переменная это именованная область памяти, отведенная для временного хранения данных. При выполнении программы можно изменять значение переменной. Прежде чем начать использование переменной, необходимо ее объявить. Объявление переменных может быть как явным, так и неявным. Явное объявление переменной производится с помощью оператора Dim (от dimension размерность). Этот оператор резервирует определенную область памяти под данную переменную. Далее указывается тип данных для переменной. Например, Dim X as String. В этом 12
примере переменная X объявлена как строковая. Типы данных, используемых в Visual Basic, указаны в табл. 1. Таблица 1 Типы данных, используемых в Visual Basic Тип данных
Размер
Диапазон значений
Byte (байт)
1 байт
От 0 до 255
Boolean (логический)
2 байта
True (Истина) или False (Ложь)
Integer (целое)
2 байта
От 32768 до 32767
Long Integer (длинное целое)
4 байта
От 2 147483648 до 2 147483647
Single (одинарной точности с плавающей десятичной точкой)
4 байта
От 3.402823Е38 до 3.402823Е38
Double (двойной точности с плавающей десятичной точкой)
8 байт
От 1. 797693 13486232D308 до 1.79769313486232D308
Currency (денежные единицы
8 байт
От 922337203685477.5808 до 922337203685477.5807
Data (дата)
8 байт
От January (Январь) 1, 100 до December (Декабрь) 31, 9999
String (строка)
1 байт на символ
От 0 до 65535 символов
Variant (вариант)
16 байт (для чисел); 22 байта +1 на символ (для строк)
Для всех типов переменных
Можно объявить переменную и без использования оператора Dim. Этот процесс называется неявным объявлением. В этом случае переменной автоматически будет присвоен тип Variant. Переменная, объявленная оператором Dim в той или иной процедуре, будет использоваться только внутри этой процедуры. Такая переменная называется локальной. При выходе из процедуры значение переменной будет обнуляться. Чтобы сохранить еѐ значение, необходимо вместо Dim ис13
пользовать ключевое слово Static. В этом случае переменная будет сохранять последнее присвоенное ей значение. Для того чтобы переменная могла использоваться всеми процедурами данной формы или модуля, ее необходимо объявлять в секции General Declarations (в самом начале окна с кодами). Кроме того, переменная может быть доступна на уровне всего приложения. Такая переменная называется открытой, или глобальной. Она также объявляется в секции General Declarations, но вместо Dim используется ключевое слово Global. Обычно в таких случаях в проект включается стандартный модуль с расширением bas, а все глобальные переменные помещаются в его секцию объявлений. Массивы можно считать разновидностью переменных, однако в них хранится сразу несколько однородных значений. Например, если записано Dim X (5) as Integer, то это значит, что объявляется массив X, в котором резервируется место для шести целочисленных значений (начиная с Х(0)). Массивы могут быть как одномерными, так и многомерными. Например, Х(5) это одномерный массив, содержащий шесть элементов, a Y(3,5) двухмерный, содержащий 24 элемента. Таким образом, массивом называется список однородных величин, на которые можно ссылаться по имени и индексу. Нередко размер массива (т. е. количество хранящихся в нѐм элементов) не может быть определѐн заранее. Объявлять массив заведомо большего размера довольно расточительно. В таком случае он объявляется пустым массивом. Массив, который в начале своего жизненного цикла не содержит ни одного элемента, называется динамическим. По мере выполнения программы в массив необходимо добавлять элементы, в которых будут храниться значения. Для этого используется оператор ReDim. Позднее количество элементов массива снова можно изменить этим же оператором. Однако все имевшиеся до этого в массиве значения будут утрачены. Чтобы сохранить их, используют ключевое слово Preserve. Константы обладают некоторым сходством с переменными: они тоже объявляются, и им присваиваются значения. Тем не менее в отличие от переменных значения констант остаются неизменными на протяжении всей программы. Одновременно с объявлением константы ей присваивается значение. Для этого используется ключевое слово Const. Например, Const Pi = 3.141593.
14
Управляющие структуры программы В любом языке программирования существуют управляющие конструкции, позволяющие задать порядок выполнения отдельных частей программы. К ним относятся ветвления и циклы. Ветвление управляющая структура, позволяющая выбрать, по какому пути продолжится выполнение программы. Операторы ветвления являются мощным инструментом программирования. Они позволяют выборочно выполнять различные фрагменты программы и соответствующим образом реагировать в ситуациях, возникающих при выполнении приложения. Чаще всего ветвление в Visual Basic реализуется посредством оператора If. В центре каждого оператора If находится условие выражение, принимающее два значения: True (истина) и False (ложь). Если условие истинно, выполнение программы продолжается по одной ветви, если ложно, то по другой. В зависимости от сложности действий, выполняемых в ветвлении, программная конструкция с оператором If может занимать одну строку или принимать вид блока. В обеих формах используются ключевые слова If, Then, Else. В простейшем виде ветвление представлено однострочным оператором If, который имеет вид: If условие Then действие 1 Else действие 2 Здесь условие это выражение, дающее результат True или False, а действие 1 и действие 2 операторы Visual Basic. Если условие истинно, действие 1 выполняется, а действие 2 опускается. Если условие ложно, то наоборот. Часть Else является необязательной, без неѐ однострочный оператор If принимает самый простой вид: If условие Then действие В этом случае действие выполняется, если условие истинно. В противном случае оператор If ничего не выполняет. Для того чтобы выбрать один из нескольких блоков программы, каждый из которых содержит несколько операторов, следует использовать условную управляющую структуру. Одна из еѐ форм выглядит так: If условие Then Блок, выполняющийся, когда условие истинно Else Блок, выполняющийся, когда условие ложно End If Ветвление, включающее проверку нескольких условий, реализуется с помощью ключевого слова ElseIf. В эту структуру может входить 15
любое количество блоков ElseIf, каждый со своим условием и набором операторов: If условие 1 Then Блок, выполняющийся, когда условие 1 истинно ElseIf условие 2 Then Блок, выполняющийся, когда условие 2 истинно ElseIf условие 3 Then Блок, выполняющийся, когда условие 3 истинно Else Блок, выполняющийся, когда все условия ложны End If В этой структуре Visual Basic последовательно проверяет истинность каждого из условий. Если встречается истинное условие, выполняется соответствующий фрагмент программы, а оставшаяся часть структуры пропускается. Вторая управляющая структура ветвления задается с помощью ключевых слов Select Case. Из всех блоков программного кода, входящих в структуру выбора, оператор Select Case выполняет один из блоков или не выполняет ни одного. Общий формат записи оператора Select Case выглядит так: Select Case контрольное выражение Case выражение 1 Блок, выполняющийся при соответствии выражения 1 значению контрольного выражения Case выражение 2 Блок, выполняющийся при соответствии выражения 2 значению контрольного выражения Может присутствовать любое количество блоков Case Case Else Блок, выполняющийся в случае несоответствия ни одного из выражений контрольному выражению End Select. Циклы применяются для многократного выполнения фрагмента программы до тех пор, пока не будет выполнено определенное условие или счѐтчик не достигнет заданного значения. Цикл состоит из двух основных компонентов: блока программного кода, который должен повторяться, и команды, управляющей продолжительностью повторений. Первое требование, выполняемое при написании цикла задать блок программного кода, который должен повторяться. Для этого в начале и в конце цикла ставятся соответствующие ключевые слова. В цикле Do это слова Do и Loop. Операторы, заключенные между Do и Loop, составляют тело цикла. Условное выражение, определяющее продолжительность цикла, может стоять либо при Do в начале цикла, либо при Loop в конце. Более того, в обоих случаях условие 16
вводится с одним из ключевых слов While или Until. Если необходимо, чтобы цикл выполнялся, пока условие истинно, применяется ключевое слово While. Цикл с условием Until прекращается, когда условие становится истинным. Синтаксис цикла Do приводится ниже: Do While условие Блок операторов, выполняемых в цикле до тех пор, пока условие остается истинным Loop Do Блок операторов, выполняемых в цикле до тех пор, пока условие не станет истинным Loop Until условие На поведение цикла существенно влияет место расположения условия. Если условие расположено вначале, его проверка происходит перед выполнением первой итерации. Если она оказывается неудачной, цикл пропускается и ни одна итерация не выполняется. Наоборот, в цикле с постусловием итерация всегда выполняется хотя бы один раз. После выполнения первой итерации происходит проверка условия продолжения цикла. В цикле For ключевыми словами являются For и Next. Этот цикл уместно применять, когда количество итераций известно. В синтаксис этого цикла также входит переменная счѐтчик цикла и диапазон принимаемых ею значений, а также шаг приращения счетчика: For счетчик = выражение1 То выражение2 Step выражение3 Блок операторов, повторяющийся, пока счетчик не пройдет значение от выражения1 до выражения2 с шагом выражение3 Next счетчик Здесь счетчик имя переменной, выражение1 и выражение2 нижний и верхний пределы диапазона значений переменной, выражение3 значение приращения переменной. Оператор Step может не указываться, в этом случае при каждой итерации счетчик будет увеличиваться на единицу. Пример. Определить разность широт (РШ), если известны разность меридиональных частей (РМЧ), разность долгот (РД) и координаты верхнего левого и нижнего правого углов навигационной карты. Судно находится в северных широтах, в восточном полушарии и следует курсами в NE четверти. РШ можно определить по формуле
17
РШ
РМЧ ОТШ . РД
В этой формуле ОТШ можно найти из выражения ОТШ
РД cos m ,
где в качестве начального значения средней широты нять среднюю широту карты, т. е. m
1
2
m
можно при-
2 ,
где 1, 2 – широта верхней и нижней рамок карты соответственно. По мере вычислений и уточнений разности широт текущей точки значение m также должно уточняться до тех пор, пока текущее значение РШ не будет отличаться от его предыдущего значения на заданную малую величину. Фрагмент кода программы, реализующий вышеприведѐнный алгоритм, выглядит следующим образом: Dim f1r As Single 'Широта верхнего левого угла рамки карты Dim dLt As Single 'Разность долгот левой рамки карты и текущей точки Dim fsrk As Single 'Средняя широта карты Dim OTt As Single 'Отшествие текущей точки Dim rmcht As Single 'Разность меридиональных частей текущей точки Dim dft As Single 'Текущая разность широт Dim dfti As Single 'Предыдущее значение текущей разности широт Do dfti = dft OTt = (dLt / 57.3) * Cos(fsrk / 57.3) OTt = OTt * 57.3 dft = (rmcht * OTt) / dLt Ft = f1r dft fsrk = (f1r + Ft) / 2 Loop Until Abs(dfti dft) <= 0.01
Вопросы для самоконтроля 1. Что такое Visual Basic? 2. Перечислите основные этапы программирования и дайте им характеристику. 3. В чѐм заключается структурное программирование? 18
2. РАЗРАБОТКА ФОРМ ПРИЛОЖЕНИЙ В VISUAL BASIC Способы ввода данных в программу и вывода результатов, разработка главной формы ЭКС «Кадет» Форма разрабатываемой программы-приложения должна обладать удобным для пользователя интерфейсом и обеспечить ввод начальных данных решаемой задачи и вывод полученных результатов. Ввод данных в программу может осуществляться различными путями. Самым простым способом ввода данных является заполнение переменных и массивов непосредственно в тексте программы. Однако этот способ имеет ряд существенных недостатков. Во-первых, если данных большое количество, то процесс их ввода будет достаточно трудоемким. Во-вторых, при изменении данных придется постоянно искать их в тексте программы. Но самый главный недостаток заключается в том, что после компиляции программы (перевода в машинные коды) изменить данные будет невозможно. Следующим способом ввода данных является ввод с помощью элементов управления. Так, например, можно выбрать один из пунктов раскрывающегося списка. Для этого список необходимо заполнить. Это можно сделать с помощью окна свойств, добавив нужные данные в свойство List списка. После ввода каждой строки необходимо нажимать клавишу Enter. Кроме того, список можно заполнить и программно с помощью метода Addltem, который служит для включения строк в список. Если числовые данные лежат в строго определенном диапазоне, можно вводить их с помощью полосы прокрутки. Для этого значение переменной приравнивается к свойству Value полосы прокрутки. Наиболее универсальным является ввод данных в текстовое окно (TextBox). Однако в этом случае необходимо ограничить возможности пользователя. Так, например, если в текстовое поле необходимо вводить только числовую информацию, то нужно сделать невозможным ввод текста. В противном случае в программе произойдѐт сбой. Наиболее удобным является хранение информации вне программы в отдельных файлах. Такими файлами могут быть ASCIIфайлы обыкновенные текстовые файлы, которые можно создать в любом текстовом редакторе. Они содержат данные произвольного типа и могут форматироваться в виде списка величин, разделенных запятыми или другими символами. Для открытия файла в Visual Basic используется оператор Open. 19
Его синтаксис имеет вид: Open имя файла For режим доступа As файловый номер Параметр имя файла определяет полное имя открываемого файла (содержащее путь к файлу). Visual Basic позволяет открыть несколько файлов одновременно. Для идентификации открываемого файла служит параметр файловый номер, который используется при выполнении файловых операций в программе. Параметр режим доступа может принимать следующие значения: Append (Дополнение), Input (Ввод), Output (Вывод), Random (Произвольный) и Binary (Двоичный). Ни один из этих режимов не имеет явных преимуществ перед остальными. Выбор режима зависит от формата данных файла. Режимы Input, Output и Append служат для последовательного доступа к данным. В этом случае символы считываются (или записываются) один за другим. Если используется режим Input, то файл открывается для чтения. Здесь чаще применяется оператор Line Input # построчный ввод (а также оператор Input # или функция Input). После символа # необходимо указывать файловый номер. Если используется режим Output или Append, то файл открывается для записи. Причем в случае применения Output все данные, хранившиеся до этого в файле, стираются, а в режиме Append новые записи добавляются в конец файла. Для записи в файл можно пользоваться оператором Print # (или Write #). Если выбран режим Random, то осуществляется произвольный доступ к данным. В отличие от последовательного доступа программа может перейти к любой записи (строке данных) и считать ее содержимое. Для этого в операторе Open необходимо указать длину записи в символах: Open имя файла For Random As файловый номер Len = длина записи. Режим Random открывает файл как для записи, так и для чтения. Для записи данных применяется оператор Put #, а для чтения оператор Get #. Синтаксис этих операторов следующий: Put (Get) # файловый номер, номер записи, содержимое Для оператора Put содержимое переменная, которая содержит эту запись, а для оператора Get переменная, в которую будет занесена эта запись. Если выбран режим Binary, то режим доступа двоичный. Так же, как и в произвольном режиме доступа, чтение данных производится 20
командой Get #, a запись командой Put #. Двоичный доступ отличается от произвольного тем, что нельзя случайным образом перемещаться по файлу и читать данные в любом месте. В двоичном режиме чтение данных происходит последовательно и в виде блоков. Количество байт, прочитанных из файла, равно размеру строки, в которую должны быть занесены прочитанные данные. После выполнения всех операций открытый файл необходимо закрыть оператором Close #. Чаще всего данные приходится загружать в программу из таблиц Microsoft Access, а также с других СУБД. В Visual Basic предусмотрено много возможностей для работы с базами данных формата Microsoft Access. Для работы с базами данных необязательно иметь установленную копию Access, так как в Visual Basic входит ядро Access Jet Engine. Microsoft Jet Engine представляет собой систему программ, управляющих базами данных. Разработка главной формы ЭКС «Кадет» Ввод данных в программу и вывод полученных результатов разберѐм на примере разработки главной формы учебной программы, условно названной электронной картографической системой «Кадет» (ЭКС «Кадет»). Задача заключается в том, чтобы разработать главную форму ЭКС «Кадет», с помощью которой можно было бы обеспечить расчѐт и вывод истинного курса судна (К), расстояния, пройденного судном на этом курсе (S), и времени плавания на курсе (T), после ввода координат пункта отхода (f1, L1) и прихода (f2, L2) и скорости судна (V). Судно находится в северных широтах, в восточном полушарии и следует курсами в NE четверти. Для решения поставленной задачи воспользуемся формулами, известными из аналитического (письменного) счисления, которые выводятся из локсодромического треугольника, изображѐнного на рис. 2. Отшествием (ОТШ) называется длина отрезка параллели между меридианами пункта отхода и прихода, S рассчитываемая по средней параллели и выраженная в морских милях. Рис. 2
21
ОТШ
S sin K ,
ОТШ
РД cos п .
Меридиональной частью (МЧ) называется длина отрезка меридиана от экватора до параллели заданной точки, выраженная в экваториальных милях. РМЧ
МЧ 2
МЧ 1 .
Разность долгот (РД) это меньшая из дуг экватора между меридианами точки отхода и прихода. РД
1,
2
или ОТШ , cos п
РД
где
п
промежуточное значение широты в интервале между
1
и
2.
На небольших расстояниях промежуточное значение широты допустимо принимать равным средней широте, т. е. п
Разность широт (РШ) точки отхода и прихода.
1
m
2
2.
это дуга меридиана между параллелями РШ
2
1,
или РШ
S cos K .
Курс судна рассчитывается по формуле
22
РД РМЧ
tgK
ОТШ . РШ
Примечание. Если нет ни ветра, ни течения, то в качестве курса К принимается истинный курс (ИК), если есть ветер – то ПУ . Течение учитывается отдельным курсом и в качестве К принимается ПУ . При совместном воздействии ветра и течения – путевой угол ПУc. Курс получается в четвертном счѐте. Плавание судна рассчитывается по формуле S
РШ sec К .
Для расчѐта времени плавания можно использовать формулу T
S /V
.
Главную форму ЭКС «Кадет» можно представить в виде, изображѐнном на рис. 3.
Рис. 3. Главная форма ЭКС «Кадет»
Для создания интерфейса, показанного на рис. 3, и написания кодов программы необходимо выполнить следующие шаги: 1. Запустить VB. 2. Увеличить размеры формы-заготовки, так чтобы на ней смогли разместиться нужные элементы. Это можно сделать с помощью мыши, растянув ею форму-заготовку за маркеры размера (прямоугольники по контуру). 23
3. Щѐлкнуть мышью на кнопке соответствующего элемента, расположенного на панели элементов. В нашем примере необходимы следующие элементы: Надписи (Label), Текстовые поля (TextBox), Кнопки (CommandButton). 4. Переместить указатель мыши на форму-заготовку и после того, как он примет вид перекрестия, нажать левую кнопку мыши и, не отпуская еѐ, выделить место для элемента. Кроме этого можно дважды щѐлкнуть по кнопке нужного элемента левой кнопкой мыши. Тогда он появится в центре формы-заготовки, и его можно будет перетащить мышью в нужное место и с помощью маркеров размеров изменить размер. Для перемещения элемента по форме-заготовке можно использовать также комбинацию клавиш Ctrl и клавиши управления курсором (клавиши со стрелками), а для изменения размеров – комбинацию клавиш Shift и клавиши управления курсором. 5. После того как все нужные элементы будут нанесены на форму-заготовку, необходимо изменить их свойства. Для этого активизируем нужный элемент (щѐлкаем по нему левой кнопкой мыши) и в окне свойств указываем новые свойства, предварительно удалив свойства по умолчанию. Например, щѐлкнув мышью по форме, находим свойство Caption и вместо свойства, указанного по умолчанию (Form1), вписываем ЭКС «Кадет». То же самое проделываем с другими элементами, кроме текстовых полей, указав соответствующее им свойство Caption. 6. Переходим к окну кодов, для этого можно щѐлкнуть мышью по кнопке перехода к окну кодов (см. первую лекцию) и в самом начале программы (секция General) объявляем переменные величины, так, как это показано на фрагменте Dim f1 As Single 'Широта пункта отхода Dim f2 As Single 'Широта пункта прихода Dim L1 As Single 'Долгота пункта отхода Dim L2 As Single 'Долгота пункта прихода Dim df As Single 'Разность широт Dim dL As Single 'Разность долгот Dim fsr As Single 'Средняя широта Dim OT As Single 'Отшествие Dim K As Single 'Истинный курс Dim S As Single 'Расстояние Dim V As Single 'Скорость Dim T As Single 'Время
24
7. Переходим к окну дизайнера формы, для этого можно щѐлкнуть мышью по соответствующей кнопке интегрированной среды разработки. Выбираем элемент, для которого требуется написать код (в данном случае это кнопка ПУСК), и дважды щѐлкаем по нему левой кнопкой мыши. В то место, где находится курсор после выполнения вышеуказанной команды (между ключевыми словами Private Sub Command1_Click() и End Sub), вписываем нижеприведѐнные коды: Private Sub Command1_Click() f1 = Text1.Text ‘Ввод исходных данных в соответствующее текстовое поле L1 = Text2.Text f2 = Text3.Text L2 = Text4.Text df = f2 f1 dL = L2 L1 fsr = (f1 + f2) / 2 OT = (dL / 57.3) * Cos(fsr / 57.3) ‘Углы под знаком тригонометрической функции вводятся в радианах K = OT / (df / 57.3) K = Atn(K) S = (((df / 57.3) * (1 / Cos(K))) * 57.3) * 60 K = K * 57.3 Text6.Text = K ‘Вывод результатов в соответствующее текстовое поле Text7.Text = S V = Text5.Text T=S/V Text8.Text = T End Sub
8. Пункт 7 повторяем для кнопки ВЫХОД, в качестве кодов указав только один оператор End: Private Sub Command2_Click() End End Sub
9. Запускаем программу, нажав кнопку START или клавишу F5. Примечание. В настоящем учебном пособии имена управляющих элементов заданы по умолчанию. Выбор информативных имѐн предлагается сделать самостоятельно.
Вопросы для самоконтроля 1. Какие способы ввода данных в программу и вывода результатов вы знаете? 2. Что такое переменные и постоянные величины? 3. Как задаются свойства элементов формы? 25
3. ВВЕДЕНИЕ В ТЕХНОЛОГИЮ РАЗРАБОТКИ РАСТРОВЫХ И ВЕКТОРНЫХ ЭЛЕКТРОННЫХ НАВИГАЦИОННЫХ КАРТ Растровые изображения, векторная графика, основные способы оцифровки навигационных карт, векторизация растровых изображений, растровые картографические дисплейные системы (РКДС), векторные навигационные карты, разработка растровых и векторных навигационных карт для ЭКС «Кадет» Растровая графика Электронные карты (ЭК) являются основным элементом электронных картографических систем (ЭКС). ЭК и ЭКС изучаются на старших курсах судоводительского факультета, когда курсантами накоплен достаточный багаж знаний для освоения этих сложных предметов [1], [2]. В настоящей лекции рассматриваются лишь некоторые основные вопросы технологии разработки растровых и векторных электронных навигационных карт, знание которых в дальнейшем поможет успешному освоению ЭК и ЭКС. Прежде всего, разберѐм, что такое растровое изображение и векторная графика. Растровым изображением называется изображение, представленное двумерным массивом точек (пикселей), каждая из которых имеет свой цвет. В монохромных, или бинарных растровых изображениях любая точка может иметь только один из двух цветов: чѐрный или белый. Эти точки называются растровыми точками. Каждый пиксел на растровом поле соседствует с восьмью другими, которые образуют растр. Растровые изображения могут быть получены сканированием оригинального изображения с бумаги, преобразованием видеоизображения специальным декодером или с помощью программы редактора растра. К форматам файлов растровой графики относятся: BMP, TIFF, GIF, JPEG и другие (этими сокращениями обычно указываются расширения файлов). Рассмотрим каждый из перечисленных форматов. Формат файла BMP (сокращенно от BitMaP) это «родной» формат растровой графики для Windows, поскольку он наиболее близко соответствует внутреннему формату Windows, в котором эта система хранит свои растровые массивы. Для имени файла, представленного в BMP-формате, чаще всего используется расширение BMP, хотя неко26
торые файлы имеют расширение RLE, означающее run length encoding (кодирование длины серий). Расширение RLE имени файла обычно указывает на то, что произведено сжатие растровой информации файла одним из двух способов сжатия RLE, которые допустимы для файлов BMP-формата. В файлах BMP информация о цвете каждого пиксела кодируется 1, 4, 8, 16 или 24 бит (бит/пиксел). Числом бит/пиксел, называемым также глубиной представления цвета, определяется максимальное число цветов в изображении. Изображение при глубине 1 бит/пиксел может иметь всего два цвета, а при глубине 24 бит/пиксел более 16 млн. различных цветов. TIFF (Tagged Image File Format, формат файлов изображения, снабженных тегами) один из самых сложных. Каждый файл начинается заголовком файла изображения (IFH), важнейший элемент которого каталог файла изображения (IFD, Image File Directory) служит указателем к структуре данных. IFD представляет собой таблицу для идентификации одной или нескольких порций данных переменной длины, называемых тегами. Теги хранят информацию об изображении. В спецификации формата файлов TIFF определено более 70 различных типов тегов. Например, тег одного типа хранит информацию о ширине изображения в пикселах, другого информацию о его высоте. В теге третьего типа хранится таблица цветов (при необходимости), а тег четвертого типа содержит сами данные растрового массива. Изображение, закодированное в файле TIFF, полностью определяется его тегами, и этот формат файла легко расширяется, поскольку для придания файлу дополнительных свойств достаточно лишь определить дополнительные типы тегов. Так что же делает TIFF столь сложным? С одной стороны, составление программ, различающих все типы тегов, это непростое дело. В большинстве программ для чтения файлов TIFF реализуется только подмножество тегов, именно поэтому созданный одной программой файл TIFF иногда не может быть прочитан другой. Кроме того, программы, создающие файлы TIFF, могут определять собственные типы тегов, имеющие смысл только для них. Программы чтения файлов TIFF могут пропускать непонятные для них теги, но всегда существует опасность, что это повлияет на внешний вид изображения. Еще одна сложность заключается в том, что файл TIFF может содержать несколько изображений, каждому из которых сопутствуют собственный IFD и набор тегов. Данные растрового массива в файле TIFF могут сжиматься с использованием любого из нескольких мето27
дов, поэтому в надежной программе для чтения файлов TIFF должны быть средства распаковки RLE, LZW (LempelZivWelch) и несколько других. Ситуацию еще больше ухудшает то обстоятельство, что пользование программами распаковки LZW должно осуществляться в соответствии с лицензионным соглашением с фирмой Unisys Corp. на право пользования алгоритмом LZW. В результате даже самые лучшие программы считывания TIFF нередко «сдаются», когда сталкиваются со сжатым по методу LZW изображением. Несмотря на свою сложность файловый формат TIFF остается одним из лучших для передачи растровых массивов с одной платформы на другую благодаря своей универсальности, позволяющей кодировать в двоичном виде практически любое изображение без потери его визуальных или каких-либо иных атрибутов. GIF (Graphics Interchange Format) формат обмена графическими данными (произносится «джиф»). Структура файла GIF зависит от версии GIF-спецификации, которой соответствует файл. В настоящее время используются две версии, GIF87a и GIF89a. Первая из них проще. Независимо от номера версии, файл GIF начинается с 13-байт заголовка, содержащего сигнатуру, которая идентифицирует этот файл в качестве GIF-файла, номер версии GIF и другую информацию. Если файл хранит всего одно изображение, вслед за заголовком обычно располагается общая таблица цветов, определяющая цвета изображения. Если в файле хранится несколько изображений (формат GIF, аналогично TIFF, позволяет кодировать в одном файле два и более изображений), то вместо общей таблицы цветов каждое изображение сопровождается локальной таблицей цветов. В файле GIF87a вслед за заголовком и общей таблицей цветов размещается изображение, которое может быть первым из нескольких располагаемых подряд изображений. Каждое изображение состоит из 10-байт описателя изображения, расположенной вслед за ним локальной таблицы цветов и битов растрового массива. Для повышения эффективности использования памяти данные растрового массива сжимаются с помощью алгоритма LZW. Файлы GIF89a имеют аналогичную структуру, но они могут содержать факультативные блоки расширения с дополнительной информацией о каждом изображении. В спецификации GIF89a определены четыре типа блоков расширения. Это блоки расширения для управления графикой, которые описывают, как изображение должно выводиться на экран (например, накладывается ли оно на предыдущее изображение подобно диапозитиву или просто заменяет его); блоки 28
расширения с обычным текстом, содержащие текст, отображаемый вместе с графикой; блоки расширения для комментария, содержащие комментарии в коде ASCII; и блоки расширения прикладных программ, в которых хранится информация, принадлежащая только создавшей этот файл программе. Блоки расширения могут находиться практически в любом месте файла после общей таблицы цветов. Основные достоинства GIF заключаются в широком распространении этого формата и его компактности. Но ему присущи два достаточно серьезных недостатка. Один из них состоит в том, что в изображениях, хранящихся в виде GIF-файла, не может быть использовано более 256 цветов. Второй заключается в том, что разработчики программ, использующие в них форматы GIF, должны иметь лицензионное соглашение с CompuServe и вносить плату за каждый экземпляр программы. Возникшее в результате этого запутанное юридическое положение пока тормозит внедрение программистами в свои графические программы средства для работы с файлами GIF. Формат файла JPEG (Joint Photographic Experts Group Объединенная экспертная группа по фотографии, произносится «джейпег») был разработан компанией C-Cube Microsystems как эффективный метод хранения изображений с большой глубиной цвета, например, получаемых при сканировании фотографий с многочисленными, едва уловимыми (а иногда неуловимыми) оттенками цвета. Самое большое отличие формата JPEG от других рассмотренных здесь форматов состоит в том, что в JPEG используется алгоритм сжатия с потерями (а не алгоритм без потерь) информации. Алгоритм сжатия без потерь так сохраняет информацию об изображении, что распакованное изображение в точности соответствует оригиналу. При сжатии с потерями приносится в жертву часть информации об изображении, чтобы достичь большего коэффициента сжатия. Распакованное изображение JPEG редко соответствует оригиналу абсолютно точно, но очень часто эти различия столь незначительны, что их едва можно (если вообще можно) обнаружить. Для работы с растровой графикой широко используется такая программа, как Paint. Распространенные форматы файлов растровой графики, рассмотренные выше, представлены в табл. 2.
29
Таблица 2 Распространѐнные форматы файлов растровой графики Формат
BMP
Максимальное число бит/пиксел 24
GIF
Максимальное число цветов
Максимальный размер изображения, пиксел
Методы сжатия
16777216
65535
65535
RLE*
8
256
65'535
65535
LZW
JPEG
24
16777216
65535
65535
JPEG
TIFF
24
16777216
всего 4294967295
LZW, RLE и другие*
* Сжатие выполняется факультативно. Векторная графика Векторная графика это изображения, состоящие из геометрических объектов, таких как прямые линии, дуги, окружности, эллипсы, прямоугольники. Достоинства векторной графики: изображения занимают относительно небольшой размер; векторные изображения могут быть легко масштабированы без потери качества. Недостатки векторной графики: векторная графика не позволяет получать изображения фотографического качества; векторные изображения иногда не распечатываются или выглядят на бумаге по-другому, чем на экране. Программы, работающие с векторной графикой: Corel Draw. Специализированная программа для создания картин и анимации в формате cdr. Macromedia Free Hand. Специализированная программа для создания векторных изображении в формате h10. Macromedia Flash. Программа, предназначенная для создания анимации специально для Интернет в формате swf и fla. Современная векторная графика это уже не просто геометрические фигуры, разбавленные текстом. Сегодня векторные программы 30
это мощные инструменты с возможностью создания фотореалистичных коллажей. Граница между векторной и растровой графикой постепенно исчезает. И то, что вчера возможно было только в растровых редакторах, сегодня доступно счастливым пользователям таких пакетов, как Adobe Illustrator 9, Expression 2, Deneba Canvas 8. В векторных программах гораздо удобнее работать с текстом, легче создавать геометрические фигуры, более простая и легкая работа с цветом. Векторные программы называют еще иллюстративными. Особенное удобство иллюстративных программ в том, что рисунок в них состоит из отдельных частей графических объектов. Поэтому такие программы еще называют «объектно-ориентированными» редакторами, в отличие от «пиксель-ориентированных» растровых редакторов. Такая объектность даѐт векторной графике необычайную гибкость в работе. В любой момент вы можете легко изменить любой компонент, добавить что-то новое или ввести новый текст (данные). Другая, немаловажная деталь это независимость иллюстраций от размеров физического носителя. Плакат или значок-логотип из одного и того же векторного рисунка получаются с неизменным качеством, в то время как растровые, или, как еще говорят, фотоизображения при всех операциях по изменению размера резко теряют свое качество. Из-за этой способности к масштабируемости векторные файлы зачастую занимают гораздо меньше места на жестком диске, чем аналогичные растровые файлы. В последнее время наметилась интересная тенденция. В связи с выросшими мощностями компьютеров многие растровые редакторы приобрели ряд функций для работы с векторной графикой. При этом ряд преимуществ векторной графики стал доступен и для пользователей программ типа Photoshop, Paint Shop Pro, Fireworks и т. д. Так, композиция размером на лист А4 при разрешении 300 dpi в формате Photoshop 6 при использовании только векторных объектов занимает всего 700 КБайт против 12 Мбайт в формате Photoshop 5! А с другой стороны, векторная графика по той же самой причине вплотную подошла к растровой по возможности создания фотореалистичных эффектов. Особых успехов в этом достигли пакеты Illustrator 9 от компании Adobe, Expression 2 от CreatureHouse и Canvas 8 от Deneba.
31
Основные способы оцифровки навигационных карт Для оцифровки бумажных навигационных карт применяются такие способы, как: цифровой ввод ввод по координатам, обработка результатов аэро- и космической фотосъемки, оцифровка с помощью дигитайзера и сканера. Рассмотрим перечисленные способы оцифровки. С цифровым вводом в той или иной мере имеют дело практически все пользователи ГИС. Наиболее ярким примером такого ввода является ввод регистрационных точек тиков. Как правило, они вводятся в реальных координатах по результатам съѐмки местности и используются для привязки всей последующей вводимой информации. Методы ввода могут быть разными. Например, ввод координат с клавиатуры или запись в обычный текстовый файл, набираемый по итогам топосъѐмки или выдаваемый какой-либо системой обработки результатов топосъѐмки. Самые совершенные и точные способы цифрового ввода получение цифровых данных на машинном носителе непосредственно в процессе топосъѐмки с помощью электронного теодолита и использование систем глобального позиционирования (GPS). Фотосъѐмка это очень удобный способ получить свежую и точную картографическую информацию на машинном носителе. Проводят аэрофотосъѐмку и обрабатывают еѐ результаты специализированные организации Главного управления геодезии и картографии. Методики, программно-технические средства всѐ это разработки Главного управления геодезии и картографии и военных. На выходе вы получаете картографическую информацию на твердом носителе. Как правило, все эти разработки выполнены на достаточно высоком уровне, в своѐм стандарте. Оцифровка карт с помощью дигитайзера это старый, проверенный и отлаженный способ ввода картографической информации. Дигитайзер представляет собой планшет для оцифровки (digitizing tablet, или по-русски координатограф). Обычно он включает внутреннюю координатную систему с высоким разрешением, поверх которой помещается карта или графическое изображение. Как правило, все развитые системы ГИС поддерживают работу с дигитайзером напрямую, либо имеют возможность импорта данных через AutoCAD, который имеет развитые средства поддержки работы с дигитайзером. Для эффективной оцифровки с помощью дигитайзера необходимо подготовить пространственные данные к обработке и приобрести опыт, чтобы улавливать различные аспекты информации. 32
Хорошей альтернативой традиционному способу оцифровки карт с помощью дигитайзера может стать сканирование карт с последующей векторизацией растровых изображений. Довольно широко распространено мнение, что это, в принципе, самый дешевый и эффективный способ оцифровки. На самом деле все не так однозначно. Здесь следует выделить две проблемы: выбор модели сканера; выбор метода векторизации. Методика работы может быть разной, в зависимости от типа сканера и избранного метода векторизации. Сканеры бывают ручные, планшетные и проекционные. Векторизовать полученные растры можно вручную, автоматически или полуавтоматически при помощи специализированных программ. Ручные сканеры мало пригодны для обработки картографической информации. Они обладают небольшим рабочим полем, что влечет за собой дополнительную проблему склейки различных частей одной карты. Кроме того, точность ввода с помощью ручного сканера зависит от состояния оператора. Планшетные сканеры это отлаженная технология, гарантированный результат, простота, удобство в работе. Но вместе с тем это жесткая привязка к формату сканера, высокая стоимость, растущая с увеличением формата. Обычный сканер формата А4 с приемлемой стоимостью малопригоден для обработки картографической информации, т. к. небольшое рабочее поле влечет за собой дополнительную проблему склейки различных частей одной карты. Профессиональные сканеры больших форматов стоят довольно дорого. Проекционные сканеры позволяют уйти от жесткой привязки к формату, но необходимость использования специальных объективов, средств юстировки, подбора освещения также резко увеличивают стоимость работ. Существуют программные средства оцифровки навигационных карт, например, пакет Didger, разработанный фирмой Golden Software. Didger служит для преобразования бумажных вариантов карт, графических изображений, аэрофотоснимков, а также другой графической напечатанной информации в цифровой формат. Это позволяет трансформировать различные графические объекты (точки, линии или площадные участки) в данные, которые могут использоваться в других приложениях. Didger это 32-разрядная программа оцифровки, работающая в среде Windows 95/NT и служащая для преобразования графической 33
печатной информации в цифровой формат, который может использоваться в других приложениях. Оцифровка карт выполняется либо с использованием планшета, либо на экране монитора с помощью мыши или даже клавиатуры. Разумеется, здесь точность ввода будет ограничена разрешающей способностью экрана, а снимать координаты можно будет только с уже имеющегося электронного изображения карты. Но для полноценного использования Didger при работе с бумажными носителями потребуется дигитайзер. Рекомендовать какой-либо способ оцифровки в качестве единственно верного практически невозможно по целому ряду причин, как чисто организационных, так и экономических. В каждом конкретном случае будет выбран способ или ряд способов в соответствии с имеющимися ресурсами и доступностью той или иной информации. Векторизация растровых изображений Векторизовать полученные растры можно вручную, автоматически или полуавтоматически с помощью специализированных программ, например, Easy Trace. Наиболее эффективна векторизация карт с однородной информацией например, рельеф в виде изолиний. При наличии хорошей основы в этом случае возможно применение программ автоматического распознавания типа VECTORY. Существуют также программы полуавтоматической векторизации и векторизации в режиме экранного дигитайзера. Все, что ранее было сказано о подготовке карт к оцифровке обычным дигитайзером, остается в силе и для них. Рассмотрим основные возможности программы-векторизатора Easy Trace. Easy Trace является пакетом программ для полуавтоматической интерактивной векторизации цветных и черно-белых растровых изображений, работающим под Windows 95/NT. Он предназначен для переноса графической информации с бумажных носителей в компьютер и ориентирован, прежде всего, на обработку картографических материалов. Для подготовки растровых изображений навигационных карт можно использовать непосредственно Easy Trace или дополнительный модуль для векторизатора Easy Trace пакет Rainbow. Перед сканированием необходимо разбить карту на отдельные растровые участки и поставить на них опорные точки (тики), которые должны быть общими для двух соседних растров. Для соединения 34
растров используется команда Сшивка из меню Редактирование. Данная команда предназначена для соединения растров по двум опорным точкам. Соединяемые растры могут иметь разный цветовой режим, но итоговый документ будет создан в цветовом режиме того растра, который был загружен первым. Основной режим при работе с пакетом Easy Trace режим векторизации, главное средство которого трассировка. Трассировкой называется процесс полуавтоматического или ручного прослеживания линии по еѐ изображению на растре. Инструментами векторизации в программе Easy Trace являются: трассировщик сплошных (пунктирных) линий; трассировщик ломаных линий; трассировщик ортогональных линий; трассировщик точечных линий; трассировщик заштрихованных областей; трассировщик залитых областей; прямоугольник; 3D полилиния. Управление всеми этими инструментами описано в соответствующих темах справочной системы Easy Trace. В зависимости от качества растра, плотности изображения и характера линии целесообразно применять ручной или полуавтоматический режим трассировки или их комбинацию. В любом случае процесс ввода полностью находится под контролем пользователя. В ручном режиме трассировки точки полилиний добавляются нажатием левой клавиши «мыши». В полуавтоматическом режиме в общем случае достаточно указать точку затравки в любом месте трассируемой полилинии. При этом рекомендуется использовать достаточно большое увеличение (2 : 1 и выше) и выбирать для точки затравки участок полилинии, на котором не предвидится осложнений для трассировщика. Последней, заключительной стадией работы пакета Easy Trace является операция Экспорт. В процессе векторизации Easy Trace хранит координаты и другие параметры оцифрованных объектов в своем внутреннем формате. Совместимость с практически любыми конечными системами (в основном, ГИС) достигается за счет поддержки экспорта в общепринятые обменные форматы. Для выполнения операции Экспорт необходимо вызвать данную команду и определить параметры экспорта в открывшемся диалого35
вом окне Экспорт, в котором выпадающий список позволяет выбрать один из следующих выходных форматов: DXF (обменный формат AutoCAD); DGN (обменный формат Intergraph Microstation); GEN (обменный формат ARC/INFO); MIF/MID (формат графических и атрибутивных данных пакета MapInfo); SHP (формат ArcView); ASC (формат WinGIS); TOP (формат CREDO); CSV (формат, определяемый пользователем). Помимо замены растровых изображений на векторные примитивы с последующей передачей их в ГИС (САПР), программа Easy Trace позволяет решать в процессе векторизации следующие задачи: минимизация числа векторных примитивов (две пересекающиеся линии разных слоев должны остаться двумя линиями, а не четырьмя, сошедшимися в одной точке); восстановление информации, частично утраченной или искаженной из-за износа бумажного носителя, дефектов чертежных инструментов, дефектов исполнения, погрешностей сканирования; «расслоение» изображения по его смысловому содержанию (например, карта может содержать слои рельефа, коммуникаций, границ, изобат и т. д.); введение атрибутивной информации для графического объекта (например, высота линии электропередач, литер навигационного знака и т. п.); построение корректной топологической структуры информации, соответствующей требованиям конечной ГИС или САПР. Таким образом, с помощью программ-векторизаторов можно создавать файлы векторных и атрибутивных данных, несущие в себе гораздо больше информации, чем исходный бумажный материал, и превышающие его по точности. Программы-векторизаторы, как правило, не предназначены для редактирования содержания растровых файлов (стирание, рисование) и достижения сходства между исходным растровым изображением и его векторным аналогом (штриховки, заливки, сложные топографические знаки). На рис. 4 изображѐн фрагмент проекта Easy Trace с участком береговой линии в растровом и векторном форматах, который позволяет 36
сравнить два изображения электронных карт: растровых и векторных.
Растровое изображение
Векторное изображение
Рис. 4. Растровое и векторное изображения в проекте Easy Trace
Растровые картографические дисплейные системы (РКДС) РКДС представляют собой растровые навигационные карты (РНК) и средства электронного позиционирования (определения места судна). Появление и развитие таких систем прошло почти незамеченным, тогда как все внимание мирового морского сообщества было сфокусировано на электронных картографических дисплейных информационных системах (ЭКДИС), в которых используются электронные навигационные карты (ЭНК) векторного формата. Однако в настоящее время по меньшей мере пять национальных гидрографических служб производят официально признанные РНК, общая продажа которых за период после 1995 года достигла 1,5 2 миллионов экземпляров, в том числе в США более 600 тыс. растровых карт, которые используются на всех видах транспорта. 37
В основе технологии производства РНК лежит сканирование обычных бумажных навигационных карт. В процессе сканирования создаются компьютерные цифровые файлы, содержащие визуальное изображение бумажной карты в виде матрицы точек (пикселей) различного цвета и плотности, называемое побитовым изображением. Разрешение выбирается таким, чтобы обеспечить качественное и достоверное изображение карты на мониторе компьютера. При этом однако возникают проблемы с объемом файлов, поскольку увеличение разрешения ведет к увеличению объема файла и соответственно требует увеличения памяти в геометрической прогрессии. Так, увеличение низкого разрешения в 75 dpi (пикселей на дюйм) до сравнительно высокого разрешения 300 dpi приводит к увеличению объема файла в 16 раз. Затем производится тщательная привязка цифровых файлов к соответствующему референц-эллипсоиду, с тем чтобы навигационное программное обеспечение могло определять географические координаты объектов на изображении карты. Полученные файлы дополняются метаданными, которые описывают карту, ее систему геодезических координат (нуль карты), проекцию и другую информацию о карте и цифровом файле. После этого специалисты-гидрографы обычно корректируют цифровые файлы, чтобы получить совершенную картографическую проекцию. При этом устраняются остаточные искажения, которые могли иметь место на цветовых оттисках или могли быть внесены в изображение при сканировании. На завершающем этапе результирующий массив цифровых данных транслируется в конкретный растровый формат, готовый для последующего распространения. Конечный продукт поступает на рынок в виде дискет или лазерных дисков. Векторные навигационные карты Векторное представление данных позволяет создать электронную карту как совокупность отдельных элементов и поэтому даѐт много дополнительных возможностей. Судоводитель может включать или выключать на экране отображение различных классов картографических объектов, подбирая удобную для данных условий плавания конфигурацию отображения карты. Можно установить слежение за любым ориентиром, установив на нем специальный маркер, включить тревожную сигнализацию при подходе к опасностям и т. п. Векторное представление данных позво38
ляет объединять картографическую информацию с информацией, которой нет на самой карте, вводить новые информационные слои, например: создавать прямо на карте предварительную прокладку, которую можно записать в виде отдельного файла для использования в дальнейшем; наносить на карту различные зоны, линии, надписи, условные знаки. При этом содержимое самой карты не изменяется; накладывать на карту данные о целях, получаемые от САРП, и т. п. Векторная форма представления данных имеет важное значение для последующей корректуры ЭК. Изменяется не вся карта, а лишь еѐ отдельные элементы. Карты фирмы TRANSAS MARINE включают в себя практически всю информацию о водной части бумажных карт и информацию о суше, которая важна с точки зрения навигации. Это более 100 слоѐв информации. Технология производства векторных карт имеет мощный математический аппарат по пересчѐту различных картографических проекций, компенсации деформации и дефектов бумажных карт, а также аппарат предварительной математической проверки карт, например, на присутствие нулевых глубин, пустых текстов, наличие глубин, больших или меньших диапазона безопасных глубин в этом месте. Точность нанесения объектов на ЭК оценивается в 0,2 мм. Разработка растровых и векторных навигационных карт для ЭКС «Кадет» Для примера рассмотрим по пунктам технологию разработки растровых и векторных навигационных карт для ЭКС «Кадет». 1. Готовим бумажную карту к сканированию. Для этого выбираем область сканирования, включающую в себя не менее двух растров формата А4 (предполагается, что будет использоваться сканер формата А4). Растры должны располагаться друг к другу так, чтобы на общем поле этих растров можно было указать две общие точки, принадлежащие обоим растрам. Отмечаем эти точки на карте. 2. Запускаем программу-векторизатор Easy Trace с помощью ярлыка на рабочем столе или через кнопку ПУСК и опцию Программы. 39
3. В меню Файл выбираем опцию Сканировать, сканируем подготовленные согласно пункту 1 растры бумажной карты в чѐрно-белом изображении и сохраняем их в своей рабочей папке. 4. В меню Файл выбираем опцию Открыть растр и открываем отсканированные растры. 5. Активизируем первый растр, входим в меню Редактирование и выбираем опцию Сшивка (эти команды можно выполнить через соответствующие кнопки на панели инструментов). 6. В появившемся окне указываем второй растр для соединения. Для этого можно воспользоваться выпадающим списком, где содержатся уже открытые или недавно использовавшиеся документы, или диалоговым окном Открыть растровый файл, которое открывается при нажатии кнопки справа от поля ввода имени файла (данное окно является стандартным для Windows окном выбора файлов). Когда второй растр выбран, можно нажать кнопку ДАЛЕЕ для перехода к следующему этапу. 7. В диалоговом окне Мастер соединения растров (шаг 2 из 3) необходимо выбрать пару проставляемых точек (по умолчанию активизирована первая пара). Затем наводим указатель мыши в виде перекрестия на первую общую точку, расположенную на первом растре, и щѐлкаем по ней левой кнопкой мыши. После этого переводим указатель-перекрестие мыши на второй растр, находим на нѐм также первую общую точку и, наведя на неѐ перекрестие, щѐлкаем по ней левой кнопкой мыши. Для контроля изображения проставляемых точек будут появляться на схеме фрагментов. Далее в диалоговом окне Мастер соединения растров (шаг 2 из 3) выбираем вторую пару точек (нажимаем на кнопку с цифрой «2») и выполняем те же самые команды, что и для первой пары точек. Когда две пары точек проставлены, можно нажать на кнопку ДАЛЕЕ. 8. Если всѐ сделано правильно, то в диалоговом окне Мастер соединения растров (шаг 3 из 3) появится сообщение, что программа закончила сшивку растров, и тогда можно нажать на кнопку ГОТОВО. 9. Третий растр, полученный путѐм сшивки из двух первых, сохраняем в своей рабочей папке. 40
10. Входим в меню Редактирование и выбираем опцию Инверсия. 11. Входим в меню Файл и выбираем опцию Новый проект. 12. В появившемся диалоговом окне Новый проект устанавливаем флажок напротив параметра Создать по растровому фрагменту и указываем третий растр, по фрагменту которого будет создаваться новый проект. Для этого так же, как и при выполнении пункта 6, можно воспользоваться выпадающим списком, где содержатся уже открытые или недавно использовавшиеся документы, или диалоговым окном Открыть растровый файл. Когда третий растр выбран, можно нажать кнопку ДАЛЕЕ для перехода к следующему этапу. 13. В появившемся окне диалога Свойства проекта на вкладке Координаты (устанавливается по умолчанию) в поле Разрешение DPI вписываем или выбираем из списка число 300. Если необходимо, то указываем и другие свойства. После этого нажимаем на кнопку ОК. 14. Если растровое изображение карты содержит несколько слоѐв (береговая черта, изобаты, горизонтали и т. п.), то для их создания необходимо войти в меню Проект и выбрать опцию Слои проекта. По умолчанию устанавливается один слой, обозначенный цифрой 0. 15. Через меню Инструменты и опцию Трассировка или с помощью кнопок на панели инструментов выбираем инструмент трассировки (для векторизации береговой линии и изобат подойдѐт инструмент Кривая). Затем переводим указатель мыши в виде косого крестика на векторизуемый элемент растрового изображения (например, на береговую линию) и щѐлкаем по нему левой кнопкой мыши. Для того чтобы завершить процесс трассировки, отжимаем кнопку с соответствующим инструментом трассировки или нажимаем на правую кнопку мыши и в появившемся контекстном меню щѐлкаем по кнопке ЗАВЕРШИТЬ И НАЧАТЬ (кнопка с изображением косой черты, наклонѐнной влево). Эту команду повторяем дважды. 16. После завершения трассировки входим в меню Файл и выбираем опцию Экспорт. В появившемся диалоговом окне Общие в списке поля Формат выбираем формат DXF – Формат AutoCAD или другой формат. 41
17. В поле Файл в диалоговом окне Сохранить как, которое открывается при нажатии кнопки справа от поля ввода имени файла, указываем имя сохраняемого файла и место для сохранения и нажимаем кнопку СОХРАНИТЬ. После этого в диалоговом окне Общие нажимаем на кнопку ДАЛЕЕ для перехода к следующему этапу. 18. В диалоговом окне Слои указываем экспортируемый слой (в нашем примере выбираем все слои) и нажимаем на кнопку ДАЛЕЕ. 19. В диалоговом окне Опции DXF указываем нужные параметры, если требуется, и нажимаем на кнопку ГОТОВО. 20. В окне Информация будут указаны параметры экспорта. Здесь же нажимаем на кнопку ОК. 21. Полученную векторную карту в формате DXF экспортируем из AutoCAD в формат BMP, для того чтобы для ведения на ней прокладки использовать графический редактор Paint и включаем в базу данных для использования в ЭКС «Кадет». Вопросы для самоконтроля 1. Дайте характеристику растровой и векторной графики. 2. Перечислите и охарактеризуйте основные способы оцифровки навигационных карт. 3. Что такое растровые карты? 4. Что такое векторные карты? 5. Перечислите и охарактеризуйте основные шаги при разработке растровых и векторных карт.
42
4. РАЗРАБОТКА СУДОВОГО ЭЛЕКТРОННОГО КАТАЛОГА Начало работы c Microsoft Access, объекты базы данных, окно базы данных, открытие базы данных, разработка судового электронного каталога навигационных карт для ЭКС «Кадет» Начало работы c Microsoft Access База данных – это совокупность данных, например, судовой каталог карт и книг. Реляционная база данных – это база данных, которая позволяет определять отношения между различными категориями данных, содержащимися в ней, например, между навигационными картами и датой их корректуры. Microsoft Access это гибкая программа, позволяющая работать как с простыми, так и со сложными базами данных. Следует добавить, что это реляционная база данных, то есть база данных, которая позволяет определять отношения между различными категориями информации (как, например, между данными о грузоотправителях и данными об их грузах). В результате можно пользоваться данными совместно. Чтобы запустить Microsoft Access, щелкните на кнопке ПУСК на панели задач и выполните команды: Программы, Microsoft Access. Когда Access начнет работу, на экране появится окно диалога (рис. 5).
Рис. 5. Начальное окно диалога Microsoft Access
43
Список имен, перечисленных в нижней части окна, будет меняться в зависимости от того, какие базы данных или проекты вы создали ранее. На данном этапе есть выбор: создать новую базу данных, полагаясь на свои знания, или воспользоваться помощью Мастера баз данных (Database Wizard); создать страницу доступа к данным (Data Access page), чтобы просматривать данные с помощью броузера Internet Explorer; создать проект Microsoft Access; открыть базу данных или проект, которые были созданы ранее. Объекты базы данных Microsoft Access Основу базы данных составляют хранящиеся в ней данные. Однако в базе данных Access есть и другие важные компоненты, которые принято называть объектами: Таблицы содержат данные. Запросы позволяют задавать условия для отбора данных и вносить изменения в данные. Формы позволяют просматривать и редактировать информацию. Страницы файлы в формате HTML (Hypertext Markup Language язык разметки гипертекста), позволяющие просматривать данные Access с помощью броузера Internet Explorer. Отчеты позволяют обобщать и распечатывать информацию. Макросы выполняют одну или несколько операций автоматически. Еще один тип объектов Microsoft Access это модули. Модуль это программа автоматизации и настройки функций базы данных, написанная на языке VB. В настоящем учебном пособии рассматривается, как создать и отладить базу данных, в основном, без применения программирования. Любая информация, которую вы заносите в базу данных Microsoft Access, сохраняется в таблице, показанной на рис. 6 в режиме Конструктора.
44
Рис. 6. Таблица в режиме Конструктора
Как видно на рис. 6, таблица состоит из строк и столбцов. На языке базы данных строки называются записями, а столбцы полями. В Microsoft Access существует множество различных способов создания таблицы. Эти способы рассматриваются в специальной литературе. Окно базы данных Microsoft Access В каждой базе данных Microsoft Access имеется окно базы данных, показанное на рис. 7.
Рис. 7. Окно базы данных
45
В этом окне находится панель ОБЪЕКТЫ (Objects) со следующими кнопками: ТАБЛИЦЫ (TABLES), ЗАПРОСЫ (QUERIES), ФОРМЫ (FORMS), ОТЧЕТЫ (REPORTS), СТРАНИЦЫ (PAGES), МАКРОСЫ (MACROS) и МОДУЛИ (MODULES). В окне базы данных также имеется своя панель инструментов со следующими кнопками: ОТКРЫТЬ (OPEN) для открытия объекта базы данных и работы с ним; ПРОСМОТР (PREVIEW) для открытия отчета в режиме предварительного просмотра (только для отчетов); ЗАПУСК (RUN) для запуска макроса или модуля (только для макросов и модулей); КОНСТРУКТОР (DESIGN) для изменения макета выбранного объекта; СОЗДАТЬ (NEW) для создания нового объекта базы данных. Открытие базы данных Microsoft Access Для открытия базы данных: в меню Файл (File) выберите имя файла в списке, расположенном прямо над командой Выход (Exit). Этот список содержит имена баз данных, с которыми вы недавно работали; щелкните два раза на значке базы данных в окне Проводника Windows; щелкните на кнопке ОТКРЫТЬ (OPEN) на панели инструментов; щелкните правой кнопкой мыши на строке заголовка или на серой области окна базы данных и выберите в контекстном меню пункт ОТКРЫТЬ (OPEN); выберите команду Файл (File), Открыть (Open); нажмите клавиши Ctrl+O. В результате любого из этих действий, кроме двух первых, на экране появится окно диалога Открытие файла базы данных (Open), изображенное на рис. 8.
46
Рис. 8. Окно диалога Открытие файла базы данных
В этом окне выберите базу данных, с которой будете работать. Чтобы выбрать базу данных в списке этого окна диалога, щѐлкните два раза на ее имени или, выделив имя, щелкните на кнопке ОТКРЫТЬ (OPEN). Для открытия базы данных, которую открывали недавно, в раскрывающемся списке Имя файла (File Name) найдите имя файла этой базы данных и щѐлкните по нему мышью. Для открытия базы данных имеются другие способы. Совместное использование технологий Microsoft Access и Visual Basic позволяет получить удобное для работы на морских судах приложение в виде электронного каталога, который позволяет добавлять к нему другие базы (например, базу данных судовой коллекции карт и книг). Разработка приложений в виде совокупности баз данных, таких как судовой электронный каталог, позволит штурману лучше ориентироваться в «океане» информации. В свою очередь это приведѐт к повышению уровня безопасности мореплавания и обеспечит эффективную производственную деятельность судна. Кроме того, судовой электронный каталог является важным звеном в актуальных и перспективных для программного обеспечения ЭВМ морских судов приложениях – АРМ судоводителей. 47
Разработка судового электронного каталога навигационных карт для ЭКС «Кадет» Разработка судового электронного каталога навигационных карт состоит из двух этапов. На первом этапе с помощью системы управления базами данных создаѐтся база данных, например, судовой коллекции карт. На втором этапе созданная база данных подключается к программе, написанной в VB (ЭКС «Кадет»). Создание базы данных судовой коллекции карт в Microsoft Access состоит из следующих шагов: 1. Запускаем Microsoft Access и выполняем команду Создать новую базу данных. Это можно сделать через меню Файл путѐм выбора следующих опций: Создать, База данных. 2. В появившемся окне указываем имя файла создаваемой базы данных (по умолчанию db1) и место для сохранения, например, Z:\Рабочие документы\Иванов\db1.mdb (файл с базой данных сохраняем в своей рабочей папке). 3. Выбираем опцию Создание таблицы в режиме конструктора. В раскрывшемся окне в первой клетке столбца, озаглавленного Имя поля, вводим имя поля создаваемой таблицы базы данных, например, Карты. В первой клетке столбца, озаглавленного Тип данных, с помощью контекстного меню, которое появляется при нажатии на правую кнопку мыши, выбираем тип данных таблицы. Для карт указываем Поле объекта OLE. 4. Закрываем окно конструктора таблиц с сохранением структуры данных таблицы (по умолчанию таблица называется Таблица 1). При этом на вопрос Создать ключевое поле сейчас? отвечаем положительно и возвращаемся к окну базы данных. 5. В окне базы данных двойным щелчком левой кнопки мыши по названию созданной таблицы раскрываем таблицу и щѐлкаем правой кнопкой мыши в пустой клетке, озаглавленной именем поля, введѐнного в режиме конструктора. 6. В появившемся контекстном меню выбираем опцию Добавить объект. 7. В раскрывшемся окне Вставка объекта выбираем опцию Создать из файла, ставим флажок в опции Связь и через кнопку ОБЗОР указываем файл с данными, который требу48
ется включить в базу данных, например, Японское море.bmp с изображением карты и нажимаем кнопку ОК, а затем закрываем Microsoft Access. 8. Для того чтобы открыть созданную таким путѐм базу данных в VB, необходимо сделать еѐ преобразование путѐм выполнения следующих команд меню Сервис: Служебные программы, Преобразовать базу данных, К предыдущей версии базы данных Access. Преобразованную базу данных необходимо сохранить и затем использовать еѐ для подключения к ЭКС «Кадет». При преобразовании на замечание о возможной потере данных отвечаем утвердительно. В результате выполненных действий в таблицу базы данных будет включѐн файл с навигационными картами, который открывается вместе с приложением, в котором этот файл был создан (Paint). Таким образом можно открыть растровое изображение карты одновременно с запуском графического редактора Paint, для того чтобы с его помощью выполнять прокладку на этой карте. Подключение разработанной базы данных к ЭКС «Кадет» выполняется следующим образом: 1. Запускаем VB и открываем программу ЭКС «Кадет». На главную форму этой программы наносим элементы OLE и Data, так, как это показано на рис. 9.
Элемент OLE
Элемент Data
Рис. 9. Элементы OLE и Data на главной форме ЭКС «Кадет»
49
2. Активизируем элемент Data и в окне свойств для этого элемента указываем следующие свойства: Connect – Access (задаѐтся по умолчанию); DatabaseName – путь к созданной базе данных и имя файла базы данных, например, Z:\Рабочие документы\Иванов\db1.mdb; RecordSource – имя созданной таблицы базы данных, которая выбирается в этом свойстве из списка, например, Таблица 1; 3. Активизируем элемент OLE и задаѐм для него следующие свойства: DataSource – имя (Name) базы данных (по умолчанию Data1); DataField – имя поля таблицы базы данных, в котором находятся данные, например, Карты; 4. Запускаем программу кнопкой START на панели инструментов или клавишей F5 и, если потребуется, делаем отладку программы. Вопросы для самоконтроля Что такое база данных? Что такое реляционная база данных? Как открыть базу данных Microsoft Access? Перечислите и охарактеризуйте объекты базы данных Microsoft Access. 5. Перечислите и охарактеризуйте основные шаги при разработке базы данных и еѐ подключении к VB. 1. 2. 3. 4.
50
5. ПРИВЯЗКА ИЗОБРАЖЕНИЯ НАВИГАЦИОННОЙ КАРТЫ К СИСТЕМЕ КООРДИНАТ ГРАФИЧЕСКОГО РЕДАКТОРА Использование графических редакторов для ведения навигационной прокладки; перевод географических координат текущей точки в прямоугольные координаты; перевод прямоугольных координат текущей точки в географические координаты; привязка растровых навигационных карт базы данных ЭКС «Кадет» к географической системе координат; код программы ЭКС «Кадет» Использование графических редакторов для ведения навигационной прокладки Графические редакторы, такие как Paint, Corel Draw, Autocad и другие, постоянно совершенствуясь, достигли такого уровня, при котором их возможности можно использовать в навигационных целях для ведения прокладки. Эти редакторы позволяют вести навигационную прокладку как на растровых, так и на векторных изображениях навигационных карт. Графические редакторы, например, Paint, доступны широкому кругу пользователей и позволяют использовать навигационные карты, оцифрованные и в случае необходимости векторизованные судоводителем, бумажный аналог или электронный вариант которых имеется в его распоряжении. Следует заметить, что изображения навигационных карт, используемые в графических редакторах, не должны заменять бумажные и лицензированные электронные навигационные карты, но их можно применять для планирования рейса при ведении навигационной предварительной прокладки, в учебном процессе и в случае, если на судне отсутствует необходимая бумажная или электронная навигационная карта. Однако при использовании графических редакторов в качестве средства для ведения навигационной прокладки возникает проблема, которая заключается в установлении соответствия географической системы координат навигационной карты прямоугольной системе координат графического редактора. Т. е. перевод географических координат , точки на навигационной карте в прямоугольные координаты X, Y точки на изображении навигационной карты, представленном в электронном виде, и наоборот (привязка изображения навигационной карты к системе координат графического редактора). 51
Перевод географических координат текущей точки в прямоугольные координаты Рассмотрим перевод географических координат текущей точки , в прямоугольные координаты xt и yt для северных широт и восточных долгот (для координат остальных наименований привязка осуществляется аналогичным образом, но с учѐтом знаков, так, как это принято в навигации). Составим следующую пропорцию: X
РД ;
xt
t,
( 1)
где X – абсцисса нижнего правого угла карты; РД – разность долгот нижнего правого и верхнего левого углов карты; xt – абсцисса текущей точки; t – разность долгот текущей точки и верхнего левого угла карты. Из составленной пропорции найдѐм xt
где k x
tkx ,
X . РД
Для нахождения ординаты текущей точки yt составим пропорцию Y
РМЧ ;
yt
РМЧ t ,
( 2)
где Y – ордината нижнего правого угла карты; РМЧ – разность меридиональных частей верхней и нижней рамок карты, рассчитываемая по формуле РМЧ
РД РШ , ОТШ
где РШ – разность широт верхней и нижней рамок карты; ОТШ – отшествие между верхним левым и правым нижним углами карты. 52
РМЧt – разность меридиональных частей верхней рамки карты и текущей точки, рассчитываемая по формуле t
РМЧ t
где точкой;
t
t
wt
,
– разность широт между верхней рамкой карты и текущей
wt – отшествие между верхним левым углом карты и текущей
точкой. Из пропорции (2) найдѐм
yt
Y РМЧ t
.
РМЧ
Обозначим Y РМЧ
ky,
тогда yt
РМЧ t k y .
( 4)
Перевод прямоугольных координат текущей точки в географические координаты Рассмотрим перевод прямоугольных координат xt и yt текущей точки в географические координаты , также для северных широт и восточных долгот. Для перевода ординаты yt в географическую широту воспользуемся составленной ранее пропорцией (2) и выражением (4), из которого определим РМЧ t
Разность широт
t
yt ky
.
найдѐм по формуле 53
t
РМЧ t wt
.
( 5)
t
В формуле (5) xt
t
kx
,
а wt можно найти из выражения wt
t
cos
m.
( 6)
В выражении (6) в качестве начального значения нять среднюю широту карты, т. е. в
m
где но.
в,
н
н
2
m
можно при-
,
– широта верхней и нижней рамок карты соответствен-
По мере итерационного уточнения широты текущей точки, которое в программном виде можно организовать в виде цикла, значение m также должно уточняться до тех пор, пока текущее значение t не будет отличаться от его предыдущего значения на заданную малую величину. Определив t и t, географические координаты текущей точки можно найти из выражений
где
л
t
в
t
л
t; t,
– долгота левой рамки карты.
Привязка растровых навигационных карт базы данных ЭКС «Кадет» к географической системе координат 54
Рассмотрим в качестве примера привязку растровых навигационных карт базы данных ЭКС «Кадет» к географической системе координат для северных широт и восточных долгот. Цель этого примера заключается в том, чтобы показать, каким образом можно подготовить растровые навигационные карты к ведению на них прокладки с помощью графического редактора Paint. Технология привязки состоит из следующих шагов: 1. На главную форму ЭКС «Кадет» нанести элементы, изображѐнные на рис. 10 под заголовком Привязка карты. В соответствии с рис. 10 указать их свойство Caption.
Рис. 10. Главная форма с элементами привязки карты
2. Переходим к окну кодов (см. вторую лекцию) и объявляем переменные величины, так, как это показано на нижеприведѐнном фрагменте: 'Привязка карты (объявление переменных величин) Dim f1r As Single 'Широта верхнего левого угла рамки карты Dim f2r As Single 'Широта нижнего правого угла рамки
55
Dim X1 As Single 'Координата X верхнего левого угла рамки Dim Y1 As Single 'Координата Y верхнего левого угла рамки Dim L1r As Single 'Долгота верхнего левого угла рамки Dim L2r As Single 'Долгота нижнего правого угла рамки Dim X2 As Single 'Координата X нижнего правого угла рамки Dim Y2 As Single 'Координата Y нижнего правого угла рамки Dim dLr As Single 'Разность долгот рамки Dim Kx As Single 'Коэффициент по оси x Dim Ky As Single 'Коэффициент по оси y Dim xt As Single 'Координата x текущей точки Dim yt As Single 'Координата y текущей точки Dim dLt As Single 'Разность долгот левой рамки карты и текущей точки Dim Lt As Single 'Долгота текущей точки Dim fsrk As Single 'Средняя широта карты Dim fsrt As Single 'Средняя широта текущей точки Dim OTr As Single 'Отшествие между верхним левым и нижним правым углами карты Dim OTt As Single 'Отшествие текущей точки Dim RMCHr As Single 'РМЧ рамки карты Dim rmcht As Single 'Разность меридиональных частей текущей точки Dim dfr As Single 'Разность широт верхней и нижней рамок карты Dim dft As Single 'Текущая разность широт Dim dfti As Single 'Предыдущее значение текущей разности широт Dim Ft As Single 'Широта текущей точки
3. Переходим к окну дизайнера форм и дважды щѐлкаем по элементу Option1. Перейдя к окну кодов, в место, в котором находится курсор, записываем следующие коды: 'Привязка карты (перевод географических координат в X и Y) Private Sub Option1_Click() f1r = Text13.Text L1r = Text14.Text X1 = Text15.Text Y1 = Text16.Text f2r = Text17.Text L2r = Text18.Text X2 = Text19.Text Y2 = Text20.Text Ft = Text11.Text Lt = Text12.Text dLr = L2r L1r Kx = (X2 X1) / dLr dLt = Lt L1r xt = dLt * Kx xt = X1 + xt Text9.Text = xt fsrk = (f1r + f2r) / 2
56
OTr = (dLr / 57.3) * Cos(fsrk / 57.3) OTr = OTr * 57.3 dfr = f1r f2r RMCHr = (dLr * dfr) / OTr Ky = (Y2 Y1) / RMCHr fsrt = (f1r + Ft) / 2 OTt = (dLt / 57.3) * Cos(fsrt / 57.3) OTt = OTt * 57.3 dft = f1r Ft rmcht = (dLt * dft) / OTt yt = rmcht * Ky yt = Y1 + yt Text10.Text = yt End Sub
4. Переходим к окну дизайнера форм и дважды щѐлкаем по элементу Option2. Перейдя к окну кодов, в место, в котором находится курсор, записываем следующие коды: 'Привязка карты (перевод X и Y в географические координаты Private Sub Option2_Click() f1r = Text13.Text L1r = Text14.Text X1 = Text15.Text Y1 = Text16.Text f2r = Text17.Text L2r = Text18.Text X2 = Text19.Text Y2 = Text20.Text xt = Text9.Text yt = Text10.Text xt = xt X1 yt = yt Y1 dLr = L2r L1r Kx = (X2 X1) / dLr dLt = xt / Kx Lt = L1r + dLt Text12.Text = Lt fsrk = (f1r + f2r) / 2 OTr = (dLr / 57.3) * Cos(fsrk / 57.3) OTr = OTr * 57.3 dfr = f1r f2r RMCHr = (dLr * dfr) / OTr Ky = (Y2 Y1) / RMCHr rmcht = yt / Ky Do dfti = dft OTt = (dLt / 57.3) * Cos(fsrk / 57.3)
57
OTt = OTt * 57.3 dft = (rmcht * OTt) / dLt Ft = f1r dft fsrk = (f1r + Ft) / 2 Loop Until Abs(dfti dft) <= 0.01 Text11.Text = Ft End Sub
5. Запускаем программу кнопкой START на панели инструментов или клавишей F5 и, если требуется, делаем еѐ отладку. На рис. 11 показаны главная форма ЭКС «Кадет» и фрагмент навигационной прокладки с расчѐтами, сделанный в графическом редакторе Paint, на навигационной карте Японского моря, предварительно отсканированной, а затем векторизованной в Easy Trace и сохранѐнной в формате JPEG. Для расчѐта ИК, S и времени плавания T использовались известные из навигации формулы, по которым составлена программа в Visual Basic.
58
Рис. 11. Графическое представление результатов работы программы ЭКС «Кадет»
Код программы-приложения ЭКС «Кадет» для северных широт и восточных долгот и плавании судна курсами в NE четверти приведѐн ниже. Код программы-приложения ЭКС «Кадет» 'Объявление переменных величин (разработка главной формы) Dim f1 As Single 'Широта пункта отхода Dim f2 As Single 'Широта пункта прихода Dim L1 As Single 'Долгота пункта отхода Dim L2 As Single 'Долгота пункта прихода Dim df As Single 'Разность широт Dim dL As Single 'Разность долгот Dim fsr As Single 'Средняя широта Dim OT As Single 'Отшествие Dim K As Single 'Истинный курс Dim S As Single 'Расстояние Dim V As Single 'Скорость Dim T As Single 'Время 'Объявление переменных величин (привязка карты) Dim f1r As Single 'Широта верхнего левого угла рамки карты Dim f2r As Single 'Широта нижнего правого угла рамки Dim X1 As Single 'Координата X верхнего левого угла рамки Dim Y1 As Single 'Координата Y верхнего левого угла рамки Dim L1r As Single 'Долгота верхнего левого угла рамки Dim L2r As Single 'Долгота нижнего правого угла рамки Dim X2 As Single 'Координата X нижнего правого угла рамки Dim Y2 As Single 'Координата Y нижнего правого угла рамки Dim dLr As Single 'Разность долгот рамки Dim Kx As Single 'Коэффициент по оси x Dim Ky As Single 'Коэффициент по оси y Dim xt As Single 'Координата x текущей точки Dim yt As Single 'Координата y текущей точки Dim dLt As Single 'Разность долгот левой рамки карты и текущей точки Dim Lt As Single 'Долгота текущей точки Dim fsrk As Single 'Средняя широта карты Dim fsrt As Single 'Средняя широта текущей точки Dim OTr As Single 'Отшествие между верхним левым и нижним правым углами карты Dim OTt As Single 'Отшествие текущей точки Dim RMCHr As Single 'РМЧ рамки карты Dim rmcht As Single 'Разность меридиональных частей текущей точки Dim dfr As Single 'Разность широт верхней и нижней рамок карты
59
Dim dft As Single 'Текущая разность широт Dim dfti As Single 'Предыдущее значение текущей разности широт Dim Ft As Single 'Широта текущей точки Private Sub Command1_Click() f1 = Text1.Text ‘Ввод исходных данных в соответствующее текстовое поле L1 = Text2.Text f2 = Text3.Text L2 = Text4.Text df = f2 f1 dL = L2 L1 fsr = (f1 + f2) / 2 OT = (dL / 57.3) * Cos(fsr / 57.3) ‘Углы под знаком тригонометрической функции вводятся в радианах K = OT / (df / 57.3) K = Atn(K) S = (((df / 57.3) * (1 / Cos(K))) * 57.3) * 60 K = K * 57.3 Text6.Text = K ‘Вывод результатов в соответствующее текстовое поле Text7.Text = S V = Text5.Text T=S/V Text8.Text = T End Sub Private Sub Command2_Click() End End Sub 'Привязка карты (перевод географических координат в X и Y) Private Sub Option1_Click() f1r = Text13.Text L1r = Text14.Text X1 = Text15.Text Y1 = Text16.Text f2r = Text17.Text L2r = Text18.Text X2 = Text19.Text Y2 = Text20.Text Ft = Text11.Text Lt = Text12.Text dLr = L2r L1r Kx = (X2 X1) / dLr dLt = Lt L1r xt = dLt * Kx xt = X1 + xt Text9.Text = xt
60
fsrk = (f1r + f2r) / 2 OTr = (dLr / 57.3) * Cos(fsrk / 57.3) OTr = OTr * 57.3 dfr = f1r f2r RMCHr = (dLr * dfr) / OTr Ky = (Y2 Y1) / RMCHr fsrt = (f1r + Ft) / 2 OTt = (dLt / 57.3) * Cos(fsrt / 57.3) OTt = OTt * 57.3 dft = f1r Ft rmcht = (dLt * dft) / OTt yt = rmcht * Ky yt = Y1 + yt Text10.Text = yt End Sub 'Привязка карты (перевод X и Y в географические координаты Private Sub Option2_Click() f1r = Text13.Text L1r = Text14.Text X1 = Text15.Text Y1 = Text16.Text f2r = Text17.Text L2r = Text18.Text X2 = Text19.Text Y2 = Text20.Text xt = Text9.Text yt = Text10.Text xt = xt X1 yt = yt Y1 dLr = L2r L1r Kx = (X2 X1) / dLr dLt = xt / Kx Lt = L1r + dLt Text12.Text = Lt fsrk = (f1r + f2r) / 2 OTr = (dLr / 57.3) * Cos(fsrk / 57.3) OTr = OTr * 57.3 dfr = f1r f2r RMCHr = (dLr * dfr) / OTr Ky = (Y2 Y1) / RMCHr rmcht = yt / Ky Do dfti = dft OTt = (dLt / 57.3) * Cos(fsrk / 57.3) OTt = OTt * 57.3 dft = (rmcht * OTt) / dLt
61
Ft = f1r dft fsrk = (f1r + Ft) / 2 Loop Until Abs(dfti Text11.Text = Ft End Sub
dft) <= 0.01
Таким образом, осуществив привязку изображения навигационной карты к системе координат графического редактора и используя формулы аналитического счисления, можно с помощью графического редактора планировать, например, маршрут движения судна. Вопросы для самоконтроля 1. Что такое привязка изображения навигационной карты к географической системе координат? 2. Перечислите графические редакторы, которые вы знаете, и дайте им характеристику. 3. Перечислите и охарактеризуйте основные шаги привязки.
62
6. WEB-ТЕХНОЛОГИЯ В СУДОВОЖДЕНИИ Основные понятия Web-технологии, «инструменты» Web-технологии, язык разметки гипертекста (HTML), структура HTML-документа, использование Web-технологии в судовождении Основные понятия Web-технологии Технология World Wide Web, или Web-технология была изобретена в начале 90-х годов и нашла широкое применение для информационного обмена. Основой Web-технологии является гипертекстовая информационная система «клиент – сервер». Web-технология – это технология навигации по гиперссылкам. Гиперссылка – это помеченная позиция в документе, указывающая на другие объекты в виде текста, картинки, а также Webстраницы. При активизации гиперссылки совершается переход на указанный объект. Гипертекстом называется документ, содержащий гиперссылки. Web-сайт – это упорядоченный набор текстовой и графической информации в виде web-страниц, связанных между собой гипертекстовыми ссылками, который располагается на Web-сервере и имеет своѐ имя (адрес). Основные «инструменты» Web-технологии Web-серверы. Компьютеры, исполняющие программы для обработки клиентских запросов к ресурсам. Один компьютер может одновременно исполнять роль множества серверов в зависимости от программного обеспечения, установленного на нѐм (Web-сервер, FTPсервер, файл-сервер и т. д.). Браузеры (прямое озвучивание английского названия программы Web-browser, броузеры, обозреватели). Клиентские программы, генерирующие запросы к ресурсам и направляющие их Webсерверам. К таким программам относятся: Internet Explorer, Netscape Navigator, Opera и др. Протокол передачи гипертекстовых файлов (HTTP, Hypertext Transfer Protocol). Это протокол прикладного уровня из набора TCP/IP, используемый серверами и браузерами для взаимодействия друг с другом. Протокол – это набор правил, по которым составляется программный код приложения. Язык разметки гипертекста (HTML, Hypertext Markup Lan63
guage). Это язык программирования, применяемый для создания Webстраниц. Язык разметки гипертекста (HTML) HTML давно уже не просто язык разметки гипертекста. Понятие HTML сейчас включает способы оформления Web-страниц, гипертекстовые редакторы, браузеры и т. п. Знать этот язык это значит представлять возможности в оформлении страниц, уметь делать сложные программы быстро и простыми способами, наконец, не только видеть и слепо копировать, но и понимать то, что сделано другими. Важно овладеть и художественными приѐмами оформления страниц. Путешествие по Word Wide Web это, с одной стороны, переход с одного Web-сервера на другой, но с другой переходы с одних Web-страниц с их картинками, гиперссылками, дизайном на другие. И чем привлекательней выполнена страничка, тем, как правило, дольше пользователь задержится на ней и получит больше полезной информации. Гипертекстовые технологии из-за географии их начальных разработок сохраняют англоязычную терминологию, что до некоторой степени создает трудности для пользователей, слабо владеющих английским языком. Однако язык HTML оперирует сотней терминов, что является вполне приемлемым для быстрого усвоения. В языке HTML приняты следующие термины и понятия. Элемент конструкция языка HTML, состоящая из одного или двух тегов, атрибутов и текста. Тег – оператор языка HTML, который подаѐт команду браузеру на выполнение какого-то действия, заданного пользователем при активации гиперссылки. Для выделения тегов используются угловые скобки, например,
. Перед конечным тегом ставится косая черта с наклоном влево. Большинство тегов – парные, например, Самый крупный заголовок
. Пример непарного тега:
. Теги могут иметь атрибуты, уточняющие действие тега, например, Выравнивание заголовка по центру
. Атрибут – параметр элемента. Он располагается внутри начального тега и принимает одно из возможных (стандартных или произвольных) значений. Символьные значения в отличие от числовых заключаются в кавычки (некоторые браузеры позволяют опускать кавычки). HTML-страница – документ, созданный в виде гипертекста на основе языка HTML. 64
Фрейм – область HTML-страницы, имеющая собственные полосы прокрутки. Код HTML – текст документа с включением элементов и атрибутов языка HTML. URL (Uniform Resourse Locator) – адрес конкретного объекта в Интернете. Он имеет вид http://www.название.домен/имя файла, где домен обозначение страны, региона или области деятельности и т. п. Апплет – программа, передаваемая на компьютер клиента и запускаемая при просмотре Web-страницы. Скрипт – программа, включенная в состав Web-страницы для расширения еѐ возможностей. Расширение – элемент, не входящий в стандартный набор элементов языка, но используемый на практике для расширения возможностей языка. Говоря о языке разметки гипертекста HTML, необходимо отметить некоторые его особенности. В языке реализован принцип, по которому не только допускается вложение элементов друг в друга, но вложение является краеугольным камнем построения кода HTML-документа. Вложение элементов может быть многократным. При этом не все элементы могут вкладываться друг в друга, а только разрешенные: для большинства элементов существуют группы элементов, которые могут в них вкладываться. Основной проблемой при описании и изучении HTML является определение набора атрибутов и их значений, допустимых для каждого элемента. Им будем уделять большое внимание. Недостающие описания будут компенсированы большим числом приведѐнных примеров. Структура HTML-документа <TITLE> Название Web-страницы Содержимое страницы, которое будет выводиться в окне браузера Для написания HTML-документа можно использовать любой текстовый редактор, например, Блокнот, или специальную программу, например, Macromedia Dreamweaver. Созданный документ необходи65
мо сохранить в виде файла с расширением htm. Начальная Webстраница, как правило, имеет следующее имя файла: index.html. HTML-документ может иметь исполняемые модули (скрипты, сценарии), которые запускают специальные программы-апплеты. Эти исполняемые модули создаются с помощью специальных программ, например, JavaScript, VBScript. Последнюю версию HTML-учебника можно найти на Web-сайте: www.citforum.ru. Использование Web-технологии в судовождении Имеются многочисленные примеры использования Webтехнологии в судовождении [20]. К ним относятся: Электронная система информации о водных путях ELWIS Министерства водного транспорта Германии (http://www.elwis.de); Web-сайт ГУНиО МО РФ (www.gunio.ru), где можно, например, получить электронные выпуски извещений мореплавателям (ЭВИМ) в формате PDF; Web-сайт РОССИЙСКОГО МОРСКОГО РЕГИСТРА СУДОХОДСТВА (http:// www.rs-head.spb.ru); Ресурс для обучения плавсостава и аттестации MARINEPROFTEST (http://www.marineproftest.narod.ru) и др. Вопросы для самоконтроля 1. Что такое Web-технология? 2. Перечислите «инструменты» Web-технологии и дайте им характеристику. 3. Перечислите и охарактеризуйте основные элементы языка HTML. 4. Какова структура HTML-документа? 5. Приведите примеры использования Web-технологии в судовождении.
66
7. ПРАКТИЧЕСКИЕ ЗАНЯТИЯ 7.1. Разработка главной формы ЭКС «Кадет» Цель: разработать главную форму ЭКС «Кадет», обеспечивающую расчет курса судна (К), расстояния, пройденного судном на этом курсе (S) и времени плавания (T) после ввода координат пункта отхода (f1, L1) и прихода (f2, L2) и скорости судна (V). Задание: 1. Изучить теоретические сведения, изложенные в лекции «Разработка форм приложений в Visual Basic». 2. Запустить Visual Basic и нанести на форму-заготовку следующие элементы: Надписи (Label), Текстовые поля (TextBox), Кнопки (CommandButton). Надписи указанных элементов должны соответствовать тем, которые указаны на рис. 3. 3. Перейти к окну кодов и в соответствии с расчѐтными формулами, приведѐнными во второй лекции, написать коды программы по нижеприведѐнным вариантам: Вариант № 1: Дано: Вариант № 2: Дано: Вариант № 3: Дано: Вариант № 4: Дано: Вариант № 5: Дано: Вариант № 6: Дано: Вариант № 7: Дано: Вариант № 8: Дано: Вариант № 9: Дано: Вариант № 10: Дано: Вариант № 11: Дано: Вариант № 12: Дано:
северная; восточная; курсы судна в SE четверти. северная; восточная; курсы судна в SW четверти. северная; восточная; курсы судна в NW четверти. северная; западная; курсы судна в NE четверти. северная; западная; курсы судна в SE четверти. северная; западная; курсы судна в SW четверти. северная; западная; курсы судна в NW четверти. южная; восточная; курсы судна в NE четверти. южная; восточная; курсы судна в SE четверти. южная; восточная; курсы судна в SW четверти. южная; восточная; курсы судна в NW четверти. южная; западная; курсы судна в NE четверти.
7.2. Создание растровых навигационных карт Цель: создать растровую навигационную карту. Задание: 1. Изучить теоретические сведения, изложенные в лекции «Введение в технологию разработки растровых и векторных электронных навигационных карт». 2. Запустить Easy Trace, отсканировать 2 растра фрагмента навигационной карты по нижеприведѐнным вариантам и сделать их сшивку: 67
Вариант № 1: навигационная карта № 60090. Вариант № 2: навигационная карта № 60091. Вариант № 3: навигационная карта № 60092. Вариант № 4: навигационная карта № 60100. Вариант № 5: навигационная карта № 60101. Вариант № 6: навигационная карта № 62071. Вариант № 7: навигационная карта № 68006. Вариант № 8: навигационная карта № 62082. Вариант № 9: навигационная карта № 62171. Вариант № 10: навигационная карта № 67351. Вариант № 11: навигационная карта № 62028. Вариант № 12: навигационная карта № 63002.
3. Результирующий 3-й растр сохранить в формате bmp. 7.3. Векторизация растровых навигационных карт Цель: создать векторную навигационную карту. Задание: 1. Запустить Easy Trace и командой Цветовой режим в меню Редактирование выполнить цветоразделение векторизуемого растра (из файла формата bmp создать монохромный растр). Для векторизации использовать растр, подготовленный по варианту подраздела 7.2. 2. Создать новый проект. 3. Выполнить трассировку береговой линии и изобат в монохромном растре с помощью трассировщика сплошных (пунктирных) линий. 4. Полученное векторное изображение экспортировать в формат DXF. 5. Полученный файл открыть в AutoCAD и экспортировать в формат bmp командой Export меню File. 7.4. Разработка судового электронного каталога навигационных карт для ЭКС «Кадет» Цель: разработать базу данных навигационных карт для ЭКС «Кадет». Задание: 1. Изучить теоретические сведения и разобрать пример, приведѐнный в лекции «Разработка судового электронного каталога». 68
2. Создать базу данных судовой коллекции карт в Microsoft Access, включив в неѐ файл с фрагментом карты, полученном при выполнении пункта 5 подраздела 7.3. 3. Подключить базу данных к программе ЭКС «Кадет». 7.5. Привязка растровых навигационных карт к географической системе координат Цель: подготовить растровые навигационные карты из созданной базы данных к ведению на них прокладки. Задание: 1. Изучить теоретические сведения и разобрать пример, приведѐнный в лекции «Привязка изображения навигационной карты к системе координат графического редактора». 2. Используя образец формы, приведѐнной в этой же лекции на рис. 10, нанести элементы на главную форму ЭКС «Кадет» для привязки растровых навигационных карт к географической системе координат. 3. Написать код программы по варианту подраздела 7.1. 7.6. Отладка программы ЭКС «Кадет» Цель: привести в рабочее состояние программу-приложение ЭКС «Кадет» и решить контрольный пример. Задание: 1. Доработать интерфейс главной формы. 2. Решить контрольный пример и устранить ошибки кодов. 3. Откомпилировать программу через меню Файл и опцию Создать Проект exe. 7.7. Разработка Web-страницы Цель: разработать Web-страницу, включающую сведения о программе ЭКС «Кадет». Задание: 1. Изучить теоретические сведения, приведѐнные в лекции «Web-технология в судовождении». 2. Сделать заголовок Web-страницы с указанием еѐ названия и учебного заведения. 3. Вставить логотип (рисунок на тему судовождения). 69
4. Сделать ссылку на программу ЭКС «Кадет» и дать еѐ краткое описание. 5. Привести сведения об авторе. 7.8. Зачѐтное занятие На зачѐтном занятии необходимо показать умение программировать, создавать растровые и векторные навигационные карты, работать с базами данных и ответить на нижеприведѐнные вопросы. Вопросы на зачѐт по дисциплине «Компьютерные технологии в судовождении» 1. Требования ТБ при работе на ПЭВМ в судовых условиях. 2. Санитарные правила и нормы при работе на ПЭВМ. 3. Основные положения Руководства по использованию компьютеров на судах. 4. Требования Регистра РФ к компьютерам и компьютерным системам. 5. Язык программирования Visual Basic. 6. База данных Microsoft Access. 7. Программа-векторизатор Easy Trace. 8. Растровая графика. 9. Векторная графика. 10. Растровые навигационные карты. 11. Векторные навигационные карты. 12. Способы оцифровки навигационных карт. 13. Привязка изображения навигационной карты к системе координат графического редактора. 14. Использование графических редакторов для ведения навигационной прокладки. 15. Web-технология. 16. Использование Web-технологии в судовождении. 17. Язык HTML. 18. Структура HTML-документа.
70
ПРИЛОЖЕНИЯ Приложение 1 Встроенные математические и тригонометрические функции АВS (числовое выражение) присваивает абсолютное значение числовому выражению. ЕХР (числовое выражение) натуральный логарифм числового выражения. SQR (числовое выражение) корень квадратный из числового выражения. SIN (числовое выражение) вычисляет значение синуса от угла, заданного в радианах. СОS (числовое выражение) вычисляет значение косинуса от угла, заданного в радианах. ТАN (числовое выражение) вычисляет значение тангенса от угла, заданного в радианах. АТN (числовое выражение) вычисляет значение арктангенса в радианах от числового выражения. Полезное дополнение для судоводителя к встроенным функциям: А = SIN(X), В = COS(Y), тогда: X = ATN(A/SQR( A*A+1)) формула для вычисления ARCSIN(X); Y = PI/2 АТN(В/SQR( B*B+1)) формула для вычисления ARCCOS(X).
71
Приложение 2 Требования Регистра РФ к компьютерам и компьютерным системам 1. Область распространения 1.1.1. Настоящие требования распространяются на компьютеры и компьютерные системы, применяемые в установках и системах, подлежащих надзору Регистра, а также на компьютеры, не применяемые в указанных установках и системах, но с помощью которых выполняются расчеты по обеспечению безопасности судна. 1.1.2. Случаи применения компьютеров и компьютерных систем, не содержащиеся в настоящих требованиях, являются предметом специального рассмотрения Регистром. 1.2. Определения и пояснения Компьютер техническая система, состоящая из процессора с основным программным обеспечением, запоминающего устройства, устройства ввода и вывода данных, систем шин и энергоснабжения. Компьютерная система система, состоящая из одного или нескольких компьютеров, включая периферийные устройства. Периферийное устройство устройство для ввода или вывода информации в компьютер или из компьютера. ОЗУ (оперативное запоминающее устройство) запоминающее устройство считывания и записи, теряющее свои данные при отключении электропитания. ПЗУ (постоянное запоминающее устройство) запоминающее устройство для хранения постоянных данных, которые программируются изготовителем, сохраняющее свои данные при отключении электропитания. Автономный режим работа компьютера без непосредственного воздействия на другие устройства и установки. Управляющий режим работа компьютера с непосредственным воздействием на другие устройства и установки. 1.3. Объем надзора Общие положения о надзоре и освидетельствовании содержатся в Общих положениях о надзорной деятельности. 72
1.3.1. Надзору при изготовлении подлежат: 1) компьютеры, 2) периферийные устройства, 3) модули сопряжения (интейфейс). 1.3.2. Надзору на судне подлежат указанные в настоящей части компьютеры и компьютерные системы автоматизации устройств, механизмов и систем, поднадзорных Регистру и перечисленных в соответствующих частях Правил. 1.4. Техническая документация До начала надзора за изготовлением применяемых компьютеров и компьютерных систем завод-изготовитель должен представить следующую документацию: механическую конструкцию; техническое описание с принципиальной схемой; данные о входе и выходе и о возможности сопряжения; описание системы самоконтроля и поведения в случае неисправностей; принципиальную схему устройства питания; алгоритм управления механизмами (программа пользователя); инструкцию по обслуживанию и уходу; программу испытаний; сведения о надежности системы и ее устойчивости к судовым условиям эксплуатации; перечень запасных частей. 1.5. Требования к конструкции компьютеров 1.5.1. Компьютеры и периферийные устройства должны надежно работать в условиях эксплуатации, указанных в настоящей части, если в соответствующих частях Правил для механизмов и установок, обслуживаемых ими, не указаны другие условия эксплуатации. 1.5.2. Компьютеры, не являющиеся конструктивной частью другой установки, а также периферийные устройства должны иметь степень защиты в соответствии с частью Х1 «Электрическое оборудование», но не ниже IP 22. 1.5.3. Конструкция компьютеров должна соответствовать требованиям, указанным в настоящей части. 73
1.6. Общие технические требования 1.6.1. Требования главы действительны независимо от предусмотренного режима работы компьютера (автономного или управляющего). 1.6.2. Должна быть исключена возможность внесения изменений в программы персоналом судна. 1.6.3. Для оборудованных компьютерами установок изменения программ пользователя, оказывающие влияние на выполнение функций установки, следует считать конструктивными изменениями и сообщать о них Регистру. 1.6.4. Любое отключение периферийных устройств от вычислительной машины не должно вызывать бесконтрольного выполнения команд, могущих привести к критическим состояниям. 1.6.5. При вводе данных оператором должен быть обеспечен контроль ввода (например, дисплей, печатающее устройство). 1.6.6. Ошибочные действия оператора не должны вызывать повреждения компьютера, стирания или изменения информации в ОЗУ и ПЗУ. 1.6.7. Программы и данные, необходимые для безошибочной работы установки, следует хранить в постоянном запоминающем устройстве или во внешних запоминающих устройствах. 1.6.8. Если при эксплуатации вычислительной техники необходима принудительная вентиляция или кондиционирование, то должна быть предусмотрена индикация или сигнализация по превышению допустимого предельного значения климатических параметров. 1.6.9. Изменение цвета при использовании цветных мониторов не должно влиять на достоверность передаваемой информации. 1.7. Проверка функционирования, самоконтроль и сигнализация о неисправностях 1.7.1. Должна быть обеспечена возможность проверки всех функций компьютера с помощью специальных программ. 1.7.2. Повреждение компьютера или перерыв в выполнении его функций должны сопровождаться сигналами независимой аварийнопредупредительной системы с одновременным указанием места (блока) повреждения или этапа выполнения функций. 1.7.3. Каждый компьютер должен быть обеспечен самоконтролем. 74
Самоконтроль должен охватывать также периферийные устройства. Самоконтроль следует осуществлять с помощью соответствующих тест-программ (например, проверка на чѐтность, проверка продолжительности и частоты цикла). 1.7.4. Неисправности в компьютерах и компьютерных системах не должны приводить к аварийному состоянию обслуживаемой установки или всего судна в целом. 1.7.5. Отказ периферийных устройств не должен оказывать влияния на принцип действия остального периферийного оборудования вычислительной системы. Должна быть предусмотрена сигнализация о неисправностях. 1.7.6. В случае отказов в электропитании должен быть предусмотрен беспрерывный переход к батарейному питанию ОЗУ. 1.8. Дополнительные требования к компьютерам для управления и регулирования судовых установок 1.8.1. При возникновении неисправностей в установках, связанных с компьютерами или компьютерными системами, вычислительное устройство должно регулировать их и подавать сигнал. 1.8.2. Мультикомпьютерные системы автоматизации должны иметь такую структуру, чтобы при возникновении неисправностей в отдельных компьютерах или в линиях связи между ними было обеспечено резервирование выполнения всех управляющих функций (посредством компьютеров или обычных средств автоматизации). 1.8.3. Если компьютерная система может выполнять одновременно более чем одну функциональную программу, следует предусмотреть координирование выполнения этих программ. Порядок приоритета программ (уровней программ) по обеспечению безопасности эксплуатации следует определить в зависимости от их возможностей. 1.8.4. Использование функциональных блоков одной системы с компьютером в качестве резерва для другой системы с компьютером в каждом конкретном случае подлежит особому согласованию с Регистром. 1.8.5. Компьютеры или компьютерные системы могут использоваться в системах защиты только в том случае, если при отказе компьютера будет обеспечено автоматическое функционирование системы защиты традиционным способом. При наличии резервирования компьютеров это требование не выполняется. 1.8.6. Компьютеры, применяемые для управления процессами 75
и/или регулирования работы судовых установок, должны функционировать без задержки и выполнять функции контроля и защиты в реальном масштабе времени. 1.8.7. Периферийные устройства, необходимые для функционирования системы, при отказе должны заменяться резервными устройствами с такими же условиями присоединения. 1.8.8. Если применяются экраны для изображения процессов, появляющийся при сигнализации о неисправностях в установках и системах сигнал мгновенно должен быть представлен на экране. При этом не допускается разделения квитированных и неквитированных сигналов только изменением цвета. 1.8.9. Если для визуальной сигнализации аварийных состояний применяется экранный дисплей, то должен быть дополнительно предусмотрен дублирующий дисплей или устройство представления указанной сигнализации в иной форме (лампочки, светодиоды и т. п.). 1.9. Установка компьютеров и компьютерных систем на судах 1.9.1. Пространственное размещение устройств ввода и вывода данных должно обеспечить возможность нормального обслуживания. В компьютерных системах с постоянным резервированием трассы соединения должны дублироваться и размещаться как можно дальше друг от друга. 1.9.2. При установке и конструктивном исполнении вычислительной техники следует обеспечить электромагнитную совместимость между системой вычислительных машин в сборе и остальными системами на месте установки. В случае необходимости следует учесть специальные нормативнотехнические документы завода-изготовителя системы вычислительных машин или установки и конечного производителя, учитывающие специфические условия эксплуатации. Меры для обеспечения электромагнитной совместимости следует согласовать с Регистром.
76
БИБЛИОГРАФИЧЕСКИЙ СПИСОК 1. Корректура морских электронных карт: Метод. указания /Сост. В. М. Лобастов. – Владивосток: ДВГМА, 1998. – 17 с. 2. Лобастов В. М. Управление работой ЭКС «Maptech Proffesional 3.0»: Учеб. пособие. – Владивосток: ДВГМА, 2000. – 23 с. 3. Морской Регистр Судоходства. Правила классификации и постройки морских судов. – 7-е. изд. – СПб., 1995. – 442 с. 4. Баранов Ю. К., Гаврюк М. И., Логиновский В. А., Песков Ю. А. Навигация: Учеб. для вузов. – 3-е изд., перераб. и доп. – СПб.: Лань, 1997. – 512 с. 5. Visual Basic 6.0: Пер. с англ. – СПб.: БХВ-Петербург, 2004. – 992 с. 6. Робинсон С. Microsoft Access 2000: учебный курс. – СПб: Питер, 2001. – 512 с. 7. Габрюк В. И. Компьютерные технологии в промышленном рыболовстве. – М.: Колос, 1995. – 544 с. 8. Зельднер Г. A. Microsoft Basic professional development system 7.1. – M.: Изд-во ABF, 1994. – 400 c. 9. Михайлов И. Ю., Степанников В. М. Современный Basic для IBM PC. Среда, язык, программирование. – М.: Изд-во МАИ, 1993. – 288 с. 10. Очков В. Ф., Рахаев М. А. Этюды на языках Qbasic, QuickBasic, Basic Compiler. – M: Финансы и статистика, 1995. – 368 с. 11. Кренкель Т. Э., Коган А.Г., Тараторим A. M. Персональные ЭВМ в инженерной практике. – М.: Радио и связь, 1989. – 336 с. 12. Светозарова Г. И., Мельников А. А., Козловский А. В. Практикум по программированию на языке Бейсик: Учеб. пособие для вузов. – М.: Наука, 1988. – 368 с. 13. Лапшин Е. Графика для IBM PC. – М.: СОЛОН, 1995. – 228 с. 14. Ваулина Е. Ю. Толковый словарь пользователя PC. – СПб.: Атон, 1998. – 176 с. 15. Справочник программиста и пользователя / Под ред. А. Г. Шевчика, Т. В. Демьянкова. – М.: Кварта, 1993. – 128 с. 16. Браун С. Visual Basic 6: учебный курс. – СПб.: Питер, – 576 с. 17. James D. Murray and William van Ryper, Encyclopedia of Graphics File Formats, Second Edition (O'Reilly & Associates, 1996). 18. Steve Rimmer, Windows Bitmapped Graphics (Windcrest /McGraw-Hill, 1993). 19. Семѐнов В. С. Язык HTML: Учеб. пособие. – Владивосток: ДВГМА, 2000. – 38 с. 20. Фадюшин С. Г. Компьютерные технологии в судовождении: Учеб. пособие. Ч. 1. – Владивосток: Мор. гос. ун-т, 2004. – 77 с. 77
Оглавление ПРЕДИСЛОВИЕ ….…………………...……………………………... 1. ИНТЕГРИРОВАННАЯ СРЕДА РАЗРАБОТКИ ПРИЛОЖЕНИЙ VISUAL BASIC ……………………………………………………. 2. РАЗРАБОТКА ФОРМ ПРИЛОЖЕНИЙ В VISUAL BASIC ……. 3. ВВЕДЕНИЕ В ТЕХНОЛОГИЮ РАЗРАБОТКИ РАСТРОВЫХ И ВЕКТОРНЫХ ЭЛЕКТРОННЫХ НАВИГАЦИОННЫХ КАРТ 4. РАЗРАБОТКА СУДОВОГО ЭЛЕКТРОННОГО КАТАЛОГА ..... 5. ПРИВЯЗКА ИЗОБРАЖЕНИЯ НАВИГАЦИОННОЙ КАРТЫ К СИСТЕМЕ КООРДИНАТ ГРАФИЧЕСКОГО РЕДАКТОРА ….. 6. WEB-ТЕХНОЛОГИЯ В СУДОВОЖДЕНИИ …………………… 7. ПРАКТИЧЕСКИЕ ЗАНЯТИЯ ……………………………………. 7.1. Разработка главной формы ЭКС «Кадет» …………………... 7.2. Создание растровых навигационных карт ………………….. 7.3. Векторизация растровых навигационных карт …………….. 7.4. Разработка судового электронного каталога навигационных карт для ЭКС «Кадет» ……………………………………….. 7.5. Привязка растровых навигационных карт к географической системе координат ……………………………………............ 7.6. Отладка программы ЭКС «Кадет» …………………………... 7.7. Разработка Web-страницы ………………………...……......... 7.8. Зачѐтное занятие ……………………………………………… ПРИЛОЖЕНИЯ ……………………………………………………… Приложение 1. Встроенные математические и тригонометрические функции …………………………………………………………. Приложение 2. Требования Регистра РФ к компьютерам и компьютерным системам …………………………………………………... БИБЛИОГРАФИЧЕСКИЙ СПИСОК ………………………….........
78
3 6 19 26 43 51 63 67 67 67 68 68 69 69 69 70 71 71 72 77
Позиция № 104 в плане издания учебной литературы МГУ на 2005 г.
Сергей Геннадьевич Фадюшин КОМПЬЮТЕРНЫЕ ТЕХНОЛОГИИ В СУДОВОЖДЕНИИ. ЧАСТЬ 2 Учебное пособие 4,9 уч.-изд. л. Формат 60 84 1/16 Тираж 150 экз. Заказ № Отпечатано в типографии ИПК МГУ им. адм. Г. И. Невельского Владивосток, 59, ул. Верхнепортовая, 50а
79