Biên tập bản đồ

Một phần của tài liệu Đề tài: Ứng dụng công nghệ thông tin thành lập bản đồ trên cơ sở dữ liệu đo của máy toàn điện tử pot (Trang 63 - 72)

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 (adsbygoogle = window.adsbygoogle || []).push({});

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 (adsbygoogle = window.adsbygoogle || []).push({});

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

Một phần của tài liệu Đề tài: Ứng dụng công nghệ thông tin thành lập bản đồ trên cơ sở dữ liệu đo của máy toàn điện tử pot (Trang 63 - 72)