zoukankan      html  css  js  c++  java
  • 新部件编码的生成流程

    文章版权由作者李晓晖和博客园共有,若转载请于明显处标明出处:http://www.cnblogs.com/naaoveGIS/

    1.背景

    1.1区域级别代号

    系统中我们将区域级别代号分为:区(district)、街道(street)、社区(community)、单元网格(cell)。

    而他们所对应的数字代号分别是:

    区:2;

    街道:3;

    社区:4;

    单元网格:5

    1.2 tcregion表和vcregion表

    tcregion表中包含了所有区域的相关信息。

                           

    Vcregion表

    此表为基于tcregion表的视图表,创建代码如下:

     

    创建后所得表如下。观察此表可以得出,街道代码、社区代码和网格代码之间的内在联系。

     

    2.获取新增部件编码需要的参数

    获取新增部件的编码需要两个参数,一个是subTypeID,另一个是cellName。SubTypeID的获取方式是:

     

    CellName为网格编码,其获取方式一般是标志定位时得到XY,通过地理服务端或者直接查询数据库所得。如下,便是一个cellName。

     

    3.流程图

     

    4.详解编码组成格式

     

     

    QDM:表示由单元网格查出的区代码的最后六位数。

    Unicode:表示由subTypeID查出的对应部件的部件编码,取最后四位数。

    MaxCode(+|-)1:表示将该部件图层中的最大编码按照排序规则加或者减1。

    5.详解编码获得流程

    该流程已经用存储过程写出,可查询dlsys.fcGetPhyLayerNewObjCode。这里只是将此存储过程中的流程分步解说。

    5.1获取QDM

    假设cellName ='41030200100502'。

     

    如果没有查到数据,则用cellName的前六位代替,即410302。

     

    5.2获取对应的部件统一编码和部件图层名

    假设查出的SubTypeID为514。

     

    或得到uniqueCode需要取最后四位数,得:

     

    5.3获取maxCODE

    由4.1和4.2已经得出了QDM和uniqueCode以及phylayerName(燃气井盖)。

    则在表dlgis.燃气井盖中查询其中已有的最大编码。查询到后,再和由QDM以及uniqueCode按照规则组合出来的数据比较,得到最大值。

     

    这里得到的是:

     

    5.4获取编码排序规则

    编码可能是递增规则也可能是递减规则。这里通过配置而得其规则:

     

    5.5得到新增编码

     

    即用maxCode加上或减去1。

  • 相关阅读:
    Windows下载Vim
    分享:分享几个程序员使用的网站
    分享:C语言大礼包(PDF)
    将vscode打造成强大的C/C++ IDE
    最适合做C/C++开发的IDE
    bzoj 2244
    bzoj 1492
    bzoj 3262
    bzoj 1176
    bzoj 2961
  • 原文地址:https://www.cnblogs.com/naaoveGIS/p/4092723.html
Copyright © 2011-2022 走看看