PROCÉDURE

lancer et remplir une enquête Survey123 for ArcGIS à partir de Collector for ArcGIS à l’aide des coordonnées XY et des attributs d’un service d’entités existant

Last Published: April 27, 2022

Résumé

Comme indiqué dans la rubrique Nouveautés dans Collectorfor ArcGIS 18.1.0, les expressions Arcade sont prises en charge. Une connexion système intégrée de Collector for ArcGIS et de Survey123 est maintenant mesure de générer la structure URL personnalisée de Survey123 à l’aide d’une expression Arcade. Si une carte Collector for ArcGIS repose sur un service existant et qu’il est nécessaire de remplir une enquête Survey123 sollicitant un service d’entités différent, utilisez la structure URL personnalisée et la fenêtre contextuelle d’attributs personnalisés. Par exemple :

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

Cela renseigne l’enquête avec le champ « AssetID » dont la valeur « otherfeatid » provient du service existant. Toutefois, Survey123 for ArcGIS prend par défaut l’emplacement actuel et non le point utilisé dans la carte Collector for ArcGIS au lancement de Survey123 for ArcGIS.

Dans les versions précédentes, la seule manière de résoudre ce problème consistait à coder en dur les valeurs de latitude/longitude en attributs afin de permettre la lecture du service existant pour la structure URL personnalisée. Cependant, grâce aux expressions Arcade, il est possible d’utiliser la géométrie d’une entité et la structure URL personnalisée de Survey123 for ArcGIS pour définir l’emplacement du géopoint dans l’enquête.

Cause

Jusqu’à aujourd’hui, la seule manière de régler ce problème consistait à coder en dur les valeurs de longitude/latitude pour qu’elles soient disponibles sous forme d’attributs pour le service existant, permettant ainsi la lecture de la structure d’URL personnalisée. Or, le fait de disposer d’expressions Arcade permet d’utiliser la géométrie d’une entité et la structure d’URL personnalisée de Survey123 pour définir la localisation du géopoint dans l’enquête.

Procédure

Pour configurer la fenêtre contextuelle Web et faire en sorte qu’elle utilise une expression attributaire, reportez-vous à la rubrique Configurer les fenêtres contextuelles. La procédure ci-dessous indique comment utiliser des expressions Arcade pour définir l’emplacement du géopoint :

  1. Créez une fonction qui permet de convertir les points XY de Spherical Mercator EPSG:3857 en points de latitude et de longitude dans 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. Créez une fonction qui permet de transmettre le paramètre de latitude et de longitude lors de la création d’une enquête.
function CreateURLSurvey(lat, lon) { var url_scheme = "arcgis-survey123://?itemID=<itemid>"; var url = url_scheme + "&field:AssetID={otherfeatid}";// Repeat this line as many times as required based on how many fields you want populated. For this example AssetID will be populated from otherfeatid var url = url + "&center=" + lat + "," + lon;// This is the line that defines the location Console(url); return url; }
  1. Spécifiez une nouvelle variable destinée à contenir le résultat de la fonction et à renvoyer l’URL.
var latlon = MetersToLatLon(Geometry($feature).X, Geometry($feature).Y); var url = CreateURLSurvey(latlon[0], latlon[1]); return url;

Voici le code complet :

function MetersToLatLon(x, y) {     // Converts XY point from Spherical Mercator EPSG:3857(Web Mercator Auxiliary Sphere) to lat/lon in WGS84 Datum (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>";            var url = url_scheme + "&field:AssetID={otherfeatid}";// Repeat this line as many times as required based on how many fields you want populated. For this example AssetID will be populated from otherfeatid     var 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 d’article:000020624

Obtenir de l’aide auprès des experts ArcGIS

Contacter le support technique

Télécharger l’application Esri Support

Accéder aux options de téléchargement

Informations associées

En savoir plus sur ce sujet