日本語

エラー: 読み込むテーブルを開けません

エラー メッセージ

ArcMap で、Python スクリプトを実行して ArcGIS Server から追加されたマップ サービスから属性テーブルにアクセスすると、次のエラーが返されます。

エラー:
読み込むテーブルを開けません
User-added image

原因

このエラーは、マップ サービスを使用した属性テーブルへのアクセスが原因で発生します。 マップ サービスがデータへのアクセスを許可しておらず、マップのリプレゼンテーションを表示するために使用されています。

解決策または対処法

次のいずれかのオプションを使用して、この問題を解決してください。

  • フィーチャ サービスを使用して ArcMap の属性テーブル データにアクセスします。 取得した属性テーブル データを、実行した計算または解析に基づいて編集できます。 詳細については、「ArcGIS Server: フィーチャ サービスとは」をご参照ください。
    注意:
    ただし、フィーチャ サービスを編集できるのは、フィーチャ サービスの所有者が編集を許可している場合のみです。 詳細については、「フィーチャ サービスの権限と編集情報の記録」をご参照ください。
  • マップ サービスの REST エンドポイントで検索したフィーチャに基づいて Python スクリプトを作成します。 応答を JSON ファイルに保存し、ArcPy を使用して JSON ファイルをローカル ジオデータベースに保存されているフィーチャ レイヤーに変換します。 Python スクリプトは、マップ サービスへのアクセスに使用されます。
    注意:
    フィーチャ サービスにクエリをサポートしている操作がある場合のみ、クエリを実行できます。 詳細については、「ArcGIS REST API: クエリ (マップ サービス/レイヤー)」をご参照ください。
    1. JSON 形式のマップ サービスの REST エンドポイントで、属性テーブル データを含む目的のフィーチャを検索します。
      1. 目的のフィーチャを含む Where 句を指定します。
      2. 必要に応じて、Out Fields パラメーターを指定し、結果の JSON ファイル内のフィールドを制限します。
    2. クエリからの属性テーブル データを含むすべてのフィーチャを挿入し、JSON 形式で返す Python スクリプトを作成します。
#必要なモジュールのインポート
import requests
import urllib
import arcpy
import os
url = "[query URL]"

#Where 句および出力フィールドの指定
where ="[Field Name IN ('Field Value')]"
fields = "[Out Fields returned from the query]"

#Web URL のリクエスト パートをパラメーターに宣言
params = urllib.parse.urlencode({'where' : where, 'outFields' : fields, 'f' : 'json' })

#Web ページからの応答の宣言
response = requests.get(url + params)

#JSON をテキストとして取得
jsn = response.text

#環境ワークスペースの設定
arcpy.env.workspace = "C:\\temp

#JSON をファイルに保存
file = open("C:\\temp\\myFeatures.json", "a")
file.write(jsn)
file.close()

#「myFeatures」という名前の JSON ファイルを変換し、現在のデータベースの格納フォルダーを目的のデータベースに結合
arcpy.JSONToFeatures_conversion("C:\\temp\\myFeatures.json", os.path.join("C:\\temp\\Data.gdb", "myfeatures"))

関連情報