PROCÉDURE
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.
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.
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 :
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}";// 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 + "¢er=" + 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;
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 + "¢er=" + 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;
Obtenir de l’aide auprès des experts ArcGIS
Télécharger l’application Esri Support