ソース フィーチャクラスのコピー
ジオデータベースの各フィーチャクラスはフィーチャクラス ID を持ちます。この ID は、ジオデータベース内のフィーチャクラスを一意に識別する、自動生成された整数です。あるジオデータベースから別のジオデータベースへフィーチャクラスをコピーすると、元のフィーチャクラスとコピー先のフィーチャクラスは異なるフィーチャクラス ID を持つことになります。同じジオデータベース内でコピーおよび貼り付けを行うと、それらの ID は必ず異なります。
ネットワーク データセットでは、中にあるソース フィーチャとレコードがフィーチャクラス ID などを使用して、互いに参照している場合があります。そのため、フィーチャクラスの ID が想定と異なる場合、そのフィーチャへの参照が失われます。
フィーチャクラス ID を参照しているため、データをコピーしたときに参照が失われてしまう可能性があるネットワーク データ タイプは、ターン、道路標識、および交通量テーブル(特に、道路 - プロファイル、および道路 - TMC 交通量テーブル)です。
ターン フィーチャには、複数のエッジ フィーチャ ソースのフィーチャクラス ID を参照し、隣り合ったエッジ間でターンの禁止およびペナルティの適用を識別する属性値があります。
道路標識テーブルは、エッジ フィーチャ ソースのフィーチャクラス ID を参照して、詳細なルート案内を提供するために、隣り合ったエッジ間でラベル付き迂回ポイントを識別します。
道路 - プロファイル結合テーブルには、エッジ フィーチャ ソースのフィーチャクラス ID を参照し、履歴交通量データを道路とリンクする属性値があります。同様に、道路 - TMC 結合テーブルの属性値は、エッジ フィーチャ ソースのフィーチャクラス ID を参照して、ライブ交通量データを道路とリンクします。
ターン、道路標識、交通量テーブルが参照するフィーチャクラス ID が間違っている場合、エラーが発生します。さらに、ID が有効なのに間違っている場合は、予期しない結果を招きます。たとえば、交通量データとともに使われる道路 - プロファイル結合テーブルまたは道路 - TMC 結合テーブルが誤った道路フィーチャを参照したために、誤った移動速度が表示されたり、解析に使われたりする場合があります。同様に、道路標識結合テーブルが誤った道路を参照し、進路変更指示が混乱する可能性もあります。
このような問題を避けるには、ソースのフィーチャクラスを個別にコピーするのではなく、ネットワーク データセットを別のフィーチャ データセットにコピーします。ネットワーク データセットをコピーすると、ソース データがネットワークとともにコピーされ、ターン、道路標識、交通量の属性テーブルで参照されるフィーチャクラス ID は、新しいフィーチャクラス ID と一致するように自動的に更新されます。
ターン、道路標識テーブル、または交通量テーブルを個別にコピーする場合、参照される ID は手動で更新するしかありませんが、この方法は避けるべきです。別の方法として、ターン、道路標識、交通量、および使用予定のその他のネットワーク データを使用する基本ネットワーク データセットを作成して、ソース フィーチャクラスを個別にコピーする代わりに、この一時的なネットワーク データセットをコピーおよび貼り付ける方法があります。ソース フィーチャクラスは、ネットワーク データセットとともに自動的にコピーされます。処理が完了したら、この一時的なネットワーク データセットは、削除してもそのまま使用してもかまいません。この方法では、フィーチャクラス ID への参照が自動的に更新されるため、手動で更新を行う必要がありません。
ネットワーク データセットをコピーする方法を使用しない場合、または他の理由でフィーチャクラス ID を更新する必要がある場合は、次の手順を使用できます。
Streets というエッジ ソース フィーチャクラスがあるとします。以下の手順では、これを元の Streets フィーチャクラスと呼びます。また、元のターン、道路標識および交通量データが、元の Streets フィーチャクラスに関連付けられているとします。この元のデータは別のフィーチャ データセットにコピーされるため、重複する Streets、ターン、道路標識、および交通量データが作成されます。次の手順では、重複するデータを、コピーした Streets フィーチャクラス、ターン フィーチャクラス、道路標識テーブル、および交通量テーブルと呼びます。元のデータとコピーしたデータをこのように区別することで、以下の手順がわかりやすくなります。
- ArcMap のカタログ ウィンドウで、元の Streets フィーチャクラスを選択します。フィーチャクラスを右クリックし、[プロパティ] を選択します。
- [フィーチャクラス プロパティ] ダイアログ ボックスで、[一般] タブをクリックします。
- [名前] テキスト ボックスの横にある、[...] が付いたボタンをクリックします。
[オブジェクト クラス ID] ダイアログ ボックスに、フィーチャクラス ID が表示されます。表示された値は、コピーしたターン、道路標識、交通量テーブル データで使用する必要があるので記録しておきます。
フィーチャクラスを ArcMap に追加します。
[標準] ツールバーの [Python ウィンドウ] ボタン をクリックして、[Python] ウィンドウを開きます。
[Python] ウィンドウで、「arcpy.Describe("<レイヤ名>").DSID」と入力します(<レイヤ名> はフィーチャ レイヤの名前に置き換えます)。
たとえば、Streets レイヤのフィーチャクラス ID を得るには、「arcpy.Describe("Streets").DSID」と入力します。
Enter キーを押します。
フィーチャクラス ID は、入力したコマンドの下に表示されます。
ArcMap から元の Streets フィーチャ レイヤを削除します。
- コピーした Streets フィーチャクラスのフィーチャクラス ID を取得します。元の Streets フィーチャクラスの ID を取得したときと同じ方法を使用します。
- フィーチャクラス 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 フィーチャクラスで置き換えます。
[...] ボタンは、フィーチャクラス ID を取得するためにバージョン 10.1 の ArcMap で追加されました。ArcMap 10.0 を使用してフィーチャクラス ID を参照するには、以下で説明する [Python] ウィンドウを使用します。