HOW TO
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.
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.
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:
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. Für dieses Beispiel wird "AssetID von "otherfeatid" ausgefüllt var url = url + "¢er=" + 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;
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 + "¢er=" + 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;
Hilfe von ArcGIS-Expert*innen erhalten
Die Esri Support-App herunterladen