徐 志 扬
ViewGIS矢量图关键字转换方法探讨
徐 志 扬
(国家林业局华东林业调查规划设计院 浙江金华 321001)
对ViewGIS软件矢量图关键字前后期组成进行比较,分析了关键字代码转换方法,基于图层数据库与系统数据库编写简易实用的数据库处理程序将经营代码编码的关键字转换为行政代码编码的关键字,为森林资源规划设计调查数字化成果提供基础材料。
ViewGIS;关键字;经营代码编码;行政代码编码;图层数据库;系统数据库
森林资源管理信息系统是数字林业建设的重要内容。在过去的十年里ViewGIS是一些省市县建立森林资源管理信息系统的基础地理信息平台,随着GIS产业的发展以及数字林业建设的推进,很多森林资源管理信息系统基础平台正逐渐地从ViewGIS向其他地理信息软件过渡,而将只有ViewGIS软件识别打开的LAY图层文件转换为通用的SHP矢量数据或转入地理数据库,并完成由原建档乡村单位经营代码等组成的小班复合编码(即关键字)向由乡村单位行政代码等组成的小班复合编码转换,这些都是森林资源规划设计调查数字化成果建设的基础性工作,是完成从ViewGIS平台向其它地理信息平台过渡的重要环节。
以福建省为例,大部分县市区在2003年就已经完成了应用ViewGIS对1997年森林资源规划设计调查成果的建档与矢量化工作,据此建立了基于ViewGIS平台的森林资源管理信息系统,并将该成果应用到实际林业生产中。图斑关键字用复合编码表示,由乡镇经营代码、村经营代码、林班号、大班号、小班号组成复合编码,如“010200003310”表示乡镇经营代码为“01”、村经营代码为“02”、林班号为“000”、大班号为“03”的31小班。最近一期的森林资源规划设计调查采用续档调查的方法展开,续档调查要求充分利用建档成果。采用其它软件如ArcGIS对调查单位区划小班全部重新矢量化可以避免由于ViewGIS软件自身原因造成的图面些许斑点,但显得有些费时费力,而通过修改原建档矢量图可以避免重复性矢量化,且符合技术规定要求,但建档矢量图关键字由经营代码编码即乡镇经营代码、村经营代码、林班号、大班号与小班号组成,而最新矢量图关键字要求为行政代码编码即行政乡镇代码、行政村代码、林班号、大班号与小班号组成,如某县关键字编码为“010200003310”的图斑,如果乡村经营代码“0102”对应的乡村行政代码为“201202”,那么新的复合编码应该为“20120200003310”,因此,完成由经营代码组成的小班复合编码向行政代码组成的小班复合编码转换是急需解决的问题。
修改ViewGIS的LAY图层文件关键字方法多样,最简单直接的方法就是在ViewGIS下打开图层文件逐个修改关键字,当需要修改的关键字较少时这种办法比较方便,但当需要修改的关键字较多时这种方法显然不是明智之举。而在ViewGIS下建立图层数据库,将逐个修改图面斑块关键字转变为直接操作图层数据库则可以大大简化工作。
当将由经营代码编码组成的关键字向由行政代码编码组成的关键字转换涉及到的乡村单位较少时,即使需要转换单位代码的关键字众多,用SQL命令直接操作图层数据库也不失为一个快捷简单的方法,但是当需要完成关键字代码转换涉及到的乡村单位较多时,使用SQL命令将逐个的经营单位代码编码转换为行政单位代码编码显得既费时又费力,因此通过编制简单实用的数据库程序操作图层数据库,完成图层文件关键字代码转换,显得很有必要。
首先分析ViewGIS图层数据库以及系统数据库ZYDBSystem各表结构与内容,系统数据库内存储着各区县所有乡村单位经营权属代码与行政范围代码。
先看图层数据库,在ViewGIS下由图层文件生成图层数据库会生成关键字、原关键字、特征值等字段,其中字段关键字保持着矢量图与图层数据库一一对应,操作图层数据库时必须保持该对应关系不变,而字段原关键字保存了生成图层数据库之前的图形关键字信息,关键字代码转换即需要充分挖掘原关键字信息。在图层数据库中增加字段“乡村码”、“林_小班码”、“新乡村码”、“MainIndex”,其中字段“乡村码”存储原关键字中前4位乡村单位经营权属代码,“林_小班码”存储原关键字中后面8位林班号、大班号、小班号,“新乡村码”存储转换后的乡村单位行政范围代码,共6位,“MainIndex”存储经过重新组合的乡村行政代码、林班号、大班号、小班号复合编码。
而在系统数据库ZYDBSystem诸表中,表SYS_DISTRICT存储了单位名称、行政代码、原经营代码等,其结构如下图一所示。其中,字段DISTRICT_NAME存储了单位名称,DISTRICT_CODE存储了对应该单位的行政编码,TN_CODE存储了对应该单位的原建档经营编码,系统数据库ZYDBSystem的表SYS_DISTRICT是完成关键字代码转换的必需要件。
图一系统数据库ZYDBSystem
表SYS_DISTRICT结构
图二 程序运行界面
在Visual Basic 6.0编程环境下引用ADO对象编写简易实用的数据库应用程序可轻松生成由行政代码复合编码的关键字,程序运行界面如上图二所示,其中编辑框中提供了对所在县市区原建档代码(如“HB”、“HA”等)的填写。
程序实现部分代码如下:
Private Sub repalce_Click()
......
'读取乡村经营代码存储到动态数组中
RsDbf.Open "select DISTINCT 乡村码 from hdyxzy", mConnDbf, adOpenKeyset, adLockOptimistic
......
While Not RsDbf.EOF
oldTownVillCode(i) = Trim(RsDbf.Fields(0).Value)
i = i + 1
RsDbf.MoveNext
Wend
RsDbf.Close
......
'查询得到各经营乡村代码对应的行政乡村代码,并重新计算关键字
For i = 1 To nTownVillCount
......
RsDistrict.Open "select * from SYS_DISTRICT where " & " TN_CODE='" & oldCountyTownVill & "'", mConnMdb, adOpenKeyset, adLockOptimistic, adCmdText
......
newTownVill = Trim(Right(newCountyTownVill, 6))
......
RsDistrict.Close
......
RsDbf.Open "select * from hdyxzy where " + "乡村码='" + oldTownVill + "'", mConnDbf, adOpenKeyset, adLockOptimistic
......
RsDbf.Fields("新乡村码").Value = newTownVill
RsDbf.Fields("mainindex").Value = Trim (newTownVill) & Trim(RsDbf.Fields("林_小班码").Value)
......
RsDbf.Close
......
Next
......
End Sub
生成存储在MainIndex字段中的由乡村行政代码复合编码得到的关键字后,在ViewGIS环境下将图层数据库MainIndex字段回填关键字,这样就完成了从经营代码组成的复合编码向行政代码组成的复合编码转换。
在森林资源规划设计调查过程中,充分利用建档矢量图,以档案材料为基础完成矢量化,有利于提高森林资源档案管理水平,对于档案材料的延续性有一定作用;编写简易实用且可推广应用的数据库处理程序可以辅助完成矢量化,提高工作效率。
[1] 福建省林业厅. 福建省森林资源规划设计调查和森林经营方案编制技术规定. 2006.5.
[2] 福建省林业厅森林资源总站. 福建省森林资源管理培训高级班培训大纲.2003.9.
[3] 谭浩强,陈志泊.Visual Basic程序设计.清华大学出版社.
S725.1
B
1004-7743(2010)03-0076-03
2010-05-08