方法
「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 条件式を使用してジオポイントの位置を定義する方法を示しています。
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]; }
function CreateURLSurvey(lat, lon) { var url_scheme = "arcgis-survey123://?itemID=<itemid>"; var url = url_scheme + "&field:AssetID={otherfeatid}";// 入力するフィールドの数に基づき、必要なだけこの行を繰り返します。 この例の場合、otherfeatid のデータが AssetID に入力されます var url = url + "¢er=" + lat + "," + lon;// この行は位置を定義します Console(url); return 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 + "¢er=" + lat + "," + lon;// この行は位置を定義します Console(url); return url; } var latlon = MetersToLatLon(Geometry($feature).X, Geometry($feature).Y); var url = CreateURLSurvey(latlon[0], latlon[1]); return url;
ArcGIS の専門家からヘルプを受ける
Esri Support アプリのダウンロード