Geodatabase and ArcSDE

ArcGIS 9.2產品推出以後,Geodatabase部分發生了比較大的變化。本次講座介紹的均是9.2的Geodatabase和ArcSDE的功能。
在產品組成方面:9.1版本中,Geodatabase包括兩種:Personal Geodatabase和ArcSDE Geodatabase,其中前者是將空間數據存儲在Access中,後者是將數據存儲在Oracle,Informix,DB2,SQL Server中 。而9.2版本中,新推出了File Geodatabase,並且在ArcSDE Geodatabase部分,變成了三種類型:ArcSDE Personal Geodatabase,ArcSDE Workgroup Geodatabase,ArcSDE Enterprise Geodatabase。其中前兩種是9.2新推出來的產品,是將空間數據存儲在SQL Server Express中(詳細介紹可見正文),而第三種就是9.1版本的ArcSDE Geodatabase,是將空間數據存儲在Oracle,Informix,DB2,SQL Server。
在功能方面:本講座涉及的功能均爲9.2的功能,其中9.1具備的功能包括:Versioning Editing(版本化編輯),Working With a Geodatase Using SQL(支持的數據庫僅爲Informix和DB2 ),離線編輯(與9.2的空間數據複製中的Check In/Check Out相同)。值得注意的是,9.1版本對存儲在ArcSDE中的空間數據只提供版本編輯功能,到了9.2才增加了Non Version(非版本化編輯)功能,以及Registered as visioned with the option to move edits to base(不完全版本化編輯)功能。


第一部分:Geodatabase的基礎知識(之一)

Geodatabase能將空間數據存儲在文件、MDB文件或者大型DBMS中。以上三種存儲方式的區別在於可存儲數據量的不同以及可支持的併發用戶數量不同,能夠實現從小數據量、單用戶的文件數據庫到大數據量、多用戶併發編輯的企業級DBMS的不同層次的應用。

Geodatabase事實上是很多Geographic Dataset的集合,最基本的Dataset的類型包括Feature Classes、Raster Dataset、Attribute Tables。在以上基本要素的基礎上,還能定義Geodatabase的Schema、數據的完整性、規則和行爲,包括Spatial Reference、Spatial Resolution、Topology、Network、Domain等等。在創建Geodatabase時,首先生成不同的Dataset類型,然後添加或者擴展Geodatabase基本要素的能力,例如添加拓撲、網絡、子類以實現GIS行爲建模、維護數據完整性以及建立空間關係。
不同的數據庫中,存儲矢量和柵格數據幾何特徵的字段在是不一樣的,如果DBMS能夠支持Spatial type Extensions,則能夠很容易採用這種方式存儲空間幾何特徵。目前有三種DBMS能夠支持Geodatabase的Spatial Type:

(1)Oracle using the ESRI spatial type or optionally the Oracle Spatial type;
(2)IBM DB2 using the Spatial Extender Geometry Object;
(3)Informix using the Spatial DataBlade Geometry Object。

Geodatabase將地理要素以表格的形式存儲,每行記錄代表一個要素。在Geodatabase的數據表支持的數據類型包括:

Numbers:包括Short Integers、Long Integers、Single-Precision floating points、Double-Precision Floating Point Numbers;
Text;
Date;
BLOB’S;Binary Large Objects用來存儲和管理二進制信息,例如Symbols和CAD幾何特徵;
Globe Identifiers:Globe Unique Identifiers。GlobeID和GUID用來唯一標識一行記錄。
對於矢量要素的存儲來說,創建新的Feature Dataset或者新的Feature Class時,需要對數據的環境進行設置,即Spatial Reference,以下爲主要的幾種空間參考的參數:
(1)XY Tolerance
指實現Cluster或者進行拓撲驗證、緩衝區分析、多邊形疊加等操作時,點與點的座標之間的最小距離。缺省的XY Tolerance是0.001 meter(投影座標系);如果是State Plane Feet,則缺省值是0.003281feet;如果是地理座標系,則缺省值是0.000000008982995degrees。一旦點與點的X座標或者Y座標的距離小於XY Tolerance,則兩點應該合併爲一個點。缺省狀態下XY Tolerance=XY Resolution * 10。在實際應用中,XY Tolerance太大或者太小均有問題,應該根據實際情況設定合適的Tolerance。在設定Topology時,可以設定不同要素類的Rank,以確保當兩個要素的點小於XY Tolerance時,應該是哪個點向哪個點移動。
(2)XY Resolution
表示存儲要素座標時的數值精度,即可以保留的小數點的位數。缺省狀態下的Resloution是0.0001meter(投影座標系) ;如果是State Plane Feet,則缺省值是0.0003281feet;如果是地理座標系,則缺省值是0.0000000008982995degrees。
對於3D數據以及Linear Referencing數據,可以分別對Z值和M值設置Z Tolerance、Z Resolution,以及M Tolerance、M Resolution
可以將Geodatabase的Feature Classes擴展爲高級數據類型:Feature Dataset,、Subtypes、Attribute Domains、Relationship Classes、Topology、Network Dataset、Geometric Network、Terrain、Address Locator、Linear Referencing、Cadastral Fabric、Cartographic Representation、Versioning。
對於Raster數據的存儲來說,Raster數據是採用規則網格表示連續的地理事物和現象。其存儲時需要注意以下部分的設置:
Coordinate System;
Reference Coordinate or XY Location;
Cell Size;
Count of Rows和Columns。
Raster和Image數據類型也是存儲和管理在關係表格中,Raster數據通常比較大,存儲的時候需要一個Side Table來存儲,將Raster切爲小片,或者大小通常爲128*128或者256*256的Blocks,存儲在Raster表中,通過Side表的每一行記錄去記錄柵格中的每一個Block。
雖然對File Geodatabase和Personal Geodatabase的管理任務很少,但是還是有些管理任務是很重要的,“附件一”爲兩種數據庫需要的管理工作。
Compressing與Compacting所表示的含義與操作是不同的。
對於File Geodatabase來說,Compressing與Smart Data Compression(SDC)採用相同的技術,並且提供更多的優越之處。爲了減小存儲空間,可以將File Geodatabase的矢量要素和Table壓縮成Read-Only格式。Compress以後的數據在ArcMap和ArcCatalog中顯示時與未壓縮的數據一樣,只是不能編輯。
File Geodatabase的Compress不是在物理上將數據壓縮得更小,而是將數據組織得更加緊湊,例如重複的完全相同的多點會用一行記錄加上點的個數來表示。ArcGIS對不同的字段採取不同的壓縮方法,壓縮比例由要素的類型以及屬性數據的冗餘程度來決定。右鍵單擊File Geodatabase,選擇Compress File Geodatabase實現該功能。
Compress和Uncompress也可以通過Geoprocessing的工具來實現。除了可以通過Compress File Geodatabase功能來實現文件的壓縮以外,如果原始數據的Resolution很精細,而在實際應用中不需要很高的分辨率,則可以將原始數據導入到一個新的粗分辨率的數據庫。不能夠單獨Compress和Uncompress一個Feature Dataset中的Feature Class,如果希望對該Feature Class壓縮,則需要將該Feature Dataset中的所有的Feature Class都壓縮。對於Rsater Dataset和Raster Catalog的壓縮只能由File Geodatabase Geoprocessing工具來實現。
一旦Feature Class和Table被壓縮,則不能夠對數據進行編輯,並且不能夠修改Coordinate System Information、Subtypes、Attribute Domains、Default Value、Filed and their Properties、Representations。唯一能夠修改的就是Feature Class和Table的Alias以及Attribute Indexes。
一個Feature Dataset中可以添加Uncompressed Feature Class,如果一個Feature Dataset中同時包含Compressed和Uncompressed的數據,則Uncompressed的數據也不能夠被編輯或修改。“附件二”爲File Geodatabase對Compress功能的支持程度。
用戶能夠壓縮Relationship、Topology、Geometric Networks、Network Datasets 、Terrains中的要素類,但侷限是:不能夠針對已經Compressed的Feature Class創建Topology或者Geometric Network,如果壓縮Relationship Class的一邊的數據,則另一邊的數據也不能編輯。如果Topology的Feature Class已經Compressed,則Topology的屬性也不能修改。“附件三”爲高級要素對Compress功能的支持程度。

Compacting是將文件記錄整理、重新歸類,以減少存儲空間。如果經常添加或者刪除數據,就必須定期對File 或者Personal Geodatabase實現Compact,這能夠減少文件大小,提高訪問速度。
File Geodatabase是將數據存在硬盤的文件夾中,每個Dataset是一個文件,該文件可以達到TB級,而Personal Geodatabase是將數據存儲在MDB文件中。當第一次將數據加載到File Geodatabase或者Personal Geodatabase中時,文件中的記錄是順序排列的,但是如果以後刪除或者添加要素,則文件中的記錄就沒有順序了,會存在很多沒有利用的空間,這將加大文件存儲的空間,使得數據訪問起來速度很慢。
在ArcCatalog中右鍵單擊數據源,選擇Compact Database,則可以實現數據庫的Compact。如果某個Database正在ArcMap中編輯,則不能夠被Compact。
Versioning使得多個用戶能夠同時編輯一個Geodatabase,而不用去複製數據庫或者鎖定數據庫。一個Geodatabase能夠有很多Version,事實上不管一個 Geodatabase有多少個Version,數據庫中只保存一套Tables和Feature Classes。Version是對Geodatabase的快照,而不是複製。對所有版本的編輯都是保存在Delta表中的。通過創建Version,多個用戶可以同時對一個Geodatabase進行編輯,而且多個用戶也可以同時編輯一個Version。

在ArcCatalog和ArcMap中,可以像未版本化的數據一樣實現數據的查詢、瀏覽和編輯。當用戶連接一個多用戶的Geodatabase時,通常需要選定連接哪個Version。

所有的ArcSDE Geodatabase均具備Default 版本,所有版本的最原始的源就是Default版本。能夠通過提交更新的方式來維護和更新Default版本,也可以對其直接編輯。

用戶在創建版本時,可以爲版本設定訪問權限。對某個版本的編輯只會應用到該版本,而某個版本中Schema的變化則會影響到所有其它的版本。一旦停止編輯,可以將編輯結果提交到任意父版本。首先要Reconcile,即比較提交版本中的數據與父版本是否有衝突,如果有衝突則提供衝突解決辦法。然後就是Post,則將編輯結果提交到父版本。

每一個Table和Feature Class包含兩個Delta表:A表和D表。每次更新或者刪除版本中的一個記錄時,則可能對一個或者兩個Delta表進行修改。一個Version包含所有的Original 表以及所有的Delta表的變化,當顯示和查詢一個版本時,ArcGIS是從Original表和Delta表中查找相應的信息。

對於Feature Class和Table的所有編輯,不管是位於哪個Vision中,都是保存在相同的Delta表中。因此Base中的所有行,以及A和D表的所有記錄表示了Feature class和Table的所有版本的信息,任何一個版本都是這三個表的子類。

ArcGIS記錄Delta表中的記錄屬於哪個Version的辦法是:A表和D表的每一行都用State ID進行標識。當編輯一個版本時,產生一個新的State,同時產生新的一行添加到A表或者D表。一個系列的States記錄了版本從Base表到當前狀態,該系列稱爲Lineage。當你顯示或者查詢一個Version時,ArcGIS從版本的Lineage中得到State ID,然後從A表和D表中找到相應的信息。

當編輯Geodatabase時,Delta表的大小和State的數量都在增加,表格與State越多,每次處理時的速度就越慢,因此應該定期利用 ArcCatalog中的Compress工具進行數據庫壓縮,利用Analyze工具實現數據庫的Statistics的重建。

在進行數據庫處理的時候,有三種選項:Registered As Visioned without the option to move edits to base ,registered as visioned with the option to move edits to base,not registered as versioned.
(1) Registered As Visioned without the option to move edits to base
能夠實現的操作包括Undo和Redo操作、長事務編輯、爲設計和工程使用命名版本、使用Geodatabase歸檔、使用數據庫複製。
不能做的事:創建拓撲、從拓撲中添加或刪除要素、添加和刪除拓撲規則、創建幾何網絡、從幾何網絡中添加或刪除要素類。
(2) registered as visioned with the option to move edits to base
不能夠做的事:編輯參與拓撲和幾何網絡的要素類、數據庫歸檔、數據庫複製
(3)not registered as versioned
是最原始的狀態,能夠實現複雜數據類型,包括拓撲和幾何網絡的編輯與更新。因爲Default版本是數據庫中最關鍵的,需要經常更新,因此需要對Default版本定期備份。

如果用戶註冊版本時採用的是Register with the option to save edits to the base table,編輯簡單要素時,編輯的結果還是保存在Delta表中,一旦保存,則這些變化就要從Delta錶轉移到Base Table中,而在Delta表中不再保存編輯的結果。用戶如果編輯的不是Default版本,則變化也是記錄到Delta表中,Save以後,變化也依舊保留在Delta表中,然而當Reconcile和Post到Default版本以後,變化就轉移到Base 表中了。如果是將版本中的變化Reconcile和Post到非Default版本,則在Delta表中依舊會保留變化信息。Register with the option to save edits to the base table的缺陷就是一旦編輯錯誤,不能夠回退,只能夠放棄整個編輯過程。這種方法主要是使得第三方應用能夠在版本化的環境下執行類似Non- Version 編輯,而ArcGIS用戶是不能夠通過這種設置來實現Non-Version編輯的。

第三方應用(非ArcGIS軟件或者非AO開發的軟件)通常是隻能對Base Table進行查詢,不能夠看到Delta表中的變化。如果將數據註冊爲版本化,而不選擇move the edits to the base table,當用戶還沒有將編輯結果Reconcile和Post到Default版本時,第三方用戶是無法看到其他版本的編輯情況。
Unregistered as Versioned將使得用戶保留上一次Compress後的數據,而未Compress的數據則將丟失。

對於海量的、多用戶的數據庫,可以使用自動Reconcile和Post的功能。有兩種方式可以實現:Batch Reconcile和Version Reconcile Services
在版本化編輯中,可以多個用戶同時編輯一個版本中的數據,也可以多個用戶同時編輯同一數據庫的不同版本。這兩種情況會導致以下兩種衝突的發生:
(1)多個用戶同時編輯一個版本中的數據:當多個用戶同時編輯一個Version時,對每個用戶都創建一個Edit Session,每個用戶都不能看到其他用戶的編輯狀態,只有用戶Save Edits以後,才能夠看到其他用戶的編輯狀態。如果多個用戶同時對一個要素做了不同的操作,則會發生Conflicts,在保存編輯結果時,會出現衝突信息,則根據在Editing Options的Versioning面板上設置的Preferences來處理衝突,看應該保存哪個用戶的編輯結果;
(2)如果是子版本和父版本的編輯發生衝突,則在Reconcile的時候會出現衝突信息,用戶可以手動去解決衝突;如果用戶正在查看的版本又被提交了新的內容,則用戶只有Refresh以後,才能看到更新以後的內容。
時間數據歸檔實際上是將空間數據庫的所有變化都保存下來,記錄其變化的時間和變化後的狀態,並且提供工具訪問某一時刻或者某一時間段的數據庫狀態,還提供了分析工具。時間數據歸檔功能是在ArcInfo和ArcEditor中提供的,針對的是完全版本化的數據。在已有的Transactional Version的基礎上,Geodatabase Archiving增加了新的Historical Version。用戶既可以連接到Transactional Version,也可以連接到Historical Version。用戶可以利用Transactional Version來實現數據的編輯,而Historical Version使得用戶能夠展示數據在某一時刻或者時間段的狀態,並且該狀態是隻讀的。在連接一個數據庫的時候,可以選擇是連接Historical Version還是Transactional Version,並且還可以通過Change Version工具來進行修改。對於Historical Version的查詢是基於Archive Class,而對於Transactional Version的查詢是基於Base表和Delta表。

時間數據歸檔是將所有針對空間數據庫的Default版本的變化都保存下來,在Archive Class中存儲和管理。當開始創建歸檔時,首先在數據庫中創建Archive Class,它是對Default版本的完全拷貝,具備相同的Schema,但是增加了3個屬性,其中gdb_from_date表示數據庫某個狀態的開始時間,gdb_to_date表示數據庫某個狀態的結束時間,gdb_archive_oid用來唯一標識檔案類的某行記錄。當Default版本變化以後,在Archive Class中增加一條記錄,保存Default版本變化後的狀態,以及該狀態的存在時間段。

在數據歸檔中提供了多個工具以實現時間數據庫的瀏覽和分析,其中History Viewer 工具條用於瀏覽空間數據庫變化的時間系列中某一時刻的狀況,可以通過Marker選擇,也可以通過Date/Time選擇;Historical Marker Manager用於創建,修改和查詢Markers,其中Markers是將數據庫的變化時間用一個有意義的名字表示,例如用戶在2005年5月1日,將數據庫中的地塊A 刪除,那麼在檔案類中可以將2005年5月1日這個時間用“地塊A被刪除”這種描述性的信息來命名,使得用戶能直觀理解時間所代表的含義,在 History Viewer Tool中,通過點擊“地塊A被刪除”,就可以察看2005年5月1日的數據庫狀態;還包括將Archive類添加到ArcMap中的命令。因爲在ArcCatalog和ArcMap中,用戶是無法直接瀏覽和分析Archive Class的,必須要藉助ArcMap中的命令添加,可以實現查詢,以及通過符號化來顯示事物隨時間的變化軌跡。

Archiving 能夠支持完全的Geodatabase數據模型,獨立的Feature Classes、Feature Datasets、Tables、Relationship、Network Topology都能夠實現Archiving。

注意:
(1) 一旦數據集註冊爲“Registered with moving edits to base ”,則不能實現Archiving,必須將數據集Unregistered,然後再“Registered as versioned without the option to move edits to base”;
(2) 僅僅對具備Own權限的Datasets或者Classes進行Archiving;
(3) 在開始Archiving時,原始Class的Indexed也將創建;
(4) 能夠通過點擊Archiving的Properties查看數據的檔案;
(5) 對Archive Class類的命名規則是在原始對象類的名稱後加“_H”,例如Road_H;
(6) 利用ArcCatalog不能查看Archive Class,但是在ArcMap中通過Add Historical Archive命令把Archive Class添加到ArcMap中瀏覽和分析;
(7) 爲了更好的使用Archive Class,應該定期更新Database Statistics;

當對Versioned Database開始Enabling Archiving時,則創建Archive Class,並採用兩個字段gdb_from_date,gdb_to_data來記錄變化時間。有兩種時間Valid Time和Transactional Time,其中Valid Time是對應真實世界的變化發生時間,而Transactional Time則是將變化記錄到數據庫的時間,是由系統自動記錄的。ArcGIS採用Transactional時間以記錄變化保存和提交到Default版本的時間。這樣就會產生不一致的問題。

一旦開始Archiving ,Default Version中的所有Row都被拷貝到Archive Class中,並且所有來自原始數據的Row都用相同的Timestamp標記。Gdb_from_date字段是用開始Enabling Archiving操作的時間來記錄的,而gdb_to_date字段是記錄爲12/31/9999。如果一個對象的gdb_to_date是 12/31/9999,表示其屬性與Default版本的狀態是相同的。一旦數據被編輯,保存並提交到Default版本以後,Archive Class會自動更新。當對數據庫中的某個要素Update的時候,提交到Default版本後,該要素的Row的gdb_to_date將變成提交變化的時間,同時增加一行,將其gdb_from_date改爲提交變化的時間,而將gdb_to_date改成12/31/1999。一旦要刪除一個要素,則將該要素的屬性gdb_to_date改成提交變化的時間。對數據庫的Archive都是在一個獨立的Database Transaction中進行的,保證編輯結果可以回退。

當Disabling Archiving時,可以選擇不刪除相關的Archive Class,將其保存爲具備From和To字段的Temporal Table,可以用來實現時間動畫、動畫圖表和追蹤分析,也可以選擇刪除Archive Class。在Unregistered as Versioned之前,必須要將數據集Disable Archive。在Archiving Enabled期間刪除要素集或者要素類,將保存Archive Class。
數據庫複製的幾種常見方式
有三種分發數據的方法:(1)Copy和Paste:這種方法能夠實現數據的分發以及更新,但是不能保證數據完全更新,並且無法保證數據庫的同步;(2)Geodatabase Replication:能夠在兩個或者多個Geodatabase之間實現數據的複製與同步。Geodatabase Replication是建立在版本化數據的基礎上的,支持拓撲與網絡等完全的數據模型,並且能夠在不同類型的數據庫之間實現數據的複製與同步,例如 Oracle與SQL Server之間;並且還支持在聯網和非聯網的方式下實現,在支持本地數據庫連接的基礎上,還支持通過Internet 所獲得的GeodataServer對象;(3)DBMS複製:能夠實現數據的複製與同步,要求數據庫之間必須是直接連接的,不支持跨類型的數據庫,不支持拓撲、網絡等高級數據模型,並且更新的是所有的版本,而Geodatabase Replication只針對特定的版本。

分佈式數據庫的多種應用場景
Geodatabase Replication是在ArcInfo和ArcEditor中提供的
(1)Replica Tree
Geodatabase Replication能夠用於創建複製樹,允許企業在層狀機構中間分發數據,每個下級部分獲得的是與自己業務相關的一部分數據,而最上級機關負責管理所有的數據。
(2)Central Hub
爲了使得某些操作能夠快速進行,可以將中心Geodatabase作爲一個Hub,其它地方對中心數據庫複製一份,用於數據編輯,然後將編輯的結果同步到中心數據庫中。
(3)Mobile Users
將中心數據庫的一部分拷貝到移動設備上,拿到野外進行離線編輯,最後連接到中心數據庫,利用移動設備上的數據來更新中心數據庫。
(4)Contractors
能夠將中心數據庫中的數據複製下來,作爲產品賣出,每個一段時間給用戶實現同步以更新數據
(5)Load Balancing
爲了實現機構內部數據編輯和訪問的負載均衡,可以建立兩套Geodatabase ,一個提供只讀數據,方便用戶進行數據瀏覽,另外一個提供可編輯的數據,方便用戶進行數據更新。然後定期用可編輯的數據庫去同步只讀的數據庫,實現數據庫的同步,並且達到負載均衡、提高效率的目的。
(6)Multi-Group Data Management
在一個機構內部,一箇中心數據庫可能需要多個部門分別來管理,因此會將中心數據庫分開拷貝到子數據庫,由分中心進行維護,維護後的結果需要同步到中心數據庫。

Replica和Geodatabase
實現Geodatabase的Replication包括兩個步驟:將數據從源數據庫拷貝到目的數據庫,在源數據庫和目的庫之間創建Replica。這個 Replica包含了數據源的信息以及用於數據同步的信息。在源數據庫中的Replica叫做父複本,在目的庫中的Replica叫做子複本。每一對父複本和子複本稱爲一個Replica對。其中源數據庫必須是ArcSDE Geodatabse ,而目的數據庫則可以是多種類型的Geodatabase。一個ArcSDE Geodatabase可以同時包含子複本和父複本,也可以包含多個子複本或者是多個父複本。File Geodatabase和Personal Geodatabase只能用於Check Out的子複本。

Replication Type
Geodatabase複製允許將數據拷貝分佈在2個或更多的Geodatabase中,可以將數據庫獨立編輯,需要的時候再將它們同步。Geodatabase複製包括三種類型:
(1) Check In/Out:允許對子複本進行編輯,然後同步到父複本中,但是隻能同步一次。如果希望將子數據庫中的其它編輯情況再次同步到父數據庫,則需要創建新的 Check Out Replica,其中Check In/Out的子複本的數據庫可以是ArcSDE Geodatabase、File或者Personal Geodatabase。
(2) One Way:父複本可以向子複本發送多次同步,而子複本不能將變化同步到父複本。同步的時候不會產生衝突,因爲子版本的編輯均被父版本覆蓋。One Way的子複本必須是建立在ArcSDE Geodatabase中。
能夠複製的類型包括Full:包括拓撲和網絡數據模型,要求子複本的數據被版本化;Simple:只能複製簡單數據類型,子複本不一定要求被註冊版本。
(3) Two Way:父複本和子複本之間可以多次同步,並且是雙向的。在同步的過程總可能會發生衝突。子複本必須建立在ArcSDE Geodatabase中。

Replication的數據準備工作
在進行數據庫複製的時候,可以將整個數據集複製,也可以是將子庫進行復制,或者只是Schema。數據庫用戶必須對數據源具備讀寫權限,數據庫必須是版本化的。不能將數據庫註冊爲“Move edits to base ”。對於One Way/Two Way複製,有以下額外條件:每個數據庫都必須具備Global colum,每個空間數據都必須保存在High Precision的空間參考系中。
複製的時候可以通過設定Filters和Relationship Classes來實現數據複製。Filters包括:Spatial、Selections、Querydefs;

Replica Creation 和Versioning
版本化的數據庫方可實現數據庫的複製。創建Replica後,在Source和Target數據庫之間創建的是Replica Versions,同步時該Replica Version之間的變化進行交換。Default Version或者其它的Version都能夠被用爲Parent Replica的Replica Version。很多Replica能夠共享相同的Replica Version,也可以根據相同的Version創建多個Replica。
對於Check In/Out來說,子複本也可以創建在File和Personal Geodatabase中,但是這些數據庫不支持版本化,因此需要其它的機制以實現版本化。

Replicating Related Data
有多種複製方向可以選擇:Forwards、Backwards、Circulation
Raster Catalog和Raster Dataset不能夠版本化,因此不能夠被複制。但是在Create Replica Wizard面板中能夠從源數據庫中提取Raster數據集和Raster Catalog,只要這些Raster數據是包含在ArcMap文檔中的 。
Terrain和Network也不能被複制,但是隻要構成它們的要素能夠被版本化,它們也可以複製。在複製過程中忽略Terrain和Network,只有在複製完成以後,才能重建Terrain和Network

Synchronization
同步是將一個Replica中的數據變化,如插入、更新和刪除,提交到相應的Replica中。爲了能夠同步,必須用創建複製時的同一個數據庫用戶進行同步。
在同步的時候會創建Synchronization Version,它是Replica Version的子類,暫時保存變化信息,直至被Reconcile和Post到Replica Version中。
對於Two Way複製來說,通過Filters和Relationship決定哪些數據被同步,同樣也可以利用Logic來分辨哪些數據已經通不過。對於Check Out來說,對Check Out Replica的所有編輯都將被同步。
數據庫同步時的數據交換是基於交換Replication Message的。在Connected 環境下,消息的傳遞是由系統管理的,可以確定同步的方向,一旦發生錯誤,則可以回退。而在Disconnected環境下,消息的傳遞需要人爲控制,藉助於CD、DVD、USPS等。
在數據同步過程中,Data Sender和Data Recevier之間的Acknowledgement Message是非常關鍵的。並且Sender和Reveiver之間的角色根據複製的類型是可以調換的。在進行下一次同步的時候,同步的數據包括新產生的更新,以及Un-Acknowledge的數據。

數據庫複製的步驟
(1)決定把數據庫複製多少次:複製一次,還是複製多次;
(2)採用什麼樣的複製類型:Check In/Out,One Way,Two Way;
(3)採用什麼樣的工具實現數據庫的複製:Create Replica Wizard;Create Replica Geoprocessing Tool;ArcObjects API
(4)將複製集成到Versioning Workflows中:一旦建立複製,則在父複本和子複本之間建立了複製對。要決定是對其它版本創建複製,還是直接對Default版本創建複製,這將決定同步時數據是否直接提交到Default版本。
(5)決定數據複製的數據類型:點線面等簡單數據類型,還是網絡、拓撲等複雜數據類型
(6)考慮複製的選項:是否Re-use Schema,表示是否利用子複本的數據庫模式,僅用於Check Out;Schema Only,只將數據庫的模式導出,僅用於Check Out,方便用戶直接拿到野外,從頭開始添加數據;Register Existing Data:如果要複製的數據量非常大,可考慮選擇Register數據庫,在複製之前需要做很多操作;Replicate Related Data:對於拓撲、網絡等數據,是否也要複製相關的數據
(7)考慮數據庫複製時是在Connected環境下,還是在Disconnected環境下,如果網絡條件不好並且不穩定,則應該考慮後者。
(8)同步複製:Manul Synchronization,如果只是對小數據量的數據庫進行同步更新,並且不是經常進行,則可以利用Distribution Geodatabase Toolbar來實現,能夠實現局域網或者Internet數據庫的同步;利用Agent實現自動更新:Geoprocessing中的Python腳本,以及通過ArcObjects實現
(9)同步時的衝突解決:如果同步時出現衝突,則可以通過自動或者手動的方式實現衝突解決
(10)決定將哪些數據同步,對於複雜數據要着重考慮
(11)同步的數據量:上一次同步以後產生的數據變化,以及同步以後沒有接收到Acknowlegement的數據
(12)同步的先後順序:由選擇的複製類型以及定義的同步順序所決定;
(13)Shcema變化:最後是否保持數據庫的Schema不變
(14)錯誤信息:同步過程中發生錯誤,可以回退,並且可以瀏覽錯誤信息。

Geodatabase Replication和ArcGIS Server
能夠通過LAN、WAN將訪問由ArcGIS Server 的geodataserver 所發佈的Geodatabase Service,實現數據的讀取和複製,將其加載到ArcSDE Geodatabase、File和Personal Geodatabase中。如果要是在ArcMap中獲取遠程的Geodatabase,則需要具備Map Service以及Geodata Service
操作一:連接到Data Server:ArcSDE Database Servers用於存儲、獲取和管理ArcSDE Personal 和Workgroup Geodatabase。其中ArcSDE Personal在ArcEditor和ArcInfo級別的License文件中是免費的,而ArcSDE Workgroup是位於ArcGIS Server的Workgroup級別的授權文件中的。兩種數據庫存儲方式均能夠實現Versioned Editing、Archiving、Replication。它們與ArcSDE Enterprise不同的地方在於數據庫的大小、連接數、管理和定製能力的大小。
(1) 添加到Database Server的連接:用戶名必須位於ArcSDE Database Server的管理組中。打開ArcCatalog/Database Servers/Add Database Server,輸入“機器名\用戶名”,即luochun\sqlexpress,則創建了數據庫連接。
(2) 對數據庫連接LUOCHUN_SQLEXPRESS點擊右鍵,通過Properties可以查看其連接屬性,通過Permissions可以查看該數據庫的連接用戶。

操作二:添加數據庫的權限用戶:如果用戶是機器的管理員,則安裝ArcSDE Database Server以後,該用戶自動成爲ArcSDE的用戶。如果不是,則需要添加用戶到ArcSDE的用戶組。如果是管理員用戶自己安裝的ArcSDE,則在 Permissions的對話框中不會出現管理員賬號,如果是其他人替管理員安裝了ArcSDE,則管理員的賬號會出現在Permissions對話框中。
(1) 打開控制面板\管理工具\計算機管理,右鍵選擇“本地用戶和用戶組”,右鍵選擇“用戶組”,點擊New User,則創建了新的用戶。
(2) 在ArcCatalog\LUOCHUN_SQLEXPRESS\Permissions對話框中,將上步添加的用戶名添加到該對話框中,則爲ArcSDE中創建了用戶。

操作三:創建和添加Geodatabase
(1) 打開ArcCatalog,雙擊操作二創建的數據庫連接,則連接了ArcSDE數據庫,右鍵單擊,選擇New Geodatabse,輸入名稱和數據庫的保存位置、以及數據庫的大小。
(2) 連接已有的數據庫:數據移動的最簡單方法是將數據從一個數據服務器轉移到另外一個數據服務器,利用ArcSDE重新連接。只有ArcSDE Database Server的管理員纔可以實現數據庫連接的刪除與創建。右鍵單擊LUOCHUN_SQLEXPRESS,選擇Attach,選擇數據源D:\ ArcGISTutorial\ArcTutor\DatabaseServers\traffic_study.mdf,則連接了已有的數據庫。

操作四: 管理用戶權限:在給ArcSDE Database Server添加新的用戶時,可以爲其設置權限。用戶權限是針對數據庫中的所有數據的。
(1) 查看數據庫的用戶和權限。右鍵單擊上步連接的數據庫traffic_study,Admission/Permissions,則可以看見該數據庫的用戶,單擊某個用戶,則可以看見其權限。
(2) 可以將不同數據庫的用戶權限設置不同。僅僅只有數據庫的所有者才能夠修改其他用戶的權限。如果某個用戶對某個數據庫已經具備了最高權限,則對該數據庫下的數據集的許可不能再修改。

操作五:當在ArcSDE Database Server中創建了數據庫,則可以在其中Create、Import、Copy數據。以下演示採用不同用戶創建數據以後,數據的權限是否可以更改。
(1)在開始菜單中,右鍵點擊ArcCatalog,選擇“運行方式”,選擇“下列用戶:luochun\Leon”,以該用戶登錄,打開 ArcCatalog 程序,向數據庫中添加數據。然後關閉ArcCatalog,再以現有賬號打開ArcCatalog,則剛纔創建的數據庫的右鍵菜單中, Permissions是無法修改的。說明只有數據所有者才能對數據的權限進行修改。

操作六:Database Servers和Geodatabase的管理:Database Server是SQL Server Express Instance。能夠通過停止、重連和暫停該Instance來管理用戶的連接。必須是Windows的管理員才能夠對Instance進行管理。在對 Database Server管理之前,必須Disconnect。
(1) Instance的管理右鍵點擊LUOCHUN_SQLEXPRESS,選擇Disconnect,然後再點擊Stop,則停止了該Instance。還可以Pause、Start等操作。
(2) Geodatabse的Compress:當對某個Geodatabse創建了很多版本,並且做了很多編輯,則需要將其Compress,以刪除不需要的狀態。右鍵單擊traffic_study,Administration/Compress Dataset ,則實現了數據庫的壓縮。通過Properties/Administration,可以看見上一次數據壓縮的時間。
(3) 更新數據庫的Statistics,以提高數據查詢和檢索的速度:右鍵單擊evac_study數據庫,Administration/Geodatabase Maintenance,選擇Analyze,則實現了數據庫的優化。
(4) Updating Indexes:當數據庫做了很多改變之後,數據庫的索引會變得低效,則需要更新索引:右鍵單擊evac_study數據庫, Administration/Geodatabase Maintenance,選擇Rebuild all indexes。
(5) Detaching a Geodatabase:爲了實現數據轉移,則需要將數據庫從一個Database Server中分離開,再去連接另外一個Database Server。只有ArcSDE Database Server管理員才能夠實現數據庫的分離:右鍵單擊traffic_study,Administration/Detach,則實現了數據庫的分離。這種方式是邏輯上的分離,並沒有刪除底層的數據庫。
(6) Creating Geodatabse Backup files:Geodatabse 管理員和Database Server管理員均可以實現數據庫的Backup文件的創建。但是爲了Restore數據庫,必須是Database Server管理員。當對Geodatabase的變化操作後,就必須創建Geodatabase Backup文件,這保證如果數據庫錯誤或者被刪,能夠有備份的數據:以Tess用戶名打開ArcCatalog,重新連接Database Server。右鍵單擊evac_study數據庫,點擊Administrator/Backup,將Backup Name設爲evacbu1,設置數據保存位置,則實現了數據庫的備份。這樣就創建了數據庫的Image,是對原始數據的完全拷貝,內容與創建備份時的一樣,如果對數據庫做了進一步的修改,則需要創建新的備份文件。通過數據庫的Propertise/Administration面板,可以查看最新的備份文件。
(7) Restoring Database:打開ArcCatalog,右鍵單擊Database Server,點擊Restore,文件將保存在Backup文件處,並且名字是自動生成的。
(8) Shrinking a Geodatabase(收縮數據庫):當數據庫做了多次數據添加和刪除操作以後,數據文件將變得小而瑣碎,當數據庫空間接近極限時,可以通過收縮數據庫或者增加數據庫容量的方式來改善。右鍵單擊evac_study 數據庫,Administrator/Geodatabase Maintenance/Shrink Geodatabase
(9) Upgrading a Geodatabase:如果用戶的軟件版本升級,則需要將Geodatabase升級。用戶必須具備Windows管理權限。首先要Attach到舊的數據庫OLD,單擊OLD,將會出現對話框提示是否更新數據,點擊Yes,則可以看見數據。右鍵單擊該數據庫,Properties/General,點擊Upgrade Geodatabase,則實現數據庫的更新。一旦數據庫被升級,則舊版本的桌面程序則不能再連接該數據庫。

轉載:http://www.cnblogs.com/zdygis/archive/2007/03/28/691343.html
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章