地图分幅编号C 语言编程,[转载]地形图分幅与编号程序(VB)

地形图分幅与编号程序(VB)

徐州师范大学测绘学院 俞礼彬

基于数字测图原理与方法,本程序主要有两个模块组成,即由经纬度推算图幅编号,或由图幅编号推算经纬度,程序界面及运行情况如下所示:

a4c26d1e5885305701be709a3d33442f.png

运行结果:a4c26d1e5885305701be709a3d33442f.png

程序代码(VB):

Private Sub Command1_Click()

Dim j1 As Integer, j2 As Integer, j3 As Double, j As Double

Dim w1 As Integer, w2 As Integer, w3 As Double, w As Double

Dim a As Integer, astr As String

Dim b As Integer, bstr As String

Dim bili As String, daima As String, dj As Double, dw As

Double

Dim cmod As Double, dmod As Double

Dim c As Integer, d As Integer, dx As Double

If Text1(0) = "" Or Text1(1) = "" Or Text1(2) = "" Then

MsgBox

"请输入经度相关数据!", vbExclamation, "警告"

Exit

Sub

End If

If Text2(0) = "" Or Text2(1) = "" Or Text2(2) = "" Then

MsgBox

"请输入纬度相关数据!", vbExclamation, "警告"

Exit

Sub

End If

j1 = Val(Text1(0).Text): j2 = Val(Text1(1).Text): j3 =

Val(Text1(2).Text)

w1 = Val(Text2(0).Text): w2 = Val(Text2(1).Text): w3 =

Val(Text2(2).Text)

j = j1 + j2 / 60 + j3 / 3600

w = w1 + w2 / 60 + w3 / 3600

If j > 180 Or j < 0 Then

MsgBox

"经度不符合要求!", vbExclamation, "警告"

Exit

Sub

End If

If w > 90 Or w < 0 Then

MsgBox

"纬度不符合要求!", vbExclamation, "警告"

Exit

Sub

End If

a = Int(w1 / 4) + 1

b = Int(j1 / 6) + 31

astr = Chr(64 + a)

bstr = CStr(b)

Text3 = astr

Text4 = bstr

bili = Combo1.List(Combo1.ListIndex)

If bili = "" Then

MsgBox

"请选择比例尺!", vbExclamation, "警告"

Exit

Sub

End If

If bili = "1:100万" Then

Label5.Visible = False

Label6.Visible = False

Label7.Visible = False

Text5.Visible = False

Text6.Visible = False

Text7.Visible = False

Text8 = astr

+ bstr

Exit

Sub

ElseIf bili = "1:50万" Then

daima =

"B"

dj = 3

dw = 2

ElseIf bili = "1:25万" Then

daima =

"C"

dj =

1.3

dw = 1

ElseIf bili = "1:10万" Then

daima =

"D"

dj =

0.3

dw =

0.2

ElseIf bili = "1:5万" Then

daima =

"E"

dj =

0.15

dw =

0.1

ElseIf bili = "1:2.5万" Then

daima =

"F"

dj =

0.073

dw =

0.05

ElseIf bili = "1:1万" Then

daima =

"G"

dj =

0.0345

dw =

0.023

ElseIf bili = "1:5000" Then

daima =

"H"

dj =

0.01525

dw =

0.0115

End If

cmod = (w / 4 - Int(w / 4)) * 4

dmod = (j / 6 - Int(j / 6)) * 6

cmod = cmod * 3600

dmod = dmod * 3600

c = 4 * 3600 / switch(dw) - (cmod switch(dw))

d = dmod switch(dj) + 1

Text5 = Format(c, "000")

Text6 = Format(d, "000")

Text7 = daima

Text8 = astr + bstr + daima + Format(c, "000") + Format(d,

"000")

End Sub

Private Sub

Command2_Click()

Dim bianhao As String

Dim astr As String, bstr As String

Dim a As Integer, b As Integer, jint As Integer, wint As

Integer

Dim c As Integer, d As Integer, daima As String, bili As

String

Dim dj As Double, dw As Double

Dim jnum As Double, wnum As Double

Dim j1 As Integer, j2 As Integer, j3 As Double

Dim w1 As Integer, w2 As Integer, w3 As Double

bianhao = Text9.Text

astr = Left(bianhao, 1)

bstr = Mid(bianhao, 2, 2)

If Asc(astr) > 86 Or Asc(astr) < 65

Then

MsgBox

"地形图图号不准确,请重新输入!", vbExclamation, "警告"

Exit

Sub

End If

If Val(bstr) < 31 Then

MsgBox

"地形图图号不准确,请重新输入!", vbExclamation, "警告"

Exit

Sub

End If

a = Asc(astr) - 64

b = Val(bstr)

daima = Mid(bianhao, 4, 1)

If Asc(daima) > 72 Or Asc(daima) < 65

Then

MsgBox

"地形图图号不准确,请重新输入!", vbExclamation, "警告"

Exit

Sub

End If

wint = (a - 1) * 4

jint = (b - 31) * 6

If daima = "A" Then

bili =

"1:100万"

Text10(0).Text = jint

Text11(0).Text = wint

Text12.Text

= bili

Exit

Sub

ElseIf daima = "B" Then

bili =

"1:50万"

dj = 3

dw = 2

ElseIf daima = "C" Then

bili =

"1:25万"

dj =

1.3

dw = 1

ElseIf daima = "D" Then

bili =

"1:10万"

dj =

0.3

dw =

0.2

ElseIf daima = "E" Then

bili =

"1:5万"

dj =

0.15

dw =

0.1

ElseIf daima = "F" Then

bili =

"1:2.5万"

dj =

0.073

dw =

0.05

ElseIf daima = "G" Then

bili =

"1:1万"

dj =

0.0345

dw =

0.023

ElseIf daima = "H" Then

bili =

"1:5000"

dj =

0.01525

dw =

0.0115

End If

c = Mid(bianhao, 5, 3)

d = Right(bianhao, 3)

wnum = (4 * 3600 / switch(dw) - c) * switch(dw)

Call miaodu(wnum, w1, w2, w3)

Text11(0).Text = wint + w1

Text11(1).Text = w2

Text11(2).Text = Format(w3, "0.0")

jnum = (d - 1) * switch(dj)

Call miaodu(jnum, j1, j2, j3)

Text10(0).Text = jint + j1

Text10(1).Text = j2

Text10(2).Text = Format(j3, "0.0")

Text12.Text = bili

End Sub

Private Sub

Form_Load()

For i = 1 To 2

Load

Text1(i)

Load

Text2(i)

Load

Text10(i)

Load

Text11(i)

Text1(i).Left = Text1(i - 1).Left + Text1(i - 1).Width

Text1(i).Top

= Text1(i - 1).Top

Text1(i).Visible = True

Text2(i).Left = Text2(i - 1).Left + Text2(i - 1).Width

Text2(i).Top

= Text2(i - 1).Top

Text2(i).Visible = True

Text10(i).Left = Text10(i - 1).Left + Text10(i - 1).Width

Text10(i).Top = Text10(i - 1).Top

Text10(i).Visible = True

Text11(i).Left = Text11(i - 1).Left + Text11(i - 1).Width

Text11(i).Top = Text11(i - 1).Top

Text11(i).Visible = True

Next i

End Sub

Private Function

switch(ByVal x As Double) As Double

Dim a As Integer, b As Integer, c As Double

a = Fix(x)

b = Fix((x - a) * 100)

c = ((x - a) * 100 - b) * 100

switch = a * 3600 + b * 60 + c

End Function

Private Sub miaodu(x

As Double, a As Integer, b As Integer, c As Double)

a = x 3600

b = (x - a * 3600) 60

c = x - a * 3600 - b * 60

End Sub

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值