Skip To Content

ArcGIS REST API を使用したスクリプトの作成

ArcGIS Server は、ArcGIS REST API への Web サービス リクエストを通して管理することができます (ArcGIS Server Manager を使用してサーバーを管理する場合でも、REST API の呼び出しはバック エンドで行われます)。ArcGIS Server を管理するスクリプトを記述するには、URL の構築、HTTP リクエストの送信、HTTP 応答の解析を行うことができるスクリプト言語を選択する必要があります。(このヘルプ システムのコード例は Python を使用しています)。

ArcGIS REST API を使用するために、スクリプトを実行するコンピューターに Esri ソフトウェアをインストールする必要はないことに注意してください。必要となるのは、GIS サーバーに HTTP リクエストを送信できる環境だけです。

ArcGIS Server Administrator Directory の詳細

ArcGIS REST API を使用したサーバー管理の概要

ArcGIS REST API を使用するには、実行する操作の HTTP リクエストを作成し、その操作に必要なパラメーターを含めます。たとえば、次の HTTP リクエストはサイトに新しいコンピューターを参加させます。

https://gisserver.domain.com:6443/arcgis/admin/machines/registermachineName=GISSERVER1.DOMAIN.COMadminURL=https://GISSERVER1.DOMAIN.COM:6443/arcgis/admin

利用可能な管理操作やそれに必要なパラメーターを把握する簡単な方法は、ArcGIS Server Administrator Directory を使用することです。

ArcGIS Server Administrator Directory の使用

ArcGIS Server Administrator Directory は、ArcGIS Server 用の管理スクリプトを記述するときに役立つ Web アプリケーションです。通常、ArcGIS Server Administrator Directory は https://gisserver.domain.com:6443/arcgis/admin で使用できます。

ArcGIS Server Administrator Directory は REST API を通して公開される ArcGIS Server リソースへのロード マップと考えてください。ArcGIS Server Administrator Directory のリンクに従って移動し、管理 Web サービス リクエストで使用される URL やパラメーターを学習できます。次に、任意のスクリプト言語を使用してこれらのリクエストを作成し、HTTP 経由で送信することができます。

Administrator Directory を使用して、管理タスクを実行してみることをお勧めします。サーバーにリクエストを送信する際は、入力する必要があるパラメーターに注意し、ブラウザーのアドレス バーで URL を確認してください。リクエストの全文や応答を確認するには、Fiddler や Firebug などの Web 開発者ツールが役に立ちます。Python や別のスクリプト言語を使用してユーザー独自の管理 HTTP リクエストを構築するときは、この情報は非常に価値があります。

ArcGIS Server Administrator Directory を対話的に使用して管理タスクを実行することもできますが、この Web アプリケーションは ArcGIS REST API の使用に慣れるために役立つ学習ツールとして最適です。ArcGIS Server の管理を目的とした Web アプリケーションは ArcGIS Server Manager です。

スクリプトでのトークンの使用

ArcGIS Server Manager または ArcGIS Server Administrator Directory にログインする際には、ArcGIS Server に対する管理者権限または公開者権限を持つアカウントのユーザー名とパスワードを入力する必要があります。スクリプトを記述する場合も同じ概念が適用されます。プログラムにより名前とパスワードをサーバーに送信する必要があります。サーバーはトークンを返します。トークンはユーザーが特定のタイプのアクションの実行を認証されていることをサーバーに証明する特殊な文字列です。サーバーに送信する Web サービス リクエストにこのトークンを含める必要があります。

トークンは無期限に有効ではなく、タイム アウトするように設計されています。したがって、悪意のあるユーザーにより盗まれて無期限に使用されることはありません。スクリプトを実行するたびに (リクエストを送信するたびにではなく)、新しいトークンをリクエストする必要があります。

次の Python 関数はトークンをリクエストします。引数として、サーバー名、ポート番号、ユーザー名、およびパスワードを指定します。

ArcGIS Server から管理トークンをリクエストします。

def getToken(username, password, serverName, serverPort):
    # Token URL is typically http://server[:port]/arcgis/admin/generateToken
    tokenURL = "/arcgis/admin/generateToken"
    
    # URL-encode the token parameters:-
    params = urllib.urlencode({'username': username, 'password': password, 'client': 'requestip', 'f': 'json'})
    
    headers = {"Content-type": "application/x-www-form-urlencoded", "Accept": "text/plain"}
    
    # Connect to URL and post parameters
    httpConn = httplib.HTTPConnection(serverName, serverPort)
    httpConn.request("POST", tokenURL, params, headers)
    
    # Read response
    response = httpConn.getresponse()
    if (response.status != 200):
        httpConn.close()
        print "Error while fetch tokens from admin URL. Please check the URL and try again."
        return
    else:
        data = response.read()
        httpConn.close()
           
        # Extract the token from it
        token = json.loads(data)        
        return token['token']

リクエストと応答の操作

ArcGIS Server の Web サービス リクエストを送信するには、実行するアクションの URL とそのアクションに必要なパラメーターを作成する必要があります。セキュリティで保護されたサーバーで必要なパラメーターの 1 つは、上記のように生成されたトークンです。

すべての管理アクションでは Web サービス応答が生成されます。通常、これは JavaScript Object Notation (JSON) 形式でリクエストされます。Python などのスクリプト言語には、JSON 応答を解析または読み取ることができるライブラリがあります。リクエストが正常に処理されたかどうかを確認するために、単に HTTP ステータス コードを取得したい場合があります (たとえば、コード 200 は OK を意味します)。また、応答には、さらに解析と検証を行う必要があると思わせるログ メッセージなどのデータが含まれる場合もあります。

リクエストを ArcGIS Server にプログラムで送信し、応答を操作する方法を理解するには、このヘルプ ブックのさまざまなコード例をご参照ください。