宗地权属图生成的解决方案设计

来源:互联网 发布:宏观经济 知乎 编辑:程序博客网 时间:2024/04/30 07:06

一  需求背景

1 背景

宗地权属图是单位日常纸质地图买卖业务的一部分。之前宗地数据比较老旧,借着不动产项目,宗地数据被更新,权属图也随之更新。由于宗地数据是每天更新,同时更新和审核抽取具有时间差,宗地数据来源不统一,存放位置不统一,宗地数据量较大。人工的进行每天的宗地数据整合并生成权属线和权属注记,工作量很大,而且容易出错。所以需要一个自动的替代人工处理数据的程序。

2 已有数据

(1)本地库  每日最新汇总的宗地 记为B1

 (2)SDE库  图形库,分为地上、地表、地下宗地,这里统一记为J1;属性库,存储着各种属性表,这里统一记为J2

3 已有数据说明

B1中的数据为最新最全,但是有一部分宗地还没有入SDE库审核,没有全部权属效力,这部分宗地生成的权属线要为虚线。

J1中的宗地具有完全权属效力,其生成的权属线为实线,但因为一些特殊情况,J1中的部分数据B1中没有。

注记字段为地籍号、权利人、土地证号,这些字段B1中有,但是J1中没有,要从J2中提取。

4 最终生成的数据

汇总的宗地库 记为B2

权属图库  包括权属线和注记要素 记为B3

二 解决方案

从整体上看,这件事情主要包括两个大步骤,一是宗地数据提取,将本地库和SDE库的图形及属性数据融合;二是根据宗地面状数据,生成权属线以及权属注记。

(一)程序逻辑流程

1  删除B1与J1中重复的宗地,剩余的库记为C1

2 每次执行程序,先清空B2数据库,向B2中导入J1

3 清空B3,生成权属线,C1中的生成为虚线,B2中的生成为实线,并全部写入B3中

4 根据不动产单元号,将B2与J2关联,从J2提取出地籍号、权利人、土地证号三个字段赋给B2中的每个宗地

5 向B2导入C1,B2库建立完毕

6 利用B2库生成权属注记,写入B3,B3库建立完毕。

(二) 主要技术点

 程序是使用C#+ARCengine开发的,平台是vs2012,数据库为oracle,中间件为arcsde。

1 oracle连接 提取数据,arcsde连接提取数据

2 ARCengine操作空间数据库要素

3 权属线生成 主要接口 IPolygon 、 IGeometry、IPolygonCollection、IGeometryCollection

4 注记生成 主要接口 IAnnotatelayerproperties、Ilinelable、 IGeoFeaturelayer、ITextSymbol

三 效果图

执行程序完毕

生成的权属图

放大的效果

说明:生成的注记有格式要求,程序里已经设定。生成时地图比例尺必须为1:500,单位为米

四 总结

最近在读金字塔原理,本不太想写这篇文章,因为这个程序的通用性可能没有上一篇一键符号化那个程序那么强,最终写出来的目的其实是训练一下自己的逻辑思维。想用novamind做个思维导图,发现这个流程完全没必要做导图。因为这个流程设计的难点不在于复杂的逻辑,多步骤的流程,而是逻辑的时间顺序。每一步的流程先后顺序都是很考究的,顺序错一点,结果就会出问题。这个程序是我2017年2月写的,修修改改差不多一个多月完成,代码总量1500多行。目前的瑕疵,就是执行速度有点慢,12000条数据,执行了300多秒,然而,我觉得这个无法避免,毕竟直线流程不能用多线程。细心的读者可以发现,其实程序设计流程的6步如果人工来做,也试用,不过第一会很慢,第二会很烦吐舌头,这也是领导让我写这个程序的目的。