問題
ArcGIS Pro のジオプロセシング サービスの arcgis.gis モジュールを使ってスクリプトを Web ツールとして共有しようとすると、次の警告が表示されます。
警告: スクリプトで使用するデータ ソースがサーバーに登録されず、コピーされます
公開前にサービスを分析すると警告メッセージが返されます。
arcgis.gis モジュールを使用するジオプロセシング サービスは ArcGIS REST API に対して同じリクエストを実行します。 ただし、ジオプロセシング サービスを使用すると、サービスのホスティングとシステム リソースの使用により、追加のオーバーヘッドが作成されます。
arcgis.gis モジュールの例 (スクリプト):
kml_content = gis.content.search("*", item_type="KML")
ArcGIS REST API リクエストの例:
リクエスト タイプ: POST https://hostname.domain.com/portal/sharing/rest/search HTTP/1.1 フォーマット: json Query: q * AND (type:"kml") accountid:0123456789ABCDEF
ジオプロセシング サービスを分析すると、プロジェクト データを検出するためにスクリプトがスキャンされます。 Python 変数で使用されている、または関数の引数として使用されている引用符内の文字列はすべて、既存データへのパスであるかどうかを特定するためにテストされます。
arcgis.gis モジュールの関数を使用するスクリプトがジオプロセシング サービスにある場合、文字列変数が URL ではなくファイル パスとして解釈される場合があります。 文字列変数は有効なファイル パスではないため、アナライザーは警告メッセージを返します。 警告が返されると 00068 エラーも返されるため、ジオプロセシング サービスを公開できなくなります。 URL は破損したデータ ソースと見なされ、システムでソースをサーバーにコピーできなくなります。
次のスクリプトはポータルへの接続を示したものです。 アナライザーがスクリプトをスキャンする際、ポータル URL をファイル パスとして解釈します。
gis = GIS("https://hostname.domain.com/portal","portaladmin","portaladmin1")
Python を使ってジオプロセシング サービスを公開するには、アナライザーで文字列パラメーターをデータ ソースとして解釈しないようにする必要があります。 これを行うには、「//」または「/」の文字列を別の記号 (「??」や「?」など) に変更し、replace() メソッドを使って適切な URL を返します。 次のコードは実際の方法を示したものです。
portalURL = "https??hostname.domian.com?portal" portalURL = portalURL.replace('??', '://') portalURL = portalURL.replace('?', '/') gis = GIS(portalURL)
ArcGIS の専門家からヘルプを受ける
Esri Support アプリのダウンロード