最近测试了一个AE+C#二次开发的程序,做过AE二次开发的都知道,开发主要是基于图形的,也就是说基于ArcGIS的多种图形格式,如最普遍的点、线、面图层,一般做某些功能也是以图层为单元的!当然也非为矢量和栅格了!这就要求我们在编码的过程中注意格式的判断和筛选。如果不加严格的筛选控制,将出现大量的bug。下面举几个例子:
1)格式筛选,矢量和栅格作为GIS行业的两大格式,不同的GIS功能针对不同的格式。如做影像拼接就不可以加载矢量图。如果做拓扑检查就不可以用栅格图。
2)要素类型筛选,对于某些功能,特别是针对某个行业的GIS功能,对要素类型是有要求的,比如林业,一般是对面进行处理,这就要求程序员在编码时,直接把除面图层的图层都过滤掉。
3)字段筛选,做GIS应用开发,很多功能都是对图形中的字段做处理,比如字段运算,根据某几个字段计算出感兴趣的结果,一般此功能对输入的字段都会有要求的(如只能是数值型字段),这就要求我们在编码的时候重点注意!!!
4)数据输出控制,输出时也要对输出数据加以筛选。数据是GIS的核心,在编码的过程中一旦对数据有任何改动(位置、属性值、字段类型等)都要提醒,告诉用户你要改数据了!!!还有,在输出数据的时候,特别是一个新建一个图层的时候,如果建在空间数据库中,对图层名有限制(30字符)!某些字段值有限制!
5)空值控制,在编码过程中,如果取值为null或者为"",那你就惨了,不崩溃才怪呢!不要怕麻烦,多加判断语句是对功能实现的一种保险!
总而言之,不论你是用何种语言的程序员,控制条件筛选是必学的一门功课,永远不会知道用户给你输入什么样的数据,更不可能去限制用户只能怎样怎样!最好的方式是用程序内部控制限制其输入某些不符合要求或过滤掉不可处理的数据,并在交互界面上友好提示!谨记,不要小看控制条件筛选,否则针对会出现大灾难的!