操作方法

操作方法:使用 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 for ArcGIS web 地图基于现有服务,并且需要使用其他要素服务填充 Survey123 调查,请使用自定义 URL 方案和自定义属性弹出窗口来执行此操作。 例如:

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

由此将使用现有服务中带有“otherfeatid”的“AssetID”字段填充调查。 但是,当 Survey123 for ArcGIS 启动后,Survey123 for ArcGIS 将默认为当前位置,而非用于 Collector for ArcGIS 地图中的点。

在之前的版本中,解决此问题的唯一方法是将纬度/经度硬编码为现有服务的属性,以供自定义 URL 方案读取。 但是,借助 Arcade 表达式,可以使用要素的几何和 Survey123 的自定义 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>"; url = url + "&field:AssetID={otherfeatid}";// 基于您要填充的字段数将此行重复所需的次数。 对于本示例,将根据 otherfeatid 来填充 AssetID 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) {     // 将 XY 点从球面墨卡托 EPSG:3857(Web 墨卡托辅助球体)转换为 WGS84 基准面 (EPSG:4326) 中的经度/纬度。     // Source: 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>";             url = url + "&field:AssetID={otherfeatid}";// 基于您要填充的字段数将此行重复所需的次数。 对于本示例,将根据 otherfeatid 来填充 AssetID     url = url + "&center=" + lat + "," + lon;// This is the line that defines the location     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 支持应用程序

转至下载选项

相关信息

发现关于本主题的更多内容