ArcGIS for Desktop

  • ドキュメント
  • 価格
  • サポート

  • My Profile
  • ヘルプ
  • Sign Out
ArcGIS for Desktop

ArcGIS Online

組織のマッピング プラットフォーム

ArcGIS for Desktop

完全なプロ仕様の GIS

ArcGIS for Server

エンタープライズ GIS

ArcGIS for Developers

位置情報利用アプリの開発ツール

ArcGIS Solutions

各種業界向けの無料のテンプレート マップおよびテンプレート アプリケーション

ArcGIS Marketplace

組織で使えるアプリとデータを取得

  • ドキュメント
  • 価格
  • サポート
Esri
  • サイン イン
user
  • マイ プロフィール
  • サイン アウト

ヘルプ

  • ホーム
  • はじめに
  • マップ
  • 解析
  • データ管理
  • ツール
  • その他...

リレーションシップ クラスの作成 (Create Relationship Class)

  • サマリ
  • 使用法
  • 構文
  • コードのサンプル
  • 環境
  • ライセンス情報

サマリ

このツールは、関連元のテーブルと関連先のテーブルのフィールドまたはフィーチャ間の関連性を格納するためのリレーションシップ クラスを作成します。

使用法

  • リレーションシップは、空間オブジェクト (フィーチャクラス内のフィーチャ) の間、非空間オブジェクト (テーブル内の行) の間、または空間オブジェクトと非空間オブジェクトの間に存在します。

  • 作成後のリレーションシップ クラスの変更は不可能であり、そのルールのみを追加、削除、または調整できます。リレーションシップ クラスは、ArcCatalog でデータベース内の他のオブジェクトと同様に削除したり、名前を変更したりできます。

  • 多対多のリレーションシップ クラスの場合、関連元クラスと関連先クラスをリンクするための外部キーを格納するためにデータベース内に新しいテーブルが作成されます。このテーブルには、関連元クラスまたは関連先クラスのいずれにも属さない、リレーションシップ自体の属性を格納するための他のフィールドが存在することもあります。たとえば、土地区画データベースにおいて、所有者が土地区画を「所有し」、土地区画が所有者に「所有される」という、土地区画と所有者の間のリレーションシップ クラスがある場合、このリレーションシップの属性としては、所有権の割合があります。さらに 1 対 1 および 1 対多のリレーションシップ クラスの属性も存在する場合があり、このような場合は、これらのリレーションシップを格納するためのテーブルが作成されます。

  • シンプル リレーションシップまたはピアツーピア リレーションシップには、データベース内で互いに独立して存在する 2 つ以上のオブジェクトが関係しています。たとえば、鉄道ネットワークに信号機が 1 つ以上関連付けられた踏切があるとします。ただし、踏切の存在は信号機に依存せず、踏切のない鉄道ネットワークにも信号機は存在します。シンプル リレーションシップの基数は、1 対 1、1 対多、または多対多のいずれかになります。

  • コンポジット リレーションシップは、あるオブジェクトの存続によって、関連するオブジェクトの存続が制御される関係を示します。たとえば、電柱は変圧器を支持し、変圧器は電柱に取り付けられます。電柱が削除されると、削除メッセージが、関連する電圧器へ伝達され、それらの電圧器が電圧器のフィーチャクラスから削除されます。コンポジット リレーションシップは、常に 1 対多になります。

  • 正方向および逆方向のパス ラベルは、あるオブジェクトから別のオブジェクトへのリレーションシップを定義します。正方向ラベルは、関連元クラスから関連先クラスへのリレーションシップを記述します。電柱と変圧器の例では、正方向のパス ラベルは「Poles support transformers (電柱は変圧器を支持する) 」などになります。逆方向ラベルは、関連先クラスから関連元クラスへのリレーションシップを記述します。電柱と変圧器の例では、逆方向のパス ラベルは「Transformers are mounted on poles (変圧器は電柱に取り付けられる) 」などになります。

  • リレーションシップ クラスは、ArcCatalog で作成することもできます。ジオデータベースのショートカット メニューからコマンド [新規作成] > [リレーションシップ クラス] の順に選択します。

構文

CreateRelationshipClass_management (origin_table, destination_table, out_relationship_class, relationship_type, forward_label, backward_label, message_direction, cardinality, attributed, origin_primary_key, origin_foreign_key, {destination_primary_key}, {destination_foreign_key})
パラメータ説明データ タイプ
origin_table

関連先のテーブルに関連付けられているテーブルまたはフィーチャクラス。

Table View
destination_table

関連元のテーブルに関連付けられているテーブル。

Table View
out_relationship_class

作成されるリレーションシップ クラス。

Relationship Class
relationship_type

関連元テーブルと関連先テーブルの間に作成されるリレーションシップのタイプ。

  • SIMPLE —非依存オブジェクト間 (親と親) のリレーションシップ。これがデフォルトです。
  • COMPOSITE —あるオブジェクトの存続によって、関連するオブジェクトの存続が制御されるという、依存オブジェクト間 (親と子) のリレーションシップ。
String
forward_label

関連元テーブルから関連先テーブルへのリレーションシップを一意に識別する名前。

String
backward_label

関連先テーブルから関連元テーブルへのリレーションシップを一意に識別する名前。

String
message_direction

関連元テーブルと関連先テーブルの間でメッセージが送られる方向。たとえば、電柱と変圧器の間のリレーションシップでは、電柱が削除されると、削除されたことを知らせるメッセージが、電柱から関連する変圧器オブジェクトへ送信されます。

  • FORWARD —メッセージは関連元テーブルから関連先テーブルへ送られます。
  • BACK —メッセージは関連先テーブルから関連元テーブルへ送られます。
  • BOTH —メッセージは関連元テーブルから関連先テーブルへ送られるとともに、関連先テーブルから関連元テーブルへ送られます。
  • NONE —メッセージは送られません。これがデフォルトです。
String
cardinality

関連元テーブル内の行またはフィーチャと関連先テーブル内の行またはフィーチャの間に存在するリレーションシップの数を指定します。

  • ONE_TO_ONE —関連元テーブル内の各行またはフィーチャに、関連先テーブル内の 0 個または 1 個の行またはフィーチャを関連付けることができます。これがデフォルトです。
  • ONE_TO_MANY —関連元テーブル内の各行またはフィーチャに、関連先テーブル内の 1 個または複数の行またはフィーチャを関連付けることができます。
  • MANY_TO_MANY —関連元テーブル内の複数の行またはフィーチャに、関連先テーブル内の 1 個または複数の行またはフィーチャを関連付けることができます。
String
attributed

リレーションシップに属性が含まれるかどうかを指定します。

  • NONE —リレーションシップ クラスに属性が含まれないことを示します。これがデフォルトです。
  • ATTRIBUTED —リレーションシップ クラスに属性が含まれることを示します。
Boolean
origin_primary_key

リレーションシップ クラス テーブル内の関連元外部キー フィールドにリンクしている、関連元テーブル内のフィールド (通常は OID フィールド)。

String
origin_foreign_key

関連元テーブル内の関連元主キー フィールドにリンクしている、リレーションシップ クラス テーブル内のフィールド。

String
destination_primary_key
(オプション)

リレーションシップ クラス テーブル内の関連先外部キー フィールドにリンクしている、関連先テーブル内のフィールド (通常は OID フィールド)。

String
destination_foreign_key
(オプション)

関連先テーブル内の関連先主キー フィールドにリンクしている、リレーションシップ クラス テーブル内のフィールド。

String

コードのサンプル

Create Relationship Class (リレーションシップ クラスの作成) の例 (Python ウィンドウ)

次の Python ウィンドウ スクリプトは Create Relationship Class (リレーションシップ クラスの作成) ツールを使用する方法を示しています。

import arcpy
arcpy.env.workspace = "C:/data/Habitat_Analysis.gdb"
arcpy.CreateRelationshipClass_management("vegtype", "vegtable", "veg_RelClass", "SIMPLE",
                                         "Attributes from vegtable", "Attributes and Features from vegtype",
                                         "NONE", "ONE_TO_ONE", "NONE", "HOLLAND95", "HOLLAND95")
Create Relationship Class (リレーションシップ クラスの作成) の例 1 (スタンドアロン スクリプト)

植生フィーチャクラスと、追加の植生情報を含むテーブル間のリレーションシップ クラスを作成します。

# Name: CreateRelationshipClass.py
# Description: Create a relationship class between vegetation feature
#              class and table with additional vegetation information
# Author: ESRI

# Import system modules 
import arcpy
from arcpy import env

# Set environment settings
env.workspace = "C:/data"

# Copy vegtable.dbf to file gdb table, since both tables to be related
# must be in the same database
vegDbf = "vegtable.dbf"
vegTbl = "Habitat_Analysis.gdb/vegtable"
arcpy.CopyRows_management(vegDbf, vegTbl)

# Create simple relationship class between 'vegtype' vegetation layer
# and 'vegtable' table with additional vegetation information
veg = "Habitat_Analysis.gdb/vegtype"
relClass = "Habitat_Analysis.gdb/veg_RelClass"
forLabel = "Attributes from vegtable"
backLabel = "Attributes and Features from vegtype"
primaryKey = "HOLLAND95"
foreignKey = "HOLLAND95"
arcpy.CreateRelationshipClass_management(veg,
                                         vegTbl,
                                         relClass,
                                         "SIMPLE",
                                         forLabel,
                                         backLabel,
                                         "NONE",
                                         "ONE_TO_ONE",
                                         "NONE",
                                         primaryKey,
                                         foreignKey)
Create Relationship Class (リレーションシップ クラスの作成) の例 2 (スタンドアロン スクリプト)

土地区画フィーチャクラスと、所有者情報を含むテーブル間のリレーションシップ クラスを作成します。

# Name: CreateRelationshipClass.py
# Description: Create a relationship class between parcels feature
#              class and table with owner information
# Author: ESRI

# Import system modules 
import arcpy
from arcpy import env

# Set environment settings
env.workspace = "C:/data"

# Copy owners.dat to file gdb table, since both tables to be related
# must be in the same database
ownerDat = "owners.dat"
ownerTbl = "Montgomery.gdb/owners"
arcpy.CopyRows_management(ownerDat, ownerTbl)

# Create simple relationship class between 'parcel' parcel layer
# and 'owner' table with additional parcel owner information
parcel = "Montgomery.gdb/Parcels"
relClass = "Montgomery.gdb/parcelowners_RelClass"
forLabel = "Owns"
backLabel = "Is Owned By"
primaryKey = "PROPERTY_ID"
foreignKey = "PROPERTY_ID"
arcpy.CreateRelationshipClass_management(ownerTbl,
                                         parcel,
                                         relClass,
                                         "SIMPLE",
                                         forLabel,
                                         backLabel,
                                         "BACKWARD",
                                         "ONE_TO_MANY",
                                         "NONE",
                                         primaryKey,
                                         foreignKey)

環境

  • 自動コミット
  • 現在のワークスペース

ライセンス情報

  • ArcGIS for Desktop Basic: ×
  • ArcGIS for Desktop Standard: ○
  • ArcGIS for Desktop Advanced: ○

関連トピック

  • [リレーションシップ クラス] ツールセットの概要
  • RelationshipClass properties
このトピックへのフィードバック

ArcGIS for Desktop

  • ホーム
  • ドキュメント
  • 価格
  • サポート

ArcGIS プラットフォーム

  • ArcGIS Online
  • ArcGIS for Desktop
  • ArcGIS for Server
  • ArcGIS for Developers
  • ArcGIS Solutions
  • ArcGIS Marketplace

Esri について

  • 会社概要
  • 採用情報
  • スタッフ ブログ
  • ユーザ カンファレンス
  • デベロッパ サミット
Esri
© Copyright 2016 Environmental Systems Research Institute, Inc. | プライバシー | リーガル