程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> Oracle數據庫 >> Oracle教程 >> 新部件編碼的生成流程,部件編碼生成流程

新部件編碼的生成流程,部件編碼生成流程

編輯:Oracle教程

新部件編碼的生成流程,部件編碼生成流程


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。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved