OlegKnysh
Зарегистрирован: 25.06.2006 Сообщения: 2
|
Добавлено: Вс Июн 25, 2006 9:09 am Заголовок сообщения: Расчет азимутов. |
|
|
НУжно на MapBasic написать процедурку для расчета азимута на точку Б относительно точки А, если известно координаты этих точек.
Соорудил такую процедурку:
процедурка создает новый слой , который накладывается на привязаный растр.Проекция Pulkovo 1942
Include "mapbasic.def"
Include "auto_lib.def"
Declare Sub Main
Sub Main
'Set CoordSys Earth Projection 8, 1001, "km", 21, 0, 1, 4500000, 0
Set CoordSys Earth Projection 1, 104
Dim X_A, X_B, Y_A, Y_B, Azymut_,A, Vidstan_, dX, dY As Float
Dim Qvert, I1 as Integer
Qvert=0
X_A=24.6867
Y_A=48.8877
I1=0
Open Table "rbs.tab" as rbs Interactive
Fetch First From rbs
Do While Not EOT(rbs)
dX=0
dY=0
i1=i1+1
X_B=rbs.x
Y_B=rbs.y
dX=X_B-X_A
dY=Y_B-Y_A
If dX=0 then
A=sgn(dY-abs(dY))*(-180)+90
Else
A=sgn(dX-abs(dX))*(-180)+atn(dY/dX)*RAD_2_DEG
End If
a=90-a
Azymut_=sgn(a-abs(a))*(-360)+a
Vidstan_=Distance(X_A, Y_A, X_B, Y_B, "km")
Update rbs
Set Azymut=Azymut_, Vidstan=Vidstan_ where RowId=i1
Fetch Next From rbs
Loop
Commit Table rbs Interactive
End Program
End Sub
Но азимуты расчитываются не правильно, тоесть или бодьше или меньше. проверял в MAPInfo с помощью утилиты cogolime.mb .
Дайте совет, как жить дальше. Очень нужно. |
|