CÓMO

Iniciar y rellenar una encuesta de Survey123 for ArcGIS desde Collector for ArcGIS utilizando coordenadas XY y atributos de un servicio de entidades existente

Last Published: April 27, 2022

Resumen

Como se describe en Novedades de Collector for ArcGIS 18.1.0, se admiten expresiones de Arcade. Una conexión de sistema integrada de Collector for ArcGIS y Survey123 for ArcGIS ahora tiene la capacidad de crear un esquema de URL personalizado de Survey123 con una expresión de Arcade. Si un mapa web de Collector for ArcGIS se basa en un servicio existente y es necesario para rellenar una encuesta de Survey123 utilizando otro servicio de entidades, utilice el esquema de URL personalizado y la ventana emergente de atributos personalizados para hacerlo. Por ejemplo:

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

Rellena la encuesta con el campo "AssetID" con "otherfeatid" del servicio existente. Sin embargo, Survey123 for ArcGIS utiliza de forma predeterminada la ubicación actual y no el punto utilizado en el mapa de Collector for ArcGIS cuando se inicia Survey123 for ArcGIS.

En versiones anteriores, la única forma de corregirlo era integrar como parte del código los valores de Lat/Long en atributos del servicio existente para su lectura con el esquema de URL personalizado. Sin embargo, con expresiones de Arcade, la geometría de una entidad y el esquema de URL personalizado de Survey123 for ArcGIS se pueden utilizar para definir la ubicación del geopunto en la encuesta.

Causa

Hasta ahora, la única forma de corregirlo era integrar como parte del código los valores de Lat/Long en atributos del servicio existente para su lectura con el esquema de URL personalizado. Sin embargo, al disponer de expresiones de Arcade podemos usar la geometría de una entidad y el esquema de URL personalizado de Survey123 para definir la ubicación del geopunto en la encuesta.

Procedimiento

Para configurar el elemento emergente del mapa web para que use una expresión de atributos, consulte Configurar ventanas emergentes. En los siguientes pasos se describe cómo utilizar expresiones de Arcade para definir la ubicación del geopunto:

  1. Cree una función para convertir los puntos XY de Spherical Mercator EPSG:3857 a puntos de latitud y longitud en 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. Cree una función para pasar el parámetro de latitud y longitud en la creación de una encuesta.
function CreateURLSurvey(lat, lon) { var url_scheme = "arcgis-survey123://?itemID=<itemid>"; url = url + "&field:AssetID={otherfeatid}";// Repita esta línea tantas veces como sea necesario en función del número de campos que desee rellenar. Para este ejemplo AssetID se rellenará desde otherfeatid url = url + "&center=" + lat + "," + lon;// Esta es la línea que define la ubicación Console(url); return url; }
  1. Especifique una nueva variable que contenga el resultado de la función y devuelva la URL.
var latlon = MetersToLatLon(Geometry($feature).X, Geometry($feature).Y); var url = CreateURLSurvey(latlon[0], latlon[1]); return url;

A continuación, se muestra el código completo:

function MetersToLatLon(x, y) {     // Convierte el punto XY de Spherical Mercator EPSG:3857(Web Mercator Auxiliary Sphere) a lat/lon en datum WGS84 (EPSG:4326).     // Fuente: 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}";// Repita esta línea tantas veces como sea necesario en función del número de campos que desee rellenar. Para este ejemplo AssetID se rellenará desde otherfeatid     url = url + "&center=" + lat + "," + lon;// Esta es la línea que define la ubicación     Console(url);     return url; }   var latlon = MetersToLatLon(Geometry($feature).X, Geometry($feature).Y); var url = CreateURLSurvey(latlon[0], latlon[1]); return url;

Id. de artículo:000020624

Obtener ayuda de expertos en ArcGIS

Contactar con soporte técnico

Descargar la aplicación de soporte de Esri

Ir a las opciones de descarga

Información relacionada

Descubrir más sobre este tema