新部件編碼的生成流程

文章版權由做者李曉暉和博客園共有,若轉載請於明顯處標明出處:http://www.cnblogs.com/naaoveGIS/數據庫

1.背景

1.1區域級別代號

系統中咱們將區域級別代號分爲:區(district)、街道(street)、社區(community)、單元網格(cell)。編碼

而他們所對應的數字代號分別是:3d

區:2;code

街道:3;blog

社區:4;排序

單元網格:5get

1.2 tcregion表和vcregion表

tcregion表中包含了全部區域的相關信息。博客

                       

Vcregion表it

此表爲基於tcregion表的視圖表,建立代碼以下:io

 

建立後所得表以下。觀察此表能夠得出,街道代碼、社區代碼和網格代碼之間的內在聯繫。

 

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。

相關文章
相關標籤/搜索