四川省煤田测绘工程院,四川 成都 610072
摘要:为了地籍数据库建设的需要,地籍测量的原始数据必须经过处理,转换为数据入库所需要的标准格式。本文通过对相关数据格式的分析,采用VB语言程序实现了街坊点线文件数据格式的自动化转换。
关键词:VB;街坊;点线文件;程序
1 引言
在城镇地籍调查与数据库建设的内业工作中,涉及多种格式的数据文件,按照地籍数据入库的要求,提交的数据文件包括Access数据库文件(*.mdb),控制点坐标文件(*.txt),界址点坐标文件(*.xy),宗地连线文件(*.lin)。这些文件当中,*.xy和*.lin两种格式的数据文件是在街坊点线提取生成的*.lab(街坊点文件)和*.line(街坊线文件) 两种格式数据文件的基础上处理生成的。为了使错误提示更加准确详细,提高工作效率,设计一个实用的街坊点线文件处理程序是相当必要的。由于Visual Basic 程序设计语言具有简洁实用,开发环境直观,生成的应用程序代码小等优点,本文将讨论街坊点线文件处理程序在VB6.0环境下的实现。
2 基本代码设计
本程序涉及后缀为lab、line、xy、lin的四种数据文件格式。街坊点文件(*.lab)数据格式举例如下:
1951,267897.37,223555.18
1952,267981.36,223553.33
1953,268020.67,223557.04
1954,268034.08,223557.22
......................
第一列数据为界址点在街坊内的统一编号,该编号在街坊内唯一。第二列是界址点的Y坐标,第三列是X坐标,每一行记录一个界址点。
街坊线文件(*.line)数据格式举例如下(以一宗地为例):
4
267206.26,224893.18
267213.52,224895.34
267216.81,224884.17
267209.53,224882.02
,300000,JT3-7-119,张三,252
首行的数字4表示所在宗地的界址点总数,接下来的4行是界址点坐标,第一列是测量Y坐标,第二列是测量X坐标。最后一行为宗地信息行,300000是南方测绘数字化地形地籍成图软件中界址线的实体编码,JT3-7-119是宗地从地市级行政单位起的四级完整编码,张三是宗地权利人名称,252表示宗地地类号(城镇混合住宅用地)。
处理后应当生成的*.xy数据文件格式举例如下:
1,224524.870,265232.370,4
2,224533.250,265214.430,4
3,224535.310,265210.280,4
4,224543.380,265197.520,4
………………………………
第一列为界址点的街坊内编号,第二列为X坐标,第三列为Y坐标,最后一列为界标类型,4表示喷涂。每一行表示一个界址点。
处理后应当生成的*.lin数据文件格式举例如下:
JT3-2-7,100,12,1009,1010,1011,1012,1007,1006,1005,1004,1013,1014,1015,1016,滨江路社区二组
JT3-2-8,100,12,1003,1004,1005,1006,1007,1008,1002,1001,1000,983,982,981,滨江路社区一组
JT3-2-9,100,8,983,1000,1001,1002,987,986,985,984,滨江路社区二组
……………………
每一行为一个宗地记录。以第一行为例,第一列JT3-2-7表示街坊内宗地编号,第二列100为宗地地类号,第三列12为宗地界址点个数,第四列至倒数第二列的数字为界址点街坊内统编号,最后一列为宗地权利人名称。
从数据格式上我们不难分析得出,生成的 *.xy数据文件与原始的*.line数据文件并无任何相关之处,而生成的*.lin数据文件却同时与原始的*.lab数据文件和*.line数据文件都密切相关,*.lin数据文件与*.lab数据文件的共同之处就在于都包含了界址点的街坊内统编号。要想获得*.xy数据文件,我们只需要处理*.lab数据文件,从中逐点提取界址点号,X坐标,Y坐标,将坐标列的顺序调换,最后加上界标类型数字代码即可。在生成*.lin数据文件的时候,最重要同时也是最关键的就是两种数据文件间的严格对应关系。*.lin数据文件中每一宗地的地类号,权利人,以及界址点的顺序都必须要与*.line数据文件中保持一致。因此,每一类数据都要分别存放到各自不同的变量组中,避免混淆。lin数据文件的前三列和最后一列是从line数据文件读取出来的数据中直接得到的,而界址点号则必须要到lab数据文件中去找。首先提取line数据文件中的一组坐标,然后将其与lab数据文件中的坐标值比较,找到相同的值时将lab数据文件中该坐标值所对应的界址点街坊内统编号记录,并写入到lin数据文件中对应的宗地里,然后进行下一组坐标值的查找。这一步如果处理不好点号与坐标就不能一一对应,宗地与其点号也不能一一对应。将lin数据文件中所需要的各个数据项全部得到后,按照前述lin数据文件的格式组织和输出数据即可得到lin数据文件。
为了使输出的成果具有更强的可读性,以便于作业人员检查有无漏宗的情况,程序采用比较排序法对新生成的lin数据文件和xy数据文件进行排序,生成的数据文件自动按从小到大排列,避免为了查错再将结果导入Excel中排序。
3 错误处理和异常调试
以上设计完全基于原始数据内容正确无误的理想情况,实际上,作业人员往往难以一次性将所有数据处理合格,因此,必须加入错误处理和异常调试。
原始数据主要的错误来源于图面,比如线型有误,宗地号漏输等,另外也有一些错误来自于绘图软件本身或者提取点线数据的加载程序,软件某些时候会出现无法识别较复杂宗地的情况而造成街坊点线原始数据文件提取不正确。在出错的情况下,要想让作业员逐一核对原始数据文件,定位错误位置,不仅工作量巨大,且可靠性难以保证,因此考虑用程序来提供明确的错误定义和准确的错误定位,辅助作业人员分析错误原因以做出针对性修改,提高工作效率。通过分析,在实际中,原始数据主要可能出现以下几种错误:
line文件中宗地其它信息完全正确,但宗地信息行末尾地类号丢失。
line文件中宗地其它信息完全正确,宗地信息行数据完全错误。
line文件中部分宗地不能提取出来,即丢失部分宗地的数据。
lab文件中界址点号所在列全部为“J”,没有界址点号。
lab文件中界址点总数少于街坊界址点总数,部分界址点丢失。
line文件的数据量远比lab文件大,而且生成line文件也比生成lab文件复杂,因此错误以line文件居多。针对这些错误,应用程序都作出了相应提示,以方便作业员查找改正。比如:程序处理结束将显示处理的宗地总数和界址点总数,这样作业员就知道有无漏宗了。针对第一种错误,程序将弹出窗体提示是哪一宗地出错,而对于第二种错误,程序将提示错误位置在line文件中的行号,以方便查找改正。
4 程序运行结果
图1 程序运行结果
图2 地类错误消息提示
5 结语
应用程序可以完成大多数情况下的错误提示,基本能满足所需要的功能。当然,还有一些可以改进的地方,比如,没有根据原始的两种数据文件对界址点进行点位匹配检查,等等。同时,鉴于应用程序本身极强的针对性,以及实际应用过程中异常情况的复杂性,程序无法将所有异常情况都考虑到,但是,结合作业人员的相关操作,是完全可以避免资料出现错误的。此程序在实践中已取得较为满意的效果,对提高工作效率是很有帮助的。
参考文献
[1] 黎明,刘成安.Visual Basic程序设计教程.成都:电子科技大学出版社 2004.3
[2] 刘炳文.VB程序设计教程.北京:清华大学出版社 2006.8
[3] 彭澎. Visual Basic程序设计. 北京:中国电力出版社 2006.2
[4] 刘瑞新. Visual Basic程序设计. 北京:机械工业出版社 2004.2
[5] 杨晶. VB6.0程序设计教程与实训. 北京:科学出版社 2006.9
[作者简介] 毛承逆(1983- ),男,四川眉山人,测绘高级工程师,2007年毕业于西南石油大学测绘工程专业,现就职于四川省煤田测绘工程院,主要从事工程测量、摄影测量与遥感、不动产测绘及地理信息系统工程。联系方式(手机:18602839613,E-mail:maochengni@qq.com,邮编:610072,地址:成都市青华路39号四川省煤田测绘工程院)