文章版權由做者李曉暉和博客園共有,若轉載請於明顯處標明出處: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。