方法

既存のフィーチャ サービスの XY 座標と属性を使用し、Collector for ArcGIS から Survey123 for ArcGIS 調査を起動し、データを入力する

Last Published: April 27, 2022

サマリー

Collector for ArcGIS 18.1.0 の新機能」に記載されているように、Arcade 条件式がサポートされています。 統合された Collector for ArcGIS および Survey123 for ArcGIS システムの接続によって、Arcade 条件式を使用して Survey123 のカスタム URL スキーマを構築できるようになりました。 Collector Web マップが既存のサービスに基づいており、異なるフィーチャ サービスを使用している Survey123 調査にデータを入力する必要がある場合、カスタム URL スキーマおよびカスタム属性ポップアップを使用して、これを実行できます。 例:

arcgis-survey123://?itemID=<itemid>&field:AssetID={otherfeatid}

これにより、調査の「AssetID」フィールドに既存のサービスの「otherfeatid」を反映できます。 ただし、Survey123 for ArcGIS は、Survey123 for ArcGIS が起動されたときに Collector for ArcGIS マップで使用されている位置ではなく、現在の位置にデフォルトで設定されます。

以前のバージョンでは、これを修正するには、既存のサービスの属性に緯度/経度をハード コードし、カスタム URL スキーマで読む方法しかありませんでした。 しかし、Arcade 条件式を使用すると、フィーチャのジオメトリと Survey123 for ArcGIS のカスタム URL スキーマを使用して、調査のジオポイントの位置を定義することができます。

原因

これまでは、これを修正するには、既存のサービスの属性に緯度/経度をハード コードし、カスタム URL スキームがそれを読む方法しかありませんでした。 しかし、Arcade 条件式を使用すると、フィーチャのジオメトリと Survey123 のカスタム URL スキームを使用して、調査のジオポイントの位置を定義することができます。

手順

Web マップ ポップアップで属性条件式を使用するよう構成するには、「ポップアップの構成」をご参照ください。 以下の手順は、Arcade 条件式を使用してジオポイントの位置を定義する方法を示しています。

  1. 球面メルカトル EPSG:3857 の XY ポイントを WGS84 の緯度と経度のポイントに変換する関数を作成します。
function MetersToLatLon(x, y) { var originShift = 2.0 * PI * 6378137.0 / 2.0; var lon = (x / originShift) * 180.0; var lat = (y / originShift) * 180.0; lat = 180.0 / PI * (2.0 * Atan( Exp( lat * PI / 180.0)) - PI / 2.0); return [lat, lon]; }
  1. 調査の作成で緯度と経度のパラメーターを渡す関数を作成します。
function CreateURLSurvey(lat, lon) { var url_scheme = "arcgis-survey123://?itemID=<itemid>"; var url = url_scheme + "&field:AssetID={otherfeatid}";// 入力するフィールドの数に基づき、必要なだけこの行を繰り返します。 この例の場合、otherfeatid のデータが AssetID に入力されます var url = url + "&center=" + lat + "," + lon;// この行は位置を定義します Console(url); return url; }
  1. 関数の結果を格納する新しい変数を指定し、URL を返します。
var latlon = MetersToLatLon(Geometry($feature).X, Geometry($feature).Y); var url = CreateURLSurvey(latlon[0], latlon[1]); return url;

以下に、完全なコードを示します。

function MetersToLatLon(x, y) {     // 球面メルカトル EPSG:3857 (Web メルカトル球体補正) の XY ポイントを WGS84 Datum (EPSG:4326) の緯度/経度に変換します。     // ソース: http://www.maptiler.org/google-maps-coordinates-tile-bounds-projection/     var originShift = 2.0 * PI * 6378137.0 / 2.0;       var lon = (x / originShift) * 180.0;     var lat = (y / originShift) * 180.0;       lat = 180.0 / PI * (2.0 * Atan( Exp( lat * PI / 180.0)) - PI / 2.0);     return [lat, lon]; } function CreateURLSurvey(lat, lon) {     var url_scheme = "arcgis-survey123://?itemID=<itemid>";            var url = url_scheme + "&field:AssetID={otherfeatid}";// 入力するフィールドの数に基づき、必要なだけこの行を繰り返します。 この例の場合、otherfeatid のデータが AssetID に入力されます     var url = url + "&center=" + lat + "," + lon;// この行は位置を定義します     Console(url);     return url; }   var latlon = MetersToLatLon(Geometry($feature).X, Geometry($feature).Y); var url = CreateURLSurvey(latlon[0], latlon[1]); return url;

記事 ID:000020624

ArcGIS の専門家からヘルプを受ける

テクニカル サポートへのお問い合わせ

Esri Support アプリのダウンロード

ダウンロード オプションに移動

関連情報

このトピックについてさらに調べる