Geodatabase簡介(轉)

ArcGIS 9.2產品推出以後,Geodatabase部分發生了比較大的變化。本次講座介紹的均是9.2GeodatabaseArcSDE的功能。
     
在產品組成方面9.1版本中,Geodatabase包括兩種:Personal GeodatabaseArcSDE Geodatabase,其中前者是將空間數據存儲在Access中,後者是將數據存儲在OracleInformixDB2SQL Server 。而9.2版本中,新推出了File Geodatabase,並且在ArcSDE Geodatabase部分,變成了三種類型:ArcSDE Personal GeodatabaseArcSDE Workgroup GeodatabaseArcSDE Enterprise Geodatabase。其中前兩種是9.2新推出來的產品,是將空間數據存儲在SQL Server Express中(詳細介紹可見正文),而第三種就是9.1版本的ArcSDE Geodatabase,是將空間數據存儲在OracleInformixDB2SQL Server
      
在功能方面:本講座涉及的功能均爲9.2的功能,其中9.1具備的功能包括:Versioning Editing(版本化編輯),Working With a Geodatase Using SQL(支持的數據庫僅爲InformixDB2 ),離線編輯(與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 ClassesRaster DatasetAttribute Tables。在以上基本要素的基礎上,還能定義GeodatabaseSchema、數據的完整性、規則和行爲,包括Spatial ReferenceSpatial ResolutionTopologyNetworkDomain等等。在創建Geodatabase時,首先生成不同的Dataset類型,然後添加或者擴展Geodatabase基本要素的能力,例如添加拓撲、網絡、子類以實現GIS行爲建模、維護數據完整性以及建立空間關係。

不同的數據庫中,存儲矢量和柵格數據幾何特徵的字段在是不一樣的,如果DBMS能夠支持Spatial type Extensions,則能夠很容易採用這種方式存儲空間幾何特徵。目前有三種DBMS能夠支持GeodatabaseSpatial Type

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

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

Numbers:包括Short IntegersLong IntegersSingle-Precision floating pointsDouble-Precision Floating Point Numbers
Text
Date
BLOB’SBinary Large Objects用來存儲和管理二進制信息,例如SymbolsCAD幾何特徵;
Globe IdentifiersGlobe Unique IdentifiersGlobeIDGUID用來唯一標識一行記錄。

對於矢量要素的存儲來說,創建新的Feature Dataset或者新的Feature Class時,需要對數據的環境進行設置,即Spatial Reference,以下爲主要的幾種空間參考的參數:
1XY Tolerance
指實現Cluster或者進行拓撲驗證、緩衝區分析、多邊形疊加等操作時,點與點的座標之間的最小距離。缺省的XY Tolerance0.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時,應該是哪個點向哪個點移動。
2XY Resolution
表示存儲要素座標時的數值精度,即可以保留的小數點的位數。缺省狀態下的Resloution0.0001meter(投影座標系) ;如果是State Plane Feet,則缺省值是0.0003281feet;如果是地理座標系,則缺省值是0.0000000008982995degrees
對於3D數據以及Linear Referencing數據,可以分別對Z值和M值設置Z ToleranceZ Resolution,以及M ToleranceM Resolution
可以將GeodatabaseFeature Classes擴展爲高級數據類型:Feature Dataset,、SubtypesAttribute DomainsRelationship ClassesTopologyNetwork DatasetGeometric NetworkTerrainAddress LocatorLinear ReferencingCadastral FabricCartographic RepresentationVersioning
對於Raster數據的存儲來說,Raster數據是採用規則網格表示連續的地理事物和現象。其存儲時需要注意以下部分的設置:
Coordinate System
Reference Coordinate or XY Location
Cell Size
Count of RowsColumns
RasterImage數據類型也是存儲和管理在關係表格中,Raster數據通常比較大,存儲的時候需要一個Side Table來存儲,將Raster切爲小片,或者大小通常爲128*128或者256*256Blocks,存儲在Raster表中,通過Side表的每一行記錄去記錄柵格中的每一個Block

雖然對File GeodatabasePersonal Geodatabase的管理任務很少,但是還是有些管理任務是很重要的,附件一爲兩種數據庫需要的管理工作。
      
CompressingCompacting所表示的含義與操作是不同的。
     
對於
File Geodatabase來說,CompressingSmart Data CompressionSDC)採用相同的技術,並且提供更多的優越之處。爲了減小存儲空間,可以將File Geodatabase的矢量要素和Table壓縮成Read-Only格式。Compress以後的數據在ArcMapArcCatalog中顯示時與未壓縮的數據一樣,只是不能編輯
     File Geodatabase
Compress不是在物理上將數據壓縮得更小,而是將數據組織得更加緊湊,例如重複的完全相同的多點會用一行記錄加上點的個數來表示。ArcGIS對不同的字段採取不同的壓縮方法,壓縮比例由要素的類型以及屬性數據的冗餘程度來決定。右鍵單擊File Geodatabase,選擇Compress File Geodatabase實現該功能。
Compress
Uncompress也可以通過Geoprocessing的工具來實現。除了可以通過Compress File Geodatabase功能來實現文件的壓縮以外,如果原始數據的Resolution很精細,而在實際應用中不需要很高的分辨率,則可以將原始數據導入到一個新的粗分辨率的數據庫。不能夠單獨CompressUncompress一個Feature Dataset中的Feature Class,如果希望對該Feature Class壓縮,則需要將該Feature Dataset中的所有的Feature Class都壓縮。對於Rsater DatasetRaster Catalog的壓縮只能由File Geodatabase Geoprocessing工具來實現。
     
一旦Feature ClassTable被壓縮,則不能夠對數據進行編輯,並且不能夠修改Coordinate System InformationSubtypesAttribute DomainsDefault ValueFiled and their PropertiesRepresentations。唯一能夠修改的就是Feature ClassTableAlias以及Attribute Indexes
一個Feature Dataset中可以添加Uncompressed Feature Class,如果一個Feature Dataset中同時包含CompressedUncompressed的數據,則Uncompressed的數據也不能夠被編輯或修改
附件二File GeodatabaseCompress功能的支持程度。
     用戶能夠壓縮RelationshipTopologyGeometric NetworksNetwork Datasets Terrains中的要素類,但侷限是:不能夠針對已經CompressedFeature Class創建Topology或者Geometric Network,如果壓縮Relationship Class的一邊的數據,則另一邊的數據也不能編輯。如果TopologyFeature 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,數據庫中只保存一套TablesFeature ClassesVersion是對Geodatabase的快照,而不是複製。對所有版本的編輯都是保存在Delta表中的。通過創建Version,多個用戶可以同時對一個Geodatabase進行編輯,而且多個用戶也可以同時編輯一個Version

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

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

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

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

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

    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
能夠實現的操作包括UndoRedo操作、長事務編輯、爲設計和工程使用命名版本、使用Geodatabase歸檔、使用數據庫複製。
不能做的事:創建拓撲、從拓撲中添加或刪除要素、添加和刪除拓撲規則、創建幾何網絡、從幾何網絡中添加或刪除要素類。
    2 registered as visioned with the option to move edits to base
不能夠做的事:編輯參與拓撲和幾何網絡的要素類、數據庫歸檔、數據庫複製
  
3not 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表中,然而當ReconcilePostDefault版本以後,變化就轉移到Base 表中了。如果是將版本中的變化ReconcilePost到非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,當用戶還沒有將編輯結果ReconcilePostDefault版本時,第三方用戶是無法看到其他版本的編輯情況。
Unregistered as Versioned
將使得用戶保留上一次Compress後的數據,而未Compress的數據則將丟失。

     
對於海量的、多用戶的數據庫,可以使用
自動ReconcilePost的功能。有兩種方式可以實現:Batch ReconcileVersion Reconcile Services
     
在版本化編輯中,可以多個用戶同時編輯一個版本中的數據,也可以多個用戶同時編輯同一數據庫的不同版本。這兩種情況會導致以下兩種衝突的發生:
   
1)多個用戶同時編輯一個版本中的數據:當多個用戶同時編輯一個Version時,對每個用戶都創建一個Edit Session,每個用戶都不能看到其他用戶的編輯狀態,只有用戶Save Edits以後,才能夠看到其他用戶的編輯狀態。如果多個用戶同時對一個要素做了不同的操作,則會發生Conflicts,在保存編輯結果時,會出現衝突信息,則根據在Editing OptionsVersioning面板上設置的Preferences來處理衝突,看應該保存哪個用戶的編輯結果;
   
2)如果是子版本和父版本的編輯發生衝突,則在Reconcile的時候會出現衝突信息,用戶可以手動去解決衝突;如果用戶正在查看的版本又被提交了新的內容,則用戶只有Refresh以後,才能看到更新以後的內容。

時間數據歸檔實際上是將空間數據庫的所有變化都保存下來,記錄其變化的時間和變化後的狀態,並且提供工具訪問某一時刻或者某一時間段的數據庫狀態,還提供了分析工具。時間數據歸檔功能是在ArcInfoArcEditor中提供的,針對的是完全版本化的數據。在已有的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是將數據庫的變化時間用一個有意義的名字表示,例如用戶在200551日,將數據庫中的地塊A 刪除,那麼在檔案類中可以將200551日這個時間用地塊A被刪除這種描述性的信息來命名,使得用戶能直觀理解時間所代表的含義,在 History Viewer Tool中,通過點擊地塊A被刪除,就可以察看200551日的數據庫狀態;還包括Archive類添加到ArcMap中的命令。因爲在ArcCatalogArcMap中,用戶是無法直接瀏覽和分析Archive Class的,必須要藉助ArcMap中的命令添加,可以實現查詢,以及通過符號化來顯示事物隨時間的變化軌跡。

      Archiving
能夠支持
完全的Geodatabase數據模型,獨立的Feature ClassesFeature DatasetsTablesRelationshipNetwork 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時,原始ClassIndexed也將創建;
   
4) 能夠通過點擊ArchivingProperties查看數據的檔案;
   
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 TimeTransactional 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版本後,該要素的Rowgdb_to_date將變成提交變化的時間,同時增加一行,將其gdb_from_date改爲提交變化的時間,而將gdb_to_date改成12/31/1999。一旦要刪除一個要素,則將該要素的屬性gdb_to_date改成提交變化的時間。對數據庫的Archive都是在一個獨立的Database Transaction中進行的,保證編輯結果可以回退。

      
Disabling Archiving時,可以選擇不刪除相關的Archive Class,將其保存爲具備FromTo字段的Temporal Table,可以用來實現時間動畫、動畫圖表和追蹤分析,也可以選擇刪除Archive Class。在Unregistered as Versioned之前,必須要將數據集Disable Archive。在Archiving Enabled期間刪除要素集或者要素類,將保存Archive Class

數據庫複製的幾種常見方式
    有三種分發數據的方法:(1)CopyPaste這種方法能夠實現數據的分發以及更新,但是不能保證數據完全更新,並且無法保證數據庫的同步;(2)Geodatabase Replication能夠在兩個或者多個Geodatabase之間實現數據的複製與同步。Geodatabase Replication是建立在版本化數據的基礎上的,支持拓撲與網絡等完全的數據模型,並且能夠在不同類型的數據庫之間實現數據的複製與同步,例如 OracleSQL Server之間;並且還支持在聯網和非聯網的方式下實現,在支持本地數據庫連接的基礎上,還支持通過Internet 所獲得的GeodataServer對象;(3DBMS複製:能夠實現數據的複製與同步,要求數據庫之間必須是直接連接的,不支持跨類型的數據庫,不支持拓撲、網絡等高級數據模型,並且更新的是所有的版本,而Geodatabase Replication只針對特定的版本。

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

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

Replication Type
   Geodatabase
複製允許將數據拷貝分佈在2個或更多的Geodatabase中,可以將數據庫獨立編輯,需要的時候再將它們同步。Geodatabase複製包括三種類型:
  
1 Check In/Out:允許對子複本進行編輯,然後同步到父複本中,但是隻能同步一次。如果希望將子數據庫中的其它編輯情況再次同步到父數據庫,則需要創建新的 Check Out Replica,其中Check In/Out的子複本的數據庫可以是ArcSDE GeodatabaseFile或者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的空間參考系中。
   
複製的時候可以通過設定FiltersRelationship Classes來實現數據複製。Filters包括:SpatialSelectionsQuerydefs

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

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

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

數據庫複製的步驟
1)決定把數據庫複製多少次:複製一次,還是複製多次;
2)採用什麼樣的複製類型:Check In/OutOne WayTwo Way
3)採用什麼樣的工具實現數據庫的複製:Create Replica WizardCreate Replica Geoprocessing ToolArcObjects API
4)將複製集成到Versioning Workflows中:一旦建立複製,則在父複本和子複本之間建立了複製對。要決定是對其它版本創建複製,還是直接對Default版本創建複製,這將決定同步時數據是否直接提交到Default版本。
5)決定數據複製的數據類型:點線面等簡單數據類型,還是網絡、拓撲等複雜數據類型
6)考慮複製的選項:是否Re-use Schema,表示是否利用子複本的數據庫模式,僅用於Check OutSchema 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)同步的先後順序:由選擇的複製類型以及定義的同步順序所決定;
13Shcema變化:最後是否保持數據庫的Schema不變
14)錯誤信息:同步過程中發生錯誤,可以回退,並且可以瀏覽錯誤信息。

Geodatabase ReplicationArcGIS Server
     
能夠通過LANWAN將訪問由ArcGIS Server geodataserver 所發佈的Geodatabase Service,實現數據的讀取和複製,將其加載到ArcSDE GeodatabaseFilePersonal Geodatabase中。如果要是在ArcMap中獲取遠程的Geodatabase,則需要具備Map Service以及Geodata  Service

操作一:連接到Data ServerArcSDE Database Servers用於存儲、獲取和管理ArcSDE Personal Workgroup Geodatabase。其中ArcSDE PersonalArcEditorArcInfo級別的License文件中是免費的,而ArcSDE Workgroup是位於ArcGIS ServerWorkgroup級別的授權文件中的。兩種數據庫存儲方式均能夠實現Versioned EditingArchivingReplication。它們與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_studyAdmission/Permissions,則可以看見該數據庫的用戶,單擊某個用戶,則可以看見其權限。
   
2) 可以將不同數據庫的用戶權限設置不同。僅僅只有數據庫的所有者才能夠修改其他用戶的權限。如果某個用戶對某個數據庫已經具備了最高權限,則對該數據庫下的數據集的許可不能再修改。

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

   
操作六Database ServersGeodatabase的管理:Database ServerSQL Server Express Instance。能夠通過停止、重連和暫停該Instance來管理用戶的連接。必須是Windows的管理員才能夠對Instance進行管理。在對 Database Server管理之前,必須Disconnect
   
1Instance的管理右鍵點擊LUOCHUN_SQLEXPRESS,選擇Disconnect,然後再點擊Stop,則停止了該Instance。還可以PauseStart等操作。
   
2 GeodatabseCompress:當對某個Geodatabse創建了很多版本,並且做了很多編輯,則需要將其Compress,以刪除不需要的狀態。右鍵單擊traffic_studyAdministration/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_studyAdministration/Detach,則實現了數據庫的分離。這種方式是邏輯上的分離,並沒有刪除底層的數據庫。
   
6 Creating Geodatabse Backup filesGeodatabse 管理員和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,則實現數據庫的更新。一旦數據庫被升級,則舊版本的桌面程序則不能再連接該數據庫。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章