Dieser Artikel ist eine Aktualisierung eines vorherigen Blogs meines Kollegen @BruceHarold , der vor einiger Zeit veröffentlicht wurde. Während der Workflow und die Datenquellen gleich sind, entfernt diese Lösung jeglichen zuvor hinzugefügten Code, dank der Leistungsfähigkeit des Workbench-Transformers namens HTTPCaller und der ArcGIS REST API.
Mit einigen Änderungen an der ursprünglichen Lösung werden wir eine Web-zu-Web-Integrationslösung mit ArcGIS Online erstellen.
Ich werde auch einige Verbesserungen von Data Interoperability hervorheben, seit dieser vorherige Blog vor fünf Jahren geschrieben wurde. Mit diesem Blog kommt eine neuere Version des funktionierenden Beispiels, das Sie über den untenstehenden Link herunterladen können.
Können Sie den Unterschied erkennen?
Wir haben das Ziel von einer File-Geodatabase zu ArcGIS Online geändert. Mit der Funktion Compare Workspace können Sie die visuellen Änderungen auf der Arbeitsfläche sehen, um Ihnen bei der Modifikation eines bestehenden Workspaces zu helfen. Der Nur-Lese-Workspace rechts ist der Original-Workspace und der neue Bearbeitbare ist der neue Workspace. Im Bearbeitbaren Navigator-Fenster sind cyanfarbene Objekte neue Objekte, gelbe sind modifiziert.
Die magentafarbene Observations Feature-Class als Ziel im ursprünglichen Workspace wurde nun in einen blau gefärbten AGOL Feature-Layer im neuen Workspace geändert.
Wir haben zwei Transformer hinzugefügt und alle Python-Skripte entfernt, die Teil des ursprünglichen Beispiels waren.
Ein FeatureMerger wurde hinzugefügt, um die Match-Tabelle-Ausgabe zu ersetzen, und dieser Match Table Feature-Typ wird durch den HTTPCaller ersetzt.
Der Python-Code, der die Anhänge hinzufügte, wird jetzt durch eine Konfiguration des HTTPCaller ersetzt, der den AddAttachment REST-Endpunkt des ArcGIS Server Feature Service aufruft.
Compare Workspaces
Beginnen Sie mit einer Web-Verbindung
Sie müssen dies nur einmal in Ihrem Tools ---> FME Options-Menü tun. Für eine Anleitung zum Erstellen einer Web-Verbindung lesen Sie bitte diesen Artikel. Dieser Artikel zeigt, wie man eine Web-Verbindung für ArcGIS Enterprise erstellt, aber die Schritte sind für ArcGIS Online dieselben. Sobald Sie die Web-Verbindung haben, tauchen wir in die Details ein.
Lassen Sie den Code fallen und lernen Sie, den HTTPCaller zum Hinzufügen von Anhängen zu konfigurieren
Ja, werfen Sie die Python-Skripte weg. Um das Beispiel wiederverwenden zu können und mit Ihrer eigenen AGOL-Instanz zu arbeiten, müssen Sie verstehen, wie man den HTTPCaller konfiguriert und dabei die Parameter ändert, die durch die roten Pfeile unten markiert sind.
HTTPCaller-Konfiguration für AddAttachment-Endpunkt Der beste Ort zum Lernen der Konfiguration ist das Lesen der AddAttachment API-Hilfeseite. Ja, lesen Sie die Beschreibung oder wie man sagt „lesen Sie das Kleingedruckte“. Achten Sie auf Limits, Größe, Formate und andere relevante Informationen. Nur weil es codefrei ist, heißt das nicht, dass es einfach Plug-and-Play ist.
Hier ist die Anforderungs-URL: https://<root>/<serviceName>/FeatureServer/<layerId>/<featureId>/addAttachment
Unten sehen Sie, was in der Anforderungs-URL für dieses heruntergeladene Beispiel konfiguriert ist:
https://services7.arcgis.com/eeZcUziwi5hzGEGs/ArcGIS/rest/services/r2r/FeatureServer/0/@Value(ID)/AddAttachment
Der <featureid>-Parameter @Value(id) ist dynamisch, aber der Rest ist fest codiert. Die Frage ist: Woher bekommen Sie die <root>-URL?
Der Trick besteht darin, zur AGOL Feature-Element-Seite zu gehen, auf den Observations Feature-Layer unter Layers zu klicken, um die Observations Feature-Layer Element-Seite zu öffnen und nach unten zu scrollen, bis Sie den URL-Bereich im rechten Bereich unter Details sehen.
Rechter Bereich des AGOL Feature-Layer ElementsKlicken Sie auf die Schaltfläche View, um das Pop-up-Fenster des Feature-Service REST-Endpunkts zu öffnen.
Klicken Sie auf View, um das Pop-up des Feature Server Feature Service zu öffnen
Wenn sich die ArcGIS REST Services Directory-Seite öffnet, scrollen Sie nach oben und klicken Sie oben links auf der Seite mit der rechten Maustaste auf den Observations-Layer und wählen Sie Link-Adresse kopieren (Copy Link Address), wenn Sie Chrome als Browser verwenden.
Kopieren der Root-URL plus Token von der Feature-Service-Seite
Dies gibt Ihnen die <root>-URL plus das Token zurück, um das in der Beispielkonfiguration des HTTPCaller Ersetzte zu ersetzen. Da Sie eine Web-Verbindung erstellen werden, entfernen Sie das Token in dieser kopierten URL. Fügen Sie diese URL in die Request URL des Transformers ein.
Um die Konfiguration des HTTPCaller abzuschließen, gibt es einen versteckten Parameter im Abschnitt Multipart Upload des HTTPCaller, wie unten gezeigt. Dies steht nicht im Kleingedruckten der API, wird aber kurz auf der Hilfeseite des HTTPCaller erwähnt.
Erforderliche Parameterwerte für Multipart-Formular
In der Zeile attachment, wo Upload Type Datei-Upload ist, müssen Sie den Mime-Typ des Anhangs konfigurieren, der angezeigt wird, wenn Sie im Feld Value dieser Zeile auf das 3-Punkte-Menü klicken. Dieser versteckte Parameter ist standardmäßig auf application/octet-stream gesetzt und wenn er nicht mit der Datei übereinstimmt, schlägt AddAttachment fehl.
Dynamisches Mime-Type Attribut
Achten Sie darauf, dass ich für den Parameter MIME-Type tatsächlich einen dynamischen Attributwert konfiguriert habe, der im Datenstrom erstellt wird. Dies ist nützlich, wenn mehrere Arten von Anhängen (z.B. pdf, jpg, png und andere) hochgeladen werden sollen. Wo wird dieses Attribut erstellt? Suchen Sie danach im AttributeManager vor dem HTTPCaller. Ich habe den Wert path_extension verwendet und ihn in mime-type umbenannt und ihm basierend auf der Erweiterung einen bedingten Wert zugewiesen.
Erstellen des mime-type-Attributs, um das Hochladen bestimmter unterstützter Formate zu ermöglichen<\/span><\/span><\/P>Stellen Sie sicher, dass Sie wissen, welche Erweiterungen Sie hochladen und deren mime-types. Für eine Liste der unterstützten Dateitypen in AGOL, schauen Sie sich bitte diesen Link<\/A> an.<\/P>Muss ich meine Upgradeable Transformers aktualisieren?<\/STRONG><\/P>Eine weitere neue Funktion ist die Upgrade All Transformers-Funktion. Die vorherige Version dieser Funktion ermöglichte es, jeweils einen Transformer zu aktualisieren. Beachten Sie im Navigator-Bereich unten, dass 21 Transformer ein Update benötigen. Mit einem Klick auf den Button und einigen Eingaben wird Ihr Workspace aktualisiert. Sie können auch wählen, ob Sie Ihren Workspace sichern möchten oder nicht.<\/P>
Upgrade the transformers on your canvass<\/span><\/span><\/P>Um diese neue Lösung erfolgreich auszuführen, ist es nicht notwendig, diese Transformer zu aktualisieren, aber es ist immer gute Praxis. Das abschließende Beispiel unten wird alle diese Transformer auf die neueste Version aktualisiert haben.<\/P>Ausführen des Workspaces<\/STRONG><\/P>Die Lösung ist absichtlich so gestaltet, dass zwei Bookmarks separat ausgeführt werden. Bevor Sie ein Bookmark ausführen, stellen Sie sicher, dass Sie den Cache aktivieren.<\/P>Bookmark Eins erstellt den Observations Feature Service und schreibt dessen Features. Sie führen ein Bookmark aus, indem Sie darauf klicken und oben darauf verweilen, bis kleine Symbole erscheinen. Klicken Sie auf die Schaltfläche Run Just Contained (Abspielen).<\/P>
Bookmark One - Write Observation features<\/span><\/span><\/P> <\/P>Bevor wir Bookmark Zwei ausführen, müssen wir zum neu erstellten Feature Layer in AGOL zurückkehren und den Enable Attachment-Schieberegler auf True setzen. Dies ist notwendig, da der Enable attachment-Parameter des Observations Feature Layers vor Ausführung von Bookmark Zwei auf True gesetzt sein muss. Da das Tool den Feature Service in Bookmark Eins erstellt, ist Enable attachment standardmäßig auf False gesetzt. <\/P>
Enable attachments<\/span><\/span><\/P> Mit aktivierten Attachments können wir Bookmark Zwei ausführen, um Attachments hinzuzufügen, die mit dem Observations Feature Layer verknüpft sind.<\/SPAN><\/P> <\/P>
Bookmark two - Upload attachments<\/span><\/span><\/P> <\/P>Beachten Sie, dass beim nächsten Ausführen der Lösung und wenn der Feature Type Handling<\/STRONG> auf Truncate Existing,<\/> gesetzt ist, Enable Attachment weiterhin True bleibt.<\/P>
Feature Type Handling set to Truncate Existing for future runs<\/span><\/span><\/P> <\/> <\/> <\/> <\/> <\/> <\/> <\/> <\/> <\/> <\/> <\/> <\/> <\/> <\/> <\/> <\/> <\/> <\/> <\/> <\/> <\/> <\/> <\/> <\/> <\/> <\/>< P > Im ursprünglichen Lösungsszenario wird Enable Attachment mit dem Python-Shutdown-Skript ausgeführt. Sie können diese Lösung modifizieren, um Enable Attachment durch Hinzufügen des UpdateDefinition REST-Endpunkts zu automatisieren, aber ich möchte diese Lösung einfach und bewusst halten. < / P >< P > Ich überlasse die Erweiterung Ihnen. Wenn Terminplanung und ein einzelner Lauf in Ihren Workflow passen, benötigen Sie wahrscheinlich die Erweiterung. < / P >< BLOCKQUOTE >< P > Hinweis: Wenn Sie die vollständige Automatisierung durchführen möchten, ist das Bild unten ein hilfreicher Startpunkt.< / P >< P >< span class = "lia-inline-image-display-wrapper lia-image-align-center " image-alt = "Adding Enable Attachment to your solution " style = "width: 999px; " >< img src = "https:\/ \/us.v-cdn.net \/6038851 \/uploads \/images \/122243iEF3D742714061EA1 \/RenatoSalvaleon3_0-1734706616896.png " role = "button " title = "RenatoSalvaleon3_0-1734706616896.png " alt = "Adding Enable Attachment to your solution " \/ >< span class = "lia-inline-image-caption " onclick = "event.preventDefault(); " > Adding Enable Attachment to your solution< / span >< / span >< / P >< SPAN > < / SPAN >< / BLOCKQUOTE >< P >< STRONG >< SPAN > Visualisieren Sie Ihre Arbeit< / SPAN >< / STRONG >< / P >< P >< SPAN > Meine bevorzugte App zur Ansicht der Ergebnisse ist die Instant App-Vorlage Attachment Viewer. Wie durch Zauberei erscheinen alle meine Attachments auf einer interaktiven Karte und im Fotobetrachter.< / SPAN >< / P >< P class = "lia-align-center " style = "text-align: center; " >< span class = "lia-inline-image-display-wrapper lia-image-align-center " image-alt = "The results of the solution shown using the Instant App Attachment Viewer template " style = "width: 999px; " >< img src = "https:\/ \/us.v-cdn.net \/6038851 \/uploads \/images \/122245i07524418B4856972 \/RenatoSalvaleon3_1-1734707012320.png " role = "button " title = "RenatoSalvaleon3_1-1734707012320.png " alt = "The results of the solution shown using the Instant App Attachment Viewer template " \/ >< span class = "lia-inline-image-caption " onclick = "event.preventDefault(); " > The results of the solution shown using the Instant App Attachment Viewer template< / span >< / span >< / P >< P > < / P >< P >< STRONG > Abschließendes Wort< / STRONG >< / P >< P > Bevor Sie beginnen, Ihre Netzlaufwerke und Festplatten nach Bildern zu durchsuchen, beachten Sie bitte, dass Attachments Speicherplatzkosten in AGOL verursachen und ich wäre nachlässig, wenn ich Sie nicht über diese Kosten informieren würde. Hier ist der Leitfaden zum
Verstehen von AGOL Credits< / A >.< / P >< P > Während es etablierte Muster für Automatisierung und Integration von Daten mit Attachments gibt, muss jede Lösung mehrere Faktoren berücksichtigen. Einige dieser Faktoren habe ich in diesem Artikel detailliert beschrieben. Für Geodatabases ist die ursprüngliche Lösung mit dem Python-Shutdown-Skript immer noch der beste Ansatz. Die AGOL-Lösung ist einfacher und eignet sich gut zur Visualisierung von Daten mit Attachments. Also wählen Sie Ihre Würze und wählen Sie sie gut. < / P >< P > Das war's, Sie können jetzt beginnen, Ihre Laufwerke zu durchsuchen und Ihre Attachments in AGOL hochzuladen. < / P >