ソース フィーチャクラスのコピー

ジオデータベースの各フィーチャクラスはフィーチャクラス ID を持ちます。この ID は、ジオデータベース内のフィーチャクラスを一意に識別する、自動生成された整数です。あるジオデータベースから別のジオデータベースへフィーチャクラスをコピーすると、元のフィーチャクラスとコピー先のフィーチャクラスは異なるフィーチャクラス ID を持つことになります。同じジオデータベース内でコピーおよび貼り付けを行うと、それらの ID は必ず異なります。

ネットワーク データセットでは、中にあるソース フィーチャとレコードがフィーチャクラス ID などを使用して、互いに参照している場合があります。そのため、フィーチャクラスの ID が想定と異なる場合、そのフィーチャへの参照が失われます。

フィーチャクラス ID を参照しているため、データをコピーしたときに参照が失われてしまう可能性があるネットワーク データ タイプは、ターン、道路標識、および交通量テーブル(特に、道路 - プロファイル、および道路 - TMC 交通量テーブル)です。

ターン、道路標識、交通量テーブルが参照するフィーチャクラス ID が間違っている場合、エラーが発生します。さらに、ID が有効なのに間違っている場合は、予期しない結果を招きます。たとえば、交通量データとともに使われる道路 - プロファイル結合テーブルまたは道路 - TMC 結合テーブルが誤った道路フィーチャを参照したために、誤った移動速度が表示されたり、解析に使われたりする場合があります。同様に、道路標識結合テーブルが誤った道路を参照し、進路変更指示が混乱する可能性もあります。

ヒントヒント:

このような問題を避けるには、ソースのフィーチャクラスを個別にコピーするのではなく、ネットワーク データセットを別のフィーチャ データセットにコピーします。ネットワーク データセットをコピーすると、ソース データがネットワークとともにコピーされ、ターン、道路標識、交通量の属性テーブルで参照されるフィーチャクラス ID は、新しいフィーチャクラス ID と一致するように自動的に更新されます。

ターン、道路標識テーブル、または交通量テーブルを個別にコピーする場合、参照される ID は手動で更新するしかありませんが、この方法は避けるべきです。別の方法として、ターン、道路標識、交通量、および使用予定のその他のネットワーク データを使用する基本ネットワーク データセットを作成して、ソース フィーチャクラスを個別にコピーする代わりに、この一時的なネットワーク データセットをコピーおよび貼り付ける方法があります。ソース フィーチャクラスは、ネットワーク データセットとともに自動的にコピーされます。処理が完了したら、この一時的なネットワーク データセットは、削除してもそのまま使用してもかまいません。この方法では、フィーチャクラス ID への参照が自動的に更新されるため、手動で更新を行う必要がありません。

ネットワーク データセットをコピーする方法を使用しない場合、または他の理由でフィーチャクラス ID を更新する必要がある場合は、次の手順を使用できます。

注意注意:

Streets というエッジ ソース フィーチャクラスがあるとします。以下の手順では、これを元の Streets フィーチャクラスと呼びます。また、元のターン、道路標識および交通量データが、元の Streets フィーチャクラスに関連付けられているとします。この元のデータは別のフィーチャ データセットにコピーされるため、重複する Streets、ターン、道路標識、および交通量データが作成されます。次の手順では、重複するデータを、コピーした Streets フィーチャクラス、ターン フィーチャクラス、道路標識テーブル、および交通量テーブルと呼びます。元のデータとコピーしたデータをこのように区別することで、以下の手順がわかりやすくなります。

手順:
  1. ArcMap のカタログ ウィンドウで、元の Streets フィーチャクラスを選択します。フィーチャクラスを右クリックし、[プロパティ] を選択します。
  2. [フィーチャクラス プロパティ] ダイアログ ボックスで、[一般] タブをクリックします。
  3. [名前] テキスト ボックスの横にある、[...] が付いたボタンをクリックします。

    [オブジェクト クラス ID] ダイアログ ボックスに、フィーチャクラス ID が表示されます。表示された値は、コピーしたターン、道路標識、交通量テーブル データで使用する必要があるので記録しておきます。

  4. 注意注意:

    [...] ボタンは、フィーチャクラス ID を取得するためにバージョン 10.1 の ArcMap で追加されました。ArcMap 10.0 を使用してフィーチャクラス ID を参照するには、以下で説明する [Python] ウィンドウを使用します。

    1. フィーチャクラスを ArcMap に追加します。

    2. [標準] ツールバーの [Python ウィンドウ] ボタン Pythonをクリックして、[Python] ウィンドウを開きます。

    3. [Python] ウィンドウで、「arcpy.Describe("<レイヤ名>").DSID」と入力します(<レイヤ名> はフィーチャ レイヤの名前に置き換えます)。

      たとえば、Streets レイヤのフィーチャクラス ID を得るには、「arcpy.Describe("Streets").DSID」と入力します。

    4. Enter キーを押します。

      フィーチャクラス ID は、入力したコマンドの下に表示されます。

    5. ArcMap から元の Streets フィーチャ レイヤを削除します。

  5. コピーした Streets フィーチャクラスのフィーチャクラス ID を取得します。元の Streets フィーチャクラスの ID を取得したときと同じ方法を使用します。
  6. フィーチャクラス ID の値が元の Streets フィーチャクラスと同じ場合は、何もする必要はありません。ID が異なる場合は、コピーしたターン フィーチャクラス、道路標識テーブル、交通量テーブルの属性テーブルを開き、手順 3 で取得した元の Streets フィーチャクラスの ID を、手順 4 で取得したコピーした Streets フィーチャクラスの ID で置き換えます。

    • コピーしたターン フィーチャクラスを修正するには、Edge#FCID というフィールド(# は番号)にある元の Streets のフィーチャクラス ID の値を、コピーした Streets フィーチャクラス ID で置き換えます。

      別の方法として、コピーしたデータのネットワーク データセットを作成してから、[ジオメトリによる更新(Update by Geometry)] ツールを実行する方法があります。このツールによって、ターン フィーチャのフィールド値が自動的に更新されます。ただし、頂点がコピーした道路フィーチャと交差しないターン フィーチャや、一致する道路フィーチャと交差しないターン フィーチャのジオメトリは、手動で編集する必要があります。ジオメトリによる更新では、ターンが関連付けられているソース フィーチャクラスとフィーチャ ID を識別するために、ターン フィーチャの頂点が 1 つのエッジ ソースと交差する必要があります。

    • コピーした道路標識、道路 - プロファイル、または道路 - TMC 結合テーブルを修正するには、EdgeFCID フィールドを特定して、元の Streets フィーチャクラス ID を、コピーした Streets フィーチャクラスで置き換えます。

5/28/2014