文章版权由做者李晓晖和博客园共有,若转载请于明显处标明出处:http://www.cnblogs.com/naaoveGIS/。数据库
系统中咱们将区域级别代号分为:区(district)、街道(street)、社区(community)、单元网格(cell)。编码
而他们所对应的数字代号分别是:3d
区:2;code
街道:3;blog
社区:4;排序
单元网格:5get
tcregion表中包含了全部区域的相关信息。博客
Vcregion表it
此表为基于tcregion表的视图表,建立代码以下:io
建立后所得表以下。观察此表能够得出,街道代码、社区代码和网格代码之间的内在联系。
获取新增部件的编码须要两个参数,一个是subTypeID,另外一个是cellName。SubTypeID的获取方式是:
CellName为网格编码,其获取方式通常是标志定位时获得XY,经过地理服务端或者直接查询数据库所得。以下,即是一个cellName。
QDM:表示由单元网格查出的区代码的最后六位数。
Unicode:表示由subTypeID查出的对应部件的部件编码,取最后四位数。
MaxCode(+|-)1:表示将该部件图层中的最大编码按照排序规则加或者减1。
该流程已经用存储过程写出,可查询dlsys.fcGetPhyLayerNewObjCode。这里只是将此存储过程当中的流程分步解说。
假设cellName ='41030200100502'。
若是没有查到数据,则用cellName的前六位代替,即410302。
假设查出的SubTypeID为514。
或获得uniqueCode须要取最后四位数,得:
由4.1和4.2已经得出了QDM和uniqueCode以及phylayerName(燃气井盖)。
则在表dlgis.燃气井盖中查询其中已有的最大编码。查询到后,再和由QDM以及uniqueCode按照规则组合出来的数据比较,获得最大值。
这里获得的是:
编码多是递增规则也多是递减规则。这里经过配置而得其规则:
即用maxCode加上或减去1。