查看原文
其他

交卷啦!高校iData开发竞赛优秀作品展

南方数码 南方数码 2021-04-28

经历了200多个日日夜夜,“南方数码杯”高校iData竞赛,终于到了交卷的时刻。各位参赛选手,不负200多个日夜的辛苦奋战,终于交出了理想的作品。让我们来看看其中的部分优秀作品吧~


孙傲辉

学校:华北水利水电大学

专业:测绘工程

基本概况

•  能够实现对当前数据库的实体进分图层进行检索,以每一个图层为一个集合判断是否存在完全相同实体,若存在则删除一个;

•  判断是否存在复制(包括多次复制)后这多个相同实体其中一个被改动(包括属性和几何的更改)都将给与高亮显示。

亮点

• 开发思想:开发以模块化的思想,将每一个原子功能进行封装,如本程序将判断两个实体是相同、完全不同、几何节点相同但属性不同和几何节点大部分相同这一功能开发为一个函数,并返回不同的值表示判断结果;

• 适用范围:此次开发通过获取整个数据库,并将实体通过图层进行划分,以单独图层为判断集合,而不是这个数据库所有实体,这样大大降低了时间复杂度和空间复杂度,能够完成万级(实体个数)以下数据的操作;

  改进:本开发以图层最小集合进行判断,若能以每一个编码为最先集合,则能实现万级以上数据的操作。

评委点评:

能够注意到对比过程中的重复问题,降低了计算量,同时实体对比过程中也能够想办法降低对比量。但先删除实体在添加的做法极度危险,不建议使用。

马浩博

学校:广东工业大学

专业:测绘工程

基本概况

•   对于被多次复制粘贴的实体,程序运行时,会先判断并自动删除,只留下原实体;

•   对于粘贴后属性又被部分修改的实体(例如增加节点或者修改实体位置等),程序会找出被修改的实体以及属性相似程度符合要求的其他实体,并且给予高亮显示,用户点选即可删除,如果按下esc,则跳过这些实体。

实现思路

程序大致分为上述的两部分,大致实现步骤如下:

亮点

• 比较每一图层的属性列表,通过去重,得到重复数据在列表中的索引,通过这个索引来进行删除操作;

• 为了减少操作时间,将程序第一部分得到的属性列表作为参数传入第二部分,减少再次获取实体属性需要的时间。

评委点评:

1、代码结构清晰,注释详细。亮点是将等待对比的实体转换成了字符串,将实体对比问题转换为字符串对比问题;

2、考虑到了GLOBALID、OID等特殊属性,逻辑较为严谨;

3、但在对比属性时,考虑的项目太多,可以进一步优化,对比节点部分逻辑也可继续优化;

4、考虑到了计算量大,增加了进度条。

高旭东

学校:华北水利水电大学

专业:测绘工程

基本概况

• 第三次全国土地调查项目中,进行县级数据库建设过程中,需要完善地类图斑层属性字段,其中扣除系数字段赋值需要依据耕地等别字段的值进行赋值,而且山区和丘陵地区耕地等别字段所对应的扣除系数不一致。通过编写Python二次开发命令可以实现一键操作对扣除系数进行赋值。

实现思路

①首先进行判断是否有数据文档打开;

②提示用户是否完成耕地坡度级别的赋值;

③提示用户选择区域类型为山地或丘陵;

④利用PyiData中的iDataSSGet命令获取土地利用图层的全部实体;

⑤遍历实体数组,利用iDataEntity.convertToPolygon命令将抽象实体转换为具体的实体;

⑥获取实体中的GDDB字段值,对其进行判断,依据耕地等别的五个等级分别对实体的KCXS字段进行赋值;

⑦最后,利用CommitEntity命令向数据库更新实体,刷新数据。

亮点

• 命令代码直接调用PyiData提供的二次开发接口,无需安装第三方库;

• 代码逻辑简单,执行效率较高。

评委点评:

能够根据iData二次开发内容,完成实际作业需求,逻辑较为严谨。


南方数码举办本次高校iData开发竞赛,通过传授Python开发语言,提升参赛学生实践与创新能力。接下来将陆续展示更多优秀参赛作品,敬请期待!




    您可能也对以下帖子感兴趣

    文章有问题?点此查看未经处理的缓存