Es gibt viele ETL-Jobs, die Sie möglicherweise aus Ihrem Map triggern möchten können, und das Muster, das wir in diesem Blog erkunden werden, hilft Ihnen dabei.<\/STRONG><\/STRONG><\/P>Hier ist ein Anwendungsfall, ein ETL-Webtool auszuführen, das Flächenmerkmale von einer Karte als Eingabe akzeptiert<\/STRONG>. Das Webtool erstellt zufällig eine mobile Geodatabase, die an meine Pro-Sitzung oder das Experience Builder-Analyse-Widget als lokale Datei zurückgegeben wird, aber Sie könnten Daten von überall nach überall ETL-en<\/STRONG>, in jedem Format. Die Daten müssen nicht in Ihrer Karte oder sogar in Ihrem ArcGIS Pro-Projekt sein.<\/STRONG><\/P>Spoiler<\/a> (Zum Lesen markieren)<\/noscript>Beachten Sie, dass das hier gezeigte Webtool keine mobile Geodatabase zurückgibt, wenn es im Map Viewer ausgeführt wird; es müsste zuerst gezippt werden. Dies ist einfach mit dem Mobile Geodatabase Writer zu erledigen, schreiben Sie einfach mit der Dateinamenerweiterung .geodatabase.zip und eine ZIP-Datei wird automatisch erstellt.<\/div>Beachten Sie, dass das hier gezeigte Webtool keine mobile Geodatabase zurückgibt, wenn es im Map Viewer ausgeführt wird; es müsste zuerst gezippt werden. Dies ist einfach mit dem Mobile Geodatabase Writer zu erledigen, schreiben Sie einfach mit der Dateinamenerweiterung .geodatabase.zip und eine ZIP-Datei wird automatisch erstellt.<\/div><\/div><\/noscript><\/div><\/div>Ausführen eines ETL-Webtools in Pro<\/span><\/span><\/P>Der Blog-Download enthält mein Beispiel-Toolbox, also gehen wir die Schritte durch. Es gibt ein Modell-Tool und ein ETL-Tool in der Toolbox des Blog-Downloads, das Modell umschließt das ETL-Tool. Ich habe ArcGIS Pro 3.6 verwendet und natürlich ArcGIS Data Interoperability für Pro 3.6.<\/P>ModelBuilder umschließt das ETL<\/span><\/span><\/P>Alles beginnt mit einem FeatureSet-Eingabeparameter<\/STRONG>, in meinem Fall mit Polygon-Geometrie, die als Gebiet(e) von Interesse gedacht ist und beliebig viele US-Städte enthalten kann. Zur Laufzeit können Sie so aus einer Kartenebene auswählen, nach Daten suchen oder eigene Features von Grund auf neu erstellen. Das FeatureSet wird dann als EsriJSON-Daten unter dem Pfad %scratchFolder%\esri.json geschrieben.<\/STRONG> Wenn Sie mit ModelBuilder Inline-Variablenersetzung nicht vertraut sind, dann lesen Sie hier darüber<\/A>. Wenn das Tool lokal ausgeführt wird, befindet sich dieser Pfad im Projektscratch-Ordner und bei einem Webtool im Job-Scratch-Ordner.<\/P>Jetzt eine kleine Zeitreise. Stellen Sie sich vor, Sie bauen das oben genannte Modell und haben nur den FeatureSet-Eingang und das Tool Features to JSON im Modell. Speichern und führen Sie es aus und Sie haben eine Datei esri.json in Ihrem Scratch-Ordner. Erstellen Sie nun Ihr ETL-Tool (eingebettet, in derselben Toolbox wie das Modell), das tut, was Sie wollen basierend auf der EsriJSON-Eingabe. Hier ist meins.<\/P>ETL liest EsriJSON und macht Dinge<\/span><\/span><\/P>Wie die Anmerkung sagt, bringt ein EsriJSON-Leser (NB: mit Einzelpfad-Eingabeeigenschaft) meine Karteneingabe herein, die Features werden aggregiert (ich möchte ein Feature, Multipart sind OK) und dann je nach Bedarf in meiner nachgelagerten Verarbeitung projiziert. In meinem Fall wird das resultierende Feature als Initiator und räumlicher Filter in einem FeatureReader verwendet, der einige Daten aus Living Atlas extrahiert und sie mit dynamischem Schema<\/A> in eine mobile Geodatabase schreibt. Es gibt jedoch einen Trick bei der Pfadangabe der Daten.<\/P>Hier bearbeite ich Benutzerparameter im ETL-Tool und der oberste ist ein skriptierter Parameter SCRATCHFOLDER, der erhält, was ArcPy verwendet – entweder lokal in Pro oder in einem Job-Ordner bei einem Webtool. Skriptierte Parameter werden ausgewertet bevor jegliche Datenverarbeitung stattfindet.<\/P>SCRATCHFOLDER skriptierter Parameter<\/span><\/span><\/P>Der nächste Parameter ist der Quellpfad der EsriJSON-Datei, der vom Modell bereitgestellt wird. Um sicherzugehen setze ich den Standardpfad so, dass er den SCRATCHFOLDER-skriptierten Parameter verwendet. Beachten Sie, dass Sie den Parameterstatus speichern müssen nachdem Sie SCRATCHFOLDER hinzugefügt haben und den Dialog erneut öffnen müssen um den Wert in anderen Parametern zu verwenden.<\/P>EsriJSON Eingabeparameter<\/span><\/span><\/P>Jetzt zum Trick: Die Ausgabe-Mobile-Geodatabase wird mit Überschreibberechtigung im Scratch-Ordner geschrieben.<\/P>Mobile Geodatabase-Ausgabe im Scratch-Ordner<\/span><\/span><\/P>Zurück zum Modell. Das ETL-Tool wird hinzugefügt und die EsriJSON-Datei als Eingabe verbunden. Die Ausgabe des ETL-Tools wird nach %scratchFolder%\Extract.geodatabase geschrieben.<\/P>Zurück in die Zukunft<\/span><\/span><\/P>Der letzte Schritt ist ein Calculate Value-Modellwerkzeug hinzuzufügen, das den Ausgabepfad auf einen neuen Dateitypparameter kopiert. Dies ist notwendig, weil die Ausgabe für ein Webtool abgeleitet sein muss um Daten zurückzugeben. Stellen Sie sicher, dass die Ausgabe des ETL-Tools nicht als Zwischenprodukt in ModelBuilder gesetzt ist oder Sie erhalten keine Ausgabe! Schauen Sie sich den Calculate Value-Ausdruck an – er schützt den Pfad davor als Escape-Zeichen interpretiert zu werden indem sichergestellt wird, dass es sich um einen Rohstring handelt.<\/P>Calculate Value Ausdruck<\\/span<\\/span<\\/P<P>Nach einigen lokalen Testläufen hatte ich ein Ergebnis, das ich als Webtool teilen und dann ausführen konnte. Beim Teilen des Webtools habe ich die Meldungsstufe auf Info gesetzt damit ich die Aktion beobachten kann. Ich habe ArcGIS Enterprise 12.0 verwendet, welches kompatibel mit ArcGIS Pro 3.6 ist. Stellen Sie sicher, dass Data Interoperability auf Ihrem Server installiert ist sowie alle Pakete und Anmeldeinformationen installiert sind<\\A> auf dem Server durch den arcgis service owner user<\\STRONG>. Es ist gute Praxis fmeworkbench.exe als arcgis service owner user<\\EM> (in der Data Interoperability Installation) auf dem Server zu öffnen und Leser sowie Schreiber zu testen die Sie verwenden werden.<\\/P<P>Ansicht der Ergebnisse des Webtools<\\/span ><\\/span ><\\/P >< P >Im obigen Nachrichtenstrom können Sie sehen, dass die Ausgabe in einen Job-Scratch-Ordner geschrieben wurde und auch lokal zu meiner Pro-Sitzung heruntergeladen wurde:<\\/P> style="width: 999px;">Daten werden zurückgegeben
Ausführen eines ETL-Webtools in Pro<\/span><\/span><\/P>Der Blog-Download enthält mein Beispiel-Toolbox, also gehen wir die Schritte durch. Es gibt ein Modell-Tool und ein ETL-Tool in der Toolbox des Blog-Downloads, das Modell umschließt das ETL-Tool. Ich habe ArcGIS Pro 3.6 verwendet und natürlich ArcGIS Data Interoperability für Pro 3.6.<\/P>ModelBuilder umschließt das ETL<\/span><\/span><\/P>Alles beginnt mit einem FeatureSet-Eingabeparameter<\/STRONG>, in meinem Fall mit Polygon-Geometrie, die als Gebiet(e) von Interesse gedacht ist und beliebig viele US-Städte enthalten kann. Zur Laufzeit können Sie so aus einer Kartenebene auswählen, nach Daten suchen oder eigene Features von Grund auf neu erstellen. Das FeatureSet wird dann als EsriJSON-Daten unter dem Pfad %scratchFolder%\esri.json geschrieben.<\/STRONG> Wenn Sie mit ModelBuilder Inline-Variablenersetzung nicht vertraut sind, dann
Jetzt eine kleine Zeitreise. Stellen Sie sich vor, Sie bauen das oben genannte Modell und haben nur den FeatureSet-Eingang und das Tool Features to JSON im Modell. Speichern und führen Sie es aus und Sie haben eine Datei esri.json in Ihrem Scratch-Ordner. Erstellen Sie nun Ihr ETL-Tool (eingebettet, in derselben Toolbox wie das Modell), das tut, was Sie wollen basierend auf der EsriJSON-Eingabe. Hier ist meins.<\/P>
ETL liest EsriJSON und macht Dinge<\/span><\/span><\/P>Wie die Anmerkung sagt, bringt ein EsriJSON-Leser (NB: mit Einzelpfad-Eingabeeigenschaft) meine Karteneingabe herein, die Features werden aggregiert (ich möchte ein Feature, Multipart sind OK) und dann je nach Bedarf in meiner nachgelagerten Verarbeitung projiziert. In meinem Fall wird das resultierende Feature als Initiator und räumlicher Filter in einem FeatureReader verwendet, der einige Daten aus Living Atlas extrahiert und sie mit
Hier bearbeite ich Benutzerparameter im ETL-Tool und der oberste ist ein skriptierter Parameter SCRATCHFOLDER, der erhält, was ArcPy verwendet – entweder lokal in Pro oder in einem Job-Ordner bei einem Webtool. Skriptierte Parameter werden ausgewertet bevor jegliche Datenverarbeitung stattfindet.<\/P>
SCRATCHFOLDER skriptierter Parameter<\/span><\/span><\/P>Der nächste Parameter ist der Quellpfad der EsriJSON-Datei, der vom Modell bereitgestellt wird. Um sicherzugehen setze ich den Standardpfad so, dass er den SCRATCHFOLDER-skriptierten Parameter verwendet. Beachten Sie, dass Sie den Parameterstatus speichern müssen nachdem Sie SCRATCHFOLDER hinzugefügt haben und den Dialog erneut öffnen müssen um den Wert in anderen Parametern zu verwenden.<\/P>EsriJSON Eingabeparameter<\/span><\/span><\/P>Jetzt zum Trick: Die Ausgabe-Mobile-Geodatabase wird mit Überschreibberechtigung im Scratch-Ordner geschrieben.<\/P>Mobile Geodatabase-Ausgabe im Scratch-Ordner<\/span><\/span><\/P>Zurück zum Modell. Das ETL-Tool wird hinzugefügt und die EsriJSON-Datei als Eingabe verbunden. Die Ausgabe des ETL-Tools wird nach %scratchFolder%\Extract.geodatabase geschrieben.<\/P>Zurück in die Zukunft<\/span><\/span><\/P>Der letzte Schritt ist ein Calculate Value-Modellwerkzeug hinzuzufügen, das den Ausgabepfad auf einen neuen Dateitypparameter kopiert. Dies ist notwendig, weil die Ausgabe für ein Webtool abgeleitet sein muss um Daten zurückzugeben. Stellen Sie sicher, dass die Ausgabe des ETL-Tools nicht als Zwischenprodukt in ModelBuilder gesetzt ist oder Sie erhalten keine Ausgabe! Schauen Sie sich den Calculate Value-Ausdruck an – er schützt den Pfad davor als Escape-Zeichen interpretiert zu werden indem sichergestellt wird, dass es sich um einen Rohstring handelt.<\/P>Calculate Value Ausdruck<\\/span<\\/span<\\/P<P>Nach einigen lokalen Testläufen hatte ich ein Ergebnis, das ich als Webtool teilen und dann ausführen konnte. Beim Teilen des Webtools habe ich die Meldungsstufe auf Info gesetzt damit ich die Aktion beobachten kann. Ich habe ArcGIS Enterprise 12.0 verwendet, welches kompatibel mit ArcGIS Pro 3.6 ist. Stellen Sie sicher, dass Data Interoperability auf Ihrem Server installiert ist sowie alle
Ich habe keine Dateizuordnungen für .geodatabase-Dateien, aber ich kann den Link im Data Inspector öffnen:
Mobile geodatabase im Data Inspector
Jetzt habe ich ein ETL-Webtool, das ich mit meinen Kollegen teilen kann! Apropos Kollegen, ich bin @SashaLockamy für ihre Hilfe beim Zusammenstellen sehr dankbar.
Zur Klarstellung waren die Schritte zum Erstellen meines Webtools:
Bitte kommentieren Sie den Beitrag mit Ihren Erfahrungen.
Angemeldete Mitglieder können Beiträge verfassen, Updates folgen und mehr. Neu hier? Registrieren Sie ein kostenloses Konto.
Find useful guides, FAQs, and documents to help you navigate and make the most of Esri Community.