昨天現(xiàn)學(xué)現(xiàn)賣(mài),幫小慧寫(xiě)了Mapbasic 的一些小程序
主要功能:面積計(jì)算,條件查詢(xún)。
????? 雖然第一次寫(xiě)GIS的二次開(kāi)發(fā)程序,不過(guò)感覺(jué)上手真的很快。也就是用了1個(gè)半小時(shí),就把大概的知識(shí)點(diǎn)過(guò)了一遍,接著就開(kāi)始對(duì)著Mapbasic開(kāi)始敲鍵盤(pán)。
????? 不過(guò)畢竟沒(méi)有基礎(chǔ),寫(xiě)出來(lái)的程序很丑陋(不會(huì)basic語(yǔ)言,所以很多東西寫(xiě)得特別長(zhǎng))
在此把代碼貼出,希望路過(guò)的朋友,可以看看。
nclude "mapbasic.def"
Include "menu.def"
declare Sub 道路
declare Sub 高薪產(chǎn)業(yè)區(qū)
declare Sub 工業(yè)發(fā)展用地
declare Sub 教育科研用地
declare Sub 居住用地
declare Sub 綠地
declare Sub 行政辦公用地
declare Sub 文化娛樂(lè)用地
declare Sub 面積
Declare Sub duihua
Declare Sub Main
Declare Sub tiaojian
Dim mianji as Float
Dim i as Integer
Dim mianji1 as float
Dim zongmianji1 as float
Dim jilushu as Integer
?Sub Main
?? Create Menu "條件查詢(xún)"? as "請(qǐng)輸入條件" Calling tiaojian
? Alter Menu Bar Add "條件查詢(xún)"
?? Create Menu "統(tǒng)計(jì)查詢(xún)" as "面積" Calling duihua
? Alter Menu Bar Add "統(tǒng)計(jì)查詢(xún)"
?? Create Menu "分類(lèi)查詢(xún)" as "道路" Calling 道路,
??????????? "高薪產(chǎn)業(yè)區(qū)" Calling 高薪產(chǎn)業(yè)區(qū),???
??????????? "工業(yè)發(fā)展用地" Calling 工業(yè)發(fā)展用地,
??????????? "教育科研用地" Calling 教育科研用地,
??????????? "居住用地" Calling 居住用地,
??????????? "綠地" Calling 綠地,
??????????? "行政辦公用地" Calling 行政辦公用地,
??????????? "文化娛樂(lè)用地" Calling 文化娛樂(lè)用地
?? Alter Menu Bar Add "分類(lèi)查詢(xún)"
?End Sub
Sub tiaojian
? Dim yongdileixing as String
? Dim xiao,da as Integer
? Dialog
???? Title "條件查詢(xún)"
? Control StaticText
???? Into yongdileixing
? Control StaticText
???? Title "查詢(xún)的用地類(lèi)型"
? Control EditText
???? Into yongdileixing
? Control StaticText
???? Title "面積的最小值"
? Control EditText
???? Into xiao
? Control StaticText
???? Title "面積的最大值"
? Control EditText
???? Into da
? Control OkButton
???? Title "確定"
? Control CancelButton
???? Title? "取消"
? Open Table "c:\shix\" + yongdileixing
? If yongdileixing = "教育科研用地" Then
? Fetch First From 教育科研用地
? Do While Not EOT(教育科研用地)
? mianji = Area(教育科研用地.obj,"sq km")
? If CommandInfo (CMD_INFO_DLG_OK) Then
??? If mianji>=xiao and mianji<=da Then
????????? i = i + 1
????????? Print "教育科研用地id:" + i + "面積:" + Str$(mianji)
???
???? End If
?? Else
????????? Print "沒(méi)有您要搜索的對(duì)象名稱(chēng)"
?? End If
?? Fetch Next From 教育科研用地
Loop
End If
?? If yongdileixing = "居住用地" Then
? Fetch First From 居住用地
? Do While Not EOT(居住用地)
? mianji = Area(居住用地.obj,"sq km")
? If CommandInfo (CMD_INFO_DLG_OK) Then
??? If mianji>=xiao and mianji<=da Then
????????? i = i + 1
????????? Print "居住用地id:" + i + "面積:" + Str$(mianji)
???
???? End If
?? Else
????????? Print "沒(méi)有您要搜索的對(duì)象名稱(chēng)"
?? End If
?? Fetch Next From 居住用地
Loop
End If
If yongdileixing = "道路" Then
? Fetch First From 道路
? Do While Not EOT(道路)
? mianji = Area(道路.obj,"sq km")
? If CommandInfo (CMD_INFO_DLG_OK) Then
??? If mianji>=xiao and mianji<=da Then
????????? i = i + 1
????????? Print "道路id:" + i + "面積:" + Str$(mianji)
???
???? End If
?? Else
????????? Print "沒(méi)有您要搜索的對(duì)象名稱(chēng)"
?? End If
?? Fetch Next From 道路
Loop
End If
If yongdileixing = "高薪產(chǎn)業(yè)區(qū)" Then
? Fetch First From 高薪產(chǎn)業(yè)區(qū)
? Do While Not EOT(高薪產(chǎn)業(yè)區(qū))
? mianji = Area(高薪產(chǎn)業(yè)區(qū).obj,"sq km")
? If CommandInfo (CMD_INFO_DLG_OK) Then
??? If mianji>=xiao and mianji<=da Then
????????? i = i + 1
????????? Print "高薪產(chǎn)業(yè)區(qū)id:" + i + "面積:" + Str$(mianji)
???
???? End If
?? Else
????????? Print "沒(méi)有您要搜索的對(duì)象名稱(chēng)"
?? End If
?? Fetch Next From 高薪產(chǎn)業(yè)區(qū)
Loop
End If
If yongdileixing = "文化娛樂(lè)用地" Then
? Fetch First From 文化娛樂(lè)用地
? Do While Not EOT(文化娛樂(lè)用地)
? mianji = Area(文化娛樂(lè)用地.obj,"sq km")
? If CommandInfo (CMD_INFO_DLG_OK) Then
??? If mianji>=xiao and mianji<=da Then
????????? i = i + 1
????????? Print "文化娛樂(lè)用地id:" + i + "面積:" + Str$(mianji)
???
???? End If
?? Else
????????? Print "沒(méi)有您要搜索的對(duì)象名稱(chēng)"
?? End If
?? Fetch Next From 文化娛樂(lè)用地
Loop
End If
?If yongdileixing = "行政辦公用地" Then
? Fetch First From 行政辦公用地
? Do While Not EOT(行政辦公用地)
? mianji = Area(行政辦公用地.obj,"sq km")
? If CommandInfo (CMD_INFO_DLG_OK) Then
??? If mianji>=xiao and mianji<=da Then
????????? i = i + 1
????????? Print "行政辦公用地id:" + i + "面積:" + Str$(mianji)
???
???? End If
?? Else
????????? Print "沒(méi)有您要搜索的對(duì)象名稱(chēng)"
?? End If
?? Fetch Next From 行政辦公用地
Loop
End If
?If yongdileixing = "工業(yè)發(fā)展用地" Then
? Fetch First From 工業(yè)發(fā)展用地
? Do While Not EOT(工業(yè)發(fā)展用地)
? mianji = Area(工業(yè)發(fā)展用地.obj,"sq km")
? If CommandInfo (CMD_INFO_DLG_OK) Then
??? If mianji>=xiao and mianji<=da Then
????????? i = i + 1
????????? Print "工業(yè)發(fā)展用地id:" + i + "面積:" + Str$(mianji)
???
???? End If
?? Else
????????? Print "沒(méi)有您要搜索的對(duì)象名稱(chēng)"
?? End If
?? Fetch Next From 工業(yè)發(fā)展用地
Loop
End If
If yongdileixing = "綠地" Then
? Fetch First From 綠地
? Do While Not EOT(綠地)
? mianji = Area(綠地.obj,"sq km")
? If CommandInfo (CMD_INFO_DLG_OK) Then
??? If mianji>=xiao and mianji<=da Then
????????? i = i + 1
????????? Print "綠地id:" + i + "面積:" + Str$(mianji)
???
???? End If
?? Else
????????? Print "沒(méi)有您要搜索的對(duì)象名稱(chēng)"
?? End If
?? Fetch Next From 綠地
Loop
End If
End Sub
Sub duihua
?Dim search As String
?Dialog
?? Title "面積查詢(xún)"
?Control StaticText
?? Title "輸入您要查詢(xún)的用地類(lèi)型"
?Control EditText
?? Into search
?Control OKButton
?? Title "確定"
?Control CancelButton
?? Title "取消"
?Open Table "C:\shix\" + search
?If search = "教育科研用地" Then
?Dim i,counter as Integer
?Fetch First From 教育科研用地
?Do While Not EOT(教育科研用地)
?mianji1 = Area(教育科研用地.obj,"sq km")
??? i = i + 1
?? If CommandInfo (CMD_INFO_DLG_OK) Then
? print "教育科研用地id" + i +":" + Str$(mianji1)
Else
? print "沒(méi)有您要搜索的對(duì)象名稱(chēng)"
End If
?
? zongmianji1 = zongmianji1 + mianji1
?Fetch Next From 教育科研用地
Loop
? print "教育科研用地總面積為:" + Str$(zongmianji1)
?End If
?If search = "高薪產(chǎn)業(yè)區(qū)" Then
?Dim a as Integer
?Fetch First From 高薪產(chǎn)業(yè)區(qū)
?Do While Not EOT(高薪產(chǎn)業(yè)區(qū))
?mianji1 = Area(高薪產(chǎn)業(yè)區(qū).obj,"sq km")
? a = a + 1
?? If CommandInfo (CMD_INFO_DLG_OK) Then
? print "高薪產(chǎn)業(yè)區(qū)id" + a + ":"+Str$(mianji1)
Else
? print "沒(méi)有您要搜索的對(duì)象名稱(chēng)"
End If
?? zongmianji1 = zongmianji1 + mianji1
?Fetch Next From 高薪產(chǎn)業(yè)區(qū)
Loop
? print "高薪產(chǎn)業(yè)區(qū)總面積為:" + Str$(zongmianji1)
?End If
?If search = "居住用地" Then
?Dim b as Integer
?Fetch First From 居住用地
?Do While Not EOT(居住用地)
?mianji1 = Area(居住用地.obj,"sq km")
? b = b + 1
?? If CommandInfo (CMD_INFO_DLG_OK) Then
? print "居住用地id" +b+ ":" + Str$(mianji1)
Else
? print "沒(méi)有您要搜索的對(duì)象名稱(chēng)"
End If
? zongmianji1 = zongmianji1 + mianji1
?Fetch Next From 居住用地
Loop
?print "居住用地總面積為:" + Str$(zongmianji1)
?End If
If search = "行政辦公用地" Then
?Dim c as Integer
?Fetch First From 行政辦公用地
?Do While Not EOT(行政辦公用地)
?mianji1 = Area(行政辦公用地.obj,"sq km")
? c = c + 1
?? If CommandInfo (CMD_INFO_DLG_OK) Then
? print "行政辦公用地id"+c +":"+ Str$(mianji1)
Else
? print "沒(méi)有您要搜索的對(duì)象名稱(chēng)"
End If
?? zongmianji1 = zongmianji1 + mianji1
?Fetch Next From 行政辦公用地
Loop
? print "行政辦公用地總面積為:"? + Str$(zongmianji1)
?End If
If search = "文化娛樂(lè)用地" Then
?Dim d as Integer
?Fetch First From 文化娛樂(lè)用地
?Do While Not EOT(文化娛樂(lè)用地)
?mianji1 = Area(文化娛樂(lè)用地.obj,"sq km")
?? d = d + 1
?? If CommandInfo (CMD_INFO_DLG_OK) Then
? print "文化娛樂(lè)用地id" +d+":"+ Str$(mianji1)
Else
? print "沒(méi)有您要搜索的對(duì)象名稱(chēng)"
End If
? zongmianji1 = zongmianji1 + mianji1
?Fetch Next From 文化娛樂(lè)用地
Loop
?print "文化娛樂(lè)用地總面積為:" + Str$(zongmianji1)
?End If
?If search = "綠地" Then
?Dim r as Integer
?Fetch First From 綠地
?Do While Not EOT(綠地)
?mianji1 = Area(綠地.obj,"sq km")
?r = r + 1
?? If CommandInfo (CMD_INFO_DLG_OK) Then
? print "綠地id" +r+":"+ Str$(mianji1)
Else
? print "沒(méi)有您要搜索的對(duì)象名稱(chēng)"
End If
??? zongmianji1 = zongmianji1 + mianji1
?Fetch Next From 綠地
Loop
? print "綠地總面積為:" + Str$(zongmianji1)
?End If
If search = "道路" Then
?Dim v as Integer
?Fetch First From 道路
?Do While Not EOT(道路)
? v = v + 1
?mianji1 = Area(道路.obj,"sq km")
?? If CommandInfo (CMD_INFO_DLG_OK) Then
? print "道路id" +v+":" +Str$(mianji1)
Else
? print "沒(méi)有您要搜索的對(duì)象名稱(chēng)"
End If
?? zongmianji1 = zongmianji1 + mianji1
?Fetch Next From 道路
Loop
? print "道路總面積為:" + Str$(zongmianji1)
?End If
?End Sub
Sub 道路
Open Table "C:\shix\道路 "
Add Map
?Layer 道路
End Sub
Sub 高薪產(chǎn)業(yè)區(qū)
Open Table "C:\shix\高薪產(chǎn)業(yè)區(qū) "
Add Map
?Layer 高薪產(chǎn)業(yè)區(qū)
Map From 高薪產(chǎn)業(yè)區(qū)
End Sub
Sub 工業(yè)發(fā)展用地
Open Table "C:\shix\工業(yè)發(fā)展用地 "
Add Map
?Layer 工業(yè)發(fā)展用地
Map From 工業(yè)發(fā)展用地
End Sub
Sub 教育科研用地
Open Table "C:\shix\教育科研用地 "
Add Map
?Layer 教育科研用地
Map From 教育科研用地
End Sub
Sub 居住用地
Open Table "C:\shix\居住用地 "
Add Map
?Layer 居住用地
Map From 居住用地
End Sub
Sub 綠地
Open Table "C:\shix\綠地 "
Add Map
?Layer 綠地
Map From 綠地
End Sub
Sub 行政辦公用地
Open Table "C:\shix\行政辦公用地 "
Add Map
?Layer 行政辦公用地
Map From 行政辦公用地
End Sub
Sub 文化娛樂(lè)用地
Open Table "C:\shix\文化娛樂(lè)用地 "
Add Map
?Layer 文化娛樂(lè)用地
Map From 文化娛樂(lè)用地
End Sub?
posted on 2006-09-02 13:22 小鋒 閱讀(976) 評(píng)論(0) 編輯 收藏 所屬分類(lèi): GIS