ジオプロセシングサービスとして公開されたPythonスクリプトツールでarcpy.SetParameter()を使用しますか?


8

ジオプロセシングサービスとしてArcGIS Serverに公開する必要があるスクリプトがあります。このスクリプトは、テーブル形式で一連のレコードを計算します。テーブル(レコードセット)を返すように出力パラメーターを設定する必要があります。

したがって、(フィーチャクラスではなく)テーブルがあることを確認するために、arcpy.TableToTable_conversion()を使用して、テーブルをメモリ内ワークスペースに出力しています。だから、私はテーブルがあることを知っています。arcpy.GetCountを実行してレコード数を取得できるため、レコードがあることはわかっています。

出力パラメータを定義しました。これは次のようになります。

arcpy.SetParameter(2, theTable)

私が何を試しても、これは機能しません。私のツールボックスでは、出力パラメーターはRecordSetとして設定されています。レコードセットオブジェクト、インメモリフィーチャクラスへのパス、およびその他の多くのアイデアを提供してみました。

SetParameter for ArcGISサーバーを使用して、レコードセット出力にテーブルを正しく出力する方法を教えてください。


(ESRIから)レコードセットを出力するためにメモリ内ワークスペースを使用できないようです。サービスがSetParameterステートメントで設定されたアイテムを取得するまでに、メモリ内テーブルは削除されています。
ケントンW

1
誰が言ったのかはわかりませんが、それは事実ではありません。in_memory出力を使用できます。in_memory出力を使用できない唯一のリアルタイムは、結果マップサーバーで結果を描画する場合です
KHibma

回答:


5

ジオプロセシングサービスを構築するときの私の経験では(これについては修正しても大丈夫です)、出力に指定する引数はオブジェクト自体ではなく、オブジェクト(ファイルパス)への参照です。

データ型は、ツールの実行方法に応じてデータを解釈する方法をサーバーに通知するだけです(アプリ内では、レコードセットを自動的に表示する場合がありますが、SOAPからレコードセットをデータストリームとして取得する場合があります(確信はありません)。 )そしてRESTを介してリンクを取得します)。

基本的には、このファイルにテーブルを書き込む必要があります-モデルをサーバーに追加したときからの出力フォルダーに基づいて、ArcGISサーバーがフォルダー/ジョブIDパスをフロントに自動的に付加します。例えば

  1. サーバー上の出力フォルダーは C:/arcgisserver/arcgisoutput
  2. したがって、サーバーではこのフォルダーは /arcgisoutput
  3. 次に、ツールボックスの出力は /arcgisoutput/tabletoolbox
  4. 出力の値は %scratchworkspace%/tablename.csv

%scratchworkspace%ArcGISサーバーが出力ディレクトリにサブすることができることに注意してください。ESRIヘルプの「ジオプロセシングサービスの主要な概念」を参照してください。

したがって、サーバーは自動的にジョブID(UUID)を作成し、出力にフォルダーを作成し、これを出力引数の前に付加します。そこでデータを書き込んで、arcgisサーバーからデータを取得すると、次のようなhrefリンクが表示されます。 http://server_name/arcgisoutput/tabletoolbox/job_id/tablename.csv

これで、好きな方法urllib2.urlopen(path).read()でファイルにアクセスできるようになります(Pythonではクイックショートカットとして使用します)。

すべてが明確であることを願っています!-H


0

レコードセットパラメータがパラメータスクリプトで派生に設定されていると想定しています。

また、ツールボックスを使用して直接、またはmxdプロジェクトを介してツールを公開していることも想定しています。私の経験では、mxdプロジェクトで公開されたツールでより成功しています。

場合によっては、PythonスクリプトのラッパーにすぎないModelBuilderモデルを公開することでジオプロセシングサービスの問題を解決したことがあります。つまり、モデル内にはスクリプトしかなく、モデルの外にスクリプトパラメーターを公開しました。


カスタムツールボックスを使用して、スクリプトをサービスとして公開しています。パラメータを[出力]に設定すると、自動的に[派生]に変更されます。
ケントンW
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.