天天看點

關于Geodatabase(轉)

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,則實作資料庫的更新。一旦資料庫被更新,則舊版本的桌面程式則不能再連接配接該資料庫。