マルチファイル フィーチャ コネクション (MFC) は、[新しいマルチファイル フィーチャ コネクション] ダイアログ ボックスまたは [マルチファイル フィーチャ コネクションの作成 (Create Multifile Feature Connection)] ツールを使用して作成します。 [新しいマルチファイル フィーチャ コネクション] ダイアログ ボックスおよびツールでは、ジオプロセシング ツールで参照および使用できる MFC アイテムを生成します。 MFC アイテム詳細は、.mfc ファイルに保存されます。 MFC 詳細には、データの場所と各データセットの情報が含まれます。
MFC データセットを調べて、データセットがデータを正確に表すように変更することをお勧めします。 MFC を変更するには、ダイアログ ボックスまたは MFC ツールを使用します。 場合によっては、ファイルを手動で変更するのが適切なこともあります。たとえば、ソース データのパスを更新したり、複雑なジオメトリの書式設定を追加したりする場合です。 ファイルを変更するときは、以下をお勧めします。
- 変更を元に戻せるように、現在の *.mfc ファイルをバックアップする。
- JSON の整合チェック (オンラインで無料で利用可能) を使用して、更新した *.mfc ファイルを整合チェックする。
テキスト エディターを使用して、*.mfc ファイルを変更します。 次に、ファイルの仕様の概要を説明します。
"connection" : {}
"datasets":[]
接続は、タイプとプロパティを含みます。 プロパティは、ソース フォルダーのパスを指定します。 データを移動するには、プロパティのパスを更新します。
"connection" : {
"type": "filesystem",
"properties":{
"path": <path to source folder>
}
}
データセットは、MFC の 1 つ以上のデータセットで構成されます。 データセットの数は、MFC に含まれるフォルダーの数によって決まります。 次の例では、5 つのデータセットが記述されています。
"datasets":[
{.. dataset1 ..},
{.. dataset2 ..},
{.. dataset3 ..},
{.. dataset4 ..},
{.. dataset5 ..},
]
各データセットには、適用可能な 5 つの最上位オブジェクトが存在します。 これらのオブジェクトのうち、name、format、および schema は必須です。
{
"name": <dataset name>,
"alias": <alias name>,
"sourceName": <source name>,
"filter": <where clause>,
"properties": {},
"fields": {},
"geometry": {},
"time": {}
}
名前
name オブジェクトは必須であり、データセットの名前を定義します。 名前はマニフェスト内で一意である必要があります。
エイリアス
alias オブジェクトはオプションであり、データセットの代替名です。わかりやすい名前であり、name オブジェクトで制限されている文字を含むことができます。 エイリアスはデータセット名と同じか、*.mfc ファイル内で一意である必要があります。
ソース名
sourceName は、name オブジェクトがソース フォルダー名と一致するときはオプションです。 名前がソース フォルダー名と同じでないときは、sourceName オブジェクトを含める必要があり、フォルダー名と完全に一致する必要があります。 sourceName オブジェクトを使用すると、同じソース フォルダーを使用する一意の名前を持つ複数のデータセットを作成できます。 たとえば、taxis という名前のデータセットがある場合、sourceName を taxis とすると、ジオメトリと時間形式が異なる taxi_pickup と taxi_dropoff という名前のデータセットを作成できます。これらのデータセットは同じソース名と異なる名前を持ちます。 3 つのデータセットはすべて、同じ元のデータセット taxis を表します。
フィルター
filter オブジェクトはオプションであり、SQL 式をデータセットに適用します。 フィルター条件に一致したフィーチャだけが使用されます。 フィルターは描画、レイヤーの属性テーブルに表示され、ジオプロセシング ツールが選択、ラベル付け、特定、および処理できるフィーチャにも影響を与えます。 たとえば、"X IS NOT NULL AND Y IS NOT NULL" というフィルターは、X フィールドと Y フィールドが NULL ではないフィーチャのみを使用します。
プロパティ
properties オブジェクトは必須であり、データセットのタイプとその形式を定義します。
構文
"properties" : {
"fileformat" : "< delimited | shapefile | orc | parquet >",
"delimited.extension" : "< csv | tsv | txt | other >",
"delimited.fieldDelimiter" : "< delimiter >",
"delimited.recordTerminator: "< terminator >",
"delimited.quoteChar": "< character for quotes>",
"delimited.escapeChar": "< character for escape>",
"delimited.hasHeaderRow" : < true | false >,
"delimited.encoding" : "< encoding format >"
}
例
次に、シェープファイルの使用例を示します。
"format" : {
"type": "shapefile",
}
次に、区切りファイルの使用例を示します。
"format" : {
"type": "delimited",
"delimited.extension": "csv",
"delimited.fieldDelimiter": ",",
"delimited.recordTerminator": "\n",
"delimited.quoteChar" "\"",
"delimited.escapeChar" "\"",
"delimited.hasHeaderRow": true,
"delimited.encoding" : "UTF-8"
}
説明
- type - ソース データを定義する必須プロパティ。 delimited、shapefile、parquet、または orc のいずれかです。
- 残りのオブジェクトは区切りファイルにのみ指定され、必須です。
- delimited.extension - ファイル拡張子 (csv や tsv など) を示す必須プロパティ。
- delimited.quoteChar - 引用符が区切りファイルに指定される方法を示します。
- delimited.escapeChar - バックスラッシュが区切りファイルに指定される方法を示します。
- delimited.encoding - 使用されるエンコーディングのタイプを指定します。
- delimited.recordTerminator - 区切りファイルでのフィーチャの終了文字列を指定します。
- delimited.fieldDelimiter - 区切りファイルでのフィールドの区切り文字を表します。
- delimited.hasHeaderRow - 区切りファイルの最初の行をヘッダーとして扱うか、最初のフィーチャとして扱うかを指定します。
フィールド
fields オブジェクトは必須であり、データセットのフィールド、フィールド タイプ、および表示設定を定義します。
構文
"fields" : [{
"name": <fieldName>,
"sourceName": <field name in source>,
"type" : < Int8 | Int16 | Int32 | Int64 | Float32 | Float64 | String |
Binary | Date >,
"visible" : <true | false>
},
{...field 2...},
{...field 3...}
...
{...field n...}
}
例
"fields" : {
{
"name": "trackid",
"type": "String"
},
{
"name": "x",
"type": "Float32",
"visible" : false
},
{
"name": "y",
"type": "Float32",
"visible" : false
},
{
"name": "time",
"type": "Int64",
"visible" : false
},
{
"name": "value",
"type": "Float64"
}
]
}
説明
- name - フィールド名を示す必須プロパティ。 フィールド名はデータセットで一意である必要があり、英数字とアンダースコアのみで構成される必要があります。
- sourceName - ソース データセット内のフィールド名を示すオプションのプロパティ。 名前がフォルダー名と一致しない場合にのみ必須です。
- visible - ジオプロセシング ツールでフィールドが表示されるかどうかを示すオプションのプロパティ。 デフォルトでは、[マルチファイル フィーチャ コネクションの作成 (Create Multifile Feature Connection)] または [マルチファイル フィーチャ コネクションの更新 (Refresh Multifile Feature Connection)] ツールを使用して時間フィールドおよびジオメトリ フィールドとして初期設定されるフィールドは、表示設定が false に設定されます。 その他すべてのフィールドは、デフォルトで true に設定されます。
- type - フィールドのタイプを示す必須プロパティ。 次のようなオプションがあります。
- Int8 - AllSource では short フィールドとして表されます。
- Int16 - AllSource では short フィールドとして表されます。
- Int32 - AllSource では long フィールドとして表されます。
- Int64 - AllSource では double フィールドとして表されます。
- Float32 - AllSource では float フィールドとして表されます。
- Float64 - AllSource では double フィールドとして表されます。
- String - AllSource では文字列フィールドとして表されます。
- Binary - AllSource では BLOB フィールドとして表されます。 パーケットおよび ORC 入力だけがバイナリ値を含むことができます。
- Date - AllSource では日付フィールドとして表されます。 シェープファイル、ORC、およびパーケット データセットだけが日付フィールドを持つことができます。
Geometry
geometry オブジェクトはオプションですが、ポイント、ポリライン、ポリゴンなど、空間的な表現がデータセットに含まれている場合は必須です。
構文
"geometry" : {
"geometryType" : "< esriGeometryType >",
"spatialReference" : {
<spatial reference JSON>
},
"fields": [
{
"name": "<fieldName1>",
"formats": ["<fieldFormat1>"]
},
{
"name": "<fieldName2>",
"formats": ["<fieldFormat2>"]
}
]
}
例
次に、X および Y 値を含む区切りファイルを使用した例を示します。
"geometry" : {
"geometryType" : "esriGeometryPoint",
"spatialReference" : {
"wkid" : 3369
},
"fields": [
{
"name": "Longitude",
"formats": ["x"]
},
{
"name": "Latitude",
"formats": ["y"]
}
]
}
次に、X、Y および Z 値を含む区切りファイルを使用した例を示します。
"geometry" : {
"geometryType" : "esriGeometryPoint",
"spatialReference" : {
"wkt" : "GEOGCS[\"GCS_WGS_1984_Perfect_Sphere\",DATUM[\"D_Sphere\",SPHEROID[\"Sphere\",6371000.0,0.0]],PRIMEM[\"Greenwich\",0.0],UNIT[\"Degree\",0.0174532925199433]]"
},
"fields": [
{
"name": "Longitude",
"formats": ["x"]
},
{
"name": "Latitude",
"formats": ["y"]
},
{
"name": "Height",
"formats": ["z"]
}
]
}
次に、*.tsv ファイルの使用例を示します。
"geometry" : {
"geometryType" : "esriGeometryPolygon",
"spatialReference" : {
"wkid": 4326
},
"fields": [
{
"name": "Shapelocation",
"formats": ["WKT"]
}
]
}
次に、X 値が書式設定されたフィールドにあり、Y 値が複数のフィールドにまたがっている区切りファイルを使用した例を示します。
"geometry" : {
"geometryType" : "esriGeometryPoint",
"spatialReference" : {
"wkid": 3857
},
"fields": [
{
"name": "XValue",
"formats": ["{x:degrees}° {x:minutes}' {x:seconds}" ]
},
{
"name": "YDegrees",
"formats": ["{y:degrees}"]
},
{
"name": "YMinutes",
"formats": ["{y:minutes}"]
},
{
"name": "YSeconds",
"formats": ["{y:seconds}"]
}
]
}
説明
geometry オブジェクトはオプションであるため、次に示すプロパティは、geometry が使用されていることを前提として、必須またはオプションと示されています。
- geometryType - ジオメトリ タイプを示す必須プロパティ。 次のようなオプションがあります。
- esriGeometryPoint - ジオメトリ タイプはポイントになります。
- esriGeometryPolyline - ジオメトリ タイプはポリラインになります。
- esriGeometryPolygon - ジオメトリ タイプはポリゴンになります。
- spatialReference - データセットの空間参照を示す必須プロパティ。 データセットにジオメトリがある場合、WKID のいずれかまたは両方 (WKID と最新の WKID) または WKT を指定する必要があります。
- wkid - WKID (4326 など) を使用する空間参照。
- latestWkid - 指定のソフトウェア リリースでの空間参照。
- wkt - WKT (Well Known Text) 文字列を使用する空間参照。
- fields - 空間的な表現を含む区切りデータセットの必須プロパティ。 フィールド名またはジオメトリの名前と形式を示します。
- name - 空間的な表現を含む区切りデータセットの必須プロパティ。 ジオメトリ フィールドの名前を示します。 このプロパティのインスタンスは複数存在することがあります。
- formats - 空間的な表現を含む区切りデータセットの必須プロパティ。 ジオメトリの表現に使用されるフィールドの形式を示します。 このプロパティのインスタンスは複数存在することがあります。 場所が複数のフィールドに分けられている場合、または文字列で書式設定されている場合、値または degrees、minutes、seconds を使用して単位を指定するか、direction を使用して方向 (N、S、W、E) を指定します。
時間
time はオプションですが、時間的な表現がデータセットに含まれている場合は必須です。
構文
"time" : {
"timeType" : "< instant | interval >",
"timeReference" : {
"timeZone" : "<timeZone >"
},
"fields": [
{
"name": "<fieldName1>",
"formats": ["<fieldFormat1>"]
"role": "< start | end >"
}
]
}
例
次に、時間フィールドに複数の形式でインスタント (instant) を使用した例を示します。
"time": {
"timeType": "instant",
"timeReference": {"timeZone": "UTC"},
"fields": [
{
"name": "iso_time",
"formats": [
"yyyy-MM-dd HH:mm:ss",
"MM/dd/yyyy HH:mm"
]
}
]
}
次に、複数の startTime フィールドに間隔 (interval) を使用した例を示します。
"time": {
"timeType": "interval",
"timeReference": {"timeZone": "-0900"},
"dropSourceFields" : true,
"fields": [
{
"name": "time_start",
"formats": ["HH:mm:ss"],
"role" : "start"
},
{
"name": "date_start",
"formats": ["yyyy-MM-dd"],
"role" : "start"
},
{
"name": "datetime_ending",
"formats": ["yyyy-MM-dd HH:mm:ss"],
"role" : "end"
}
]
}
説明
time オブジェクトはオプションであるため、次に示すプロパティは、time が使用されていることを前提として、必須またはオプションと示されています。
- timeType - データセットに時間が含まれている場合の必須プロパティ。 次のようなオプションがあります。
- instant - 時系列内の 1 つの瞬間
- interval - 開始時間と終了時間の時間間隔
- timeReference - データセットが時間対応である場合に、タイム ゾーン (timeZone) を示す必須プロパティ。
- timeZone - データのタイム ゾーン形式を示す必須フィールド。 タイム ゾーンは、Joda-Time に基づきます。 Joda-Time 形式の詳細については、「Joda-Time の利用可能なタイム ゾーン」をご参照ください。 timeZone プロパティは、次のように指定できます。
- タイム ゾーンの完全名: Pacific Standard Time。
- タイム ゾーンのオフセット (時): -0100 または -01:00。
- タイム ゾーンの略語: UTC または GMT のみ。
- timeZone - データのタイム ゾーン形式を示す必須フィールド。 タイム ゾーンは、Joda-Time に基づきます。 Joda-Time 形式の詳細については、「Joda-Time の利用可能なタイム ゾーン」をご参照ください。 timeZone プロパティは、次のように指定できます。
- fields - 時間のフィールド名と形式を示す必須フィールド。 fields には次の必須プロパティがあります。
- name - 時間の表現に使用されるフィールドの名前を示す必須プロパティ。 このオブジェクトのインスタンスは複数存在することがあります。
- formats - 時間の表現に使用されるフィールドの形式を示す必須プロパティ。 1 つのフィールドで複数の形式が使用されること (上記を参照) やこのオブジェクトのインスタンスが複数存在することがあります。 時間フィールドがどのような形式をとるかについては、「時間形式」をご参照ください。 時間形式に時間の基準が含まれる場合は、timeReference プロパティを UTC に設定します。
- role - timeType が interval の場合の必須プロパティ。 時間間隔の startTime または endTime を表します。