CÓMO
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.
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.
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:
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>"; 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 + "¢er=" + 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;
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 + "¢er=" + 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;
Obtener ayuda de expertos en ArcGIS
Descargar la aplicación de soporte de Esri