Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Kursovaya_-2011.doc
Скачиваний:
0
Добавлен:
01.04.2025
Размер:
748.54 Кб
Скачать

7.Пятый раздел- прямая равноугольная коническая проекция (проекция Ламберта)

Составить алгоритм и программу для решения геодезической задачи.

Задание.

Территория ограничена параллелями φс, φю и меридианами λз, λв. Частота сетки ∆φ и ∆λ. Математическая поверхность Земли – эллипсоид Красовского. Параметры проекции α, с определяются исходя из условия, что на двух главных параллелях с широтами φ1, φ2 масштаб длин равен единице.

Главный масштаб равен μ0.

Порядок выполнения работы

1. Вычисление параметров α, с (постоянные проекции):

где φ0 – широта параллели с минимальным масштабом длин. Величины r, lgr, lgu приводятся в [1, прил. 3-5].

Последовательность вычислений представлена в таблице 7.1.

Таблица 7.1

Формулы

φ1=

φ2=

lgr

lgu

lgr1- lgr2

lgu2- lgu1

φ0, град

u

100μ0

100μ0r u

с, см

2. Вычисление полярных координат ρ и δ.

Результаты вычислений заносятся в таблицы 7.2 и 7.3:

Таблица 7.2

φ, град

φю

φю+∆φ

φю+2∆φ

φс

ρ, см

Таблица 7.3

λ, град

λm

λm +∆λ

λm +2∆λ

λз

δ, град

3. Вычисление прямоугольных координат x,y

, ,

где q= ρю – расстояние между полюсом полярных и началом прямоугольных координат. Результаты вычислений оформляются в виде таблицы 7.4.

Таблица 7.4

φ, град

ρ, см

Координаты

x,y, см

λ, град

λm

λm +∆λ

λm +2∆λ

λз

δ, град

sinδ

cosδ

φю

x

y

φю+∆φ

x

y

φю+2∆φ

x

y

x

y

φс

x

y

4. Построение сетки меридианов и параллелей.

Для построения картографической сетки проекции Ламберта необходимо отстроить точки с рассчитанными в таблице координатами x, y. Точки соединяются, как показано на проекции Ламберта. Если координаты точек рассчитаны правильно, то меридианы должны быть прямыми линиями, а параллели – дугами окружностей.

Рис. 7.1. Картографическая сетка проекции Ламберта

5. Вычисления масштабов m,n,p

Результаты вычислений заносятся в таблицу 7.5.

Таблица 7.5

φ, град

ρ, см

αρ

r

0100)r

m,n

p

φю

φю+∆φ

φю+2∆φ

φс

6. Построение графиков изменения m,p

Для построения графиков масштабов длин и площади необходимо вдоль оси абсцисс отложить φ, вдоль оси ординат - m,p. Полученные точки соединяются плавными кривыми, как показано на рисунке. Правильность построения графиков можно проверить так: графики должны пересекаться , если m=p=1, на широтах φ1, φ2.

Программное обеспечение должно по входным данным рассчитать и вывести на экран значения  и с (пункт 1), таблицы (пункт 2), построить сетку меридианов (пункт 4) и график масштабов длин и площади (пункт 6).

Рис. 7.2. График масштабов длин и площади

Таблица 7.6

Задания к пятому разделу

Номер варианта

λз

λв

φю

φс

φ1

φ2

μ0

φ=∆λ

1

2

3

4

5

6

7

8

9

1

40

80

20

40

25

35

1:20000000

2

45

85

25

45

30

40

1:20000000

5

3

50

90

30

50

35

45

1:20000000

5

4

55

95

35

55

40

50

1:20000000

5

5

60

100

40

60

45

55

1:20000000

5

6

65

105

45

65

50

60

1:20000000

5

7

70

110

50

70

55

65

1:17000000

5

8

75

115

55

75

60

70

1:17000000

5

9

80

120

35

55

40

50

1:17000000

5

10

85

125

40

60

45

55

1:17000000

5

11

90

130

60

80

65

75

1:15000000

5

12

95

135

60

80

65

75

1:15000000

5

13

100

140

65

85

70

80

1:15000000

5

14

105

145

10

30

15

25

1:15000000

5

15

110

150

15

35

20

30

1:15000000

5

16

115

155

20

40

25

35

1:15000000

5

17

24

56

24

40

28

36

1:13000000

5

18

28

60

28

44

32

40

1:13000000

4

19

32

64

32

48

36

44

1:13000000

4

20

36

68

36

52

40

48

1:13000000

4

21

40

72

40

56

44

52

1:13000000

4

22

44

76

44

60

48

56

1:20000000

4

23

48

80

48

64

52

60

1:20000000

4

24

100

150

20

35

20

35

1:15000000

5

25

45

80

40

60

46

50

1:13000000

5

26

28

70

38

54

32

45

1:13000000

4

Пересчет координат из прямоугольных в экранные:

Program Gr4;

uses graph,crt;

var GraphDriver,GraphMode,ErrorCode:integer;

Ax,Ay,Bx,By:real;

x1,y1,x2,y2:integer;

m,mk:real;

s:string;

BEGIN

writeln('Input M, Ax,Ay,Bx,By');

readln(m,ax,ay,bx,by);

{------------------------}

{Инициализация графического режима}

InitGraph(GraphDriver,GraphMode,'');

Errorcode:=GraphResult;

if ErrorCode<>grok then begin

Writeln('Error');

Exit;

end;

{------------------------}

str(m:5:2,s);

OuttextXY(10,10,'Scale='+s);

mk:=640/m;

x1:=round(ax*mk);

x2:=round(bx*mk);

y 1:=round(480-ay*mk);

y2:=round(480-by*mk);

line(x1,y1,x2,y2);

circle(x1,y1,2);

circle(x2,y2,2);

SetLineStyle(2,0,1);

line(x1,y1,0,y1);

str(ay:5:2,s);

OutTextXY(0,y1+1,s);

line(x1,y1,x1,480);

str(ax:5:2,s);

OutTextXY(x1,470,s);

line(x2,y2,0,y2);

str(by:5:2,s);

OutTextXY(0,y2+1,s); Рис. 7.3

line(x2,y2,x2,480);

str(bx:5:2,s);

OutTextXY(x2,470,s);

{------------------------}

readkey;

CloseGraph;

END.

Построение осей и координатной сетки:

Program Graphic;

uses graph,crt;

var GraphDriver,GraphMode,ErrorCode:integer;

m:integer;

a,b,dx,x,y,min,max:real;

s:string;

function F(x:real):real;

begin

F:=x*x-2*x-1; {Функция}

end;

BEGIN

writeln('Input A,B,dX');

readln(a,b,dx);

x:=a;

y:=F(x);

min:=y; max:=y;

while x<b do

begin

y:=F(x);

x:=x+dx;

if y>max then max:=y;

if y<min then min:=y;

end;

{------------------------}

{Инициализация графического режима}

InitGraph(GraphDriver,GraphMode,'');

Errorcode:=GraphResult;

if ErrorCode<>grok then begin

Writeln('Error');

Exit;

end;

{------------------------}

{Расчет масштабных коэффициентов}

if min>0 then min:=-1;

if (min<a)and(min<0) then min:=a-1;

m:=round(GetMaxX/(b-a));

x:=a;

{Построение линий сетки и координатных осей}

setlinestyle(0,0,1);

MoveTo(-round(a*m),0);

LineRel(0,480);

OuttextXY(GetMaxX-10,GetMaxY+round(min*m)+2,'x');

MoveTo(0,GetMaxY+round(min*m));

LineRel(640,0);

OuttextXY(5-round(a*m),0,'y');

setlinestyle(1,0,1);

x:=trunc(a);

while x<b do begin

MoveTo(round((x-a)*m),0);

LineRel(0,480);

str(x:2:0,s);

OuttextXY(round((x-a)*m),GetMaxY+round(min*m)+2,s);

x:=x+1;

end;

y:=trunc(min);

while y<max do begin

MoveTo(0,GetMaxY-round((y-min)*m));

LineRel(640,0);

str(y:2:0,s);

OuttextXY(-round(a*m),GetMaxY-round((y-min)*m)+2,s);

y:=y+1;

end;

readkey;

CloseGraph;

END.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]