• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看

      ?

      基于Access和Geodatabase的林地小班自動(dòng)編號方法——以貴州省長順縣公益林?jǐn)?shù)據(jù)庫為例

      2013-12-23 05:25:40唐榮逸
      陜西林業(yè)科技 2013年6期
      關(guān)鍵詞:長順縣公益林新建

      盧 鵬,肖 玲,唐榮逸

      (貴州省林業(yè)調(diào)查規(guī)劃院,貴陽 550003)

      1 前言

      林業(yè)調(diào)查中,一般按照從北到南、從西向東的原則對林地小班編號,使得編制的小班號碼有規(guī)律可循,便于查找。傳統(tǒng)方法主要依靠人們的目視效果判斷小班所處位置,手動(dòng)對小班進(jìn)行編號,往往受編號和計(jì)算機(jī)錄入人員精心程度影響,造成重號、漏號等,同時(shí)小班的增減也會(huì)打亂原有小班編號,這樣就需要重新調(diào)整小班號,將耗費(fèi)大量的人力和時(shí)間。隨著地理信息系統(tǒng)(GIS)技術(shù)[1]的發(fā)展,全國林地“一張圖”于2012年底已構(gòu)建完成,本文以目前常用的Geodatabase[2]格式林地?cái)?shù)據(jù)庫為例,提出基于ACCESS的一種林地小班自動(dòng)編號方法,實(shí)現(xiàn)按照編號原則對林地小班進(jìn)行計(jì)算機(jī)自動(dòng)編號,從而節(jié)省大量時(shí)間和人力,提高工作效率,克服傳統(tǒng)人工編號費(fèi)時(shí)、費(fèi)力、容易出錯(cuò)的弊端。

      2 實(shí)現(xiàn)思路

      以小班中心點(diǎn)坐標(biāo)為基礎(chǔ),將小班縱、橫坐標(biāo)分別按降序、升序排序,按此順序?qū)π“嘤尚〉酱筮M(jìn)行編號(增量為1),當(dāng)遇到不同的鄉(xiāng)(鎮(zhèn))、村代碼時(shí),從1開始重新編號,如此循環(huán)實(shí)現(xiàn)對全縣所有小班按由北到南、由西向東的原則編號[3-5]。

      3 實(shí)現(xiàn)過程

      3.1 小班中心點(diǎn)坐標(biāo)計(jì)算

      (1)ArcMap中加載長順縣公益林?jǐn)?shù)據(jù)庫的公益林小班,增加自動(dòng)小班號和X、Y三個(gè)字段(表1)。

      表1 公益林?jǐn)?shù)據(jù)庫中字段類型

      (2)在X、Y 字段上分別點(diǎn)擊右鍵,利用Calculate Geometry功能對各小班的中心點(diǎn)坐標(biāo)進(jìn)行計(jì)算。

      3.2 在Access中進(jìn)行編碼

      3.2.1 新建查詢 用Access 2003打開貴州省長順縣公益林?jǐn)?shù)據(jù)庫,新建查詢。具體步驟為:在左側(cè)選擇“查詢”,然后點(diǎn)擊窗口上方的新建,進(jìn)入新建查詢窗口,選擇“設(shè)計(jì)視圖”,出現(xiàn)“顯示表”對話框選擇關(guān)閉。然后在查詢窗口左上角點(diǎn)擊“SQL”,進(jìn)入SQL視圖,將以下代碼粘貼進(jìn)窗口,保存新建的查詢,命名為“查詢小班號”。

      SELECT Int([XIANG_DM])AS 鄉(xiāng)鎮(zhèn)代碼,Int([CUN_DM])AS 村代碼,Int([XBH])AS 內(nèi)業(yè)小班,Max(ZZB)AS Y 最大值,Min(HZB)AS X 最小值

      FROM 公益林小班面

      GROUP BY Int([XIANG _DM]),Int([CUN_DM]),Int([XBH])

      ORDER BY Int([XIANG _DM]),Int([CUN_DM]),Int([XBH]),Max(ZZB)DESC;

      3.2.2 新建模塊 在左側(cè)選擇“模塊”,然后點(diǎn)擊窗口上方的新建,進(jìn)入新建模塊窗口,清空窗口中的代碼,將以下代碼粘貼至代碼窗口,保存模塊,命名為“公益林小班號自動(dòng)編號”。

      Option Compare Database

      Option Explicit

      Sub updateData()

      Dim cnn As ADODB.Connection

      Set cnn =CurrentProject.Connection

      Dim strSQL As String

      Dim intXZ As Long

      Dim intOldXZ As Long

      intOldXZ=0

      Dim intC As Long

      Dim intOldC As Long

      intOldC =0

      Dim intXB As Long

      Dim intXB0As Long

      intXB0 =0

      Dim intNewXB As Long

      intNewXB =1

      Dim rsDL As ADODB.Recordset

      strSQL ="SELECT 鄉(xiāng)鎮(zhèn)代碼,村代碼,內(nèi)業(yè)小班"

      strSQL =strSQL +"FROM 查詢小班號"

      strSQL =strSQL+"ORDER BY 鄉(xiāng)鎮(zhèn)代碼,村代碼,int(Y最大值/100)DESC,X最小值"

      Set rsDL =New ADODB.Recordset

      rsDL.Open strSQL,cnn,adOpenForwardOnly,adLockBatchOptimistic

      Do While Not rsDL.EOF

      If IsNull(rsDL.Fields.Item(0).Value)Or IsNull(rsDL.Fields.Item(1).Value)Or rsDL.Fields.Item(0).Value=0Or rsDL.Fields.Item(1).Value=0Then

      MsgBox"鄉(xiāng)鎮(zhèn)代碼或村代碼存在空值,請修改后重新順號!",vbInformation,"出錯(cuò)提示"

      rsDL.Close

      Set rsDL =Nothing

      cnn.Close

      Set cnn =Nothing

      Exit Sub

      End If

      intXZ =rsDL.Fields.Item(0).Value

      intC =rsDL.Fields.Item(1).Value

      If Not IsNull(rsDL.Fields.Item(2).Value)Then

      intXB =rsDL.Fields.Item(2).Value

      If intXZ <>intOldXZ Then

      intOldXZ =intXZ

      intOldC =1

      intXB0 =0

      intNewXB =1

      Else

      If intC <>intOldC Then

      intOldC =intC

      intXB0 =0

      intNewXB =1

      End If

      End If

      If intXB <>intXB0Then

      UpdateXB intXZ,intC,intXB,intNewXB

      intNewXB =intNewXB +1

      intXB0 =intXB

      End If

      End If

      rsDL.MoveNext

      Loop

      rsDL.Close

      Set rsDL =Nothing

      MsgBox"恭喜!您的公益林小班順號完畢!"

      End Sub

      Sub UpdateXB(xz As Long,c As Long,xb As Long,newxb As Long)

      Dim cnnDL As New ADODB.Connection

      Dim cmd As New ADODB.Command

      Dim strUpdate As String

      Dim lngRa As Long

      Set cnnDL =CurrentProject.Connection

      strUpdate ="UPDATE 公益林小班面SET 自動(dòng)小班號="+LTrim(RTrim(Str(newxb)))+"WHERE int(XIANG_DM)="+LTrim(RTrim(xz))+"AND int(CUN_DM)="+LTrim(RTrim(c))

      strUpdate = strUpdate + " AND int(XBH)="+LTrim(RTrim(xb))

      With cmd

      .CommandText=strUpdate

      .CommandType=adCmdUnknown

      .ActiveConnection =cnnDL

      .Execute lngRa

      End With

      cnnDL.Close

      Set cmd =Nothing

      Set cnnDL =Nothing

      End Sub

      3.3 運(yùn)行模塊,完成小班自動(dòng)編號

      在模塊窗口菜單中雙擊“公益林小班號自動(dòng)編號”模塊,選擇“運(yùn)行”菜單項(xiàng),待出現(xiàn)"恭喜!您的公益林小班順號完畢!"的信息框時(shí),即完成小班號自動(dòng)編號。

      4 結(jié)論

      與傳統(tǒng)手工編號方法相比,本方法大大節(jié)省了時(shí)間和人力,提高了工作效率和精度,避免了重號漏號的出現(xiàn),同時(shí)解決了因小班增減變化引起的小班號重編所帶來的巨大工作量問題。以貴州省長順縣的公益林?jǐn)?shù)據(jù)庫為例,共44722個(gè)公益林小班,用該方法僅需半個(gè)小時(shí)即可自動(dòng)完成編號。

      [1] 胡鵬,黃杏元,華一新.地理信息系統(tǒng)教程[M].武漢:武漢大學(xué)出版社,2002.

      [2] 湯國安,楊昕.ArcGIS 地理信息系統(tǒng)空間分析實(shí)驗(yàn)教程[M].北京:科學(xué)出版社,2006.

      [3] 王春才,高春艷,李俊民.VisualBasic數(shù)據(jù)庫系統(tǒng)開發(fā)完全手冊[M].北京:人民郵電出版社,2006.

      [4] 鄭旭東,黃新峰,孫紅召,等.ArcGIS中森林小班自動(dòng)編號方法探討[J].林業(yè)調(diào)查規(guī)劃,2008(3):9-10.

      [5] 崔彥軍,丁守杰,范麗紅.VB與ArcGIS相結(jié)合森林小班自動(dòng)編號方法探討[J].山東林業(yè)科技,2013(2):95-97.

      猜你喜歡
      長順縣公益林新建
      Spin transport properties in ferromagnet/superconductor junctions on topological insulator
      重慶三年新建農(nóng)村公路6.26×10~4 km
      石油瀝青(2022年3期)2022-08-26 09:13:40
      貴州省黔南州長順縣小學(xué)生課余體育鍛煉的研究
      ArcGis在遼寧省國家公益林調(diào)整中的應(yīng)用
      龍泉七成公益林實(shí)現(xiàn)信息化管理
      萬紫蝶、梁新建作品
      國家級重點(diǎn)公益林管理現(xiàn)狀與發(fā)展對策研究
      生態(tài)公益林可持續(xù)經(jīng)營的探討
      曹曙東、溫新建作品
      長順縣水利建設(shè)存在的問題及對策
      南部县| 甘泉县| 宁武县| 秦皇岛市| 固阳县| 东丰县| 敦化市| 宁津县| 郓城县| 无为县| 双城市| 清流县| 桦川县| 阜城县| 泽库县| 阿荣旗| 大厂| 自贡市| 信丰县| 微博| 中山市| 海林市| 改则县| 青岛市| 滦平县| 德保县| 宁化县| 江孜县| 平顶山市| 固阳县| 马公市| 深水埗区| 红安县| 安康市| 晋城| 安福县| 盈江县| 买车| 泰安市| 常宁市| 涪陵区|