HOW TO

Starten und Füllen eines in Survey123 erstellten Survey für ArcGIS aus Collector for ArcGIS mit XY-Koordinaten und Attributen von einem vorhandenen Feature-Service

Last Published: April 27, 2022

Zusammenfassung

Wie im Abschnitt Neuerungen in Collector for ArcGIS 18.1.0 beschrieben, werden Arcade-Ausdrücke unterstützt. Eine integrierte Systemverbindung von Collector for ArcGIS und Survey123 for ArcGIS bietet jetzt die Möglichkeit, ein benutzerdefiniertes URL-Schema von Survey123 mit einem Arcade-Ausdruck zu erstellen. Wenn eine Collector for ArcGIS-Webkarte auf einem vorhandenen Service basiert und ein in Survey123 erstellter Survey gefüllt werden soll, der einen anderen Feature-Service nutzt, verwenden Sie dazu das benutzerdefinierte URL-Schema und das Pop-up des benutzerdefinierten Attributs. Beispiel:

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

Hierdurch wird der Survey mit dem Feld "AssetID" mit "otherfeatid" vom vorhandenen Service gefüllt. Allerdings verwendet Survey123 for ArcGIS standardmäßig die aktuelle Position und nicht den Punkt, der beim Starten von Survey123 for ArcGIS in der Collector for ArcGIS-Karte verwendet wurde.

In früheren Versionen konnte dieses Problem nur dadurch behoben werden, dass der Breitengrad/Längengrad in Attribute für den vorhandenen Service hartcodiert wurde, die für das benutzerdefinierte URL-Schema gelesen werden konnten. Mit Arcade-Ausdrücken können jedoch die Geometrie eines Features und das benutzerdefinierte URL-Schema für Survey123 for ArcGIS verwendet werden, um die Position des Geopunktes in dem Survey zu definieren.

Ursache

Bislang konnte dieses Problem nur dadurch behoben werden, dass der Breitengrad/Längengrad in Attribute für den vorhandenen Service hartcodiert wurde, damit sie vom benutzerdefinierten URL-Schema gelesen werden konnten. Mit den Arcade-Ausdrücken können wir jedoch die Geometrie eines Features und ein benutzerdefiniertes URL-Schema von Survey123 verwenden, um die Position des Geopunkts in dem Survey zu definieren.

Vorgehensweise

Informationen zum Konfigurieren des Pop-up der Webkarte zur Verwendung eines Attributausdrucks finden Sie unter Konfigurieren von Pop-ups. In den folgenden Schritten wird beschrieben, wie Arcade-Ausdrücke zum Definieren der Position des Geopunktes verwendet werden können:

  1. Erstellen Sie eine Funktion, um die XY-Punkte aus Spherical Mercator EPSG:3857 in Breiten- und Längengradpunkte in WGS84 zu konvertieren.
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. Erstellen Sie eine Funktion zum Übergeben des Breiten- und Längengradparameters an die Survey-Erstellung.
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. Für dieses Beispiel wird "AssetID von "otherfeatid" ausgefüllt var url = url + "&center=" + lat + "," + lon;// Diese Zeile definiert den Ort Console(url); return url; }
  1. Geben Sie eine neue Variable für die Aufnahme des Ergebnisses der Funktion und die Rückgabe der URL an.
var latlon = MetersToLatLon(Geometry($feature).X, Geometry($feature).Y); var url = CreateURLSurvey(latlon[0], latlon[1]); return url;

Nachfolgend finden Sie den vollständigen Code:

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. Für dieses Beispiel wird "AssetID" von "otherfeatid" ausgefüllt     var url = url + "&center=" + lat + "," + lon;// Diese Zeile definiert den Ort     Console(url);     return url; }   var latlon = MetersToLatLon(Geometry($feature).X, Geometry($feature).Y); var url = CreateURLSurvey(latlon[0], latlon[1]); return url;

Artikel-ID:000020624

Hilfe von ArcGIS-Expert*innen erhalten

Technischen Support kontaktieren

Die Esri Support-App herunterladen

Zu den Download-Optionen

Zugehörige Informationen

Weitere Informationen zu diesem Thema erkunden