
- •В.В.Ломтадзе,
- •Л.П.Шишкина
- •Информатика
- •Издание третье, переработанное
- •Содержание
- •1. Информационные технологии. Понятие информации. Информационное общество. Информационные революции. Поколения компьютерных систем
- •2. Вводные сведения о современных программных средствах
- •2.1. Особенности современных программных средств
- •2.2. Основные элементы управления в интерфейсе программных продуктов
- •2.3. Типовые диалоги в интерфейсе программных продуктов
- •3. Кодирование и хранение информации. Системы счисления
- •Запись содержимого полубайта в разных системах счисления
- •4. Алгоритмы. Роль алгоритмизации в решении задач и формализации знаний. Информационные ресурсы
- •5. Технические средства информационных технологий
- •5.1. Основные блоки персонального компьютера
- •С истемная
- •Генератор тактовых импульсов
- •5.2. Основные периферийные устройства, подключаемые к компьютеру
- •5.3. Компьютерные сети
- •6. Классификация и обзор программного обеспечения
- •6.1. Системное программное обеспечение
- •6.2. Инструментальные средства программирования
- •6.3. Прикладное программное обеспечение
- •7. Текстовый процессор Microsoft Word
- •7.1. Назначение. Основные понятия
- •7.2. Типовая последовательность создания документа
- •Пример разработки стилей
- •7.3. Редактирование, форматирование и оформление документа, вставка таблиц
- •Выделение фрагмента текста мышью
- •7.4. Вставка символа, рисунка, объекта
- •8. Электронные таблицы Microsoft Excel
- •8.1. Назначение. Основные понятия
- •8.2. Обобщенная технология работы в электронной таблице
- •8.3. Ввод, редактирование, форматирование данных
- •8.4. Выполнение расчетов по формулам и построение диаграмм
- •Операторы, используемые в Microsoft Excel
- •Ряды и категории данных
- •8.5. Сортировка, консолидация данных, сводные таблицы
- •9. Системы управления базами данных. Субд Access
- •9.1. Основные понятия
- •9.2. Нормализация отношений (таблиц) и обеспечение целостности данных в реляционной базе данных
- •9.3. Работа с субд Access
- •21 Августа 1999 г. Страница 1 из 1
- •9.4. Основные возможности языка структурированных запросов (sql)
- •10. Введение в программировние. Создание приложений на языке Visual Basic for Applications
- •10.1. Основные понятия
- •10.2. Создание интерфейса пользователя
- •V Режим конструктора isual Basic
- •10.3. Модули, процедуры, функции
- •Часто используемые встроенные функции Visual Basic
- •10.4. Работа с переменными, массивами, константами и со свойствами объектов
- •Встроенные типы данных vba
- •10.5. Основные инструкции языка Visual Basic и отладка программ
- •Арифметические операции
- •Операции сравнения
- •11. Самостоятельные работы
- •11.1. База данных “Архив предприятия”
- •11.2. Разработка приложения “Решение системы линейных уравнений”
- •Литература к самостоятельной работе 2
- •11.3. Разработка приложения “Статистический анализ данных”
- •Литература к самостоятельной работе 3
- •11.4. Разработка приложения “Преобразование географических координат в прямоугольные и прямоугольных в географические”
- •Литература к самостоятельной работе 4
- •11.5. Разработка приложения “Графические построения в плоскости xoy”
Литература к самостоятельной работе 3
Корн Г., Корн Т. Справочник по математике для научных работников и инженеров. М.: Наука, 1968. –720 с.
Шор Я. Статистистические методы анализа и контроля качества и надежности. М.: Советское радио, 1962. –552 с.
Ломтадзе В.В. Программное и информационное обеспечение геофизических исследований. М.: Недра, 1993. –268 с.
11.4. Разработка приложения “Преобразование географических координат в прямоугольные и прямоугольных в географические”
Эта работа особенно полезна для тех, чья специальность имеет отношение к наукам о Земле (геология, геодезия, экология, горное дело и т.п.). Но, вообще говоря, представлять системы координат, в которых строятся различные карты, должен каждый образованный человек. Известно, что в качестве геометрической модели Земли используют эллипсоид. В России обычно применяют параметры эллипсоида Красовского:
a
Y-500
b
= 6 356 863.019 м - малая (полярная) полуось,
e
X
12
= 0.006 693 4216 – квадрат первого эксцентриситета,
e
22
= 0.006 719 2188 – квадрат второго эксцентриситета.
Д
ля
перехода к прямоугольным координатам
эллипсоид (как дыню) разрезают от полюса
к полюсу на шестиградусные зоны (дольки).
Каждая зона-долька как-бы распрямляется
– делается плоской. Координата X
отсчитывается от экватора, а Y – от
осевого меридиана зоны с добавлением
500 км. Эта добавка к координате Y служит
для того, чтобы координаты Y были
положительными. Таким образом, в каждой
зоне свои координаты Y, отсчитываемые
от своего осевого меридиана.
Каждая шестиградусная зона делится еще параллелями через 4 градуса, и получаются листы, для которых строятся карты масштаба 1:1000000 (в 1 см 10 км). Каждый лист миллионного масштаба делится на 36 листов масштаба 1:200000 или на 144 листа масштаба 1:100000 (в 1 см 1 км) – так строятся карты в прямоугольных координатах.
Обозначим широту точки через LT (Latitude – широта), а долготу – через LN (Longitude – долгота). С формулами для расчета X, Y по известным значениям LT, LN при заданном осевом (центральном) меридиане CM можно познакомиться по указанным в конце этой работы книгам. Вместо формул, здесь просто приведем начало модуля, содержащего общую процедуру LTLNtoXY, пересчитывающую географические координаты в прямоугольные, и опишем постановку остальных задач, которые надо запрограммировать, чтобы завершить разработку приложения.
Option Explicit
Const Pi180 As Double = 0.0174532925
Const A As Double = 6378245
Const B As Double = 6356863.019
Const EE1 As Double = 0.0066934216
Const EE2 As Double = 0.0067192188
Private Sub LTLNtoXY(LT As Double, LN As Double, X As Double, Y As Double, CM As Double)
' LT – ШИPOTA (радианы)
' LN – ДOЛГOTA (радианы)
' CM - ОСЕВОЙ MEPИДИAH (градусы)
' X, Y – KOOPДИHATЫ (км)
Dim N As Double, DL As Double, S As Double, DL2 As Double, T As Double, T2 As Double
Dim SINLT As Double, COSLT As Double, COS2 As Double, COS3 As Double, COS5 As Double
Dim A2 As Double, A4 As Double, B1 As Double, B3 As Double, B5 As Double, T4 As Double
DL = LN - CM * Pi180: DL2 = DL * DL
SINLT = Sin(LT): COSLT = Cos(LT): T = SINLT / COSLT: T2 = T * T: T4 = T2 * T2
COS2 = COSLT * COSLT: COS3 = COSLT * COSLT * COSLT: COS5 = COS2 * COS3
N = A / Sqr(1 - EE1 * SINLT * SINLT)
S = 6367558.49587 * LT - 16036.48027 * Sin(2 * LT) + _
16.828067 * Sin(4 * LT) - 0.021975 * Sin(6 * LT)
A2 = N * SINLT * COSLT / 2: A4 = N * SINLT * COS3 * (5 - T2) / 24
B1 = N * COSLT: B3 = N * COS3 * (1 - T2 + EE2 * COS2) / 6
B5 = N * COS5 * (5 - 18 * T2 + T4) / 120
X = ((A2 + A4 * DL2) * DL2 + S) * 0.001
Y = ((B3 + B5 * DL2) * DL2 + B1) * DL * 0.001 + 500
End Sub
Для построения приложения (назовем его Координаты.xls) на листе Excel в первой строке поместим названия столбцов таблицы: Номер точки, LT, LN, X, Y, Число итераций. Введем в ячейки второй и следующих строк номера нескольких точек и их географические координаты в градусах и поместим на лист Excel элементы управления, как показано ниже:
Номер т. |
LT |
LN |
X |
Y |
Число итераций |
|
|
|
1 |
60 |
105.75 |
6654.426 |
541.8501 |
5 |
(
LT,LN)
( X,Y) |
|
|
2 |
55.12 |
107 |
6112.524 |
627.5992 |
5 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Осевой меридиан |
|
|
|
(X,Y)
(LT,LN) |
|
|
|
|
105 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Поясним элементы управления, событийные и общие процедуры. Поле с именем TextBox1 (имена элементов управления на листе Excel не показаны) предназначается для ввода значения осевого меридиана – в нашем примере 105о. Командные кнопки c именами BTN1 и BTN2 инициируют исполнение событийных процедур BTN1_Click и BTN2_Click. Первая из них из каждой непустой строки таблицы (начиная со строки 2) извлекает географические координаты LT, LN, переводит их из градусов в радианы и обращается к общей процедуре LTLNtoXY, текст которой приведен выше. Вычисленные координаты X,Y процедура BTN1_Click заносит в столбцы 4, 5 таблицы Excel.
Событийная процедура BTN2_Click похожа на процедуру BTN1_Click, только исходные данные она берет из столбцов 4, 5 таблицы, а результаты помещает в столбцы 2, 3. Для вычисления значений LT, LN по известным прямоугольным координатам X, Y она обращается к общей процедуре XYtoLTLN, которая вычисляет географические координаты в следующей последовательности:
устанавливается счетчик итераций K=0;
задается первое приближение, например, LT = 56 ∙ Pi180, LN = CM ∙ Pi180, где Pi180 – константа для перевода градусов в радианы, CM – осевой (центральный) меридиан;
путем обращения к процедуре LTLNtoXY находятся координаты XX, YY, соответствующие LT, LN;
наращивается на 1 счетчик итераций, и вычисляются невязки DX = X - XX, DY = Y – YY, DXY = DX2 + DY2 , а также новые значения широты и долготы LT = LT + DX ∙ 1000 / a, LN = LN + DY ∙ 1000 /a / cos(LN);
если DXY < 0.0000001 , то задача считается решенной; в противном случае проверяется значение счетчика итераций;
если K< 20, то управление передается блоку 3; иначе считается, что процесс не сходится (это может быть, если заданы нереальные для Земли координаты X,Y), и в качестве результатов условно присваиваются значения LT = 0, LN = 0.
Обе событийные и общую процедуру XYtoLTLN надо разработать, а в событийной процедуре BTN2_Click также предусмотреть занесение в столбец 6 таблицы числа итераций, за которое сошелся процесс. Для проверки этой процедуры, можно очистить столбцы 2, 3 таблицы и нажать вторую командную кнопку – мы вновь должны получить исходные географические координаты.