SQL を使用したデータ更新について
大量のデータをジオデータベースに読み込んだ後、多数の属性値を一括更新したい場合があります。ArcSDE ジオデータベースで一括更新を行うには、データをバージョン対応にした後、ArcMap で編集して更新を実行します。この方法の問題点は、更新されたすべてのフィーチャがデルタ テーブルに格納されるため、データベースを圧縮して、更新されたフィーチャをベース テーブルに移動しなければならないことです。
もう 1 つの方法は、属性を一括更新することです。これには、データをバージョン対応する前に SQL を使用します。この方法では、一括更新がデータベースをバージョン対応にする前に行われ、すべてのフィーチャがベース テーブルに残ります。
SQL による更新には、いくつかのルールが適用されます。更新する属性がリレーションシップやその他の振舞いを通じてデータベース内のその他のオブジェクトに影響を与えないよう、データ モデルについて理解することが重要です。データ モデルを完全に理解せずに、この操作に SQL を使用すると、データが破壊される可能性があります。たとえば、SQL を使用して、フィーチャリンク アノテーションのテキストを取得するフィーチャの属性を変更した場合、アノテーション フィーチャに自己更新のためのメッセージが送信されないため、アノテーションとフィーチャは同期がとれなくなります。これらの属性を ArcGIS で更新する場合は、必要な操作がすべて実行されます。
次に、ArcGIS 外で SQL 更新を実行する場合の重要なガイドラインを示します。
- データをバージョン対応にした後は、SQL を使用してレコードを更新しないでください。
- ジオデータベースの振舞いを通じてデータベース内の他のオブジェクトに影響を与える属性は、SQL を使用して更新しないでください。
- [ObjectID] フィールドを更新しないでください。
- [Enabled] または [AncillaryRole] フィールド、またはジオメトリック ネットワーク フィーチャクラスの [Weight] フィールドを更新しないでください。これらのフィールドを ArcGIS で更新した場合は、ジオメトリック ネットワーク トポロジ テーブルが同時に変更されますが、SQL では変更されません。
- アノテーション フィーチャクラスの [Element]、[SymbolID]、[TextString]、[FontName]、[FontSize]、[Bold]、[Italic]、[Underline]、[VerticalAlignment]、[HorizontalAlignment]、[XOffset]、[YOffset]、[Angle]、[FontLeading]、[WordSpacing]、[CharacterWidth]、[CharacterSpacing]、[FlipAngle]、[Override] の各フィールドは更新しないでください。これらのフィールドを ArcGIS で更新した場合には、フィーチャの BLOB エレメントが変更されますが、これは SQL では変更されません。これらのフィールドを SQL で更新した場合は、どの更新レコードについても、アノテーション フィーチャに関連付けられたテキスト シンボル フィールドは更新されません。
5/10/2014