Feel
Участник
|
# Дата: 31 Окт 2007 10:45 - Поправил: Feel
Ответить
Пришлось зарегиться, ибо Лялекса никак не выцепить на бостоне личка не проходит, мыло тоже в никуда
код для генерирования map-файла привязки в Ози (извиняюсь за ВБА):
Public Function XY2OZY() As String ' Генератор map-файла для OziExplorer из координат СканЭкса Dim MapFile As String, IW As Long, IH As Long, NameF As String, ll As String, MM As String On Error GoTo Skip IW = xTrip * 256: IH = yTrip * 256
MapFile = "OziExplorer Map Data File Version 2.2" & vbCrLf MapFile = MapFile & SattDesk & " (ScanEx)" & vbCrLf If What = "map" Then MapFile = MapFile & PathName & "_m.tif" & vbCrLf _ Else MapFile = MapFile & PathName & ".tif" & vbCrLf MapFile = MapFile & "1 ,Map Code," & vbCrLf MapFile = MapFile & "WGS 84,WGS 84, 0.0000, 0.0000,WGS 84" & vbCrLf MapFile = MapFile & "Reserved 1" & vbCrLf MapFile = MapFile & "Reserved 2" & vbCrLf MapFile = MapFile & "Magnetic Variation,,,E" & vbCrLf MapFile = MapFile & "Map Projection,Mercator,PolyCal,No,AutoCalOnly,No,BSBUseWPX,No" & vbCrLf
ll = XY2LL(xBeg + Trip / 2, yBeg - Trip / 2, 0) xLonBeg = CDbl(Mid(ll, 1, InStr(ll, "/") - 1)): xLonBeg = Int(xLonBeg * 1000000) / 1000000 yLatBeg = CDbl(Mid(ll, InStr(ll, "/") + 1)): yLatBeg = Int(yLatBeg * 1000000) / 1000000 MapFile = MapFile & "Point01,xy, 128, 128,in, deg, " & G2GMS(yLatBeg) & ",N, " & G2GMS(xLonBeg) & ",E, grid, , , ,N" & vbCrLf ll = XY2LL(xEnd + Trip / 2, yEnd - Trip / 2, 0) xLonEnd = CDbl(Mid(ll, 1, InStr(ll, "/") - 1)): xLonEnd = Int(xLonEnd * 1000000) / 1000000 yLatEnd = CDbl(Mid(ll, InStr(ll, "/") + 1)): yLatEnd = Int(yLatEnd * 1000000) / 1000000 MapFile = MapFile & "Point02,xy, " & IW - 128 & ", " & IH - 128 & ",in, deg, " & G2GMS(yLatEnd) & ",N, " & G2GMS(xLonEnd) & ",E, grid, , , ,N" & vbCrLf MapFile = MapFile & "Point03,xy, , ,in, deg, , ,N, , ,E, grid, , , ,N" & vbCrLf MapFile = MapFile & "Point04,xy, , ,in, deg, , ,N, , ,E, grid, , , ,N" & vbCrLf MapFile = MapFile & "Point05,xy, , ,in, deg, , ,N, , ,E, grid, , , ,N" & vbCrLf MapFile = MapFile & "Point06,xy, , ,in, deg, , ,N, , ,E, grid, , , ,N" & vbCrLf MapFile = MapFile & "Point07,xy, , ,in, deg, , ,N, , ,E, grid, , , ,N" & vbCrLf MapFile = MapFile & "Point08,xy, , ,in, deg, , ,N, , ,E, grid, , , ,N" & vbCrLf MapFile = MapFile & "Point09,xy, , ,in, deg, , ,N, , ,E, grid, , , ,N" & vbCrLf MapFile = MapFile & "Point10,xy, , ,in, deg, , ,N, , ,E, grid, , , ,N" & vbCrLf MapFile = MapFile & "Point11,xy, , ,in, deg, , ,N, , ,E, grid, , , ,N" & vbCrLf MapFile = MapFile & "Point12,xy, , ,in, deg, , ,N, , ,E, grid, , , ,N" & vbCrLf MapFile = MapFile & "Point13,xy, , ,in, deg, , ,N, , ,E, grid, , , ,N" & vbCrLf MapFile = MapFile & "Point14,xy, , ,in, deg, , ,N, , ,E, grid, , , ,N" & vbCrLf MapFile = MapFile & "Point15,xy, , ,in, deg, , ,N, , ,E, grid, , , ,N" & vbCrLf MapFile = MapFile & "Point16,xy, , ,in, deg, , ,N, , ,E, grid, , , ,N" & vbCrLf MapFile = MapFile & "Point17,xy, , ,in, deg, , ,N, , ,E, grid, , , ,N" & vbCrLf MapFile = MapFile & "Point18,xy, , ,in, deg, , ,N, , ,E, grid, , , ,N" & vbCrLf MapFile = MapFile & "Point19,xy, , ,in, deg, , ,N, , ,E, grid, , , ,N" & vbCrLf MapFile = MapFile & "Point20,xy, , ,in, deg, , ,N, , ,E, grid, , , ,N" & vbCrLf MapFile = MapFile & "Point21,xy, , ,in, deg, , ,N, , ,E, grid, , , ,N" & vbCrLf MapFile = MapFile & "Point22,xy, , ,in, deg, , ,N, , ,E, grid, , , ,N" & vbCrLf MapFile = MapFile & "Point23,xy, , ,in, deg, , ,N, , ,E, grid, , , ,N" & vbCrLf MapFile = MapFile & "Point24,xy, , ,in, deg, , ,N, , ,E, grid, , , ,N" & vbCrLf MapFile = MapFile & "Point25,xy, , ,in, deg, , ,N, , ,E, grid, , , ,N" & vbCrLf MapFile = MapFile & "Point26,xy, , ,in, deg, , ,N, , ,E, grid, , , ,N" & vbCrLf MapFile = MapFile & "Point27,xy, , ,in, deg, , ,N, , ,E, grid, , , ,N" & vbCrLf MapFile = MapFile & "Point28,xy, , ,in, deg, , ,N, , ,E, grid, , , ,N" & vbCrLf MapFile = MapFile & "Point29,xy, , ,in, deg, , ,N, , ,E, grid, , , ,N" & vbCrLf MapFile = MapFile & "Point30,xy, , ,in, deg, , ,N, , ,E, grid, , , ,N" & vbCrLf MapFile = MapFile & "Projection Setup,,,,,,,,,," & vbCrLf MapFile = MapFile & "Map Feature = MF ; Map Comment = MC These follow if they exist" & vbCrLf MapFile = MapFile & "Track File = TF These follow if they exist" & vbCrLf MapFile = MapFile & "Moving Map Parameters = MM? These follow if they exist" & vbCrLf MapFile = MapFile & "MM0,Yes" & vbCrLf MapFile = MapFile & "MMPNUM,4" & vbCrLf MapFile = MapFile & "MMPXY,1,0,0" & vbCrLf MapFile = MapFile & "MMPXY,2," & IW & ",0" & vbCrLf MapFile = MapFile & "MMPXY,3," & IW & "," & IH & vbCrLf MapFile = MapFile & "MMPXY,4,0," & IH & vbCrLf ' пересчитается автоматом при сохранении карты MapFile = MapFile & "MMPLL,1," & XY2LL(xBeg, yBeg, 2) & vbCrLf MapFile = MapFile & "MMPLL,2," & XY2LL(xEnd + Trip, yBeg, 2) & vbCrLf MapFile = MapFile & "MMPLL,3," & XY2LL(xEnd + Trip, yEnd - Trip, 2) & vbCrLf MapFile = MapFile & "MMPLL,4," & XY2LL(xBeg, yEnd - Trip, 2) & vbCrLf ' Рассчет MM1B Dim hd As Double, V As Double, LatMid As Double, xLonEnd2 As String Dim xZap As Double, yZap As Double, xVos As Double, yVos As Double LatMid = yLatEnd * pi / 180 ' широта по середине карты V = a / (1 - (e2 * (Sin(LatMid) ^ 2) ^ 0.5)) ll = XY2LL(xEnd + Trip * 1.5, yEnd, 0) ' координаты правого нижнего угла xLonEnd2 = CDbl(Mid(ll, 1, InStr(ll, "/") - 1)) xLonEnd2 = Int(xLonEnd * 1000000) / 1000000 xZap = V * Cos(LatMid) * Cos(xLonBeg * pi / 180) ' координаты левого края карты yZap = V * Cos(LatMid) * Sin(xLonBeg * pi / 180) xVos = V * Cos(LatMid) * Cos(xLonEnd2 * pi / 180) ' координаты правого края карты yVos = V * Cos(LatMid) * Sin(xLonEnd2 * pi / 180) hd = ((xVos - xZap) ^ 2 + (yVos - yZap) ^ 2) ^ 0.5 ' расстояние между краями MM = CStr(hd / (xTrip * 256)) ' соотношение метры/точки, измеренное по горизонтали MM = Left(MM, InStr(MM, ",") - 1) & "." & Mid(MM, InStr(MM, ",") + 1, 6) MapFile = MapFile & "MM1B," & MM & vbCrLf ' пересчитается автоматом при сохранении карты в Ozi MapFile = MapFile & "LL Grid Setup" & vbCrLf MapFile = MapFile & "LLGRID,No,No Grid,Yes,255,16711680,0,No Labels,0,16777215,7,1,Yes,x" & vbCrLf MapFile = MapFile & "Other Grid Setup" & vbCrLf MapFile = MapFile & "GRGRID,Yes," & Grid & ",No,2933223,2933223,No Labels,0,16777215,8,1,Yes,No,No,x" & vbCrLf MapFile = MapFile & "MOP,Map Open Position,0,0" & vbCrLf MapFile = MapFile & "IWH,Map Image Width/Height," & IW & "," & IH
NameF = LCase(PathName) If What = "map" Then NameF = NameF & "_m" Call WriteF(PathSatt & NameF & ".map", MapFile)
Skip: If Err.Number <> 0 Then Stat = "ошибка:" & Err.Number & ". " & Err.Description End Function
|