Sau khi thực hiện xử lý số liệu và hiển thị điểm trên nền đồ họa, có thể lưu bản vẽ dưới định dạng *.vec của Vecad hoặc định dạng *.dwg, *.dxf của Autocad. Chương trình cho phép sử dụng các công cụ có sẵn để tạo bản vẽ và có thể linh động chuyển sang phần mềm đồ họa Autocad, Microstation để hoàn thiện bản đồ.
Kết luận
Ngày nay, với sự phát triển không ngừng của khoa học kỹ thuật, công nghệ thông tin và điện tử thì công tác thành lập bản đồ bằng các phương pháp truyền thống trở nên lạc hậu. Nhu cầu thực tế ngày càng cao, đòi hỏi nghành trắc địa phải có phương pháp mới tạo ra bản đồ đáp ứng được nhu cầu thực tiễn. Công nghệ đó là công nghệ bản đồ số.
Để thực hiện kết nối việc tự động hoá quy trình đo dạc và thành lập bản đồ địa hình giữa máy đo và máy tính thì chúng ta cần phải có những modul chương trình tiện ích, thực dụng và phù hợp với thực tế sản xuất của Việt Nam. Đây là công việc cần thiết mà các cơ quan sản xuất đang yêu cầu.
Đề tài: “ứng dụng công nghệ tin học thành lập bản đồ địa hình trên cơ sở dữ liệu đo của máy toàn đạc điện tử” đã phần nào đáp ứng được yêu cầu của thực tế sản xuất hiện nay.
tài liệu tham khảo
[1]. Tiến sĩ Đinh Công Hòa. Nghiên cứu và thành lập các modul chương trình chuyển đổi dữ liệu từ sổ ghi điện tử các máy toàn đạc điện tử để thành lập bản đồ địa hình và mặt cắt. Đề tài nghiên cứu cấp bộ. Trường Đại học Mỏ Địa Chất [2]. Chủ biên: PTS Nguyễn Tiến Dũng, biên dịch: Trần thế San - Vũ Hữu Tường, hiệu đính: PTS Nguyễn Ngọc Phương. Kỹ năng lập trình Visual Basic 6. Nxb Thống kê.
[3]. Nguyễn Trọng San, Đào Quang Hiếu, Đinh Công Hòa. Giáo trình Trắc địa cơ sở tập (1+2). Nxb Xây Dựng. Hà Nội 2002
[4]. Nguyễn Thị Ngọc Mai, Nguyễn Hữu Anh. Lập trình cơ sở dữ liệu Visual Basic 6.0. Nxb Lao động xã hội.
phụ lục
Module xử lý chuỗi số liệu:
-Tách chuỗi số liệu
Public Sub Tach_chuoi(chuoi As String, arrchuoi() As String)
Dim i%, NumStr% NumStr = 0 i = 1 Do Do While (Mid$(chuoi, i, 1) = " ") Or (Mid$(chuoi, i, 1) = ",") _ Or (Mid$(chuoi, i, 1) = Chr(32)) Or (Mid$(chuoi, i, 1) = ";") _ Or (Mid$(chuoi, i, 1) = Chr(34)) Or (Mid$(chuoi, i, 1) = Chr(9)) Or (Mid$(chuoi, i, 1) = ":") And (i <= Len(chuoi)) i = i + 1 Loop If i <= Len(chuoi) Then NumStr = NumStr + 1
ReDim Preserve arrchuoi(NumStr) As String arrchuoi(NumStr) = ""
End If
Do While (i <= Len(chuoi)) And (Mid$(chuoi, i, 1) <> " ") And (Mid$(chuoi, i, 1) <> ",") And
(Mid$(chuoi, i, 1) <> Chr(32)) And (Mid$(chuoi, i, 1) <> ";") And (Mid$(chuoi, i, 1) <> Chr(34)) And
(Mid$(chuoi, i, 1) <> Chr(9)) And (Mid$(chuoi, i, 1)
<> ":")
arrchuoi(NumStr) = arrchuoi(NumStr) + Mid$(chuoi, i, 1)
i = i + 1 Loop
Loop Until i > Len(chuoi) End Sub
- Hàm in chuỗi số liệu
Function In_chuoi(ByVal Str As String, ByVal n As Long, Optional Justify As Long) As String
If IsMissing(Justify) Then Justify = 0 Str = Trim$(Str)
If Justify = 0 Then
If Len(Str) > n Then Str = Mid$(Str, 1, n) Str = Space$(n \ 2 - Len(Str) \ 2) & Str & Space$(n \ 2 - Len(Str) \ 2) & Space$(5)
In_chuoi = Mid$(Str, 1, n) End If
If Justify = -1 Then
In_chuoi = Space(n) & Str End If
If Justify = 1 Then
In_chuoi = Str & Space(n) End If
If Justify = 2 Then
In_chuoi = Mid$(Str, 1, n) If Len(Str) >= n Then
Else
In_chuoi = Space$(n - Len(Str)) & Str End If
End If
If Justify = -2 Then
In_chuoi = Str & Space$(Abs(n - Len(Str))) In_chuoi = Mid$(In_chuoi, 1, n)
End If End Function
- Xử lý file *.gsi về dạng *.ash:
Fgsi = Me.lblthumuc.Caption & txtfiletrut.Text Open Fgsi For Input As #1
Tach_dgdan Fgsi, Fdir, Fname
Fash = Me.lblthumuc.Caption & txtketqua.Text Open Fash For Output As #2
Do While Not EOF(1) Line Input #1, str1 Tach_chuoi str1, SSp tdiem = val(Right(SSp(1), 10)) lgiz = val(Right(SSp(2), 3)) / 10 lphz = val(Mid(SSp(2), (Len(SSp(2)) - 4), 2)) ldz = val(Mid(SSp(2), (Len(SSp(2)) - 7), 3)) lgiv = val(Right(SSp(3), 3)) / 10 lphv = val(Mid(SSp(3), (Len(SSp(3)) - 4), 2)) ldv = val(Mid(SSp(3), (Len(SSp(3)) - 7), 3)) SD = val(Right(SSp(4), 8)) / 1000# Ht = val(Right(SSp(6), 5)) / 1000# Hi = val(Right(SSp(7), 5)) / 1000# Vz = Rad(ldv, lphv, lgiv)
If (Vz > 4 * Atn(1#)) Then Vz = Vz - 4 * Atn(1#) dz = Format(Cos((Vz - (4 * Atn(1#)) / 2)) * SD, ".000")
H = Format(dz / Tan(Vz) + Hi - Ht, ".000") Print #2, In_chuoi(In_chuoi(tdiem, 8, -2) & In_chuoi(ldz, 5, 2) & In_chuoi(lphz, 5, 2) & _
In_chuoi(val(lgiz), 5, 2) &
In_chuoi(Format(SD, "#.000"), 12, 2) & In_chuoi(H, 10, 2), 90, -2)
Loop Close #1 Close #2
- Hàm xử lý file *.ash và file *.goc về dạng *.xyh:
Private Sub cmdxuly_Click() n = 0
Pi = 4# * Atn(1#) Pi2 = 2# * Pi
Ro = 190# * 3600# / Pi Id = 0
Open Fash For Input As #1 Tach_dgdan Fash, Fdir, Fname err = Fdir & Fname & ".ERR"
Open err For Output As #4 Do
Line Input #1, Strf1 Tach_chuoi Strf1, SSp Dim xau, xau1
xau = SSp(1)
If StrComp(xau, "TRAM", vbTextCompare) = 0 Then IDg = SSp(2): IDh = SSp(3)
Open Fgoc For Input As #200 Line Input #200, strf2
Do While Not EOF(200) Tach_chuoi strf2, SSp xau = SSp(1)
If StrComp(IDg, xau, vbTextCompare) = 0 Then n = n + 1 ReDim Preserve dCT(n) Xg = SSp(2) Yg = SSp(3) Zg = SSp(4) dCT(n).Ten = IDg: dCT(n).X = Xg: dCT(n).Y = Yg: dCT(n).H = Zg
ElseIf StrComp(IDh, xau, vbTextCompare) = 0 Then n = n + 1 ReDim Preserve dCT(n) Xdh = SSp(2) Ydh = SSp(3) Zdh = SSp(4) dCT(n).Ten = IDh: dCT(n).X = Xdh: dCT(n).Y = Ydh: dCT(n).H = Zdh End If Line Input #200, strf2 Loop dx = Xdh - Xg dy = Ydh - Yg afa = Pvi(dx, dy)
Close (200) Else n = n + 1 Kt = False Id = Id + 1 IDtd = SSp(1) gd = SSp(2) gph = SSp(3) ggi = SSp(4)
beta = Rad(gd, gph, ggi) Pvd = afa + beta
Xtd = Xg + SSp(5) * Cos(afa + beta) Ytd = Yg + SSp(5) * Sin(afa + beta) Ztd = Zg + val(SSp(6))
ReDim Preserve dCT(n)
dCT(n).Ten = IDtd: dCT(n).X = Xtd: dCT(n).Y = Ytd: dCT(n).H = Ztd
Call dR_GOC(Pvd, dpv, phpv, gpv) gpv = Fix(gpv)
End If
Loop While Not EOF(1) Close (1)
‘ Xuat ra file *.xyh
If chktddc.Value = True Then Fxyh = Fdir & Fname & ".XYH" Open Fxyh For Output As #7
For i = 1 To n
Print #7, In_chuoi(dCT(i).Ten, 10, -2) & In_chuoi(Format(dCT(i).X, "0.000"), 10, 2) & _ In_chuoi(Format(dCT(i).Y, "0.000"), 20, 2) & In_chuoi(Format(dCT(i).H, "0.000"), 10, 2) Next i Close #7 End If End Sub
Hiển thị điểm chi tiết trên nền đồ họa:
For i = 1 To Tongdiem
ReDim Preserve hEnt(i) As Long
frmdohoa.Vecad1.PutPointMode CAD_PNT_CIRCLE frmdohoa.Vecad1.PutPointSize 10 frmdohoa.Vecad1.PntStylePutDrawMode Pointht, CAD_PS_DRAW_ALL hEnt(i) = frmdohoa.Vecad1.AddPoint(dCT(i).Y, dCT(i).X, dCT(i).H) frmdohoa.Vecad1.PointPutText hEnt(i), dCT(i).Ten frmdohoa.Vecad1.Update frmdohoa.Vecad1.WndRedraw Next i frmdohoa.Vecad1.Update frmdohoa.Vecad1.WndRedraw frmdohoa.Vecad1.Execute 102