この記事は、同僚の以前のブログのリフレッシュ版です。@BruceHaroldによってしばらく前に公開されました。ワークフローとデータソースは同じですが、このソリューションは、WorkbenchのトランスフォーマーであるHTTPCallerとArcGIS REST APIの強力な機能により、以前追加されたコードをすべて取り除いています。
元のソリューションにいくつか変更を加え、ArcGIS Onlineを使ったウェブ間統合ソリューションを構築します。
また、このブログでは、5年前に書かれた前回のブログ以降のData Interoperabilityのいくつかの改善点も紹介します。このブログには、下記リンクからダウンロードできる新しいバージョンの動作サンプルも含まれています。
違いがわかりますか?
宛先をファイルジオデータベースからArcGIS Onlineに置き換えました。Compare Workspace機能を使用すると、キャンバス上の視覚的な変更が表示され、既存のワークスペースを修正するのに役立ちます。右側のRead Onlyワークスペースが元のもので、新しいEditableワークスペースが新しいものです。Editable Navigatorウィンドウでは、水色のオブジェクトが新規オブジェクト、黄色が変更されたものです。
元のワークスペースでマゼンタ色だったObservationsフィーチャクラス宛先は、新しいものでは青色のAGOLフィーチャレイヤーに変更されています。
2つのトランスフォーマーを追加し、元のサンプルに含まれていたPythonスクリプトはすべて削除しました。
FeatureMergerを追加してMatchテーブル出力を置き換え、このMatch TableフィーチャタイプはHTTPCallerに置き換えられました。
添付ファイルを追加するPythonコードは、ArcGIS ServerフィーチャサービスのAddAttachment RESTエンドポイントを呼び出すHTTPCallerの設定に置き換えられました。
Compare Workspaces
Web接続から始めましょう
Tools ---> FME Optionsメニューでこれを一度だけ行う必要があります。ウェブ接続の構築方法についてはこちらの記事をご参照ください。この記事はArcGIS Enterprise向けのウェブ接続構築方法を示していますが、ArcGIS Onlineでも手順は同じです。ウェブ接続ができたら、詳細に入りましょう。
コードを捨ててHTTPCallerで添付ファイル追加を設定する方法を学ぶ
はい、Pythonスクリプトはやめましょう。サンプルを自分のAGOLインスタンスで再利用するには、下記赤い矢印で示されたパラメーターを変更してHTTPCallerを設定する方法を理解する必要があります。
HTTPCaller configuration for AddAttachment end point設定方法を学ぶ最良の場所はAddAttachment APIヘルプページです。説明文(いわゆる「細かい字」)をよく読みましょう。制限やサイズ、フォーマットなど重要な情報に注意してください。コードフリーだからといってすべてがプラグアンドプレイというわけではありません。
リクエストURLはこちらです: https://<root>/<serviceName>/FeatureServer/<layerId>/<featureId>/addAttachment
以下はこのダウンロードしたサンプルでRequest URLに設定されている内容です:
https://services7.arcgis.com/eeZcUziwi5hzGEGs/ArcGIS/rest/services/r2r/FeatureServer/0/@Value(ID)/AddAttachment
<featureid>パラメーター@Value(id)は動的ですが、それ以外はハードコーディングされています。問題は<root> URLをどこから取得するかです。
コツはAGOLフィーチャアイテムページに行き、「Layers」下のObservationsフィーチャレイヤーをクリックしてObservationsフィーチャレイヤーアイテムページを開き、右ペインの「Details」下にあるURLセクションまでスクロールすることです。
Right pane of the AGOL feature layer item「View」ボタンをクリックしてフィーチャサービスRESTエンドポイントポップアップダイアログを開きます。
Click View to Open the feature Server feature service pop up
ArcGIS REST Services Directoryページが開いたら、一番上までスクロールし、ページ左上隅でObservationsレイヤーを右クリックして「リンクアドレスをコピー」を選択します(ブラウザがChromeの場合)。
Copying the root URL plus token from the feature service page
これでサンプルHTTPCallerに設定されているものと置き換えるための<root> URLとトークンが得られます。ウェブ接続を構築するので、このコピーしたURLからトークンは削除してください。このURLをトランスフォーマーのRequest URLに貼り付けます。
HTTPCaller設定完了には、HTTPCallerのMultipart Uploadセクションに隠れたパラメーターがあります。これはAPIの細かい字には記載されていませんが、HTTPCallerヘルプページで簡単に触れられています。
Multipart form required parameter values
attachment行では、Upload TypeがFile Uploadの場合、その行のValueセルから3点リーダーメニューをクリックすると表示される添付ファイルのmime-typeを設定する必要があります。この隠れたパラメーターはデフォルトでapplication/octet-streamとなっており、ファイルと一致しない場合AddAttachmentが失敗します。
Dynamic mime-type attribute
私が>パラメーター用に設定したmime-type値は実際にはデータストリーム内で作成された動的属性です。これは複数種類(例:pdf, jpg, pngなど)の添付ファイルがある場合に便利です。この属性はどこで作成されているかというと、HTTPCaller前のAttributeManager内で作成されています。私はpath_extension属性を使い、それをmime-type と名前変更し、拡張子に基づいて条件付き値を割り当てました。
role="button" title="RenatoSalvaleon3_2-1734664614038.png" alt="特定のサポートされているフォーマットのアップロードを許可するためのmime-type属性の作成" \/>特定のサポートされているフォーマットのアップロードを許可するためのmime-type属性の作成<\/span><\/span><\/P>アップロードする拡張子とそのmime-typeを必ず把握してください。AGOLでサポートされているファイルタイプの一覧については、こちらのリンク<\/A>をご覧ください。<\/P>Upgradeable Transformersをアップグレードする必要がありますか?<\/STRONG><\/P>もう一つの新機能は、すべてのTransformerを一括でアップグレードする機能です。以前のバージョンでは、一度に1つのTransformerのみアップグレードできました。下のNavigatorペインを見ると、21個のTransformerが更新を必要としていることがわかります。ボタンを1回クリックし、いくつかのプロンプトに従うだけでワークスペースがアップグレードされます。ワークスペースをバックアップするかどうかも選択できます。<\/P>
キャンバス上のTransformerをアップグレード<\/span><\/span><\/P>この新しいソリューションを正常に実行するためにこれらのTransformerをアップグレードする必要はありませんが、常にそうすることが良い習慣です。以下の最終サンプルでは、これらすべてのTransformerが最新かつ最高の状態にアップグレードされています。<\/P>ワークスペースの実行<\/STRONG><\/P>このソリューションは意図的に2つのブックマークを別々に実行するよう設計されています。どちらかのブックマークを実行する前に、キャッシュを有効にしてください。<\/P>Bookmark OneはObservationsフィーチャサービスを作成し、そのフィーチャを書き込みます。ブックマークは、ブックマーク上部にカーソルを合わせると小さなアイコンが表示されるので、その中から「Run Just Contained」再生ボタンをクリックして実行します。<\/P>
Bookmark One - Write Observation features<\/span><\/span><\/P> <\/P>Bookmark Twoを実行する前に、新しく作成されたAGOL内のフィーチャレイヤーに戻り、「Enable Attachment」スライダーをクリックしてTrueに設定してください。これは、ObservationsフィーチャレイヤーのEnable attachmentパラメータがTrueに設定されている必要があるためです。このツールはBookmark Oneでフィーチャサービスを作成する際、Enable attachmentはデフォルトでFalseになっています。<\/P>
Enable attachments<\/span><\/span><\/P> 添付ファイルが有効になったので、Bookmark Twoを実行してObservationsフィーチャレイヤーに関連付けられた添付ファイルを追加できます。<\/SPAN><\/P> <\/P>
Bookmark two - Upload attachments<\/span><\/span><\/P> <\/P>次回このソリューションを実行するとき、Feature Type Handling<\/STRONG>がTruncate Existing,<\EM> Enable Attachmentは引き続きTrueになりますのでご注意ください。<\/P>
Feature Type Handling set to Truncate Existing for future runs<\/span><\/span><\/P> <\/P>元々のソリューションでは、Enable AttachmentはPythonシャットダウンスクリプトで実行されます。このソリューションにUpdateDefinition RESTエンドポイントを追加してEnable Attachment自動化も可能ですが、このソリューションはシンプルかつ意図的に保ちたいと思います。 <\/P>拡張は皆さんにお任せします。スケジューリングや単一実行がワークフローに合う場合、おそらく拡張が必要になるでしょう。 <\/P>ヒント:完全自動化したい場合、以下の画像が役立つ出発点となります。<\/P>
Adding Enable Attachment to your solution<\/><\/><\/><\/><\/><\/><\/><\/><\/><\/><\/><\/><\/><\/><\/><\/><\/><\/><\/><\/><\/>